当前位置: 首页 > news >正文

Pyshark——安装、解析pcap文件

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')}")
http://www.lryc.cn/news/377950.html

相关文章:

  • java中的Random
  • PyMuPDF 操作手册 - 01 从PDF中提取文本
  • ResNet——Deep Residual Learning for Image Recognition(论文阅读)
  • java基础·小白入门(五)
  • 微观时空结构和虚数单位的关系
  • go-zero使用goctl生成mongodb的操作使用方法
  • 服务器新硬盘分区、格式化和挂载
  • Openldap集成Kerberos
  • (创新)基于VMD-CNN-BiLSTM的电力负荷预测—代码+数据
  • 机器 reboot 后 kubelet 目录凭空消失的灾难恢复
  • Pytorch构建vgg16模型
  • 分支结构相关
  • flutter开发实战-RichText富文本居中对齐
  • 智慧消防新篇章:可视化数据分析平台引领未来
  • u8g2 使用IIC驱动uc1617 lcd有时候某些像素显示不正确
  • 使用opencv合并两个图像
  • k8s学习笔记(一)
  • 自学前端——JavaScript篇
  • 高考毕业季--浅谈自己感想
  • 遥感图像地物覆盖分类,数据集制作-分类模型对比-分类保姆级教程
  • 【Android面试八股文】Kotlin内置标准函数let的原理是什么?
  • 网工面试总结1
  • [stm32]密码锁
  • 优化yarn在任务执行时核数把控不准确的问题
  • 2024年,收付通申请开通流程
  • Django使用django-apscheduler实现定时任务
  • python数据分析:修改数据
  • 【免费API推荐】:解锁无限创意,让您的应用更具竞争力(8)
  • 日语 11 12
  • STM32程序启动过程