问题标签 [dpkt]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1330 浏览

python-3.x - 如何解决 dpkt 无法解码 .pcap 文件的问题

我在我的机器上运行此代码时遇到问题,但它在我学校的 linux 机器上运行良好。

我得到的错误是:

我已经安装了运行 pip install dpkt 的 dpkt。

我有什么办法可以在我的机器上完成这项工作,还是我需要使用学校的电脑?

0 投票
2 回答
1865 浏览

python-3.x - 当我尝试解析一个简单的 pcap 文件时,这个错误是什么?



当我尝试解析一个简单的 pcap 文件时,这个错误是什么?

我正在运行这个简单的 pcap 解析器代码。但它显示了上述错误。任何人都可以请帮忙。

0 投票
3 回答
580 浏览

python - 如何正确读取分段为两个 TCP 段的 HTTP Post 消息?

当我在 pcap 文件上执行以下 Python 代码时:

如下数据包会产生问题: 在此处输入图像描述

这是一个单独的 HTTP Post 消息,被分割成两个 TCP 段,每个段都在不同的数据包中发送。但是,因为第一个段仅是 TCP,而第二个被识别为 HTTP,所以当 dpkt.http.Request 尝试将第一个段读取为 HTTP 时,它似乎失败了。

到目前为止没有问题。失败是可以的,因为它不是真正的完整 HTTP 消息。但是,问题是它似乎根本没有阅读第二段(“ POST Message ”没有打印)!!!第二段完全被忽略,就好像它不存在一样!!!对此唯一可能的解释是 dpkt 会立即自动读取第二段,因为它识别出它们都是同一消息的段。

问题是,尽管同时读取两个 TCP 段(遵循上述假设),但结果 tcp.data 不会被识别为 HTTP 数据包,而是仍然被识别为 TCP,只是因为消息的第一段是仅 TCP 数据包。

那么我应该怎么做才能读取此类 pcap 文件的 HTTP 标头和数据呢?

0 投票
1 回答
565 浏览

python - How to fix ValueError: read of closed file while parsing a pcap using dpkt

I'm new to networking, I'm trying to parse a pcap using dpkt, but I'm getting

ValueError: read of closed file.

Here's the code:

and this is the result:

1542964953.074129 Traceback (most recent call last): File "C:\Users\User\Documents\testdpkt1.py", line 19, in for ts, buf in pcap: File "C:\Users\User\AppData\Local\Programs\Python\Python37-32\lib\site-packages\dpkt\pcap.py", line 312, in iter buf = self.f.read(PktHdr.__hdr_len) ValueError: read of closed file

0 投票
0 回答
101 浏览

python - 从python中的.pcap文件解析接口细节

我有一个 .pcap 文件,我正在尝试从此输出中提取接口及其管理状态。我应该使用哪个 python 模块?我已经尝试过 pypcapfile 并且没有运气弄清楚它。我也尝试过 dpkt 但我无法使用正确的处理程序来提取接口细节。

我的 dpkt 阅读器 o/p 是:

在此处输入图像描述

0 投票
1 回答
1173 浏览

python - 从 PCAP 文件中提取时间并保存为 CSV 文件

我只想从 ARP 数据包的 PCAP 文件中提取日期时间,并希望保存为 csv/txt。我确实使用下面的代码来提取时间。打印命令随着时间的推移工作正常。但是当它保存在 csv 文件中时,它只有一个日期和一次(例如 14:59:58)保存到 csv 文件中。任何人都可以建议修改从 pcap 中提取 ARP 时间并正确保存到 csv 的代码。谢谢你。

使用 open("../data/" + 文件名 + ".pcap", 'rb') 作为 f:pcap = dpkt.pcap.Reader(f)

def save_packets(packets,filename,tcp,ts, degree_sorted): with open(filename, 'w') as f: for packet in packet: data = '' for item in packet: data = data + str(item) + ' ,' f.write(data + tcp + datetime.datetime.utcfromtimestamp(ts).strftime("%m/%d/%Y, %H:%M:%S") + degree_sorted + '\n')

0 投票
1 回答
910 浏览

python - 如何使用 dpkt 编写器中实时捕获的标头中的时间戳?

我正在编写的数据包捕获实用程序遇到一些问题。我目前正在使用 pcapy 打开实时字节流和 dpkt 来解码数据包。我还想将数据包写入 .pcap 文件,该文件与 dpkt.Writer 对象一起使用,但是记录在 pcap 文件中的时间戳来自写入器将数据包写入 pcap 文件时,而不是网络接口时或内核收到消息。

我从文档中了解到,在编写时您可以提供 ts 供作者使用,但是我不明白如何从收到的数据包的标头中提取它。从我可以找到的示例中,这些示例显示了如何通过读取文件来打印时间戳,似乎我可以简单地打印从字节流接收到的元组的第一个值,但是当我这样做时,会出现以下错误:

TypeError: int() 参数必须是字符串、类似字节的对象或数字,而不是“Pkthdr”

错误很清楚:毫无疑问,我必须在 Pkthdr 对象中找到时间戳属性,但我在 pcapy 项目或 dpkt 中找不到任何解释如何解析“标题”的文档/示例

我也尝试使用 pypcap 库进行实时捕获,但输出是相同的。我还在 python 2.7.5 上尝试了相同的代码,因为我读到 dpkt 可能还不完全支持 python3,但在任一版本上的结果相同

为了证明 pcap 中的时间戳是从写入时开始的,我在再次写入相同的数据包之前添加了睡眠期。您将看到两者在标头时间戳中显示了约 1 秒的差异:

我不太依赖 pcapy 或 dpkt,所以如果有更好的方法,我愿意切换这些库中的任何一个,但是我觉得有更多经验的人可以告诉我如何深入研究Pkthdr 对象,将时间戳提取为 str,然后在写入 pcap 时将其作为“ts”参数插入:

编辑:所以我查看了 pcapy 模块中 pkthdr 对象的源代码,发现了一些有用的东西:似乎有一个名为“getts”的函数可以从对象中获取时间戳:

在我的 python 代码中,我调用了这样的函数:

它返回一个元组,其中包含标头的秒数和微秒数,例如 (1555710256, 942645)。下一步是将其连接成一个数字并将其输入到 dpkt writer ts 中。希望我很快就会发布一个工作示例

0 投票
0 回答
49 浏览

python - MemoryError using dpkt Python 2.7

I've captured data using wireshark. I am now trying to parse the data in Python 2.7 using dpkt into a dictionary which I will then pickle.

I consistently keep getting MemoryError. I am assuming it could be because I am dealing with thousands of MB and am simply running out of memory, but I am not sure.

storepcap.py

output:

0 投票
2 回答
1752 浏览

python - 需要帮助将源和目标端口号输出给用户,使用 Python 和 dpkt 从 pcap 文件中读取

大家好,这是我第一次使用 Python 作为编程语言进行 PCAP 编程,这是针对大学的一项任务,除了一个小细节外,我几乎已经获得了完成任务所需的一切。

我只需要获取与 IP 地址关联的源端口号和目标端口号(例如 HTTP 端口 80)的输出。

我很高兴答案是指向正确方向的指针,可以帮助我自己解决问题。否则,如果它更容易被回答,我想要一个关于使用什么以及它如何解决问题的基本解释,这样当我在我的学习和研究中进行更多的未来 PCAP 编程时,我可以更好地理解它。

这是在运行 FreeBSD 10.3 的 Unix 系统上使用的

我尝试过使用 dpkt.tcp、dpkt.udp、dpkt.ip 库以及一些套接字库来查看是否可以达到我想要的结果,但运气不佳。老实说,我不确定我需要使用什么。

编辑:我确实尝试过使用 tcp.sport 和 tcp.dport,但仍然没有运气。

主要关注领域是我添加评论的地方。

样本预期输出:

0 投票
0 回答
412 浏览

python - 如何从 PCAP 中提取带有供应商名称的 ARP MAC 地址并保存到文件

我需要从 PCAP 文件中提取带有供应商名称的 ARP MAC 地址,并将其保存为 CSV 文件。下面的代码适用于源 MAC 和目标 MAC,但我需要代码来提取 MAC 供应商名称。

我曾经DPKT从 PCAP 中提取数据。