如何使用dpkt获取.pcap文件的快照长度?
我想获取一个 .pcap 文件的快照长度。我查看了 pcap 和 pcap_snapshot 的手册,但还是没能让这个函数正常工作。
我在运行一个 Fedora20 的虚拟机,代码是用 Python 写的。
首先,我尝试导入手册上说要包含的文件,但在导入时出现了语法错误,还有 pcap_snapshot() 也出错。我刚开始学 Python,所以我想这应该是个简单的问题,但我不太确定是什么。任何帮助都非常感谢!
import <pcap/pcap.h>
import dpkt
myPcap = open('mycapture.pcap')
myFile = dpkt.pcap.Reader(myPcap)
print "Snapshot length = ", myFile.pcap_snapshot()
1 个回答
1
如果你不是在用C、C++或Objective-C写代码,最好先别去看手册。
如果你用的不是C语言相关的语言,那你需要用一个叫做libpcap的库的包装器,先去看看这个包装器的文档。因为你不会直接调用libpcap里的C函数,而是调用包装器里的函数。如果你在Python中试图导入一个C语言的头文件,比如pcap/pcap.h,那是行不通的。如果你直接调用一个C语言的函数,比如pcap_snapshot()
,也会失败。
Dpkt并不是一个包装器;它是一个用来解析数据包和读取pcap文件的库,而读取pcap文件的代码和libpcap是独立的。所以,它不会提供libpcap API的包装,比如pcap_snapshot()
。
Dpkt的文档,嗯,比较有限。快速查看一下它的pcap.py模块,似乎可以这样写:
print "Snapshot length = ", myFile.snaplen
试试看这个。