gpt4 book ai didi

python - 使用 dpkt 解析时,由于使用 mergecap 生成 pcap,导致 tcpdump header 无效

转载 作者:太空宇宙 更新时间:2023-11-03 16:29:21 26 4
gpt4 key购买 nike

ValueError:以下代码的无效 tcpdump header 错误。

import dpkt

f = open('a.pcap')
pcap = dpkt.pcap.Reader(f)

for (src, sport, dst, dport, data) in udp_iterator(pc):

if dport == 53:
dns = dpkt.dns.DNS(data)
if dns.opcode != dpkt.dns.DNS_QUERY:
print "A DNS packet was sent to the nameserver, but the opcode was %d instead of DNS_QUERY (this is a software error)" % dns.opcode
if dns.qr != dpkt.dns.DNS_Q:
print "A DNS packet was sent to the name server, but dns.qr is not 0 and should be. It is %d" % dns.qr
print "DNS Query was: ", dns.qd[0].name
print "ID is: ", dns.id
print "Hello Dns query is ", dns.qr
print "Hello Query Type is ", dns.qd[0].type , type_table[dns.qd[0].type]
print "Hello DNS Query was: ", dns.qd

我们将非常感谢您的帮助。pcap是使用mergecap生成的,然后使用dpkt解析它,但错误如下所示:

File "/usr/local/lib/python2.7/dist-packages/dpkt/pcap.py",
in __init__
raise ValueError('invalid tcpdump header')
ValueError: invalid tcpdump header

最佳答案

使用“capinfos a.pcap”验证文件类型并查看第二行。

如果第一个文件以 pcapng 格式保存,mergecap 将使用此格式作为输出文件。

根据 man 文件:

“设置输出捕获文件的文件格式。mergecap可以用多种格式写入文件;mergecap -F 提供可用输出格式的列表。默认是使用第一个输入的文件格式文件。”

要解决这个问题,您可以使用 -F pcap。它看起来像这样:

mergecap first.pcap second.pcap -w output.pcap -F pcap

关于python - 使用 dpkt 解析时,由于使用 mergecap 生成 pcap,导致 tcpdump header 无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37744858/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com