scapy TLS/SSL 流量数据操作
本文仅接上文介绍如何使用 Python scapy 从pcap数据包中提取TLS/SSL数据包的基本信息,例如SNI等。
参考:https://scapy.readthedocs.io/en/latest/api/scapy.layers.tls.html
前言
scapy 能够从pcap包中提取出数据包对象,可以直接通过pkt.show()
输出显示数据包内容,对一个TLS(client hello)数据包的显示如下图:
代码:
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部分):