Как расшифровать HTTPS ?
От: gribodemon  
Дата: 29.08.09 17:18
Оценка:
Доброго времени суток!
Я поставил хук на функцию send() библиотеки wsock32.dll в процессе iexplore.exe
Таким образом, можно "прослушивать" исходящие запросы клиента.

Функция-перехватчик выглядит так:

LPVOID lpsend = NULL; // адрес оригинальной функции send()
BYTE bufsend[5] = {0}; // первые 5 байт оригинальной функции send() 
// функция-перехватчик
int WINAPI xsend(
  SOCKET s,
  char* buf,
  int len,
  int flags
)
{
// запись запроса клиента в файл
    CHAR rep[10000] = {0};
    sprintf(rep, "\n\n send report:\n", buf);
    CopyMemory(rep + strlen(rep), buf, len);
    __WriteFile("C:\\http.txt", (PBYTE)rep, strlen(rep), MAX_INT);

// снятие хука
    UnsetSplicingHook(lpsend, bufsend);

// вызов оригинальной функции
    int res = send(s, buf, len, flags);
    
// установка хука обратно
    SetSplicingHook(lpsend, xsend, bufsend);

    return res;
}

В общем, всё так и должно быть?

У меня неск. вопросов:
1.) В отчёте очень часто встречаются такие вещи:

 send report:
!

 send report:
!

 send report:
!

 send report:
!


Что за? =)

2.) Когда используется HTTPS-протокол, то вместо понятных HTTP-заголовков, мы получаем нечто вроде:

 send report:
jфY60Hш“RЉЈmП@д(v‡iw6YшЌt¤Шџ$UФвY2·:nЭ0«lD%яЩі"“§l a„г‡nУИрЮaСммыV"#\э,RR‡ђ!‘7zш‰e~W†ТјХ&SО‚.Idэh?чA’
•сж™®Kܘ/и1[эіає\Ц›доРЃФхдiґu$dBчвНзg—B?~mЧз!,n›™5    ТЏБе


Т.е. шифрованный HTTP-заголовок.

Вопрос: как расшифровать?
Какие функции отвечают за расшифровку? Имеет ли смысл перехватывать не на уровне сокетов, а на уровне wininet? Там данные уже будут расшифрованы?
Если да, то как дела обстоят в других браузерах? (FireFox, Opera, Safari) Какие там функции нужно перехватывать?
Или, может вообще, просто взять сертификат, дампить шифрованные данные как они есть, а потом, с помощью private-части SSL-сертификата вручную расшифровывать? Так прокатит?
https uncrypt расшифровать https wininet socket
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.