如何从pcap中仅提取特定的子层?

时间:2014-12-28 10:45:34

标签: linux wireshark pcap tshark

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

tshark -x -r mylog.pcap

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

1 个答案:

答案 0 :(得分:1)

您可以使用python + scapyp.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