Ответ 1
Да, я думаю, у вас здесь пара вариантов.
HTTPS специально разработан, чтобы помешать атакам "Человек в середине" и подслушивающим устройствам, что по сути является тем, чего вы пытаетесь достичь. Однако вы можете сломать некоторые из своих предположений и победить его.
В начале соединения SSL: 1. удаленный сервер представляет свой открытый ключ и его сертификат, 2. клиент проверяет сертификат и 3. отправляет ключ сеанса, зашифрованный открытым ключом сервера. Более подробно см., Например, Обзор протокола SSL или TLS
У вас есть два возможных способа обойти эту защиту в описываемом вами сценарии:
1. Перепишите данные TLS, заменив серверный сертификат и ключ на свой собственный
Поскольку вы управляете каналом связи, вы можете заменить открытый ключ сервера и сертификат на тот, который вы контролируете, на шаге (1). Если вы затем попросите клиента пропустить шаг (2) с помощью аргумента --no-check-certificate
до wget
, вы можете получить полный доступ к зашифрованным данным.
Так прокси-сервер отладки Fiddler разрешает доступ к трафику HTTPS, см. https://www.fiddlerbook.com/fiddler/help/httpsdecryption.asp
2. Получить ключ сеанса из клиентского приложения
Так как клиентское приложение знает ключ сеанса, если вы можете его извлечь, вы можете затем расшифровать поток. Я думаю, это то, что вы имели в виду в вопросе.
wget
сам по себе не имеет возможности разрешить ведение журнала ключа сеанса (см. " HTTPS (SSL/TLS), но это выглядит как его библиотека TLS," GnuTLS
"имеет параметр отладки, который будет делать то, что вы хотите, см. " Отладка и аудит "в документах GnuTLS:
SSLKEYLOGFILE
При установке имени файла GnuTLS добавит к нему ключи сеанса в формате журнала NSS. Этот формат может быть прочитан wirehark и позволит расшифровать сеанс для отладки.
Попробуйте установить переменную среды SSLKEYLOGFILE
в имя файла и посмотрите, будет ли wget
записывать ваши ключи сеанса TLS в этот файл? Возможно, вам придется перекомпилировать wget
с помощью отладочной сборки GnuTLS
. Я сам этого не пробовал.