dpkt在有效的pcap上抛出NeedData

2 投票
1 回答
6371 浏览
提问于 2025-04-17 11:09

我有一段Python代码:

import sys
import dpkt

f = file("pcaop.Pcap")
pcap = dpkt.pcap.Reader(f)

i = 0
for ts, buf in pcap:
    print "Ya"

在处理第52个数据包时,dpkt会抛出一个叫“NeedData”的错误。每次都是这个数据包 - 我检查过第52个数据包,它和Wireshark上其他的数据包是一样的。

这是什么原因呢?

1 个回答

5

这里提供了解决方案:Python在使用read读取文件时停止。我遇到过同样的问题,当在Linux下使用dpkt.pcap时一切正常,但在Windows上运行时却立刻失败。问题在于,当以文本模式打开文件时,使用open("filename", "r")会一直读取文件,直到遇到文件结束符(EOF)。因此,应该使用open("filename", "rb")

撰写回答