C libcurl - возможно ли получить данные запроса в необработанном формате - PullRequest
0 голосов
/ 29 мая 2019

В Libcurl C, используя CURLOPT_DEBUGFUNCTION, я могу установить функцию обратного вызова. Libcurl вызывает обратный вызов и выдает данные для

  1. CURLINFO_HEADER_IN
  2. CURLINFO_HEADER_OUT
  3. CURLINFO_DATA_IN
  4. CURLINFO_DATA_OUT
  5. CURLINFO_SSL_DATA_IN
  6. CURLINFO_SSL_DATA_OUT

Данные tx, которые даются для CURLINFO_SSL_DATA_OUT, представлены в двоичном формате (зашифрованы). Мне нужны соответствующие необработанные данные (незашифрованные).

Возможно ли это?

Ответы [ 2 ]

1 голос
/ 03 июня 2019

Я бы настоятельно рекомендовал использовать подход SSLKEYLOGFILE , который позволяет отслеживать и захватывать весь трафик скручивания (TLS и не-TLS) с помощью внешнего инструмента, такого как Wireshark.

Нет необходимости устанавливать какое-либо программное обеспечение MITM или дополнительные сертификаты в любом месте. Также работает с приложениями, связанными с использованием libcurl, а не только сам curl.

1 голос
/ 30 мая 2019

Если вы хотите увидеть, что на самом деле передается, я бы рекомендовал использовать HTTPS-прокси «человек посередине».

Прокси находится между вашим клиентом и сервером.

Когда клиент обычно связывается с сервером через HTTPS, он проверяет цепочку сертификатов сервера, чтобы узнать, подписан ли он корневым сертификатом, которому доверяет система.

Таким образом, любой прокси-сервер между клиентом и сервером может только пересылать данные без возможности заглянуть в поток зашифрованных данных.

Так как же это работает?

Прокси-посредник перехватывает трафик и на лету создает сертификат сервера. Таким образом, клиент выглядит так, как будто он общается с сервером, и наоборот.

Однако, если клиент затем оценивает цепочку сертификатов, он обнаруживает корневой сертификат прокси-сервера, которого он не знает и, следовательно, не доверяет, и немедленно прерывает связь с сервером (если клиент настроен правильно).

Чтобы прокси-сервер мог просматривать данные HTTPS, вы должны включить корневой сертификат прокси в свой список доверенных корневых сертификатов в своей клиентской системе.

Затем прокси может отображать все данные, включая заголовки.

Некоторые типичные представители таких прокси (неполный список):

...