tcpdump头无效,因为使用dp解析时使用mergecap生成pcap

2024-06-13 11:59:29 发布

您现在位置:Python中文网/ 问答频道 /正文

ValueError:以下代码的tcpdump标头错误无效。在

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进行解析,但错误如下:

^{pr2}$

Tags: thehelloifisdnstypepcapquery
1条回答
网友
1楼 · 发布于 2024-06-13 11:59:29

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

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

根据man文件:

“设置输出捕获文件的文件格式。Mergecap可以用多种格式编写文件;Mergecap-F提供了可用输出格式的列表。默认情况下,使用第一个输入文件的文件格式

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

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

相关问题 更多 >