我正在使用dpkt使用python分析数据包捕获。应用程序层使用ssl加密。我想解密ssl数据(即tcp有效载荷)。我有私钥,所以我应该能够使用密钥来解密数据。这是我的剧本:
#!/bin/python
import sys
import dpkt
def main():
if not len(sys.argv) == 2:
print "need a pcap file"
return 1
filename = sys.argv[1]
f = open(filename)
pcap = dpkt.pcap.Reader(f)
framenum = 1
for ts, buf in pcap:
if framenum == 123:
eth = dpkt.ethernet.Ethernet(buf)
ip = eth.data
tcp = ip.data
ssl = tcp.data
# decrypt ssl
framenum += 1
if __name__ == '__main__':
sys.exit( main() )
我可以用什么代替“decrypt ssl”注释来获取解密的ssl字节?我猜应该有一些库可以为我做这个,但我对ssl和python的所有搜索都提供了有关编写可以接收ssl连接的套接字程序的信息。我对此不感兴趣。相反,我需要解密用ssl加密的数据。
谢谢!
答案 0 :(得分:1)
你不太可能找到一个现成的库来做这件事。从数据包转储中解密是相当复杂的,我相信现在最好的特色工具仍然是Wireshark。
请注意,您还需要从握手开始捕获整个TLS会话。此外,如果连接使用了提供前向保密的短暂模式(任何具有DHE或ECDHE的模式),则无法解密数据。