привет всем у меня такая задача - нужно написать NDIS драйвер для перенаправления пакетов, т.е. у пакетов, идущих на определенный порт, нужно изменить адресат - ip-адрес и порт вот собственно в этом вся и проблема, гуглю уже неделю, ничего толкового и понятного не нашел, чтобы был нормальный пример - вот тут перехват исходящих\входящих пакетов, вот здесь смотрим заголовки пакетов, вот тут можем изменить адресат пакета, вот здесь можем уничтожить пакет или пропустить выше и т.д. кто может помочь куском кода, или ссылками на хороший источник, заранее спасибо
В WDK есть примеры. Что бы сразу все готовое это за $. Можно писать в юзерленде, если не критична скорость, тогда достаточно фреймворков Winpcap, winpkfilter.
примеры есть там есть, passthru, но там нету примера по изменению ip-адреса и порта, в сырцах не нашел этого и готовое мне не надо, я сам изучаю это, просто нуждаюсь в инфе, где бы это было доступно и в понятном виде объяснено
RUStx88 попробуйте начать с winpcap. Ловите пакеты в нем, изменяйте их и отсылайте опять в сеть. Ну и могу посоветовать статью на васме тут. А как поймете суть - начинайте изучать потихоньку программирование под ядро (если оно вам на тот момент еще нужно будет). Потом возьметесь писать ндис протокол фильтр.
winpcap в основном предназначен для ловли пакетов. Для отправки там было только на уровне Ethernet и под виндой, сейчас правда уже не знаю как там. Опять таки только анализ, а не фильтрация.
Booster Ну так правильно. Пусть ловит, и посылает. А отправлять можно на канальном уровне. Ну если бесит винда, можете юзать libpcap, Linux Packet сокеты или вообще BPF в FreeBSD. Даже проще будет.
TermoSINteZ winpcap это не фильтр, а слушалка. Блокировать пакеты оно не умеет. NDIS драйвер или подобное тут лучше будет. Да и работать на канальном уровне для данной задачи совершенно не требуется.
Booster От того что он слушалка - ТСу никак не помешает изучать принципы изменения пакетов, согласитесь ? За одно попробует написать фильтр - избирательно собирать пакеты. Зато потом эту концепцию перенесет в ядро. Иначе он будет париться с ндис драйвером (хотя достаточно взять сорцы фаервола на базе ндиса, на васме выкладывали кстати, на базе концепции ipfw) и при этом так и не дойти до своей цели.