Приветствую,
решил написать свой сниффер, больше из спортивного интереса. В ВоВ играю на офе с 2006 года.
По образованию программист, но уже достаточно давно не кодил ничего
Долого выбирал каким способом перехватывать трафик, сперва была идея сделать свой TDI фильтр драйвер и перенаправлять весь трафик идущий от приложения wow.exe в пользовательское приложение. Почитав DDK на тему создания TDI фильтров - понял что такой подход это как из пушки по воробьям. Слишком сложно.
использовать pcap мне почему-то не понравилось ... И с первого взгляда я не нашел как фильтровать трафик от конкретного приложения.
RAW сокеты - неплохой вариант, один минус - слишком много рутинного кода по обработке сырого tcp потока. Хотя если один раз написать и отладить эту часть или воспользоваться какими-нибудь готовыми наработками, то тоже вполне достойный вариант. Однако у меня нет готовых решений, поэтому пропускаем. Так же проблема с определением к какому приложению относится трафик
Больше всего понравился вариант предложеный
abdula123. По сути это и есть первый вариант с TDI фильтром, только фильтр уже написан и отлажен хорошими людьми
. Я использую proxifier (
www.proxifier.com)
Плюсом такого подхода так же является платформонезависимость, посколько этот проксификатор работает на всех версиях виндовс. К тому же у этого проксификатора есть portable версия, не требующая установки.
Настраиваем правило, для приложения wow весь трафик перенаправлять на localhost, наш порт. И все, весь поток данных от wow.exe у нас.
SOCKS4 - примитивнешйи протокол, имеющий всего две команды CONNECT и BIND.
CONNECT - это запрос на установку соединения с удаленным хостом.
BIND - запрос на открытие порта в режиме прослушивания (для принятия соединений)
В нашем случае реализация поддержки BIND не требуется, вов ничего не слушает.
В общем скачав VisualStudio2010, со скрипом вспоминал програмирование с использованием сокетов. Вчера много тупил, сегодня мой прокси отлично работает. Во всяком случае все приложения с использованием SOCKS4 прокси, и вов через проксифиер - работает без проблем.
Если есть желание, могу показать код, всего 290 строк -)
Двигаемся дальше, вставляем теперь непосредственно разбор трафика вов.
В связи с этим вопрос по поводу получения ключа. Его можно считать на лету ? или только выдергивать из памяти роцесса ?