perl 中 arp协议封装问题。。
我要用perl对arp协议进行封装,可是对于 pack 和unpack不是很熟悉,
- Perl code
my $err; my $arp_request="ff ff ff ff ff ff 00 30 18 cc 89 70 08 06 00 01 08 00 06 04 00 01 00 30 18 cc 89 70 c0 a8 01 64 00 00 00 00 c0 a8 01 01"; $arp_request = unpack("a*",$arp_request); $arp_request = pack("H*",$arp_request); my $dev = Net::Pcap::lookupdev(\$err); my $pcap = Net::Pcap::open_live($dev,1000,1,1,\$err); Net::Pcap::sendpacket($pcap,$arp_request);貌似是包的封装出错了,无法抓到该包,问哪位高手能帮忙解决下,应该怎么进行包的封装(用pack和unpack)
[解决办法]
猜测:
- Perl code
my $arp_request="ffffffffffff003018cc897008060001080006040001003018cc8970c0a8016400000000c0a80101";$arp_request = pack("H*",$arp_request);
[解决办法]
你想发的数据究竟是什么?
[解决办法]
你要知道想发arp的原始数据包是什么。才能知道你发的对不对。
[解决办法]
如果那个就是真实的数据,那还pack/unpack什么?直接发不就完了?
而且显然,数据应该是二进制的,而不是文本的,带空格和十六进制字符。
我2楼的代码只负责把十六进制的数据转成二进制。如果不管用,那说明问题在别的地方。比如数据不对,比如发送方法不对,比如你检查结果的方式不对。