分组层字段值信息

时间:2019-10-13 15:11:39

标签: pyshark

是否有一种获取数据包的层字段值信息的方法?
(即在打印数据包层时显示在右侧的字符串信息)
像下面的几行:
协议鉴别符:移动性管理消息
跳过指示器:未显示所选的PLMN

例如

packets = pyshark.FileCapture(...)
print(packet[0]['IP']):

 .... 0101 = Protocol discriminator: Mobility Management messages (0x5)
 0000 .... = Skip Indicator: No indication of selected PLMN (0)
 ...
 ...
 ...

2 个答案:

答案 0 :(得分:0)

只需将其另存为 str(packet[0]['IP']) 要么 packet[0]['IP'].__str__() 应该可以解决问题(相当于顺便说一句)。

例如:

m_list.append(str(packet[0]['IP'])) with open("out.txt", "w") as f: f.write(m_list)

答案 1 :(得分:0)

如果我正确理解了您的问题,则希望提取与数据包IP层相关的值。这就是我完成这项任务的方式。

pcap_file = 'myfile.pcap'
capture = pyshark.FileCapture(pcap_file)
for packet in capture:
    # This parses the IP layer
    if hasattr(packet, 'ip'):
       # Obtains the field names within the IP packet layer
       field_names = packet.ip._all_fields
       # Obtains the field values associated with the field names 
       field_values = packet.ip._all_fields.values()
       for field_name in field_names:
           for field_value in field_values:
               print(f'{field_name} --> {field_value}')

您可以在print语句之前进行一些其他解析,以仅获取所需的字段名称值。

如果上面的代码对您不起作用,请告诉我。