首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > perl python >

perl 中 arp协议封装有关问题。

2012-10-09 
perl 中 arp协议封装问题。。我要用perl对arp协议进行封装,可是对于 pack 和unpack不是很熟悉,Perl codemy $

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楼的代码只负责把十六进制的数据转成二进制。如果不管用,那说明问题在别的地方。比如数据不对,比如发送方法不对,比如你检查结果的方式不对。

热点排行