我能够使用私钥在wirehark(GUI)中解密SSL数据包。以相同的方式,如何使用PyShark(以编程方式)解密数据包。还有其他方法可以使用任何其他编程方法来完成相同任务吗?

最佳答案

这未经测试,但是override_prefs将允许您向tshark添加自定义标志或覆盖一些标志:

.-您可以将字典传递给override_prefs属性,例如

def create_ssl_override(ssl_key_path, server='127.0.0.1', port='443',
                        protocol='http', ssl_debug_file='ssl_debug.log'):

    ssh_key_info = '{server},{port},{protocol},{pem_path}'.format(
       server=server, port=port, protocol=protocol, pem_path=pem_path)

    return {
      'ssl.desegment_ssl_records': 'TRUE',
      'ssl.desegment_ssl_application_data': 'TRUE',
      'tcp.desegment_tcp_streams': 'TRUE',
      'ssl.keys_list': ssl_key_info,
      'ssl.debug_file': ssl_debug_file
    }

ssl_overrides = create_ssl_override('my_server_key_file.pem')


因此,在创建捕获对象时,将override_prefs = ssl_overrides作为参数之一。同样,我还没有测试过,并且我不确定pyshark是否可以使用ssl xml输出,但是可以尝试一下。

如果不是,则直接使用tshark(例如https://wiki.wireshark.org/SSL中的示例)

tshark -o "ssl.desegment_ssl_records: TRUE" -o "ssl.desegment_ssl_application_data: TRUE" -o "ssl.keys_list: 127.0.0.1,4443,http,/home/dirkx/xx/privkey.pem" -o "ssl.debug_file: /home/dirkx/.wireshark-log" -i eth0 -R "tcp.port == 4443"

09-30 17:40
查看更多