首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何利用嗅探功能过滤ICMPv6数据包?

如何利用嗅探功能过滤ICMPv6数据包?
EN

Stack Overflow用户
提问于 2017-09-09 10:40:28
回答 2查看 1.9K关注 0票数 1

我只想捕获ICMPv6回声请求数据包。我使用使用BPF-过滤器的sniff()-function,与tcpdump相同。我使用的筛选器与tcpdump一起工作,并且只捕获ICMPv6回显请求,但是当我在python中使用它时,它根本不工作,替罪羊捕获所有数据包。为什么过滤器在我的脚本中不起作用?

代码语言:javascript
复制
#!/usr/bin/env python
from scapy.all import * 
a = sniff(filter="icmp6 && ip6[40] == 128", count=10)
a.summary()

产出:

代码语言:javascript
复制
Ether / IP / ICMP 192.168.1.74 > 192.168.1.84 echo-request 0 / Raw
Ether / IP / ICMP 192.168.1.84 > 192.168.1.74 echo-reply 0 / Raw
Ether / IPv6 / ICMPv6 Echo Request (id: 0x306 seq: 0x3bb)
Ether / IPv6 / ICMPv6 Echo Request (id: 0x306 seq: 0x3bb)
Ether / IPv6 / ICMPv6 Echo Reply (id: 0x306 seq: 0x3bb)
Ether / IPv6 / ICMPv6 Echo Reply (id: 0x306 seq: 0x3bb)
Ether / IP / TCP 192.168.1.84:ssh > 192.168.1.74:61336 PA / Raw
Ether / IP / TCP 192.168.1.74:61336 > 192.168.1.84:ssh A
Ether / IP / ICMP 192.168.1.74 > 192.168.1.84 echo-request 0 / Raw
Ether / IP / ICMP 192.168.1.84 > 192.168.1.74 echo-reply 0 / Raw
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-09-10 00:19:26

我在我的系统上运行时遇到了一些问题,但结果是我的一个接口上的v6设置有问题。替罪羊-python3 3似乎更好地处理了这个问题,它只是忽略了我的配置错误,继续执行,而不是出错。

在我解决了您的代码示例在python2.7和3.x上工作之后,我没有遇到任何问题。无论是在手动指定接口时还是在不指定接口时。

代码语言:javascript
复制
Ether / IPv6 / ICMPv6 Echo Request (id: 0x5d24 seq: 0x190)
Ether / IPv6 / ICMPv6 Echo Request (id: 0x5d24 seq: 0x191)
Ether / IPv6 / ICMPv6 Echo Request (id: 0x5d24 seq: 0x192)
Ether / IPv6 / ICMPv6 Echo Request (id: 0x5d24 seq: 0x193)
Ether / IPv6 / ICMPv6 Echo Request (id: 0x5d24 seq: 0x194)
Ether / IPv6 / ICMPv6 Echo Request (id: 0x5d24 seq: 0x195)
Ether / IPv6 / ICMPv6 Echo Request (id: 0x5d24 seq: 0x196)
Ether / IPv6 / ICMPv6 Echo Request (id: 0x5d24 seq: 0x197)
Ether / IPv6 / ICMPv6 Echo Request (id: 0x5d24 seq: 0x198)
Ether / IPv6 / ICMPv6 Echo Request (id: 0x5d24 seq: 0x199)

如果您有可能在python3.x中测试这一点,那么它可能会对您更好地工作,但是感觉您的设置中有些东西已经关闭了。我从来没有使用过替罪羊,所以我不知道,例如,6至4隧道是否会混淆它。

我在跑:

代码语言:javascript
复制
Debian testing with kernel 4.11.0-1-amd64
scapy 2.3.3 on Python 2.7.13
scapy-python3 0.21 on Python 3.5.4
票数 1
EN

Stack Overflow用户

发布于 2017-09-09 13:14:52

您可能应该指定接口。Scapy有时无法在某些情况下应用BPF过滤器(包括PPP接口或同时嗅探多个接口时)。

另一种选择可以是使用Python过滤器而不是BPF过滤器。主要缺点是它会影响性能,因为Scapy将接收(并解析)在接口上看到的所有数据包:

代码语言:javascript
复制
from scapy.all import * 
a = sniff(lfilter=lambda pkt: ICMPv6EchoRequest in pkt, count=10)
a.summary()
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46129782

复制
相关文章

相似问题

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