Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
pyshark — tshark 的 Python 封装,允许使用 Wireshark 解析器进行 Python 数据包解析。 | Kitploit
工具/GitHubGitHub/kiminewt/pyshark
数据包嗅探与分析Wi-Fi审计加密/解密工具网络取证取证分析网络安全无线安全数字取证
GitHubkiminewt/pyshark

pyshark

tshark 的 Python 封装,允许使用 Wireshark 解析器进行 Python 数据包解析。

查看仓库
2.5k4525个月前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

pyshark

Python 对 tshark 的封装,允许使用 wireshark 解析器进行 Python 数据包解析。

扩展文档:http://kiminewt.github.io/pyshark

寻找贡献者 - 由于各种原因,我目前很难有时间维护和增强该包。任何拉取请求都会被审查,如果有人感兴趣并且合适,我很乐意让他们加入项目。请随时通过 dorgreen1 at gmail 给我发邮件。

有不少 Python 数据包解析模块,但本模块的不同之处在于它实际上并不解析任何数据包,它仅仅是利用 tshark(wireshark 命令行工具)导出 XML 的能力来使用其解析功能。

该包允许从捕获文件或实时捕获进行解析,使用你已安装的所有 wireshark 解析器。 已在 Windows/Linux 上测试。

安装

版本支持

支持 Python 3.7+。存在一个不受支持的 Python 2 版本,见 pyshark-legacy。

支持所有现代版本的 tshark / wireshark,但某些功能在旧版本上可能不可用。

所有平台

只需运行以下命令从 pypi 安装最新版本

root@kitploit:~
pip install pyshark

或者从 git 仓库安装:

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

Mac OS X

你可能需要安装 libxml,这可能会出乎意料。如果你收到来自 clang 的错误或关于 libxml 的错误消息,请运行以下命令:

root@kitploit:~
xcode-select --install
pip install libxml

你很可能需要接受 XCode 的 EULA,请准备好点击 GUI 中的“接受”对话框。

用法

从捕获文件中读取:

root@kitploit:~
>>> import pyshark
>>> cap = pyshark.FileCapture('/tmp/mycapture.cap')
>>> cap
<FileCapture /tmp/mycapture.cap (589 packets)>
>>> print cap[0]
Packet (Length: 698)
Layer ETH:
        Destination: BLANKED
        Source: BLANKED
        Type: IP (0x0800)
Layer IP:
        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
  ...

其他选项

  • param keep_packets: 是否在通过 next() 读取数据包后保留它们。用于在读取大型捕获时节省内存。
  • param input_file: 可以是路径或类文件对象,包含数据包捕获文件(PCAP、PCAP-NG..)或 TShark xml。
  • param display_filter: 在读取捕获之前应用于它的显示(wireshark)过滤器。
  • param only_summaries: 仅生成数据包摘要,速度更快但包含的信息非常少。
  • param disable_protocol: 禁用对协议(tshark > 版本 2)的检测。
  • param decryption_key: 用于加密和解密捕获流量的密钥。
  • param encryption_type: 捕获流量使用的加密标准(必须是 'WEP'、'WPA-PWD' 或 'WPA-PWK' 之一。默认为 WPA-PWK)。
  • param tshark_path: tshark 二进制文件的路径。

从实时接口读取:

root@kitploit:~
>>> capture = pyshark.LiveCapture(interface='eth0')
>>> capture.sniff(timeout=50)
>>> capture
<LiveCapture (5 packets)>
>>> capture[3]
<UDP/HTTP Packet>

for packet in capture.sniff_continuously(packet_count=5):
    print('Just arrived:', packet)

其他选项

  • param interface: 要嗅探的接口名称。如果未指定,则使用第一个可用的接口。
  • param bpf_filter: 应用于数据包的 BPF 过滤器。
  • param display_filter: 要使用的显示(wireshark)过滤器。
  • param only_summaries: 仅生成数据包摘要,速度更快但包含的信息非常少。
  • param disable_protocol: 禁用对协议(tshark > 版本 2)的检测。
  • param decryption_key: 用于加密和解密捕获流量的密钥。
  • param encryption_type: 捕获流量使用的加密标准(必须是 'WEP'、'WPA-PWD' 或 'WPA-PWK' 之一。默认为 WPA-PWK)。
  • param tshark_path: tshark 二进制文件的路径。
  • param output_file: 同时将捕获的数据包保存到此文件。

使用环形缓冲区从实时接口读取

root@kitploit:~
>>> capture = pyshark.LiveRingCapture(interface='eth0')
>>> capture.sniff(timeout=50)
>>> capture
<LiveCapture (5 packets)>
>>> capture[3]
<UDP/HTTP Packet>

for packet in capture.sniff_continuously(packet_count=5):
    print('Just arrived:', packet)

其他选项

  • param ring_file_size: 环形文件的大小,单位为 kB,默认为 1024。
  • param num_ring_files: 保留的环形文件数量,默认为 1。
  • param ring_file_name: 环形文件的名称,默认为 /tmp/pyshark.pcap。
  • param interface: 要嗅探的接口名称。如果未指定,则使用第一个可用的接口。
  • param bpf_filter: 应用于数据包的 BPF 过滤器。
  • param display_filter: 要使用的显示(wireshark)过滤器。
  • param only_summaries: 仅生成数据包摘要,速度更快但包含的信息非常少。
  • param disable_protocol: 禁用对协议(tshark > 版本 2)的检测。
  • param decryption_key: 用于加密和解密捕获流量的密钥。
  • param encryption_type: 捕获流量使用的加密标准(必须是 'WEP'、'WPA-PWD' 或 'WPA-PWK' 之一。默认为 WPA-PWK)。
  • param tshark_path: tshark 二进制文件的路径。
  • param output_file: 同时将捕获的数据包保存到此文件。

从远程实时接口读取:

root@kitploit:~
>>> capture = pyshark.RemoteCapture('192.168.1.101', 'eth0')
>>> capture.sniff(timeout=50)
>>> capture

其他选项

  • param remote_host: 要捕获的远程主机(IP 或主机名)。应运行 rpcapd。
  • param remote_interface: 远程机器上要捕获的远程接口。注意在 Windows 上,它不是设备显示名称,而是真实的接口名称(例如 \Device\NPF_..)。
  • param remote_port: rpcapd 服务监听的远程端口。
  • param bpf_filter: 在读取捕获之前应用于它的 BPF(tcpdump)过滤器。
  • param only_summaries: 仅生成数据包摘要,速度更快但包含的信息非常少。
  • param disable_protocol: 禁用对协议(tshark > 版本 2)的检测。
  • param decryption_key: 用于加密和解密捕获流量的密钥。
  • param encryption_type: 捕获流量使用的加密标准(必须是 'WEP'、'WPA-PWD' 或 'WPA-PWK' 之一。默认为 WPA-PWK)。
  • param tshark_path: tshark 二进制文件的路径。

访问数据包数据:

数据可以通过多种方式访问。 数据包被分为多个层,首先你需要到达相应的层,然后你可以选择你的字段。

以下所有方式都可以工作:

root@kitploit:~
>>> packet['ip'].dst
192.168.0.1
>>> packet.ip.src
192.168.0.100
>>> packet[2].src
192.168.0.100

要测试某个层是否在数据包中,你可以使用它的名称:

root@kitploit:~
>>> 'IP' in packet
True

要查看所有可能的字段名称,请使用 packet.layer.field_names 属性(例如 packet.ip.field_names)或解释器上的自动补全功能。

你还可以获取字段的原始二进制数据,或它的漂亮描述:

root@kitploit:~
>>> p.ip.addr.showname
Source or Destination Address: 10.0.0.10 (10.0.0.10)
# 还有一些新的属性:
>>> p.ip.addr.int_value
167772170
>>> p.ip.addr.binary_value
b'\n\x00\x00\n'

解密数据包捕获

Pyshark 支持使用 WEP、WPA-PWD 和 WPA-PSK 标准自动解密跟踪(WPA-PWD 是默认值)。

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

每个捕获类中都存在一个受支持加密标准的元组 SUPPORTED_ENCRYPTION_STANDARDS。

root@kitploit:~
>>> pyshark.FileCapture.SUPPORTED_ENCRYPTION_STANDARDS
('wep', 'wpa-pwd', 'wpa-psk')
>>> pyshark.LiveCapture.SUPPORTED_ENCRYPTION_STANDARDS
('wep', 'wpa-pwd', 'wpa-psk')

使用显示过滤器从文件读取

Pyshark 显示过滤器有助于分析应用程序相关的流量。BPF 过滤器不如 Wireshark 的显示过滤器灵活。

root@kitploit:~
>>> cap1 = pyshark.FileCapture('/tmp/capture1.cap', display_filter="dns")
>>> cap2 = pyshark.LiveCapture(interface='en0', display_filter="tcp.analysis.retransmission")

许可证

本项目基于 MIT 许可证。对本项目的贡献均以相同的许可证接受。

下载工具