1、简介
- PyShark是一个用于网络数据包捕获和分析的Python库,基于著名的网络协议分析工具Wireshark和其背后的libpcap/tshark库。它提供了一种便捷的方式来处理网络流量,适用于需要进行网络监控、调试和研究的场景。以下是PyShark的一些关键特性和使用方法的介绍:
- 主要特性
- 捕获网络流量:可以捕获实时的网络流量,也可以读取已经捕获的pcap文件。
- 协议解码:能够解析多种网络协议(如TCP、UDP、HTTP等),并提取具体的协议字段。
- 过滤数据包:支持使用Wireshark/Tshark的显示过滤器语法来过滤数据包。
- 高效处理:可以逐个数据包地处理,也可以批量处理数据包,适用于大规模流量分析。
2、安装
- 安装Pyshark。
-
pip install pyshark
- 【注】PyShark依赖于TShark。TShark是Wireshark的命令行版本,提供了强大的数据包捕获和分析功能。PyShark通过调用TShark来捕获和解析网络流量,因此在使用PyShark之前,需要确保TShark已正确安装并可在系统路径中访问。
- 配置Wireshark环境变量。
- 打开终端验证。
-
tshark -v
-
- 修改Pyshark库的配置文件。D:\App\Anaconda3\envs\fuzz\Lib\site-packages\pyshark\config.ini(找到pyshark库的下载位置)
- 注释掉原来的tshark_path路径,添加现有的路径。
3、解析pcap文件
- 准备一个pcap文件,输出该文件中的所有FTP消息。
-
import pyshark # 读取PCAP文件 pcap_file = 'captured_packets.pcap' # 替换为你的PCAP文件路径 cap = pyshark.FileCapture(pcap_file) # 遍历数据包并提取FTP数据包 ftp_packets = [] for packet in cap: if 'FTP' in packet: ftp_packets.append(packet) # 输出FTP数据包 for ftp_packet in ftp_packets: print(ftp_packet)
-
- 输出每条FTP请求或响应的功能码和含义:
-
import pyshark # 读取PCAP文件 pcap_file = 'captured_packets.pcap' # 替换为你的PCAP文件路径 cap = pyshark.FileCapture(pcap_file) # 遍历数据包并提取FTP数据包 ftp_packets = [] for packet in cap: if 'FTP' in packet: ftp_packets.append(packet) # 输出FTP数据包 for ftp_packet in ftp_packets: # 打印整个FTP层信息 for layer in ftp_packet.layers: if layer.layer_name == 'ftp': if layer.get_field("request") == 'True': print("request:") print(f" request_command: {layer.get_field('request_command')}") print(f" request_arg: {layer.get_field('request_arg')}") if layer.get_field("request") == 'False': print("response:") print(f" response_code: {layer.get_field('response_code')}") print(f" response_arg: {layer.get_field('response_arg')}")
-