Об этом проекте

hwid — это легковесная библиотека Python и инструмент командной строки, предназначенный для извлечения аппаратного идентификатора (hwid) компьютера в Windows, Linux и macOS. Он использует нативное определение операционной системы для получения аппаратного идентификатора без необходимости во внешних зависимостях времени выполнения. Проект был создан автором для решения практической задачи: лицензирования настольных приложений без их распространения среди неавторизованных пользователей. Используя аппаратный идентификатор компьютера в качестве уникального идентификатора, разработчики могут реализовать системы лицензирования, привязывающие программное обеспечение к конкретным машинам. Установка проста через pip (`pip install hwid`), Homebrew на macOS/Linux или Scoop на Windows. После установки библиотеку можно использовать как модуль Python, импортируя `hwid` и вызывая `hwid.get_hwid()`, или как CLI-инструмент, запуская `hwid` для вывода аппаратного идентификатора, `hwid version` для проверки версии пакета или `hwid info` для отображения информации о версии, Python и платформе. Ключевые особенности включают кроссплатформенную поддержку с нативным определением ОС, отсутствие внешних зависимостей времени выполнения и двойное использование как в качестве модуля, так и CLI-инструмента. Проект подчеркивает инженерное качество с полными аннотациями типов, проверяемыми несколькими инструментами (mypy, basedpyright, ty, pyrefly, zuban), всесторонней проверкой и форматированием с помощью ruff, контролем архитектурных контрактов с import-linter, тестированием pytest с отчетностью о покрытии, документацией Sphinx с развертыванием на GitHub Pages и автоматизированным CI/CD для тестирования, сборки и публикации на нескольких платформах. Меры безопасности включают CodeQL, OpenSSF Scorecard, проверку зависимостей, сканирование секретов с помощью gitleaks, аудит зависимостей с pip-audit, статический анализ GitHub Actions с zizmor и SBOM CycloneDX, прикрепляемый к каждому релизу. Проект также использует uv для управления зависимостями и hatch для сборки. Автор включает важное предупреждение: hwid не следует использовать как единственный компонент системы лицензирования. Для архитектур клиент-сервер зашифрованный hwid можно отправлять на сервер для проверки, хотя HTTP-запросы могут быть перехвачены с помощью таких инструментов, как mitmproxy. Для локального лицензирования hwid можно зашифровать и сохранить в файле, при этом рекомендуется использовать инструменты обфускации кода, такие как pyarmor, чтобы затруднить обратную разработку. Проект распространяется под лицензией MIT и не предназначен для злонамеренных целей.