python - 从 pyshark 中提取数据
问题描述
我正在尝试从我从另一台设备接收的数据包中提取数据。我已经隔离了要从中提取数据的数据包,但无法弄清楚如何提取我想要的数据。我正在使用 pyshark 来获取数据包,但这不允许我实际看到该数据。我在wireshark时可以看到数据。我要提取的数据用红色圈起来。线鲨
这是我在python中的代码。
import pyshark
capture=pyshark.LiveCapture(interface='wlan0', display_filter='frame.len>190 and upd.port==1700')
for i in capture:
print(i)
它显示所有与wireshark 相同的信息减去纬度、经度坐标。
解决方案
我会要求一个示例 PCAP 文件,但大多数人不想共享真实世界的数据。如果没有 PCAP 文件,我无法给你一个完整的答案,但我可以给你一个 95% 的答案。
这就是我攻击您的问题的方式:
import pyshark
capture = pyshark.LiveCapture(interface='your_interface')
for raw_packet in capture.sniff_continuously():
# filter only UDP packet that have a frame length greater
# than 190 and that have a port number of 1700.
if hasattr(raw_packet, 'udp') and int(packet.frame_info.cap_len) > 190 and packet[packet.transport_layer].srcport == '1700':
# Get the details for the packets by accessing
# _all_fields and _all_fields.values()
field_names = raw_packet.udp._all_fields
field_values = raw_packet.udp._all_fields.values()
for field_name in field_names:
for field_value in field_values:
# you can add another filter here to get your
# lat & long coordinates
print(f'{field_name} -- {field_value}')
# if you need to access the packet data you need to do this,
# but it might come back in hex, which will need to be decoded.
# if "DATA" in str(packet.layers):
# print(packet.data.data)
如果您在过滤出您要查找的数据包时遇到任何问题,请联系我们。如果您可以共享示例 PCAP,我将调整我的答案。
我在 GitHub 上有一个名为pyshark packet analysis的文档和代码示例,您可能会发现它们很有用。
推荐阅读
- mobile - 有人可以帮助我使用移动应用程序的 XPages DataView 控件吗?
- excel - 尝试根据第一列删除重复项
- r - RMarkdown - 第二个内联代码显示代码块而不是值
- javascript - \PlaylistItems:list API 在删除视频时返回少于 totalResults
- google-cloud-firestore - 在 Flutter 应用程序中包含 Firestore 的问题
- django - Django ORM 验证数据库中的一行
- hive - Kafka 到 Flink 到 Hive - 写入失败
- ansible - 在 Ansible Jinja2 模板的默认过滤器中使用变量
- ios - 在 UIButton 的边缘动态对齐图像
- flutter - 使用构建器构建时如何访问列表项?