【问题标题】:How to extract the payload of a packet using Pyshark如何使用 Pyshark 提取数据包的有效负载
【发布时间】:2019-07-08 04:23:35
【问题描述】:

我正在尝试使用 Pyshark 读取 .pcap 文件中所有数据包的有效负载。我能够打开和读取文件,访问数据包及其其他信息,但我无法找到用于访问数据包有效负载的正确属性/方法。有什么建议 ?有没有其他方法可以使用 python for windows 10 读取 .pcap 文件中的数据包有效负载?

(我尝试使用 Scapy 代替 Pyshark,但显然在 Windows 上运行 Scapy 存在一些问题,它也不适用于我的系统)

我在 Internet 和 StackOverflow 上的 pyshark 项目的不同代码 sn-ps 中发现了这些行。我尝试了它们,但它们都不起作用:

import pyshark
cap = pyshark.FileCapture('file.pcap')
pkt = cap[1]

#for other information
print(pkt.tcp.flags_ack) #this works
print(pkt.tcp.flags_syn) #this works
print(pkt.tcp.flags_fin) #this works

#for payload
print(pkt.tcp.data) #does not work, AttributeError
print(pkt.tcp.payload) #does not work, AttributeError
print(pkt.data.data) #does not work, AttributeError

【问题讨论】:

    标签: python-3.x pyshark


    【解决方案1】:

    目录帽[]。 这将为您提供与您的捕获相关的所有可访问属性。如果有有效负载选项,请查看那里。

    【讨论】:

      【解决方案2】:

      此代码将打印与字段名称 tcp.payload 关联的值。

      capture = pyshark.FileCapture(pcap_file, display_filter='tcp')
      for packet in capture:
          field_names = packet.tcp._all_fields
          field_values = packet.tcp._all_fields.values()
          for field_name in field_names:
              for field_value in field_values:
                  if field_name == 'tcp.payload':
                     print(f'{field_name} -- {field_value}')
      
      
      # outputs 
      tcp.payload -- \xc2\xb7\xc2\xb7\xc2\xb7\xc2\xb7\xc2\xb7\xc2\xb7\xc2\xb7AP\xc2\xb7\xc2\xb7\xc2\xb7
      tcp.payload -- 0x00001e2c
      tcp.payload -- 113977858
      ...
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-02-06
        • 1970-01-01
        • 2022-08-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多