首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使用scapy和python提取SSL/TLS消息?

如何使用scapy和python提取SSL/TLS消息?
EN

Stack Overflow用户
提问于 2018-07-19 21:08:05
回答 1查看 11.2K关注 0票数 7

我在试着读一条TLS消息。具体地说,就是包含证书详细信息(handshake_type = 11)的那个。我要做的是首先检查消息是否包含Raw。如果是这样,我将像这样提取有效负载:b = bytes(pkt[Raw].load)。接下来,我检查第一个字节是否为0x16,接下来的两个字节是否为正确的TLS版本。

问题是这条消息没有通过这些条件。WireShark向我展示了\x16\x03\x030000位置的字节(附图),但我猜这样做是为了方便。

那么,我认为有效负载必须以0x16开头的假设是错误的吗?

P.S

我不想使用scapy-ssl_tls库。

编辑

代码如下:

代码语言:javascript
复制
def handle_tls_packet(pkt):
    if pkt.haslayer(Raw):
        b = bytes(pkt[Raw].load)

        if b[0] == 0x16:
            version =  int.from_bytes(b[1:3], 'big')
            message_len = int.from_bytes(b[3:5], 'big')
            handshake_type = b[5]
            handshake_length = int.from_bytes(b[6:9], 'big')

            print("v = ", version, " len = ", message_len, " htype =", handshake_type
            , "hlen =", handshake_length)

            if handshake_type == 11:
                # never happens - Why?
                certs_len = int.from_bytes(b[7:11], 'big')

EDIT2:

按照Cukic0d的建议,我使用了load_layer("ssl")

显然,pkt[TLS].msg是一个列表(在一个包中包含多个TLS消息?)。不管怎样,我把每一条这样的消息的类型打印如下:

代码语言:javascript
复制
def handle_tls_packet(pkt):
    for tls_msg in pkt[TLS].msg:
        print(type(tls_msg))

我希望看到一个TLSCertificate对象,但是从来没有看到过这样的对象。为什么?

EDIT3:

我愿意使用scapy-ssl_tls,如果这会让生活更轻松的话。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-07-20 06:01:59

如果您想要玩TLS握手,可以使用load_layer("tls")在scapy上启用TLS。

这将启用TLS模块,该模块支持握手(需要>= 2.4.0)。然后,Scapy将正确地解析TLS握手/密钥...数据包

你应该先试一下

代码语言:javascript
复制
load_layer("tls")
packets = sniff(prn=lambda x:x.summary(), lfilter=lambda x: TLS in x)

如果您使用的是Scapy 2.4.4+,为了获得更好的一致性,您甚至可以使用

代码语言:javascript
复制
sniff([...], session=TLSSession)

看看数据包是如何构建的:

示例:

这里还有一个非常奇特的指南:https://github.com/secdev/scapy/blob/master/doc/notebooks/tls/notebook2_tls_protected.ipynb

所以总结一下:

在使用load_layer("tls")时,您会发现每个数据包。

请注意,有很多数据包,并且TLSCertificate只会出现一次。msg是一个列表,因为许多信息可以包含在一个单独的TLS包中

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51423507

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档