是否有一种获取数据包的层字段值信息的方法?
(即在打印数据包层时显示在右侧的字符串信息)
像下面的几行:
协议鉴别符:移动性管理消息
跳过指示器:未显示所选的PLMN
例如
packets = pyshark.FileCapture(...)
print(packet[0]['IP']):
.... 0101 = Protocol discriminator: Mobility Management messages (0x5)
0000 .... = Skip Indicator: No indication of selected PLMN (0)
...
...
...
答案 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语句之前进行一些其他解析,以仅获取所需的字段名称值。
如果上面的代码对您不起作用,请告诉我。