• python解析pcap报文_scapy解析pcap文件


    scapy TLS/SSL 流量数据操作_UNOmoist的博客-CSDN博客_scapy tls

    Python3.6下无法使用稳定的scapy-ssl_tls,目前仅限于Python2。所以安装scapy-ssl_tls不稳定,趁早放弃。

    1.ubuntu20换源,卸载python3:

    apt remove python3

    安装python2

    apt install python2

    2.Ubuntu20 安装 python2 的 pip

    Ubuntu下python2的pip安装_CHH3213的博客-CSDN博客_ubuntu安装pip2

    wget https://bootstrap.pypa.io/pip/2.7/get-pip.py

    sudo python2 get-pip.py
    pip2 --version
     3.安装scapy:apt install python-scapy

    安装scapy-ssl_tls这个库,优先选择pip的安装方式:

    pip install scapy-ssl_tls

    介绍如何使用 Python scapy 从pcap数据包中提取TLS/SSL数据包的基本信息,例如SNI等。

    scapy 能够从pcap包中提取出数据包对象,可以直接通过pkt.show()输出显示数据包内容。

    from scapy.all import *

    infliestr = "outpkts.pcapng"

    pkts = rdpcap(infliestr)           # 打开pcap文件,读取数据包内容
    nums=29                            # 该pcap包中,下标为29的数据包为tls client hello 
    pkts[nums].show() 

    从图中可以看出,只能显示eth,ip以及tcp层信息,不能看到tls信息。本文旨在查看tls信息并通过tls信息进行过滤,最终根据tls中的sni或其他信息结合网络数据包特征实现数据包标记(标记数据包由哪个应用产生)。

    查看tls/ssl信息
    为了查看数据白哦中的tls/ssl信息,首先需要加载tls,根据scapy官网介绍,使用load_layer(‘tls’)即可。

    from scapy.all import *

    load_layer("tls")                   # 加载tls
    infliestr = "outpkts.pcapng"

    pkts = rdpcap(infliestr)           # 打开pcap文件,读取数据包内容
    nums=29                            # 该pcap包中,下标为29的数据包为tls client hello 
    pkts[nums].show() 

    结论:通过该方式是可以解析出tls包中的信息的,因此可以实现对tls信息内容的提取与过滤。

    提取 TLS 中的type和version字段

    from scapy.all import *

    load_layer("tls")
    infliestr = "outpkts.pcapng"

    pkts = rdpcap(infliestr)           # 打开pcap文件,读取数据包内容

    nums=29                            # 该pcap包中,下标为29的数据包为tls client hello 
    pkts[nums].show()
    print("type: ", pkts[5]['TLS'].fields['type'])
    print("version: ", pkts[5]['TLS'].fields['version'])
     

    查看 TLS client hello 中的 server name

    from scapy.all import *

    load_layer("tls")
    infliestr = "outpkts.pcapng"

    pkts = rdpcap(infliestr)           # 打开pcap文件,读取数据包内容

    nums=29                            # 该pcap包中,下标为29的数据包为tls client hello 
    pkts[nums].show()
    pkts[nums]['TLS']['TLS Handshake - Client Hello']['TLS Extension - Server Name'].show()
     

    针对wireshark或者tcpdump捕获的文件,使用python中的scapy库可以非常方便的进行解析,但是也存在一些坑。

    scapy是一个非常强大的流量包操作工具,可以针对请求或者响应从tcp/Ip的各层进行处理,官方网址为:https://scapy.net。

    但是需要注意一点的是单独的scapy库能做的工作有限,还有2个必须引进的库,即针对https进行解析的#

    安装

    这三个库最好在linux下进行安装,python的版本最好选择python2.7。

    然后首先安装scapy-ssl_tls这个库,优先选择pip的安装方式:

    pip install scapy-ssl_tls

    它会自动安装上相应的依赖库,包括scapy。

    最后安装上scapy-http即可,如果不按照这个方式安装,在安装scapy-ssl_tls可能会失败。

    使用

    scapy以及其他2个库都是开源软件,文档很少,如果要查看用法基本上都是直接查看代码,但是这3个库的源码包里都存在examples目录,里面有大量的例子,参照这些例子可以实现自己的逻辑。

    下面列出一个关键的函数,参照这些函数可以基本上实现大部分逻辑。

    rdpcap():读取pcap文件

    show():展示当前类型包含的属性及值

    haslayer():判断当前流是否含有某层数据

    getlayer():根据条件获取数据

  • 相关阅读:
    Huggingface transformers 镜像使用,本地使用,tokenizer参数介绍
    洛谷刷题笔记——P4588 [TJOI2018]数学计算
    SQL——前端常用sql的语句、sql与计算机
    4种智慧路灯典型应用场景介绍
    力扣:1089. 复写零
    数据创新加速产业发展∣企企通亮相2023浙北CIO峰会,以技术驱动数智升级
    认识ProtoBuf
    【日志】日志干什么的?日志工厂是什么?log4j 的配置和使用? log4j.properties 文件配置、log4j jar包坐标
    安装宝塔,使用宝塔自动部署
    【计网】网络层
  • 原文地址:https://blog.csdn.net/WASEFADG/article/details/126757471