Начнем с того что я прогуглил весь день, и прогуглил данный форум но ответов ненашел...
Перехват с помощю хуков неподходит, хотя этот метод и позволяет изменять пакеты. Пытаюсь сделать подобие прозрачного прокси под виндовс.
Разобрал вдоль и поперек вариант снифера использующего SIO_RCVALL и RAWSOCKET, это позволило сделать перехват пакетов. Но я так и непонял каким образом можно с помощю этого метода изменить пакет, т.е. изменить его содержимое или изменить порт с адресом...
Отсюда вопросы: 1. Как убить перехваченый пакет? — т.е. снифер получил пакет, проанализировал, и принял решение что этот пакет недолжен дойти до места назначения... 2. Как модифицироват перехваченый пакет? — т.е. снифер получил пакет, проанализировал, и модифицировал содержимое после чего пакет в модифицированном виде отправляется к месту назначения. Я предпологаю(незнаю и неутверждаю) что это реализуется так: снифер перехватывает пакет, убивает, модифицирует и самостоятельно отправляет дальше. Либо наверное читает его не удаляя со стека как обычный снифер, и потом прям в стеке модифицирует, после чего пакет продолжает свое движение... 3. Как перенаправить перехваченый пакет? — т.е. изменить например адрес назначения пакета. Предпологаю что реализуется как и модификация, но навсякий случай интересуюсь. 4. Каким образом Traffic Compressor может так лихо перехватывать пакеты? — т.е. посути является прозрачным прокси, и пропускает все пакеты через себя...
Re: Как сделать перехват, модификацию и перенаправление паке
От:
Аноним
Дата:
19.11.07 00:11
Оценка:
raw сокетами — никак.
а решение зависит от того какие именно пакеты хочется модифицировать и куда перенаправлять.
Re[2]: Как сделать перехват, модификацию и перенаправление п
А>а решение зависит от того какие именно пакеты хочется модифицировать
Пакеты только TCP/IP, ну и если возможно то с UDP (но необязательно) ... А ICMP (ping) — поддаётся модификации/перенаправлению? A>и куда перенаправлять.
Перенаправление на другой порт, который программа посчитает более правельным. Либо вообще убить пакет если он непонравился...
Re: Как сделать перехват, модификацию и перенаправление паке
Ладно моежете неотвчать на вопросы с 2-4...
Скажите пожалуйста только: DDM>1. Как убить перехваченый пакет? — т.е. снифер получил пакет, проанализировал, и принял решение что этот пакет недолжен дойти до места назначения...
Желательно без использования всяких там сторонних Pcap...
DDM>Ладно моежете неотвчать на вопросы с 2-4... DDM>Скажите пожалуйста только: DDM>>1. Как убить перехваченый пакет? — т.е. снифер получил пакет, проанализировал, и принял решение что этот пакет недолжен дойти до места назначения... DDM>Желательно без использования всяких там сторонних Pcap...
Только вы можете по 101'му разу ответить на эти вопросы.
Только у вас хватит на это терпения.
STATUS_INVALID_DEVICE_REQUEST
Re: Как сделать перехват, модификацию и перенаправление паке
я в этом не силён, но вроде исчерпывающего ответа нету, так что добавлю свои пять копеек
в винде можно добавить дополнительный... эээ... как правильно фиг знает, ну типа дополнительный уровень в стек протоколов.
фактически это выглядит так, что сокетные функии оказываются перехваченными, ну и в них соотв. можно либо передать управление дальше, либо, наверно 8), что-нибудь с пакетом сделать
A Layered Service Provider (LSP) is a feature of the Microsoft Windows Winsock 2 Service Provider Interface (SPI). A Layered Service Provider is a DLL that uses Winsock APIs to insert itself into the TCP/IP stack. Once in the stack, a Layered Service Provider can intercept and modify inbound and outbound Internet traffic
ps. реализация самому дело долгое и душное. но видел заглушки (исходники длл тупо перенаправляющей трафик дальше, ну и в ней можно в нужных функциях сделать что нужно