gpt4 book ai didi

python - 通过 SCAPY 使用特定私钥解密 SSL/TLS

转载 作者:行者123 更新时间:2023-12-04 22:39:39 25 4
gpt4 key购买 nike

我想解密 的 HTTPS 流量我的域名 我的服务器 与scapy。
然后我有我的域的原始国际注册证书( TLS1.3 )文件......
必须使用 scapy 很容易做到这一点,但我在任何地方都找不到任何解决方案,这是 太疯狂了 .
例如,我尝试了这些解决方案,但它们 不工作没有错误 崩溃 :

  • scapy-ssl_tls
  • scapy-notebook2_tls
  • 鲨鱼
  • 中间人解决方案
  • SSLDUMP

  • 最后我是 写作 sample 代码 但它低于 错误 我尝试太多来修复它,但无法理解问题和明确的解决方案:
    值错误:密文长度必须等于 key 大小
    import os, sys
    import ssl
    from scapy import *
    from scapy.all import *
    from scapy.layers import *
    from scapy.layers.tls import *
    from scapy.layers import inet
    from scapy.layers.inet import *
    import socket, select
    import binascii
    import io
    from io import StringIO

    load_layer("tls")
    c = Cert("SSL/STAR_mydomain_com.crt")
    k=PrivKey("SSL/private.key")

    ########### Unit-Test Encrypt/Decrypt Run OK ###########
    #M = bytes("message to be encrypted".encode())
    #enc = c.encrypt(M, t='oaep')
    #print(enc)
    #dec = k.decrypt(enc, t='oaep')
    #print(dec)

    while True:
    s = sniff(filter="port 443", count=10)
    ch_list = [p for p in s]
    if len(ch_list)>0:
    for pkt in ch_list:
    p_layer = pkt.getlayer('IP')
    src = p_layer.src
    dst = p_layer.dst
    if (src=='my-server-ip') or (dst=='my-server-ip'):
    if ('TLSEncryptedContent' in str(type(pkt['TCP'].payload))):

    ########### any 3 below commands go in same error ##############
    ########### and i was try 'pss' instead of 'oaep' but same error

    dec2 = k.decrypt(pkt['TCP'].payload, t='oaep')
    #dec2 = k.decrypt(bytes(pkt['TCP'].payload), t='oaep')
    #dec2 = k.decrypt(bytes(pkt['TCP'].payload).decode('UTF8', 'replace'), t='oaep')

    print(dec2)

    else:
    print('...passed')
    如果您有任何解决方案,请分享,我将测试并分享结果,没有 负数 分数。
    注意 : 我不需要 理念 ,我对此有很多引用,我知道很多开发人员说这是不可能的,并为此制定了他们的哲学逻辑。如果您有答案,请分享代码片段引用,如果没有,请留下它,因为有些小组解决了这个问题,但他们不分享他们的解决方案。坦克斯。
    解决此问题但不共享其代码的示例组:
    https://docs.paloaltonetworks.com/pan-os/10-1/pan-os-admin/decryption/decryption-concepts/tlsv13-ssl-decryption-support.html
    那么 这是可能的但谁知道代码?

    最佳答案

    你正在尝试做的事情是行不通的。 SSL/TLS 证书仅用于 TLS 1.3 和更低版本中的身份验证,除非您将服务器配置为仅支持 RSA key 交换,否则您的服务器将选择 Diffie Hellman。如果客户端和服务器协商使用 Diffie Hellman(这也是 TLS 1.3 的强制要求),那么即使您解决了代码中的问题,您也无法使用服务器的证书和私钥解密数据连接.
    如果您要降级 TLS 的版本并将服务器配置为使用 RSA,并且浏览器愿意通过接受 RSA 的使用来发挥作用,那么理论上您想要做的事情可以完成,但您离代码还很远d 需要。您似乎只是天真地尝试使用服务器的私钥解密所有 TLS/SSL 数据包。这甚至不接近可行的方法。您需要组装流并识别 key 交换的 session key 部分并使用私钥对其进行解密,然后使用它来解密流中的其余数据。作为其中的一部分,您必须识别和跟踪不同的流(即将数据包与它们相关联)。这种方法工作量很大,坦率地说是没有意义的。
    更好的方法是:

  • 使用像 relayd 或 sslstrip 这样的代理,它将充当 Web 服务器剥离加密,然后在它自己和您的 Web 服务器之间转发未加密的流量(您可以查看此流量)
  • (仍然有点疯狂)修改您的网络服务器的源,以在流量被解密后将其所有流量记录在您可以获取的位置。
  • 关于python - 通过 SCAPY 使用特定私钥解密 SSL/TLS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70790912/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com