专栏首页FreeBufPyshark:使用了WirdShark的Python数据包解析工具

Pyshark:使用了WirdShark的Python数据包解析工具

Pyshark

Pyshark是一款针对tshark的Python封装器,在Pyshark的帮助下,广大研究人员可以使用wireshark的解析器来进行Python数据包解析。

扩展文档:【Pyshark】

虽然目前社区也有多款针对Python包的解析模块,但Pyshark与它们不同的是,它本身并不会解析任何数据包,它只会使用tshark的功能(Wireshark命令行实用工具)来导出XML并完成包解析。

工具安装

针对全平台

广大用户可以直接使用pip来从pypi安装Pyshark:

pip install pyshark

或者,大家也可以直接从该项目的GitHub库直接将项目代码克隆至本地:

git clone https://github.com/KimiNewt/pyshark.git
cd pyshark/src
python setup.py install

Mac OS X

在macOS上,你可能还需要安装libxml,如果你在运行clang命令时遇到了错误,或系统弹出了关于libxml的错误,你就需要运行下列命令了:

xcode-select--install
   pip install libxml

工具使用

从捕捉到cap文件中读取解析内容:

>>>import pyshark
>>>cap = pyshark.FileCapture('/tmp/mycapture.cap')
>>>cap
<FileCapture/tmp/mycapture.cap (589 packets)>
>>>print cap[0]
Packet(Length: 698)
LayerETH:
Destination: BLANKED
Source: BLANKED
Type: IP (0x0800)
LayerIP:
Version: 4
Header Length: 20 bytes
Differentiated Services Field: 0x00(DSCP 0x00: Default; ECN: 0x00: Not-ECT (Not ECN-Capable Transport))
Total Length: 684
Identification: 0x254f (9551)
Flags: 0x00
Fragment offset: 0
Time to live: 1
Protocol: UDP (17)
Header checksum: 0xe148 [correct]
Source: BLANKED
Destination: BLANKED
...

其他选项:

paramkeep_packets: 在读取完内容后是否保存包;
paraminput_file: 判断路径或文件对象是否包含包文件(PCAP、PCAP-NG…)或TSharkXML;
paramdisplay_filter: 是否需要在读取包内容前配置过滤器;
paramonly_summaries: 生成包概括数据,速度快,但信息少;
paramdisable_protocol: 禁用协议探测功能 (tshark > version 2);
paramdecryption_key: 用于加密和解密捕捉流量的密钥;
paramencryption_type: 捕捉流量中的标准加密('WEP', 'WPA-PWD', 或'WPA-PWK',默认为WPA-PWK);
paramtshark_path: tshark代码路径;

从活动接口读取包内容:

>>>capture = pyshark.LiveCapture(interface='eth0')
>>>capture.sniff(timeout=50)
>>>capture
<LiveCapture(5 packets)>
>>>capture[3]
<UDP/HTTPPacket>
for packet in capture.sniff_continuously(packet_count=5):
print 'Just arrived:', packet

使用环状缓冲区从活动接口读取包内容:

>>>capture = pyshark.LiveRingCapture(interface='eth0')
>>>capture.sniff(timeout=50)
>>>capture
<LiveCapture(5 packets)>
>>>capture[3]
<UDP/HTTPPacket>
for packet in capture.sniff_continuously(packet_count=5):
print 'Just arrived:', packet

从远程活动接口读取包内容:

>>>capture = pyshark.RemoteCapture('192.168.1.101', 'eth0')
>>>capture.sniff(timeout=50)
>>>capture

访问包数据

我们可以通过多种方式访问数据,Python包被划分成到了多个层,首先我们需要访问特定的层,然后选择相应的数据区域。

>>>packet['ip'].dst
192.168.0.1
>>>packet.ip.src
192.168.0.100
>>>packet[2].src
192.168.0.100

判断数据包中是否包含某一层,我们可以使用下列命令:

>>>'IP' in packet
True

如需查看所有的数据区域,可以使用“packet.layer.field_names”属性,例如“packet.ip.field_names”。当然了,我们还可以直接获取到数据区域的原始代码数据以及注释信息:

>>>p.ip.addr.showname
Sourceor Destination Address: 10.0.0.10 (10.0.0.10)
# Andsome new attributes as well:
   >>>p.ip.addr.int_value
   167772170
   >>>p.ip.addr.binary_value
   '\n\x00\x00\n'

解密捕捉到的包

Pyshark支持自动化解密,支持的加密标准有WEP、WPA-PWD和WPA-PSK,默认为WPA-PWD:

>>>cap1 = pyshark.FileCapture('/tmp/capture1.cap', decryption_key='password')
>>>cap2 = pyshark.LiveCapture(interface='wi0', decryption_key='password',encryption_type='wpa-psk')

除此之外,Pyshark还支持以元组的形式传递支持的加密标准:

>>>pyshark.FileCapture.SUPPORTED_ENCRYPTION_STANDARDS
('wep','wpa-pwd', 'wpa-psk')
>>>pyshark.LiveCapture.SUPPORTED_ENCRYPTION_STANDARDS
('wep','wpa-pwd', 'wpa-psk')

项目地址

本文分享自微信公众号 - FreeBuf(freebuf),作者:Alpha_h4ck

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-10-02

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 如何使用Airgeddon搭建基于软件的WIFI干扰器

    Airgeddon是一款能够进行Wi-Fi干扰的多Bash网络审计工具,它可以允许你在未加入目标网络的情况下设置目标,并且断开目标网络中的所有设备。Airged...

    FB客服
  • Kali linux发布新版本了,一起来看看都有什么新功能吧

    终于更新了!Kali官方近日正式宣布推出Kali Linux 2017.1滚动发行版,它带来了一系列令人兴奋的更新和功能。与所有新版本一样,您可以使用更新的软件...

    FB客服
  • 【新手指南】如何用Ettercap实现“中间人攻击”(二):HTTP数据劫持

    作为《新手指南:如何用Ettercap实现“中间人攻击”》工具介绍的续篇,本文以某知名下载网站为例,从实战角度出发,分析交互过程,逐步介绍了利用Etterca...

    FB客服
  • 网易领投,AxonVR获VR触感技术领域最大融资额——580万美金

    VRPinea
  • Android自定义半圆形圆盘滚动选择器

    功能要求:两边的半圆形转盘可以转动,转盘上的图标也一起滚动,蓝红色图标指着的小图标变成高亮选中状态。

    砸漏
  • MyBatis实战(三)-二级缓存原理解

    MyBatis的二级缓存是Application级别的缓存,它可以提高对数据库查询的效率,以提高应用的性能

    JavaEdge
  • 《深入理解mybatis原理》 MyBatis的二级缓存的设计原理

    版权声明:本文为博主原创文章,未经博主允许不得转载。 https://louluan.blog.c...

    亦山
  • oprofile测试应用程序性能

    opcontrol --reset opcontrol --init opcontrol --setup --event=CYCLES:1000 opcontr...

    用户3765803
  • 造车新势力离丰收还有多远?

    7月30日,理想汽车在纳斯达克上市;8月27日晚间,小鹏汽车正式登陆纽交所。继蔚来汽车2018年IPO后,终于再有两家造车新势力公开募股。

    用户2908108
  • 算法模板——线段树5(区间开根+区间求和)

    实现功能——1:区间开根;2:区间求和(此模板以BZOJ3038为例) 作为一个非常规的线段树操作,其tag也比较特殊呵呵哒 1 var 2 i,j,...

    HansBug

扫码关注云+社区

领取腾讯云代金券