如何从Kism读取pcapng文件流

2024-04-29 09:08:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我使用运行在raspberry pi上的kismet来捕获网络数据,我需要在另一台设备上实时分析这些数据。Kismet的api有一个到receive a stream of binary data in the pcapng format的端点。我已经能够成功地读取流,但除了实际的pcapng标准之外,我找不到任何关于从流中获取有用数据的文档。这很好,但传入的数据与格式不一致,而且我没有发现任何库能够成功解析此流。我认为问题是,当读取流时,额外的数据被插入到每个捕获的数据包之间,因此确定数据包的开始是主要问题。我目前正在使用python,但是如果其他语言可以很容易地解决这个问题或者已经编写了库的话,我对它们持开放态度。你知道吗

这是我用来将数据导入python的代码,print(line.hex())就是我访问相关数据的地方。你知道吗

import requests
r = requests.get(url, stream=True)
for line in r.iter_lines():
    print(line.hex())

Tags: 数据in网络apistreamlinepi数据包
1条回答
网友
1楼 · 发布于 2024-04-29 09:08:02

看起来错误是python请求模块没有捕获整个流,并且丢失了某些字节。通过使用

curlSubProcess = subprocess.Popen(['curl', 'url/pcap/all_packets.pcapng'], stdout=subprocess.PIPE, bufsize=1)
curlSubProcess.stdout.read(lengthnext)

在while循环中,lengthnext是我能够正确读取的下一个数据包的长度。然后我用我写的一个类解析了这个二进制块数据,用scapy解析了数据包数据,它按预期工作。你知道吗

相关问题 更多 >