Добрый день!
В программировании драйверов я по сути новичок, но предо мной встала задача работы с Ethernet трафиком на уровне NDIS.
По этому хотела бы прояснить для себя сначала концептуальные моменты.
Суть задачи такова - перехватить пакет(ы), вычленить TCP/UDP заголовок и в зависимости от IP:Port
принять решение пропустить/изменить/запретить.
Перечитав форум и цикл статей Грома решила за основу взять passthru из DDK.
Задача ещё осложняется тем, что мой родной язык - паскаль, и мне не всегда очевидны элементарные для сишника обороты
И так суть вопросы:
1. В каких функциях я должна анализировать пакеты?
Исходящие, как я понимаю в MiniportSend и MiniportSendPackets,
а входящие в ProtocolReceive и ProtocolReceivePacket?
Если да, то как получить доступ к данным кадра? Правильно ли я понимаю, что в ProtocolReceive третий параметр - это указатель на данные пакета?
А как быть с другими функциями?
2. Если я захочу анализировать данные протокола более высокого уровня, например HTTP, неужели мне придётся
собирать всю цепочку пакетов, чтобы вытащить от туда допустим POST параметры?
3. Если в системе установлены два NDIS драйвера, которые имеют разное мнение о судьбе IP пакета, что произойдёт?
Спасибо