首页 > 解决方案 > 在 python 3 中使用 Scapy 读取 SSL 证书

问题描述

我在 Wireshark 中捕获了 TLS 握手并将其保存在 pcap 文件中。现在我正在尝试使用 Python Scapy 库读取 TLS 证书的内容。

我已经在 Scapy 中启用了 TLS 功能,load_layer('tls')并且我能够读取头信息,例如应用程序数据包中的 TLS 版本。

但是,我无法访问证书中的信息,例如其版本、颁发者等。我看到的只是Python3中的加密字符串,如下所示: 在此处输入图像描述

编辑:这是我的代码和结果

>>> from scapy.all import *
>>> load_layer('tls')
>>> cap=rdpcap('tlsSample4.pcap')
>>> 
>>> p4 = cap[4] # this is the packet with the certificate
>>> layer4=p4[3]
>>> layer4
<SSLv2  len=8303    [with padding: 0xa06f] padlen=110 mac=b'' msg=[<Raw  load='ly1\x1f0\x1d\x06\x03U\x04\x03\x13\x16thawte Primary Root CA0\x82\x01"0\r\x06\t*\x86H\x86\xf7\r\x01\x01\x01\x05\x00\x03\x82\x01\x0f\x000\x82\x01\n\x02\x82\x01\x01\x00\xac\xa0\xf0\xfb\x80Y\xd4\x9c\xc7\xa4\xcf\x9d\xa1Ys\t\x10E\x0c\r,nh\xf1l[HhIY7\xfc\x0b3\x19\xc2w\x7f\xcc\x10-\x954\x1c\xe6\xebM\t\xa7\x1c\xd2\xb8\xc9\x976\x02\xb7\x89\xd4$_\x06\xc0\xccD\x94\x94\x8d\x02bo\xebZ\xdd\x11\x8d(\x9a\\\x84\x90\x10z\r\xbdtf/j8\xa0\xe2\xd5TD\xeb\x1d\x07\x9f\x07\xbao\xee\xe9\xfdN\x0b)\xf5>\x84\xa0\x01\xf1\x9c\xab\xf8\x1c~\x89\xa4\xe8\xa1\xd8qe\r\xa3Q{\xee\xbc\xd2"`\r\xb9[\x9d\xdf\xba\xfcQ[\x0b\xaf\x98\xb2\xe9.\xe9\x04\xe8b\x87\xde+\xc8\xd7N\xc1Ld\x1e\xdd\xcf\x87X\xbaJO\xcah\x07\x1d\x1c\x9dJ\xc6\xd5/\x91\xcc|qr\x1c\xc5\xc0g\xeb2\xfd\xc9\x92\\\x94\xda\x85\xc0\x9b\xbfS}+\t\xf4\x8c\x9d\x91\x1f\x97jR\xcb\xde\t6\xa4w\xd8{\x87PD\xd5>n)i\xfb9I&\x1e\t\xa5\x80{@-\xeb\xe8\'\x85\xc9\xfea\xfd~\xe6|\x97\x1d\xd5\x9d\x02\x03\x01\x00\x01\xa3\x81\xc20\x81\xbf0\x0f\x06\x03U\x1d\x13\x01\x01\xff\x04\x050\x03\x01\x01\xff0;\x06\x03U\x1d \x0440200\x06\x04U\x1d \x000(0&\x06\x08+\x06\x01\x05\x05\x07\x02\x01\x16\x1ahttps://www.thawte.com/cps0\x0e\x06\x03U\x1d\x0f\x01\x01\xff\x04\x04\x03\x02\x01\x060\x1d\x06\x03U\x1d\x0e\x04\x16\x04\x14{[E\xcf\xaf\xce\xcbz\xfd1\x92\x1aj\xb6\xf3F\xebWHP0@\x06\x03U\x1d\x1f\x0490705\xa03\xa01\x86/http://crl.thawte.com/ThawtePremiumServerCA.crl0\r\x06\t*\x86H\x86\xf7\r\x01\x01\x05\x05\x00\x03\x81\x81\x00\x84\xa8L\xc9>*\xbc\x9a\xe2\xcc\x8f\x0b\xb2%w\xc4a\x89\x89cZ\xd4\xa3\x15@\xd4\xfb^?\xb4C\xeac\x17+k\x99t\x9e\t\xa8\xdd\xd4V\x15.zy1_c\x96S\x1b4\xd9\x15\xeaOmp\xca\xbe\xf6\x82\xa9\xed\xda\x85w\xccv\x1cj\x81\n!\xd8A\x99\x7f^.\x82\xc1\xe8\xaa\xf7\x93\x81\x05\xaa\x92\xb4\x1f\xb7\x9a\xc0\x07\x17\xf5\xcb\xc6\xb4L\x0e\xd7V\xdcq t8\xd6t\xc6\xd6\x8fk\xaf\x8b\x8d\xa0l)\x0ba\xe0\x16\x03\x01\x02\r\x0c\x00\x02\t\x00\x80\xbb\xbc-\xca\xd8Ft\x90|C\xfc\xf5\x80\xe9\xcf\xdb\xd9X\xa3\xf5h\xb4-K\x08\xee\xd4\xeb\x0f\xb3PLl\x03\x02v\xe7\x10\x80\x0c\\\xcb\xba\xa8\x92&\x14\xc5\xbe\xec\xa5e\xa5\xfd\xf1\xd2\x87\xa2\xbc\x04\x9b\xe6w\x80`\xe9\x1a\x92\xa7W\xe3\x04\x8fh\xb0v\xf7\xd3l\xc8\xf2\x9b\xa5\xdf\x81\xdc,\xa7%\xec\xe6bp\xcc\x9aP5\xd8\xce\xce\xef\x9e\xa0\'Jc\xab\x1eX\xfa\xfdI\x88\xd0\xf6]\x14gW\xda\x07\x1d\xf0E\xcf\xe1k\x9b\x00\x01\x02\x00\x803O6T-z\xc5\t\x0c\x12\x17\xc2oh\x15\xe1\x97\xb4\xb5[\x00N~U\x89B&\xbfw\x85\xe8H\x9f\xb2\x89\x9c\xfd\xef\x878\x9c\xcb\x9a\xd9T\x02\x7f0"\xa6\x80\xe6\xf2!\xb3`Q\'hb\xa8\x1f\xe8\x12\x002V\xe3?]N\xbe\xcc\xd8\xef\xbaX\xfe\x9b\xdeX\x0c\xbc8\xd7\x1deO\xb8\xe1\xae\xc6\xf1\xf7\xb6[\xefFA[\x19\xad\xda\x08\x1b\xe4\xe2\xee\\\xf4J\xac\xee\xc5\xe0\x19\xcc\xe7o\xf4\xdf\x14[#\xdf\xc8x\x1c\x01\x00\x8e\x84v:v\xfaL\xfap\r\x1b;\x1da\xa5\xff\xf6\xa2\n~}\xb8{\xb2L\xaf\x98\x01\x03\x08\xca\xb8%W\x08\xe1\xe4B\xe3/}\xaf\xcb\x9f\x11Ro\x92\xc7\x00+*\xb9\x7f\x18\xe734\x00\x9d\x97!\xa3\x03\xf5\xf7E\xe1\xb5qrs\xf7\xb3p\xb4\x12\xe4\xe1\xe71s\xa3\x1a\xd8Y\x1e.L\x8c\xb8\xbb\x1c4\x8d\xb6`\x04{\xb8\xac\xfa\x1e\x1f\xf9F\xc4&Lyv:\xb6\xe2\x12\x02\xa3b|\xc5\xcdLuS}\xfb\xec-4\xa6fGb\xfe\xafu\xdb\xd4\x8a\x8dB\xa1\xd1(\xd7V\xf3!\xc6\xd3\x87\xc6.,\x85%\xb7B\xc0\xba\x9b&`\xd0?\xfd8Ze\x86\xc6\xfc\xceu\xe6\x05tp\xa4\x18\xf9\xa6]2\xb6\xd1\xa8\x84xuht\xe8\x02\xde\x95Gb\xed\r\xeb\xa7\xb7\x92\xc9/(\xb5\x14\xc3\xbb!"lJelH2\t\xc8\xc0\xda\x1a94\x19_\xc8\x85&\x9a\x9f\xf2@+P\x8aq/\xb3\xe2a\x9e\x88u\xfca\'\xb8' |>] |>

另一方面,我可以在 Wireshark 中轻松阅读相同的信息。

有人可以告诉我我做错了什么吗?

(我正在寻找 Python3 的解决方案,以防万一)

标签: python-3.xsslssl-certificatescapy

解决方案


推荐阅读