Posts Tagged ‘windows’
#1. Архитектура winpcap. Перехват пакетов. Драйвер.
Есть идея написать скромный анализатор пакетов на основе сигнатур ( об этом позже ) для Windows, на основе WinPcap. У меня есть привычка, может быть плохая, не могу использовать что-то, не зная как оно работает. Поэтому я начинаю цикл «мини» статей в которых постараюсь хоть не много раскрыть архитектуру драйвера перехватчика WinPcap. Пожалуй начнем.
Что такое WinPcap.
WinPcap происходит от двух слов, Windows и Pcap. Что такое Windows думаю понятно, а вот про Pcap я все таки «копипастну» из вики для ленивых :
Библиотека Pcap (Packet Capture) позволяет создавать программы анализа сетевых данных, поступающих на сетевую карту компьютера. Примером программного обеспечения использующего библиотеку Pcap служит программа Wireshark. Разнообразные программы мониторинга и тестирования сети, снифферы используют эту библиотеку. Она написана для использования языка С/С++ так что другие языки, такие как Java, .NET и скриптовые языки использовать не рационально. Для Unix-подобных систем используют libpcap библиотеку, а для Microsoft Windows NT используют WinPcap библиотеку. Программное обеспечение сетевого мониторинга может использовать libpcap или WinPcap, чтобы захватить пакеты, путешествующие по сети и в более новых версиях для передачи пакетов в сети. Libpcap и WinPcap также поддерживают сохранение захваченных пакетов в файл и чтение файлов содержащих сохранённые пакеты. Программы написанные на основе libpcap или WinPcap могут захватить сетевой траффик, анализировать его. Файл захваченного траффика сохраняется в формате, понятном для приложений, использующих Pcap.
Архитектура драйвера. Начало
Начнем сразу с исходного кода драйвера. Функция DriverEntry, которую вызывает ядро при загрузки драйвера в адресное пространство ядра, находится в файле Packet.c ( WpcapSrc_4_0_2\winpcap\packetNtx\driver\Packet.c ). Сразу говорю, не пугайтесь.Ничего сверх естественного в коде нет, кто когда нибудь писал код для ядра windows поймет сразу что и как происходит в этой функции.