/ тап-окна6

Это реализация драйвера TAP-Windows для NDIS 6.20/6.30, используемого OpenVPN и другими приложениями. Драйверы NDIS 6.20 могут работать в Windows 7 или более поздних версиях, за исключением настольных систем ARM64, где, поскольку платформа полагается на управление питанием следующего поколения в своих драйверах, требуется NDIS 6.30.

Build

Предварительные условия для сборки:

  • Python 2.7
  • Microsoft Windows 10 EWDK (Enterprise Windows Driver Kit)
    • Visual Studio + Windows Driver Kit тоже работает. Убедитесь, что вы работаете из «командной строки для Visual Studio» и вызываете buildtap.py с помощью «—sdk = wdk».
  • Каталог исходного кода devcon (setup/devcon) из Windows-driver-samples (необязательно)
    • Если вы используете репозиторий из апстрима, не забудьте включить наш патч в devcon.vcxproj, чтобы убедиться, что devcon.exe статически связан.
  • Сертификат подписи кода Windows
  • Git (не обязательно, но полезно для выполнения команд с использованием встроенной оболочки bash)
  • MakeNSIS (необязательно)
  • Предварительно собранные двоичные файлы tapinstall.exe (необязательно)
  • Visual Studio 2019 и WiX Toolset для упаковки MSM (необязательно)

Убедитесь, что вы добавили Python установочный каталог (обычно c: python27) в переменную PATHenvironment.

Tap-windows6 успешно создан в Windows 10 и Windows Server 2016 с использованием CMD.exe, Powershell и Git Bash.

Просмотр параметров скрипта сборки:

 $ python buildt  ap.pyUsage: buildtap.py [параметры] Параметры: -h, --help показать это справочное сообщение и выйти -s SRC, --src = SRC TAP-каталог верхнего уровня Windows, по умолчанию =  --ti =  TAPINSTALL tapinstall (т.е.  devcon) (необязательно) -d, --debug включить сборку отладки --hlk build для тестов HLK (тестовый знак, без отладки) -c, --clean очистить nmake перед сборкой -b, --build build TAP-  Windows и, возможно, tapinstall (добавьте -c для очистки перед сборкой) --sdk = SDK SDK для использования для сборки: ewdk или wdk, default = ewdk --sign подписать файлы драйвера -p, --package создать установщик NSIS из  скомпилированные файлы -m, --package-msm создать установщик MSM из скомпилированных файлов --cert = CERT Общее имя сертификата подписи кода, по умолчанию = openvpn --certfile = CERTFILE Путь к сертификату подписи кода --certpw = Пароль CERTPW  для сертификата/ключа подписи кода (необязательно) --crosscert = CERT Используемый файл перекрестного сертификата, по умолчанию = MSCV- VSClass3.cer --timestamp = URL-адрес Временной метки URL-адрес для использования, по умолчанию = http://timestamp.verisign.  com/scripts/timstamp.dll --versionoverride = FILE Путь к файлу замены версии 

Отредактируйте version.m4 и paths.py при необходимости создайте:

$ python buildtap.py -b

При успешном завершении все продукты сборки будут помещены в каталог «dist», а также в tap6.tar.gz. Пакет установщика NSIS будет помещен в корневой каталог сборки..

Сборка tapinstall (необязательно)

Самый простой способ создать tapinstall — клонировать образцы драйверов Microsoft и скопировать исходный код для devcon .exe в дерево tap-windows6. Использование PowerShell:

 $ git clone https://github.com/OpenVPN/Windows-driver-samples.git$ Copy-Item -Recurse Windows-driver-samples/setup/devcon tap-windows6  $ cd tap-windows6 $ python.exe buildtap.py -b --ti = devcon 

Система сборки также поддерживает повторное использование предварительно созданных исполняемых файлов tapinstall.exe. Чтобы убедиться, что система сборки находит исполняемые файлы, создайте следующую структуру каталогов в каталоге tap-windows6:

 devcon├── Release│ └── devcon.exe├── x64│ └── Release│ └── devcon.exe└  ── ARM64 └── Release └── devcon.exe 

Эта структура аналогична структуре, которую создаст Tapinstall. Затем вызовите buildtap.py с помощью «—ti = devcon». Замените «Release» конфигурацией сборки; например, при использовании —Hlk вы должны использовать «Hlk».

Обратите внимание, что этап упаковки NSIS (-p) завершится неудачно, если вы не t havetapinstall.exe недоступен. Также не используйте флаг «-c», иначе указанные выше каталоги будут удалены до того, как MakeNSIS сможет их найти.

Режим разработчика: установка, удаление и Замена драйвера

Драйвер можно установить с помощью инструмента командной строки tapinstall.exe, который входит в состав установщиков OpenVPN и tap-windows. Обратите внимание, что в некоторых версиях OpenVPN файл tapinstall.exe называется devcon.exe. Чтобы установить, обновить или удалить драйвер NDIS 6 для tap-windows, выполните следующие действия:

  • поместите tapinstall.exe/devcon.exe в папку PATH
  • откройте оболочку администратора.
  • cd для
  • cd для amd64 , i386 или arm64 в зависимости от архитектуры процессора вашей системы.

Если вы активно разрабатываете драйвер (например: Edit , Compile, Debug, Loop …), возможно, вы не подписываете драйвер каждый раз, поэтому вам нужно знать о следующих дополнительных элементах.

Отключить безопасную загрузку:

Неподписанные драйверы требуют отключения безопасной загрузки.

  • Безопасная загрузка: зависит от производителя ПК и/или настроек BIOS на вашем тестовом компьютере.
  • https://docs.microsoft.com/en-us/windows-hardware/manufacture/desktop/dispting-secure-boot
  • VMWare (один пример): https:// docs.vmware.com/en/VMware-vSphere/7.0/com.vmware.vsphere.vm_admin.doc/GUID-898217D4-689D-4EB5-866C-888353F E241C.html
  • Virtual Box: SecureBoot не поддерживается на Virtual Box
  • Parallels (MacOS) https://kb.parallels.com/en/124242 [С Parallels 15, он включен по умолчанию, используйте 0 для отключения]

Включить тестовый режим Windows:

Также требуется тестовый режим.

  • Включить тестовый режим Windows через BCEDIT
  • Подробности: https://docs.microsoft. com/en-us/windows-hardware/Manufacture/desktop/bcdedit-command-line-options
  • В частности, bcdedit/set testsigning off или bcdedit/set testsigning on
  • Результат должен быть Test Mode в правом нижнем углу экрана Windows.

Установка драйвера:

Примечания

  • Команда tapinstall install OemVista.inf TAP0901 устанавливает драйвер.
  • Поскольку ваш драйвер не подписан, на этапе tapinstall install появится всплывающее окно «Большое страшное предупреждение о неподписанном драйвере», вам понадобится и нажмите ОК.
  • В результате драйвер будет скопирован в Магазин драйверов Windows.

Обновление драйвера и Магазин драйверов Windows:

В какой-то момент вы создадите замечательный новый драйвер, и вам нужно будет его протестировать.

  • Команда tapinstall remove TAP0901 — удаляет драйвер.
  • Однако ранее утвержденный драйвер все еще находится в Windows D. River Store
  • Набрав tapinstall install ... сейчас, переустанавливается только старый драйвер, который был скопирован в хранилище драйверов.

Ключевой шаг: драйвер также необходимо удалить из хранилища драйверов.

  • Подробности: https://docs.microsoft.com/en-us /previous-versions/windows/it-pro/windows-server-2008-R2-and-2008/cc730875(v=ws.11)

Есть сценарий для выполнения это, но это работает, только если вы не изменили текстовые строки в своем пакете драйвера

  • Расположение сценария: https://github.com/mattock/tap-windows-scripts

Ручные шаги:

  • Шаг 1. Получите список установленных драйверов с помощью команды: pnputil -e , здесь будут перечислены все файлы oemNUMBER.inf , которые находятся в хранилище драйверов.
  • Шаг 2. Найдите свой драйвер в В этом списке будет некий oem .inf файл
  • Шаг 3. Для удаления используйте pnputil.exe/d oemNUMBER .inf

Окончательный Для установки драйвера используйте tapinstall install OemVista.inf TAP0901

Важно:

Если вы не видите сообщение Big Scary Unsigned Предупреждение о драйвере — Windows будет использовать старый (не новый) драйвер.

Сборка для тестов HLK

Версия с подписью теста драйвера tap-windows6 следует использовать для тестов HLK. Рекомендуемая процедура — использовать предварительно созданный, перекрестно подписанный файл devcon.exe и использовать сгенерированный WDK ключ для подписи драйвера.

Сначала настройте каталог с предварительно созданным devcon, как описано выше. Затем запустите сборку с параметром —hlk:

 $ python.exe buildtap.py -c -b --ti = devcon-prebuilt -  hlk 

Процесс выпуска и подписание

Требования Microsoft к подписи драйверов за последние несколько лет значительно ужесточились. Из-за этого система сборки больше не пытается подписывать файлы по умолчанию. Если вы хотите подписать файлы во время сборки, используйте параметр —signoption. Каталог «sign» содержит несколько скриптов Powershell, которые помогают создавать подписанные выпуском пакеты tap-windows6:

  • Cross-Sign : перекрестное нажатие -windows6 файлы драйвера и tapinstall.exe
  • Create-DriverSubmission : создание файлов кабинета для представления подписи аттестации для конкретной архитектуры
  • Extract-DriverSubmission : извлекать zip-файлы, подписанные аттестацией.
  • Sign-File : подписывать файлы (например, установщик tap-windows6 или отправка драйвера CAB-файлы)
  • Sign-tap6.conf.ps1 : файл конфигурации для всех вышеперечисленных сценариев
  • Prepare-Msm.ps1 : возьмите подписанные Win7 и Win10 каталоги dist и создайте каталог dist, который может использовать упаковка MSM.

Большинство этих скриптов работают непосредственно с каталогом dist, созданным системой сборки tap-windows6. Ниже предполагается, что сборка и подпись выполняются на одном компьютере.

Сначала создайте драйверы с перекрестной подписью для (Windows 7/8/8.1/Server 2012r2):

 $ python.exe buildtap.py -c -b --ti = devcon $ sign  Cross-Sign.ps1 -SourceDir dist -Force 

Обратите внимание, что параметр «-Force» для Cross- Sign.ps1 является обязательным , за исключением маловероятного случая, когда вы добавляете подпись.

Затем создайте файлы кабинета подачи драйвера для подписи аттестации:

 $ sign  Create-DriverSubmission.ps1 $ Get-ChildItem -Path disk1 | sign  Sign-File.ps1 

Три архитектурно-зависимых (i386, amd64, arm64) CAB-файла Отправьте их в Центр разработки Windows для подписания аттестации. Обратите внимание, что неподписанные файлы кабинета будут автоматически отклонены.

При отправке драйверов в Microsoft позаботьтесь о том, чтобы запрашивать только подписи, применимые для каждой архитектуры.

На этом этапе переместите перекрестие. подписанный каталог «dist» прочь:

 $ Move-Item dist dist.win7 

Загрузите драйверы, подписанные аттестацией, в виде файлов zip, поместите их во временный каталог (например, нажмите -windows6tempdir). Затем запустите Extract-DriverSubmission.ps1:

 $ Get-ChildItem -Path tempdir -Filter "* .zip" | sign  Extract-DriverSubmission.ps1 

Это извлекает драйверы в каталог «dist». Переместите этот каталог в dist.win10:

 $ Move-Item dist dist.win10 

После этого вы можете приступить к созданию установщиков и/или пакетов MSM.

Если вы создаете пакеты NSIS, выполните:

 $ Move-Item dist.win7 dist $ python.exe buildtap.py -p --ti = devcon $ Move-  Item dist dist.win7 

Далее следует:

 $ Move-Item dist.win10 dist $ python.exe buildtap.py -p --ti = devcon $ Move  -Item dist dist.win10 

Наконец, подпишите оба установщика:

 $ Get-Item tap-windows * .exe | sign  Sign-File.ps1 

С другой стороны, если вы создаете пакеты MSM:

 $ sign  Prepare-Msm.ps1 $ python buildtap.py -m --sdk = wdk $ Get  -Item tap-windows * .msm | подписать  подписать-файл. ps1 

Дополнительные инструкции и справочную информацию см. в этой статье на вики-странице сообщества OpenVPN.

Переопределение настройки, определенной в версии.m4

Можно переопределить одну или несколько настроек в файле version.m4 с помощью опции —versionoverride . Любые настройки, указанные в файле переопределения, имеют приоритет над настройками в версии.m4.

Это полезно, например, при создании нескольких драйверов tap-windows6 с разными идентификаторами компонентов.

Замечания по прокси

Можно построить tap-windows6 без подключения к Интернету, но любая попытка установить отметку времени для драйвера потерпит неудачу. По этой причине настройте исходящий прокси-сервер перед запуском сборки. Обратите внимание, что командную строку также необходимо перезапустить, чтобы использовать новые настройки прокси.

Упаковка MSM

Чтобы построить пакеты MSM собирают и сначала подписывают драйвер:

  • Соберите драйвер TAP с buildtap.py и флагом «-b».
  • EV- подпишите драйверы
  • WHQL/Attestation — подпишите драйверы

Поместите подписанные драйверы в структуру каталогов в каталоге tap-windows6directory. Каждый каталог платформы должен содержать драйвер, подписанный EV, с подкаталогом win10, содержащим драйвер, подписанный WHQL/Attestation для этой платформы:

 dist├── amd64│ ├── win10│ │ ├── OemVista  .inf│ │ ├── tap0901.cat│ │ └── tap0901.sys│ ├── OemVista.inf│ ├── tap0901.cat│ └── tap0901.sys├── arm64│ ├── win10│ │  ├── OemVista.inf│ │ ├── tap0901.cat│ │ └── tap0901.sys│ └── (Примечание: подписанный EV драйвер для arm64 не используется.) ├── include│ └── tap-  windows.h└── i386 ├── win10 │ ├── OemVista.inf │ ├── tap0901.cat │ └── tap0901.sys ├── OemVista.inf ├── tap0901.cat └── tap0901.sys  

Для сборки пакетов MSM требуется Visual Studio 2019 (EWDK недостаточно) и установленный набор инструментов WiX. В командной строке разработчика для Visual Studio2019 выполните:

 $ python buildtap.py -m --sdk = wdk 

Это скомпилирует файл installer.dll с встроенные драйверы и упаковать его в виде зависящих от платформы файлов tap-windows- — .msm.

Поскольку WiX Toolset еще не поддерживает платформу arm64, только файлы amd64 и i386 MSM созданы.

Необязательно: рассмотрите возможность EV-подписания пакетов MSM перед их развертыванием. Таким образом, подпись MSM игнорируется при слиянии MSM с пакетом MSI, пользователи получают возможность проверить целостность загруженных пакетов MSM вручную.

Лицензия

См. файл КОПИРОВАНИЕ.

Оцените статью
Botgadget.ru
Добавить комментарий