Как сохранить ключи SSL для https, когда я использую `urllib2`? - PullRequest
1 голос
/ 30 октября 2019

Мне нужно сохранить ключи SSL в файле, чтобы позже расшифровать пакет TCP через Wireshark. Что мне делать?

#!/usr/bin/env python
# -*- coding: UTF-8 -*-

import urllib2
import json

data={}
data_json = json.dumps(data, encoding='UTF-8', ensure_ascii=False)
requrl = "https://52.31.41.56/test"   # look, the protocol is https
req = urllib2.Request(url=requrl, data=data_json)
req.add_header('Content-Type', 'application/json')
# how can I record the SSL keys in a file, for Wireshark decryption
rsp_fp = urllib2.urlopen(req)
rsp_data = rsp_fp.read()
print(rsp_data)

1 Ответ

1 голос
/ 30 октября 2019

Использовать sslkeylogfile

Пример использования

Использовать sslkeylog , который совместим как с Python2, так и с Python3. Я изменяю ваш код, чтобы сохранить журналы ключей SSL при подключении к переполнению стека.

import urllib2
import sslkeylog

# Save SSL keys to "sslkeylog.txt" in this directory
# Note that you only have to do this once while this is in scope
sslkeylog.set_keylog("sslkeylog.txt")
# Make an HTTPS connection to Stack Overflow
requrl = "https://stackoverflow.com" 
req = urllib2.Request(url=requrl)
rsp_fp = urllib2.urlopen(req)

Проверка

Затем, если мы проверим sslkeylog.txt, мы увидим, что естьсейчас запись:

bash$ cat sslkeylogfile.txt
CLIENT_RANDOM a655a2e200ddc96c1571fe29af1962013ccbab1b9e9b865db112a9c1492c449a 3280c9fbee32df623074f80519f278420971aaa6eb91ab0f1f973d505a03ddbcc4fba2ca83f6d733addebdb0358e606d
...