【问题标题】:decrypt ssl encrypted data in python在python中解密ssl加密数据
【发布时间】:2013-12-24 07:52:15
【问题描述】:

我正在使用 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() )

我可以用什么代替“解密 ssl”注释来获取解密的 ssl 字节?我猜应该有一些库可以为我做这件事,但是我对 ssl 和 python 的所有搜索都提供了有关编写可以接收 ssl 连接的套接字程序的信息。我对此不感兴趣。相反,我需要解密使用 ssl 加密的数据。

谢谢!

【问题讨论】:

标签: python ssl encryption


【解决方案1】:

您不太可能找到现成的库来执行此操作。从数据包转储中解密相当复杂,我相信目前最好的功能工具仍然是Wireshark

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

【讨论】:

  • 我从 Wireshark 开始,但遗憾的是,wireshark 对我没有帮助,因为它无法将解密的数据包捕获导出到具有解密数据的新 pcap 文件中。我希望我可以自己在 python 脚本中做到这一点,因为wireshark 做不到。因此我的问题。
  • 将其导出到新的 pcap 没有意义,因为加密和解密的数据包之间没有 1-1 的关系。您所能做的就是从流中导出明文。
  • 感谢您的意见。知道放弃是有帮助的。
猜你喜欢
  • 2011-09-19
  • 2012-10-14
  • 1970-01-01
  • 1970-01-01
  • 2013-03-23
  • 2014-09-19
  • 1970-01-01
  • 1970-01-01
  • 2012-05-19
相关资源
最近更新 更多