使用Pcapy将数据包保存为pcap文件
我发现很多例子是关于如何捕获数据包并从pcap文件中读取数据的。但是没有任何例子是关于如何捕获数据包并把它们保存到pcap文件里的。
我正在使用以下代码,来自这里:
import pcapy
from impacket.ImpactDecoder import *
# list all the network devices
pcapy.findalldevs()
max_bytes = 1024
promiscuous = False
read_timeout = 100 # in milliseconds
pc = pcapy.open_live("name of network device to capture from", max_bytes, promiscuous, read_timeout)
pc.setfilter('tcp')
# callback for received packets
def recv_pkts(hdr, data):
packet = EthDecoder().decode(data)
print packet
packet_limit = -1 # infinite
pc.loop(packet_limit, recv_pkts) # capture packets
有没有什么想法可以把捕获到的数据包保存到pcap文件里呢?
2 个回答
1
Pcapy确实有一个叫Dumper的对象,但你需要先有一个Reader对象才能创建它,这听起来就很奇怪。
import pcapy as pc
dev = pc.lookupdev()
reader = pc.open_live(dev, 65536, 1, 1)
dumper = reader.dump_open('pcapy_test.pcap')
for _ii in range(2):
hdr, pkt = reader.next()
dumper.dump(hdr, pkt)
3
你可以通过调用pcapy中的dump_open来获取一个Dumper对象,然后可以在这个对象上调用dump方法。
dumper = pc.dump_open(filename)
...
dumper.dump(hrd, data)