> Если собранный TCP поток - то уже начинаю искать пепел, > чтобы посыпать голову :-) Конечно, не TCP поток. На raw сокете ты получишь IP. А дальше посыпать пеплом голову будет тот, кто будет делать всё дальше. Сделать нориальный софт здесь - непросто и многодельно. Вкратце и в первом приближении надо:
1) фильтровать IP пока не получишь первые 4 TCP пакета хендшейка (SYN, SYN ACK, ACK, ACK) для http порта интересующего хоста.
2) фильтровать начальные пакеты TCP с установкой опций инициализации и настройки соединения (SACK и т.д.), что впрочем бывает весьма редко. Можно и не фильтровать - всё расно длина данных TCP будет = 0. Т.е. это только заголовки IP+заголовки TCP.
3) фильтровать TCP пайлоад - учитывать IP пакеты содержащие TCP в битами PUSH или PUSH ACK от ремоут хоста. ACK пакеты можно отбрасывать (там длина данных = 0).
4) вести вектор буферов аналогично списку TCB TCP c анализом последовательности байт из заголовка TCP отправителя. Если соединение хорошее (например локальная сеть), то в простейшем случае повторых передач не должно быть. И кроме того в простейшем и благоприятном случае очерёдность пакетов отправителя будет соответствовать правильной последовательности байт TCP стрима - тогда просто дописывам пайлоад в конец буфера и инкриментируем свои счётчики последовательности принятых байт.
5) продолжать это безобразие пока:
- соединение не завершено (флаги FIN, FIN ACK)
или
- аварийно прекращено одной из сторон (флаги RST в пакете отправителя или получателя)
или
- таймаут (сервер или клиент умерли)
Короче остаётся только посыпаться пеплом, если это (потуги) окажется неизлечимо ;) Но за нормальное денежное вознаграждение можно.
Есть игровой клиент, который общается с сервером по HTTP-протоколу. Нужно сделать пассивный перехват вхоящего HTTP-трафика.
Пока додумался только до того, чтобы перехватить API-функцию recv, и включить в неё дополнительный код, который перед тем как завершить функцию recv будет записывать пакет в лог.
Хотелось бы решение попроще придумать. Можно что-то вроде такого сделать: создать сокет, который будет получать данные параллельно с сокетом клиента? т.е. чтобы и туда и туда шло одно и то же.
Гугл гулглом, но если кто-то может в двух словах ответить. А то я ещё не на ту доку поподу. А мнение местных старожилов для меня весомо.20.01.09 08:47 Автор: Vedrus <Serokhvostov Anton> Статус: Member
...можно сделать прокси-сервер прямо для данной игрухи и сохранить трафик из него.
В настройках игрухи можно указать прокси? Тогда берём имеющийся прокси, который умеет сохранять трафик, или с открытым кодом и приделываем к нему сохранение (блин, не могу сказать, какой именно софт нужен).
Но проще и быстрее - просто слушать трафик с помощью ethereal\packetyzer. Там можно указать фильтр типа "слушать только http", в итоге он покажет пакеты в красивом виде - подсветит заголовки, данные и проч.
[Win32] А ось то какая хоть?18.01.09 08:31 Автор: amirul <Serge> Статус: The Elderman
Можно перехватывать winpcap-ом и самому собирать пакеты в потоки.
Можно написать TDI-фильтр
Можно написать Layered Service Provider
Можно написать прокси в конце концов
А вообще лучше поставить Vista/Win7 и использовать WFP
По всем ключевым словам вполне можно гуглить.
Я для себя выбрал WinPcap. Почитал вот эту статью:19.01.09 03:58 Автор: Vedrus <Serokhvostov Anton> Статус: Member Отредактировано 19.01.09 04:04 Количество правок: 1
Скачал с сайта библиотеку:
http://www.winpcap.org/install/bin/WinPcap_4_0_2.exe Но почему-то у меня установилось только два файла: rpcapd.exe и Uninstall.exe. А lib и h файлами там и не пахнет. В каком месте я туплю? Как оцениваешь мой выбор?
PS. Переход на висту конечно хорошо, но хотелось бы чтобы программа работала и под VISTA и под XP
Как ты мог догадаться, winpcap перехватывает пакеты, а собирать из них TCP-поток тебе придется самому19.01.09 04:02 Автор: amirul <Serge> Статус: The Elderman
> Скачал с сайта библиотеку: > http://www.winpcap.org/install/bin/WinPcap_4_0_2.exe > Но почему-то у меня установилось только два файла: > rpcapd.exe и Uninstall.exe. А lib и h файлами там и не > пахнет. В каком месте я туплю? Я ее собирал очень давно, так что не знаю в чем проблема, но тогда проблем у меня не было.
> Как оцениваешь мой выбор? Субж. Того же можно добиться и через rawip насколько
> PS. Переход на висту конечно хорошо, но хотелось бы чтобы > программа работала и под VISTA и под XP А, так ты не для себя? Ну тогда, да. Надо поддерживать минимальную версию системы.
Вот здесь я нашёл инфу, что нужно скачать WpdPack:19.01.09 04:10 Автор: Vedrus <Serokhvostov Anton> Статус: Member Отредактировано 19.01.09 04:11 Количество правок: 1
Правда не совсем понятно, как LSP может собирать из TCP-пакетов готовые HTTP-пакеты. Проконтролируй, правильно ли я представляю себе работу с LSP?
Используя LSP я заменяю процедуры send и recv на свои (в них я сохраняю в лог необходимые мне TCP-пакеты и передаю управление на стандартные send и recv). А необходимые для мея пакеты - это HTTP и HTTPS ответы сервера, с которым общается клиент.
Полученные TCP-пакеты я вручную собираю и получаю полный HTTP-ответ сервера.
В процессе разбора с LSP натолкнулся на статью от майкрософта. И там пример был. Скомпилировать скомпилировался, но что-то не запускается. Может какой-нибудь ссылкой поделишься, где про LSP доходчиво и кратко написано?
PS. amirul, а мжешь что-нибудь сказать про PacketX?
> Используя LSP я заменяю процедуры send и recv на свои (в > них я сохраняю в лог необходимые мне TCP-пакеты и передаю > управление на стандартные send и recv). А необходимые для > мея пакеты - это HTTP и HTTPS ответы сервера, с которым > общается клиент. Если клиент используют 3rd-party реализацию SSL/TLS (например OpenSSL), то про перехват https средствами LSP можно забыть (вернее можно попробовать позаимстововать идею из ettercap-а, но совсем не факт, что что нибудь получится)
> Полученные TCP-пакеты я вручную собираю и получаю полный > HTTP-ответ сервера. Это ж ты о send/recv сейчас? Нет там никаких TCP пакетов.
> В процессе разбора с LSP натолкнулся на статью от > майкрософта. И там пример был. Скомпилировать > скомпилировался, но что-то не запускается. Может > какой-нибудь ссылкой поделишься, где про LSP доходчиво и > кратко написано? Нет, вот здесь к сожалению помочь ничем не могу.
> PS. amirul, а мжешь что-нибудь сказать > про PacketX? Субж
Тогда буду задавать более конкретные вопросы.20.01.09 05:48 Автор: Vedrus <Serokhvostov Anton> Статус: Member