【问题标题】:How to extract only a specific sublayer from pcap?如何从 pcap 中仅提取特定的子层?
【发布时间】:2015-08-22 19:10:56
【问题描述】:

如何从 pcap 文件中仅提取特定的子层?例如,所有数据包都包含这些层:EthernetIPSCTP、...我需要从SCTP 层上提取数据包的十六进制代码。我可以使用以下命令提取带有tshark 的数据包:

tshark -x -r mylog.pcap

但输出的十六进制数据包包含所有层,包括EthernetIP。如何在提取的输出中排除 EthernetIP 层?

【问题讨论】:

标签: linux wireshark pcap tshark


【解决方案1】:

您可以使用python + scapy 在每个带有p.getlayer(SCTP) 或任何其他层的数据包中选择给定层。

你的 pcap 文件的内容可以是read 使用:

capture=rdpcap("/path/to/mylog.pcap")

用类似的东西处理

for pkt in capture:
   print pkt.getlayer(SCTP)

打开一个文件:

>>> a=rdpcap("/spare/captures/isakmp.cap")
>>> a
<isakmp.cap: UDP:721 TCP:0 ICMP:0 Other:0>

查看http://www.secdev.org/projects/scapy/doc/usage.html#index-9

【讨论】:

  • 如何使用 scapy 打开文件?
  • 尝试打开文件时出现以下错误:Scapy_Exception: Not a pcap capture file (bad magic)。该文件很好,我可以在wireshark中打开它。
  • 这表明该文件不是预期的格式。
  • 该文件可能是 pcap-ng 文件而不是 pcap 文件。如果 scapy 正在使用 libpcap 来读取文件,那么它可能使用的是早于 1.1 的 libpcap 版本(可以读取一些 pcap-ng 文件);如果它在 Windows 上运行并使用 WinPcap,则 WinPcap 基于 1.1 之前的 libpcap,无法读取 pcap-ng 文件;如果它使用自己的代码读取文件,则需要增强该代码以读取 pcap-ng 文件。
  • 您可以使用 editcap 将 pcap-ng 文件转换为 pcap 文件 - editcap -F libpcap {pcap-ng 文件} {要写入的 pcap 文件 }
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-03-30
  • 2021-06-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-21
相关资源
最近更新 更多