gpt4 book ai didi

python-3.x - 即使在 scapy 中调用 load_layer ('tls' 之后也无法读取 tls 部分)

转载 作者:太空宇宙 更新时间:2023-11-03 13:30:17 25 4
gpt4 key购买 nike

This问题解释了如何使用 scapy 读取数据包的 TLS 部分。

但是,我的程序无法读取它。它返回的只是一堆十六进制字符

>>> from scapy.all import *
>>> load_layer('tls')
>>> cap = rdpcap('tls.pcap')
>>> p1=cap[0]
>>> p1
<Ether dst=14:cc:20:51:33:ea src=f4:f2:6d:93:51:f1 type=0x800 |<IP version=4 ihl=5 tos=0x0 len=146 id=62970 flags=DF frag=0 ttl=64 proto=tcp chksum=0x50a0 src=192.168.1.143 dst=54.254.250.149 |<TCP sport=49335 dport=50443 seq=549695462 ack=200962336 dataofs=5 reserved=0 flags=PA window=4380 chksum=0xb0ac urgptr=0 |<Raw load="\x17\x03\x01\x00 \xf2\x10\xfd\x95N'\xf2\xaf\x99tp\x93\xbc\xe9\x81w\x91\x1b\xe0\xc9M:\x9a!]\xb0!\xae\xd2\x86\xb0>\x17\x03\x01\x00@d>\x0b\xee\xf0\xab\xded\x02E)\x0e0\xbb\xe6\x82uU\xb22\x87\xd6\xe4n[\x1d\x18\xe8\xd6\x1c\x00N_C\xe6\xdd\xbe\x89@6p\xd9\xaf\x19\xb3s\x07H\xdeF\x88\xdar\x0f\x8a\n!4\xeb\xd3F\xefgH" |>>>>

我想获取tls记录版本、tls记录长度和tls记录内容类型。

这是在wireshark中打开数据包的截图。 enter image description here

有人可以告诉我我做错了什么以及如何正确阅读 tls 内容吗?

我正在使用 Python3.6,因此无法使用稳定的 scapy-ssl_tls,目前仅限于 Python 2。

最佳答案

你很亲近。您只需要使用 TLS(pkt.load)

下载 TLS 捕获

对于此示例,使用此 tls capture来自 Wireshark 的 Bugzilla。

我们可以看到数据包 4 是 TLS Client Hello:

tshark -r DNS-over-TLS.pcapng -Y "frame.number==4"
4 0.122267 133.93.28.45 → li280-151.members.linode.com TLSv1 384 Client
Hello 00:00:5e:00:01:18 ← 48:d7:05:df:86:0b

用Scapy加载

确保您已安装加密库,因为它是加载 TLS 捕获所必需的。

>>> import cryptography
>>> # No errors

通过此次捕获重现您目前所拥有的内容:

>>> from scapy.all import *
>>> load_layer('tls')
>>> cap = rdpcap('DNS-over-TLS.pcapng')
>>> tls_client_hello=cap[3] # Wireshark numbers packets starting at 1, scapy at 0
>>> tls_client_hello
<Ether dst=14:cc:20:51:33:ea src=f4:f2:6d:93:51:f1 type=0x800 |<IP version=4
ihl=5 tos=0x0 len=146 id=62970 flags=DF frag=0 ttl=64 proto=tcp chksum=0x50a0
src=192.168.1.143 dst=54.254.250.149 |<TCP sport=49335 dport=50443 seq=549695462
ack=200962336 dataofs=5 reserved=0 flags=PA window=4380 chksum=0xb0ac urgptr=0 |
<Raw load="\x17\x03\x01\x00
\xf2\x10\xfd\x95N'\xf2\xaf\x99tp\x93\xbc\xe9\x81w\x91\x1b\xe0\xc9M:\x9a!]\xb0!\xa
e\xd2\x86\xb0>\x17\x03\x01\x00@d>\x0b\xee\xf0\xab\xded\x02E)\x0e0\xbb\xe6\x82uU\x
b22\x87\xd6\xe4n[\x1d\x18\xe8\xd6\x1c\x00N_C\xe6\xdd\xbe\x89@6p\xd9\xaf\x19\xb3s\
x07H\xdeF\x88\xdar\x0f\x8a\n!4\xeb\xd3F\xefgH" |>>>>

请注意,我们要查看的部分称为原始负载。要访问数据包的这一部分,您可以使用 tls_client_hello.load。请记住,TLS 将采用包含数据的字节对象,而不是整个数据包。

>>> TLS(tls_client_hello.load)
<TLS type=handshake version=TLS 1.0 len=313 iv=b'' msg=[<TLSClientHello
msgtype=client_hello msglen=309 version=TLS 1.2 gmt_unix_time=Tue, 18 May 2077
23:20:52 +0000 (3388605652)
random_bytes=d6d533aca04dca42db8b123b0a143dcd580079147122e4de095c15cf sidlen=0
sid='' cipherslen=182 ciphers=[TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,
< TLS output truncated ... >

进一步阅读

我强烈建议查看 Scapy TLS Notebooks很好地记录了 scapy+TLS 的使用情况。

关于python-3.x - 即使在 scapy 中调用 load_layer ('tls' 之后也无法读取 tls 部分),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58272264/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com