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

python分析wireshark文件

1 pyshark库

支持wireshark的解析等。

安装pyshark

pip install pyshark

2 dpkt库

这也是一个用于分析pcap文件的库,是所有分析pcap库中最快的一个。

官方参考文档:
https://dpkt.readthedocs.io/en/latest/print_packets.html
https://dpkt.readthedocs.io/en/latest/examples.html#examples-in-dpkt-examples

安装

pip install dpkt

3 应用实例

dpkt读pcap文件

f = open('new1.pcap','rb')
pcap = dpkt.pcap.Reader(f)
# ts是timestemp时间戳,buf(二进制数据)是主体的数据包信息。
for ts,buf in pcap:
    pass

获取每个数据包的ip地址

#由buf这个二进制数据转化为Ethernet类的对象
eth = dpkt.ethernet.Ethernet(buf)
 
ip_src = eth.data.src #这里是获取这个数据包的源ip
#要注意的是,这里的源ip是以二进制的方式返回的,如果我们要获取点分十进制的ip地址
#可以这样做
def inet_to_str(inet):
    try:
        return socket.inet_ntop(socket.AF_INET,inet)
    except:
        return False#这里因为具体需要把IPv6给丢弃了
        #如果希望IPv6也能获取可以这样
        #return socket.inet_ntop(socket.AF_INET6,inet)
ip_src = inet_to_str(eth.data.src)
ip_dst = inet_to_str(eth.data.dst)#目的ip\

获取报文中的ip

#coding=utf-8
import dpkt
import socket
import time
 
def inet_to_str(inet):
    try:
        return socket.inet_ntop(socket.AF_INET,inet)
    except:
        return False
 
def getip():
    f = open('new1.pcap','rb')#要以rb方式打开,用r方式打开会报错
    pcap = dpkt.pcap.Reader(f)
    for ts,buf in pcap:
        print(ts)打印时间戳
        eth=dpkt.ethernet.Ethernet(buf)
 
        #这里也是对没有IP段的包过滤掉
        if eth.type != dpkt.ethernet.ETH_TYPE_IP:
            continue
 
        ip = eth.data
        ip_src = inet_to_str(ip.src)
        ip_dst = inet_to_str(ip.dst)
        print(ip_src+'-->'+ip_dst)
 
if __name__=='__main__':
getip()

修改报文中的源ip和目的

import dpkt
import os
import socket

test = open("new.pcap","wb")
writer = dpkt.pcap.Writer(test)
f=open("old.pcap",'rb')
packets = dpkt.pcap.Reader(f)
for ts,buf in packets:
    eth = dpkt.ethernet.Ethernet(buf)

    # 这里是将点分十进制转化成二进制
    eth.data.src = socket.inet_pton(socket.AF_INET, "192.168.1.1")
    eth.data.dst = socket.inet_pton(socket.AF_INET, "192.168.1.2")
    writer.writepkt(eth,ts=ts)#不加ts参数,数据包时间戳会默认为当前时间
    test.flush()
test.close()

http://www.kler.cn/a/421195.html

相关文章:

  • 在鲲鹏麒麟服务器上部署MySQL主从集群
  • 十,[极客大挑战 2019]Secret File1
  • Zookeeper集群数据是如何同步的?
  • Lumos学习王佩丰Excel第十九讲:Indirect函数
  • Qt清空文件夹下的内容
  • [node.js] [HTTP/S] 实现 requests 发起 HTTP/S/1.1/2.0 请求
  • QT:核心机制
  • 量化交易系统开发-实时行情自动化交易-8.3.开拓者TBQuant平台
  • 精通 Python 网络安全(二)
  • mysql数据库之三范式
  • week 10 - Database: Normalisation
  • win11 多任务 贴靠 bug:左右两窗口贴靠时拖动中间的对齐条后,资源管理器有概率卡死
  • 使用API管理Dynadot域名,设置默认域名服务器ip信息
  • Spring Boot Actuator未授权访问漏洞处理
  • 详解Vue设计模式
  • 基于SpringBoot和PostGIS的云南与缅甸的千里边境线实战
  • hadoop环境配置-创建hadoop用户+更新apt+安装SSH+配置Java环境
  • SpringSecurity6从入门到实战之SecurityContextHolder详解
  • 做SOL交易机器人拆解步骤,其实没有那么复杂。
  • VMware tool安装
  • 3248. 矩阵中的蛇
  • VScode离线下载扩展安装
  • Socket编程-udp
  • 详解版本控制工作原理及优势,常见的版本控制系统对比(HelixCore、Git、SVN等)
  • 【网络安全】网络加密原理 与 无线网络安全 链路加密
  • 深入详解人工智能入门数学基础:理解向量、矩阵及导数的概念