首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从pyshark拉取数据

从pyshark拉取数据
EN

Stack Overflow用户
提问于 2020-11-13 00:53:47
回答 1查看 494关注 0票数 2

我正在尝试从从其他设备接收的数据包中提取数据。我已经隔离了要从中提取数据的数据包,但无法确定如何提取所需的数据。我正在使用pyshark获取数据包,但这不允许我实际查看该数据。当我在wireshark时,我可以看到数据。我要提取的数据用红色圈出。Wireshark

这是我的python代码。

代码语言:javascript
复制
import pyshark

capture=pyshark.LiveCapture(interface='wlan0', display_filter='frame.len>190 and upd.port==1700')

for i in capture:
  print(i)

它显示了wireshark减去纬度和经度坐标后的所有相同信息。

EN

回答 1

Stack Overflow用户

发布于 2020-11-22 06:50:41

我想要一个示例PCAP文件,但大多数人都不想分享真实世界的数据。如果没有PCAP文件,我不能给你一个完整的答案,但我可以给你一个95%的答案。

这是我解决你的问题的方法:

代码语言:javascript
复制
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上有一个名为的文档和代码示例,您可能会发现它很有用。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64808226

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档