在python中解密ssl加密数据

时间:2013-12-06 20:14:17

标签: python ssl encryption

我正在使用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加密的数据。

谢谢!

1 个答案:

答案 0 :(得分:1)

你不太可能找到一个现成的库来做这件事。从数据包转储中解密是相当复杂的,我相信现在最好的特色工具仍然是Wireshark

请注意,您还需要从握手开始捕获整个TLS会话。此外,如果连接使用了提供前向保密的短暂模式(任何具有DHE或ECDHE的模式),则无法解密数据。