2013-06-11 3 views
1

все. Я делаю некоторые изменения в WinPcap, библиотеке захвата пакетов. Мой босс хочет, чтобы я передал версию WinPcap NDIS из NDIS 4 в NDIS 6. И требование совместимости - это Windows XP/Vista/7/8 (32 бит и 64 бит). Я обнаружил, что последняя версия NDIS - 6.3, но я боюсь, что NDIS 6.3 больше не поддерживает XP, это правда? Также я нашел на веб-сайте WinPcap, что текущий WinPcap 4.1.3 уже поддерживает Windows XP/2003/Vista/2008/Win7/2008R2/Win8 (x86 и x64). Это правильно? Какую версию NDIS следует обновить, чтобы поддерживать самую широкую совместимость?Проблема совместимости между версией NDIS и версией Windows

ответ

4

Я боюсь, что NDIS 6.3 больше не поддерживает XP, это правда?

Если вы имеете в виду «будет ли драйвер, который использует NDIS 6.3 для Windows XP», ответ «нет» и всегда был «нет»; это не случай «больше».

Данная версия Windows поддерживает данную версию NDIS (а не наоборот). «NT 5.x», то есть Windows 2000, Windows XP и их эквиваленты серверов, поддерживают NDIS 5; драйвер NDIS 6 (даже NDIS 6.0) не будет работать в этих версиях Windows. Драйвер NDIS 6 требует «NT 6.x», то есть Windows Vista и более поздних версий.

Если вы посмотрите на Microsoft's MSDN documentation on network drivers, вы заметите, что в нем есть раздел «Сетевые драйверы, начиная с Windows Vista» и раздел «Сетевые драйверы до Windows Vista»; первый раздел предназначен для NDIS 6, а второй раздел для NDIS 5. (NDIS 4, я думаю, считается слишком старым, чтобы документировать больше, я не знаю, какие различия между NDIS 4 и NDIS 5 были или ли WinPcap по-прежнему поддерживает NDIS 4.)

Ваши варианты, если вы хотите поддержать NDIS 6 в WinPcap (например, для поддержки режима монитора на Wi-Fi устройств) являются:

  • сделать версию WinPcap, который не поддерживает Windows 2000 или Windows XP или их серверные версии и поддерживает только NDIS 6;
  • сделать отдельные версии драйвера WinPcap и библиотеки packet.dll для «NT 5» (W2K/WXP и их серверных версий) и «NT 6» (Vista, 7, 8 и их серверные версии), дать две версии package.dll тот же API (с версией «NT 5», например, возвращающий индикацию отказа для попыток поместить интерфейс в режим мониторинга) и wpcap.dll (т. е. часть «libpcap» из WinPcap) используя этот API, и у установщика выяснить, какой из них установить (что означает, что вам нужно будет переустановить WinPcap, чтобы получить функции NDIS 6, если вы обновите систему «NT 5» до «NT 6», например, обновите Windows XP до Windows Vista, 7 или 8) или каким-то образом иметь правильный код драйвера, который запускается при загрузке драйвера, если это возможно.

Заметим, кстати, что, если ваша цель состоит в том, чтобы поддерживать режим монитора на устройствах NDIS, вы ОЧЕНЬ СИЛЬНО рекомендуется реализовать API, которые уже существуют в Libpcap в режиме монитора, т.е. pcap_create()/pcap_activate() API для открытия устройства, API pcap_set_rfmon() для запроса режима мониторинга и API pcap_can_set_rfmon() для проверки того, можно ли включить режим монитора, поскольку эти API - это то, что ожидаются такие программы, как tcpdump и Wireshark.

Отметим также, что API-интерфейсы pcap_create()/pcap_activate() в настоящее время не обрабатывают удаленный захват пакетов, поэтому вам придется либо избавиться от этой возможности, либо дождаться, когда я (или кто-то) добавит эти возможности к этим API-интерфейсам.

Обратите внимание, что, несмотря на то, что NDIS 6 имеет API-интерфейсы для поддержки режима мониторинга, не все устройства Wi-Fi имеют драйверы NDIS 6, но не все, у которых есть драйверы NDIS 6, имеют драйверы NDIS 6, которые поддерживают Native Wi-Fi (и, следовательно, не имеют драйверов NDIS 6, поддерживающих режим мониторинга), и даже те, что делают, имеют драйверы NDIS 6, которые поддерживают родной стандарт 802.11, не обязательно содержат драйверы NDIS 6 без ошибок, которые делают материал Native 802.11 работать хорошо.

Кроме того, обратите внимание также, что заголовок «радио информации», поставляемый драйверами Native 802.11 в режиме мониторинга, отличается от всех существующих заголовков «радиоинформации», поддерживаемых pcap и pcap-ng, и вы будете необходимо запросить новое значение LINKTYPE_/DLT_ для этого заголовка «радио информации» с сайта [email protected] У Wireshark уже есть диссектор для него, так как он может читать записи 802.11 от Microsoft Network Monitor; tcpdump понадобится.

(Если вы делаете это по какой-либо другой причине, например, добавление поддержки устройств PPP или исправление кода, чтобы получить описание устройства поставщика, также может потребоваться сделать драйвер NDIS 6 легким фильтром или что-то подобное как это, а не водитель транспорта.)

+0

Схема «параллельных драйверов» была использована для поддержки Windows 95/98/Me и NT, когда 95/98/Me поддерживались, поэтому существует прецедент для такой схемы. –

+0

Есть ли одна версия NDIS, поддерживающая все платформы от XP до 8? Я знаю, что NDIS, выпущенный с WDK7.1.0, поддерживает XP и Win7 одновременно. Я не знаю его версию NDIS, может быть, 5.1? Поддерживает ли Win8 драйвер NDIS 5.1? Вот ссылка от MS для WDK7.1.0: http://www.microsoft.com/en-us/download/details.aspx?id=11800 – hsluoyz

1

Чтобы добавить к тому, что сказал Гай ... XP не может и никогда не поддерживал NDIS 6, поэтому ваше требование о создании драйвера NDIS 6 с совместимостью с XP является невозможным требованием. Вы должны изменить требование; любой из вариантов Guy хорош (поддержка Drop XP или поддержка параллельных драйверов 5.1 и 6.0).

Архитектурно, захват пакетов должен выполняться в NDIS 6 LWF (и не использовать драйвер протокола с петлевыми пакетами). Я предлагаю начать с чистого, пустого LWF (см. sample) и добавить функции захвата пакетов из WinPcap.

+0

Есть ли одна версия NDIS для поддержки всех платформ с XP до 8? Я знаю, что NDIS, выпущенный с WDK7.1.0, поддерживает XP и Win7 одновременно. Я не знаю его версию NDIS, может быть, 5.1? Поддерживает ли Win8 драйвер NDIS 5.1? Вот ссылка от MS для WDK7.1.0: http://www.microsoft.com/en-us/download/details.aspx?id=11800 – hsluoyz

+0

Да. Это называется «NDIS 5». WinPcap имеет драйвер NDIS 5 и поддерживает W2K до 8. Однако нет единой версии NDIS, которая 1) поддерживает все платформы от XP до 8 и 2) радует босса, который хочет, чтобы вы использовали NDIS 6. Существует также , например, ни одна версия NDIS, которая 1) поддерживает все платформы от XP до 8 и 2) поддерживает Native 802.11 и, таким образом, позволяет захватывать в режиме мониторинга. –

Смежные вопросы