Хочю разобраться в методе аутентификации браузера с ssl сервером, чтобы программно эмулировать те же действия. kerberos ничего дельного не показал... ручной перехват функций HttpOpenRequest и HttpSendRequest тоже null Подскажите плиз как перехватить сообщения отправленные браузера серверу? Вот, выдрал html код из странички аутентификации. Код (Text): <FORM action="/cgi-bin/utm/login" method=post> <TR><TD><TABLE width=100% cellspacing=0 cellpadding=5 border=0> <TR><TD width=40% align=right>Логин</TD><TD> </TD><TD width=60% align=left><INPUT type=text name=login size=40></TD></TR> <TR><TD width=40% align=right>Пароль</TD><TD> </TD><TD width=60% align=left><INPUT type=password name=password size=40></TD></TR> <TR><TD width=40% align=right> </TD><TD> </TD><TD width=60% align=left><INPUT type=submit value="ВХОД"></TD></TR> <INPUT type=hidden name=cmd value=user_verify> </TABLE></TD></TR> </FORM> Заголовок пакеты примерно будет выглядить так: POST /cgi-bin/utm/login HTTP/1.1 Content-Type: application/x-www-form-urlencoded да? Но нужно точно, а не примерно..
Flasher Попробуй воспользоваться мониторами TCP пакетов. Или фаерволом с поддержкой данной возможности.
отправляюся такие в IE запросы ТОЧНО c помощью HttpSendRequestA\HttpSendRequestW и пофигу, SSL или нет.
Flasher Ну просто POST ты не в тему сказал. SSL к POST никак не относится. Если ты не знаешь как браузер делает запросы на получение документов, то читай теже RFC (хотя это гемор), - удобнее читать просто любое переваренное описание HTTP протокола - например http://www.codenet.ru/webmast/http/. Чтобы смотреть HTTP-запросы браузеров используй HttpAnalyzer. Он кстати умеет перехватывать HTTPS-сессии если ПО использует WININET API (Internet Explorer) или Mozilla NSS API (Firefox). Чтобы реализовать обращение через HTTPS используй WinHTTP API - (флаг WINHTTP_FLAG_SECURE функции WinHttpOpenRequest), при этом порт коннекта будет 443 (HTTPS). Использование WinHTTP (WinInet) наполовину освобождает требования по вниканию в структуру протокола HTTP, при этом у API есть ограничения, которые могут вызвать кучу проблем при нестандартных способах взаимодействия с HTTP-серверами. Поэтому для достижения наибольшей гибкости можно реализовать клиентскую часть через WinSock. SSL в этом случае очень просто можно прикрутить с помощью библиотеки OpenSSL (которая естественно доступна для Win32). OpenSSL громоздка. Альтернативой является использование Security API для нативной реализации SSL. Об этом можно почитать тут http://www.codeproject.com/KB/IP/sslclasses.aspx
EvilPhreak, спасибо, HttpAnalyzer то что нужно. Только есть кой какие непонятки.. Словил и post и дальнейшие действия, так вот, после того как успешно залогинились, при дальнейшей обращении к серверу для идентификации отправляется какой-то sid, не совсем понимаю откуда это берёт браузер. вот заголовок: GET /cgi-bin/utm/utm_stat?cmd=user_report&sid=RDmtxvkrL4O2EzR8edMj8FhO4V7V HTTP/1.1
Flasher Ну это просто. SID он во-первых может взять из страницы, которую вернул сервер, как какое-нибудь поле или просто ссылка, или может взять как cookie, которое вернул сервер, также бровсер на основе каких-либо данных с помощью JAVA-SCRIPT кода может генерировать это значение.
EvilPhreak, да, я в первую очередь о том же думал, что это серв вернул.., но нет, чательно смотрел в HttpAnalyzer. Возвращает только: HTTP/1.1 200 OK Date: Sun, 06 Jan 2008 08:58:15 GMT Server: Apache/1.3.37 (Unix) PHP/4.4.7 mod_ssl/2.8.28 OpenSSL/0.9.8a Keep-Alive: timeout=15, max=99 Connection: Keep-Alive Transfer-Encoding: chunked Content-Type: text/html 636 дальще html код со строкой "Активация прошла успешно." Могет HttpAnalyzer что-то не словил ?