所以我有一个来自朋友的代码片段:
my $dnspacket = new Net::DNS::Packet($str, "A", "IN");
my $dnsdata = $dnspacket->data;
my $sock = new Net::RawIP({udp=>{}});
$str = @name[int rand($names)];
$reflector = $nameservers[int rand($reflectors)];
$sock->set({ip => {
saddr => "127.0.0.1", daddr => "$r", frag_off=>0,tos=>0,id=>1565},
udp => {source => 53,
dest => 53, data=>$dnsdata
} });
$sock->send;
基本上我想要做的是,而不是发送$ dnsdata作为数据包中的数据,我想发送十六进制数据/ x53 / x41 / x4d / x50 / x25 / xdd / xaf / xd3 / x61 / x1e / X63
我该怎么做呢?谢谢!
答案 0 :(得分:0)
我猜你正在寻找这个:
$dnsdata =~ s!([\s\S])! sprintf("/%02x",ord($1)) !eg;
这类似于snoopy的评论,除了分割> join不是很好。