首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用dpkt解析pcap文件

使用dpkt解析pcap文件
EN

Stack Overflow用户
提问于 2016-06-17 10:23:46
回答 2查看 5.9K关注 0票数 0

我正在做一个任务,我必须解析一个pcap文件,我正在使用dpkt来做这件事。我刚开始接触网络,所以我很难调试代码/入门。

第一组代码:

代码语言:javascript
复制
import dpkt

filename='test.pcap'
f = open(filename)
pcap = dpkt.pcap.Reader(f)

for ts, buf in pcap:
    eth = dpkt.ethernet.Ethernet(buf)
    ip = eth.data
    tcp = ip.data

f.close()

错误为AttributeError:'str‘对象没有'data’属性

因此,从之前的Stackoverflow中,我发现也许我应该“跳过dpkt以太网解码,直接跳到IP解码”,所以我修改了代码并转到:

代码语言:javascript
复制
import dpkt

filename='test.pcap'

f = open(filename)
pcap = dpkt.pcap.Reader(f)

for ts,buf in pcap:
    ip = dpkt.ip.IP(buf)
    tcp = ip.data

f.close()

它现在给我的错误是"UnpackError: invalid header length“

我真的不知道如何推进这一点,任何帮助都将不胜感激

EN

回答 2

Stack Overflow用户

发布于 2016-06-25 05:30:38

我对手机上的痕迹也有同样的问题。

这是由于以太网正在被Linux熟食捕获所取代。如果您的跟踪是以类似方式封装的,则必须使用dpkt.sll.SLL(buff)而不是dpkt.ethernet.Ethernet(buf)。下面是一个例子:

代码语言:javascript
复制
import dpkt

filename='a_linux_cooked_capture.pcap'
f = open(filename, 'rb')
pcap = dpkt.pcap.Reader(f)

for ts, buf in pcap:
    eth = dpkt.sll.SLL(buf)
    ip = eth.data
    tcp = ip.data
f.close()
票数 5
EN

Stack Overflow用户

发布于 2016-06-21 03:10:07

这通常发生在Windows上。在windows上,您应该以二进制模式打开pcap文件:

f= open('test.pcap','rb')

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37872140

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档