Доброго времени суток. Приём езернет фрэймов драйвером ядра можно реализовать протокольным драйвером NDIS. Но при посылке пактов нужно знать MAC адресса хоста и гейта, и я сейчас не знаю, как их получить. В каких структурах данных данных ядра храняться ARP таблица, IP гейтвэя, IP\MAC интерфейсов? Доступ к этим структурам нужен для конструирования езернет фрэйма для отправки. Как послать спуфнутый IP пакет из драйвера ядра? Как я понимаю, TDI для этого не подходит, а через NDIS посылаются езернет пакеты - не IP. Буду благодарен за ответ.
Ээээ, а что гугл уже забанили? Эти данные получаются посылкой спец IOCTL-запросов для соответствующих сетевых девайсов. Они у меня есть, но тебе я их не дам, я жадный ) Да ладно? Ссылку на источник ереси можно привести? Эта фраза выдает человека, который ни разу на написал ни одного NDIS-драйвера, или по крайне мере не слышал про сетевую модель OSI. Мое мнение - учи матчасть, на твоем уровне решение сабжевой задачи пока не реально.
Полагаться на структуры и IOCTL - весьма сомнительное удовольствие, которое может меняться с каждым апдейтом или драйвером железного сетевого адаптера. Гораздо удобнее анализировать входящий и исходящий трафик и эвристически эти данные получать напрямую из фреймов. К тому же, например при работе с NDISWAN, в случае динамической смены адресов, это можно отследить, иначе - нет (а не отследив динамической смены адресов, работа такого драйвера будет эпизодической).