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

Posted

技术标签:

【中文标题】pcap2har 用于由 tshark 生成的 pcap(-w 选项)【英文标题】:pcap2har for a pcap that was generated by tshark(-w option) 【发布时间】:2013-02-15 00:45:18 【问题描述】:

我的 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

【问题讨论】:

【参考方案1】:

从 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 文件。

【讨论】:

【参考方案2】:

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

editcap teste.pcapng teste.pcap -F pcap

【讨论】:

以上是关于pcap2har 用于由 tshark 生成的 pcap(-w 选项)的主要内容,如果未能解决你的问题,请参考以下文章

利用wireshark抓包,用的是tshark,请问如何设置http.host

Wireshark+Elasticsearch+Kibana打造流量回溯系统

网络分析利器:Tshark

请教tshark源码整合

Tshark-如何仅使用tshark显示tcp播放负载的解剖树?

tshark使用说明