我有一个包含 14 个嗅探 SSL 数据包的 pcap 文件。我在这里上传了它:
我用wireshark打开它。我看到了 14 个数据包。最大的似乎包含一个自签名证书(因为它是在一个流行的互联网教程中制作的)。我看到数据包包含像“Some-state”和“Intenet Widgets Pty Ltd”这样的测试......我怎样才能真正提取真正的证书(可能是crt格式?
我有一个包含 14 个嗅探 SSL 数据包的 pcap 文件。我在这里上传了它:
我用wireshark打开它。我看到了 14 个数据包。最大的似乎包含一个自签名证书(因为它是在一个流行的互联网教程中制作的)。我看到数据包包含像“Some-state”和“Intenet Widgets Pty Ltd”这样的测试......我怎样才能真正提取真正的证书(可能是crt格式?
使用新版本的wireshark:
Analyze >> Decode As。现在它将显示数据包的 SSL 详细信息。Export Packet Bytes到一个文件中,例如cert.der.openssl x509 -inform der -in cert.der -text你可以看看证书,与openssl x509 -inform der -in cert.der -outform pem -out cert.crt您可以将其转换成(你的意思是与CRT的格式是什么,即)一PEM格式。如何从 Wireshark 数据包捕获中获取 SSL 证书:
- 从 Wireshark 菜单中选择 Edit > Preferences 并确保在 TCP protocol 首选项中勾选“Allow subdissector to reassemble TCP streams”
- 找到“Certificate, Server Hello”(或 Client Hello,如果它是您有兴趣获取的客户端证书。
- 在数据包详细信息窗格中,展开安全套接字层协议
- 展开“TLSv1 记录层:握手协议:证书”字段
- 展开“握手协议:证书”字段
- 展开证书列表。根据是否存在信任链,可能存在一个或多个证书。第一个证书是服务器证书,第二个是签名证书颁发机构,第三个是信任/签署该证书颁发机构的 CA,依此类推。
- 右键单击您希望获取的证书,然后选择“导出选定的数据包字节...”并使用 .der 扩展名命名文件。
或者,可以使用ssldump或Network Miner(当然还有其他工具)之类的工具。
通过Network Miner运行 PCAP 文件。它提取证书和其他文件类型。
你也可以使用 Python 的 pyshark 模块。您会在 SSL 层中找到证书,但并非所有 SSL 层数据包都有证书。一些数据包用于握手协商等。因此,您可以在数据包中搜索 x509 属性之一。
# Import modules
import socket
import pyshark
# Docs: https://github.com/KimiNewt/pyshark/
from pprint import pprint
data = pyshark.FileCapture("path/to/file.pcap")
# Loop through each item (packet)
for pkt in data:
if "SSL" in pkt:
# Look for attribute of x509
if hasattr(pkt['SSL'], 'x509sat_utf8string'):
print(pkt["SSL"])
print(dir(pkt['SSL']))
pprint(vars(pkt['SSL']))
exit()