首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >python-3.4 Scapy嗅探

python-3.4 Scapy嗅探
EN

Stack Overflow用户
提问于 2015-09-24 20:25:12
回答 1查看 1.8K关注 0票数 3

运行此脚本时出错:

代码语言:javascript
复制
from scapy.all import *
sn = sniff(filter="http", count=30)
wireshark(sn)

这是一个错误:

代码语言:javascript
复制
WARNING: No route found for IPv6 destination :: (no default route?)
WARNING: Please, report issues to https://github.com/phaethon/scapy
Traceback (most recent call last):
File "arp1.py", line 2, in <module>
sn = sniff(filter="http", count=30)
File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/scapy/sendrecv.py", line 566, in sniff
s = L2socket(type=ETH_P_ALL, *arg, **karg)
File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/scapy/arch/pcapdnet.py", line 276, in __init__
self.ins.setfilter(filter)
File "/Library/Frameworks/Python.framework/Versions/3.4/lib/python3.4/site-packages/scapy/arch/pcapdnet.py", line 236, in setfilter
error("Could not compile filter expression %s" % f)
NameError: name 'error' is not defined

运行此脚本时,所有操作都正常:

代码语言:javascript
复制
from scapy.all import *
sn = sniff(filter="icmp and host 66.35.250.151", count=4)
wireshark(sn)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-09-24 23:01:55

Scapy使用 syntax进行过滤。此语法不支持将"http"指定为筛选器以过滤HTTP通信量。

但是,可以过滤所有发送到端口80或起源于端口80的通信量,这通常用于HTTP。上面的链接建议使用以下筛选器:

要捕获与端口80之间的所有IPv4 HTTP数据包,即只打印包含数据的数据包,例如,SYN和FIN数据包以及仅ACK的数据包。(IPv6是留给读者的练习。) tcp port 80 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)

answer清楚地解释了这个过滤器背后的技术细节。简而言之,它计算数据包承载的应用层有效负载的长度(以字节为单位),并验证它不是0(因此,正):

  • IP数据包长度- IP报头长度- TCP报头长度!= 0

由于文件/etc/services将端口号80分配给服务名称http,因此可以重写前面的筛选器,如下所示:

tcp port http and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)

为了完整起见,还建议过滤端口8080 (http-alt in /etc/services)。

当然,这并不能保证过滤的流量确实是HTTP流量,或者未经过滤的流量不包含HTTP流量。这一努力需要更先进的过滤器。他们将检查应用层有效负载的内容,试图推断正在使用的底层协议。

一个简单的谷歌搜索将提供几个可供选择的过滤器,用于各种用途,这取决于你的最终目标。例如, answer建议对HTTP的基本方法进行筛选:一个用于HTTP方法,另一个用于HTTP方法。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32770272

复制
相关文章

相似问题

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