coe*_*udo 11 python filter scapy pcap
我有一些pcap文件,我想按协议过滤,即,如果我想通过HTTP协议过滤,除HTTP数据包之外的任何东西都将保留在pcap文件中.
有一个名为openDPI的工具,它非常适合我需要的工具,但没有python语言的包装器.
有谁知道任何可以做我需要的python模块?
谢谢
编辑1:
HTTP过滤只是一个例子,我想要过滤很多协议.
编辑2:
我试过Scapy,但我不知道如何正确过滤.过滤器只接受Berkeley Packet Filter表达式,即我无法应用msn,HTTP或上层的其他特定过滤器.谁能帮我?
nmi*_*els 15
使用Scapy的一个简单示例,因为我刚写了一个:
pkts = rdpcap('packets.pcap')
ports = [80, 25]
filtered = (pkt for pkt in pkts if
TCP in pkt and
(pkt[TCP].sport in ports or pkt[TCP].dport in ports))
wrpcap('filtered.pcap', filtered)
Run Code Online (Sandbox Code Playgroud)
这将过滤掉既不是HTTP也不是SMTP的数据包.如果你想把所有的数据包,但 HTTP和SMTP,第三行应该是:
filtered = (pkt for pkt in pkts if
not (TCP in pkt and
(pkt[TCP].sport in ports or pkt[TCP].dport in ports)))
wrpcap('filtered.pcap', filtered)
Run Code Online (Sandbox Code Playgroud)
J.J*_*.J. 13
我知道这是一个超级老问题,但我只是碰到它,以为我会提供我的答案.这是我多年来遇到的一个问题,我一直发现自己会回到dpkt.dpkt最初来自功能强大的dugsong,主要是一个数据包创建/解析库.我理解pcap解析是一个事后的想法,但事实证明它是非常有用的,因为解析pcaps,IP,TCP和TCP头是很简单的.它正在解析所有更高级别的协议,成为时间的下沉!(在找到dpkt之前,我编写了自己的python pcap解析库)
有关使用pcap解析功能的文档有点薄.这是我的文件中的一个例子:
import socket
import dpkt
import sys
pcapReader = dpkt.pcap.Reader(file(sys.argv[1], "rb"))
for ts, data in pcapReader:
ether = dpkt.ethernet.Ethernet(data)
if ether.type != dpkt.ethernet.ETH_TYPE_IP: raise
ip = ether.data
src = socket.inet_ntoa(ip.src)
dst = socket.inet_ntoa(ip.dst)
print "%s -> %s" % (src, dst)
Run Code Online (Sandbox Code Playgroud)
希望这有助于下一个人碰到这篇文章!
小智 6
sniff 支持离线选项,您可以提供 pcap 文件作为输入。这样您就可以在 pcap 文件上使用 sniff 命令的过滤优势。
>>> packets = sniff(offline='mypackets.pcap')
>>>
>>> packets
<Sniffed: TCP:17 UDP:0 ICMP:0 Other:0>
Run Code Online (Sandbox Code Playgroud)
希望有帮助!
| 归档时间: |
|
| 查看次数: |
40367 次 |
| 最近记录: |