python echo 网络_Python scapy显示ping(echo)请求的ip

我想获取并打印ping请求的源地址。

我有以下脚本:pkt = sniff(filter="icmp", timeout =15, count = 15)

if pkt[ICMP].type == '8':

print pkt[IP].src

当数据包到达时,脚本崩溃AttributeError:'list' object has no attribute 'type'

但是在scapy控制台上我可以清楚地看到这个存在!>>>packet=IP()/ICMP()/"AAAAAA"

>>>packet[ICMP].type

8

>>>

有什么想法吗??

我为了测试的目的改变了(!)我的脚本如下:pkts=sniff(filter="icmp", timeout=120,count=15)

for packet in pkts:

if packet.haslayer(IP) and str(packet.getlayer(IP).src)=="127.0.0.1"

print "packet arrived"

if packet.haslayer(ICMP) and str(packet.getlayer(ICMP).type)=="8":

print(packet[IP].src)

执行ping之后,执行上述操作:ping localhost -c 3

产生以下尴尬的结果:packet arrived

127.0.0.1

packet arrived

127.0.0.1

packet arrived

packet arrived

packet arrived

127.0.0.1

packet arrived

127.0.0.1

packet arrived

packet arrived

packet arrived

127.0.0.1

packet arrived

127.0.0.1

packet arrived

我们可以多次忽略“数据包到达”,因为其他数据包也正在到达我的主机。但是为什么我在发送3个echo请求时看到127.0.0.1的6倍呢?即使我移除for循环,也会发生相同的结果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值