使用Pcapy将数据包保存到pcap文件

时间:2014-05-09 14:06:51

标签: python pcap

我找到了许多捕获数据包和从pcap文件中读取的示例。但是没有任何示例可以捕获数据包并将其转储到pcap中。

我使用here中的以下代码:

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文件中的任何ideia?

2 个答案:

答案 0 :(得分:3)

你可以通过dump_open调用从pcapy获得一个Dumper对象,你可以在其上调用dump。

dumper = pc.dump_open(filename)
...
dumper.dump(hrd, data)

答案 1 :(得分: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)