美文网首页
scapy解析SSL/TLS加密包

scapy解析SSL/TLS加密包

作者: 低级bug制造专家 | 来源:发表于2019-08-05 20:07 被阅读0次

参考链接
安装库

sudo pip install scapy-ssl_tls

提取ssl/tls中的server_name字段

#from scapy.all import *
from scapy_ssl_tls.ssl_tls import *
pcaps = rdpcap("159.226.20.6_7609_113.207.81.81_443.pcap")
packet = pcaps[2]
#print packet[TLSExtension].show()
print packet[TLSExtension].server_names[0]
print type(packet[TLSExtension].server_names[0])
print str(packet[TLSExtension].server_names[0])

print type(str(packet[TLSExtension].server_names[0]))

结果

new3@new3:~/https/lx$ python pcap.py 
kyfw.12306.cn
<class 'scapy_ssl_tls.ssl_tls.TLSServerName'>
kyfw.12306.cn
<type 'str'>

判断一个packet是不是client hello包

rom scapy_ssl_tls.ssl_tls import *
pcaps = rdpcap("159.226.20.6_7609_113.207.81.81_443.pcap")
packet = pcaps[2]

print 'IP layer:',packet.haslayer('IP')
print 'UDP layer:',packet.haslayer('UDP')
print 'TCP layer:',packet.haslayer('TCP')
print 'TLS layer:',packet.haslayer('TLS')
print 'Client Hello layer:',packet.haslayer('TLSClientHello')
print 'TLS Extension:',packet.haslayer('TLSExtension')

if packet.haslayer('TLSClientHello'):
    print packet[TLSExtension].server_names[0]
    print type(packet[TLSExtension].server_names[0])
    print str(packet[TLSExtension].server_names[0])
    print type(str(packet[TLSExtension].server_names[0]))
    # print packet[TLSClientHello].show()
IP layer: 1
UDP layer: 0
TCP layer: 1
TLS layer: 0
Client Hello layer: 1
TLS Extension: 1
kyfw.12306.cn
<class 'scapy_ssl_tls.ssl_tls.TLSServerName'>
kyfw.12306.cn
<type 'str'>

pcap2.py:
packet[TLSExtServerNameIndication]可以提取包的server_name字段,类型是<class 'scapy_ssl_tls.ssl_tls.TLSServerName'>的,将其转化成str类型后,使用os.rename()函数重新命名的时候会报错,原因是后面有一个\0,将其去掉,再使用os.rename()函数,发现重命名的文件前面都多了一个乱码(?),查看编码的类型是ascii,尝试转码也不对,print server_name[0],打印为空,一直到[3]才出现我们想要的server_name的第一个字符,其他的tls client hello包也是这样,所以就从第三位开始提取,就没问题了。

import os

import shutil
import time
import chardet
from scapy_ssl_tls.ssl_tls import *

def mkdir(path):
    folder = os.path.exists(path)
    if not folder:
        os.makedirs(path)

pcaps = rdpcap("159.226.1.186_29646_221.122.179.15_443.pcap")
packet = pcaps[2]

path = '/home/new3/https/https'
print 'TLS layer:',packet.haslayer('TLS')
print 'Client Hello layer:',packet.haslayer('TLSClientHello')


if packet.haslayer('TLSClientHello'):
    server_name = str(packet[TLSExtServerNameIndication].server_names[0])
    server_name = server_name[3:]
    server_name = server_name.strip('\0')


#os.rename('159.226.1.186_29646_221.122.179.15_443.pcap',server_name)
dir = os.path.join(path,server_name)
print dir
mkdir(dir)


相关文章

  • scapy解析SSL/TLS加密包

    参考链接安装库 提取ssl/tls中的server_name字段 结果 判断一个packet是不是client h...

  • HTTPS中的SSL/TLS 和中间人攻击

    Q:Https == http + SSL/TLS 那中间ssl 加密的过程?Q:SSL/TLS 就完全安全吗? ...

  • SSL(安全套阶层)/TLS(传输层安全)

    SSL/TLS协议运行机制的概述图解SSL/TLS协议HTTPS背后的加密算法TLS协议分析 与 现代加密通信协议...

  • iOS https

    HTTPS协议 1. 作用 学名SSL/ TLS 协议,不使用SSL/TLS的HTTP通信,就是不加密的通信。所...

  • iOS https基于AF

    想要搞懂https首先你要知道ssl/tls什么是ssl/tls?SSL利用数据加密、身份验证和消息完整性验证机制...

  • scapy相关

    python 的 scapy 库可以方便的抓包与解析包 pip install scapy 抓包: from sc...

  • python解析pcap文件中的http数据包

    使用scapy、scapy_http就可以方便的对pcap包中的http数据包进行解析 scapy_http可以在...

  • TLS安全通信

    什么是TLS TLS其实是SSL,可能更正式的说法已经不用SSL了。TLS是一套基于非对称加密算法的安全传输协议,...

  • Netty学习之内置处理器以及编解码器

    Netty学习之内置处理器以及编解码器 前言 SSL/TLS SSL/TLS是目前广泛使用的加密,位于TCP之上,...

  • nmap

    目标:使用namp验证漏洞。 SSL/TLS都是安全通信协议,用于传输过程加密,SSL当前最新版本3.0,TLS当...

网友评论

      本文标题:scapy解析SSL/TLS加密包

      本文链接:https://www.haomeiwen.com/subject/wxnmdctx.html