dpkt在有效的pcap上抛出NeedData
我有一段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")
。