pcap2har用于由tshark生成的pcap(-w选项)

时间:2013-02-28 17:41:39

标签: pcap har

我的pcap文件是通过如下命令生成的:

cmd = """tshark -r "%s" -R "frame.time_relative >= %f" -w "%s" """ % (pcap_name, first_dns_query_time, normalized_pcap_name)
subprocess.Popen(cmd)

规范化的pcap被赋予pcap2har的输入。我收到这个错误:

Traceback (most recent call last):
  File "main.py", line 65, in <module>
    dispatcher = pcap.EasyParsePcap(filename=inputfile)
  File "/path/to/pcap2har/pcap2har/pcap.py", line 80, in EasyParsePcap
    ParsePcap(dispatcher, filename=filename, reader=reader)
  File "/path/to/pcap2har/pcap2har/pcap.py", line 27, in ParsePcap
    pcap = ModifiedReader(f)
  File "/path/to/pcap2har/pcap2har/pcaputil.py", line 105, in __init__
    raise ValueError, 'invalid tcpdump header'
ValueError: invalid tcpdump header

抛出错误的pcaputil.py部分是:

    elif self.__fh.magic != dpkt.pcap.TCPDUMP_MAGIC:
        raise ValueError, 'invalid tcpdump header'

对于我的pcap(以及tshark命令生成的任何pcap),self.__fh.magic168627466dpkt.pcap.TCPDUMP_MAGIC2712847316

我评论了在pcaputil.py中抛出异常的行,但之后我得到了这个:

Traceback (most recent call last):
  File "main.py", line 65, in <module>
    dispatcher = pcap.EasyParsePcap(filename=inputfile)
  File "/path/to/pcap2har/pcap2har/pcap.py", line 80, in EasyParsePcap
    ParsePcap(dispatcher, filename=filename, reader=reader)
  File "/path/to/pcap2har/pcap2har/pcap.py", line 27, in ParsePcap
    pcap = ModifiedReader(f)
  File "/path/to/pcap2har/pcap2har/pcaputil.py", line 108, in __init__
    self.dloff = dpkt.pcap.dltoff[self.__fh.linktype]
KeyError: 4294967295L

我已经提交了问题on github

2 个答案:

答案 0 :(得分:2)

从Wireshark 1.8开始,默认的输出文件格式是pcap-ng,而不是pcap。如果pcap2har使用了一个用于libpcap的Python包装器,并且你在一个带有libpcap 1.0或更高版本的系统上运行(这也意味着“没有在Windows上运行”,因为没有基于libpcap 1.0或更高版本的WinPcap版本),将自动能够读取许多pcap-ng文件,因为libpcap可以读取它们,但它可能使用自己的代码来读取libpcap文件。

尝试使用“-F pcap”运行tshark以使其生成pcap文件。

答案 1 :(得分:1)

您可以使用editcap更改“.pcapng”文件的格式:

editcap teste.pcapng teste.pcap -F pcap