Приветствую всех!
Помогите мне разобраться, как с помощью divert сокетов в FreeBSD осуществить перехват пакетов.
Не могу понять, каким образом они все-таки работают. В общем я делаю так:
1. добавляю правило в firewall: divert 100 from any to any 99
2. в программе создаю сокет socket(AF_INET, SOCK_RAW, IPPROTO_DIVERT)
3. биндю его к порту 100
4. начинаю прослушивать
while(1)
recvfrom(...)
5. в телнете пытаюсь подконнектиться на адрес 127.0.0.1 по 99 порту
не могу (что вполне логично)
Я не могу понять следующее: если у меня идет перехват пакетов, то как узнать перехватил ли я пакет или нет? И как тогда вообще можно законнектиться на какую-нибудь машину на 99 порт
Мне нужно перехватывать траффик на 99 порту, читать данные из этих пакетов и отправлять их с измененными заголовками и данными
|