首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >识别icmpv6类型

识别icmpv6类型
EN

Stack Overflow用户
提问于 2012-09-25 01:07:15
回答 1查看 537关注 0票数 1

在python-scapy中,如何根据icmpv6类型进行过滤。例如,如果icmpv6类型为135(邻居请求),如何使用此类型的表达式进行过滤:

代码语言:javascript
复制
if(x == 135):  
    do this  

我想在上面的expression.There中找到x是TCP,UDP,IPv6的标签,但没有ICMPv6的标签。例如,要访问包p的IPv6报头中的源地址参数,我可以使用pIPv6.src,因为标记IPv6在scapy中。但是如何访问ICMPv6参数呢?

如果不能使用using或此方法完成,请建议替代方法。这个问题很长时间以来一直困扰着我。谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-10-31 16:12:40

您应该使用Packet.haslayer('ICMPv6ND_NS')...

代码语言:javascript
复制
>>> from scapy.all import rdpcap
>>> paks = rdpcap('ipv6.pcap')
>>> for idx, pak in enumerate(paks):
...     if pak.haslayer('ICMPv6ND_NS'):
...         print "Index %s: %s" % (idx, repr(pak))
...
Index 3: <Ether  dst=00:21:a0:50:ce:00 src=00:02:55:7b:b2:f6 type=0x86dd |
<IPv6  version=6L tc=0L fl=0L plen=32 nh=ICMPv6 hlim=255 
src=fe80::202:55ff:fe7b:b2f6 dst=fe80::221:a0ff:fe50:ce00 |
<ICMPv6ND_NS  type=Neighbor Solicitation code=0 cksum=0x8b54 R=0L S=0L 
O=0L res=0x0L tgt=fe80::221:a0ff:fe50:ce00 |<ICMPv6NDOptSrcLLAddr  type=1 
len=1 lladdr=00:02:55:7b:b2:f6 |>>>>
>>>

仅供参考,这些是ipv6.pcap中的数据包...

代码语言:javascript
复制
[mpenning@Bucksnort ~]$ tshark -r ipv6.pcap
  1   0.000000 2000:fc50:1000:100:202:55ff:fe7b:b2f6 -> 2001:420:1101:1::a ICMPv6 Echo request
  2   1.007475 2000:fc50:1000:100:202:55ff:fe7b:b2f6 -> 2001:420:1101:1::a ICMPv6 Echo request
  3   2.014461 2000:fc50:1000:100:202:55ff:fe7b:b2f6 -> 2001:420:1101:1::a ICMPv6 Echo request
  4   4.997348 fe80::202:55ff:fe7b:b2f6 -> fe80::221:a0ff:fe50:ce00 ICMPv6 Neighbor solicitation
  5   4.998613 fe80::221:a0ff:fe50:ce00 -> fe80::202:55ff:fe7b:b2f6 ICMPv6 Neighbor advertisement
[mpenning@Bucksnort ~]$
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12569673

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档