这个项目能做什么
hwid 是一个轻量级的 Python 库和命令行工具,旨在从 Windows、Linux 和 macOS 中提取计算机的硬件 ID(hwid)。它使用原生操作系统检测来获取硬件标识符,无需任何外部运行时依赖。
该项目由作者创建,以解决一个实际问题:在不将桌面应用程序分发给未授权用户的情况下进行许可授权。通过使用计算机的硬件 ID 作为唯一标识符,开发者可以实现将软件绑定到特定机器的许可系统。
安装非常简单,可以通过 pip(`pip install hwid`)、macOS/Linux 上的 Homebrew 或 Windows 上的 Scoop 进行。安装后,该库可以作为 Python 模块使用,通过导入 `hwid` 并调用 `hwid.get_hwid()`,或者作为命令行工具运行 `hwid` 来打印硬件 ID,运行 `hwid version` 检查包版本,或运行 `hwid info` 显示版本、Python 和平台信息。
主要功能包括跨平台支持(使用原生操作系统检测)、零外部运行时依赖,以及同时作为模块和命令行工具的双重用途。该项目强调工程质量,具有完整的类型提示,并通过多种工具(mypy、basedpyright、ty、pyrefly、zuban)检查,使用 ruff 进行全面的 linting 和格式化,使用 import-linter 进行架构契约强制,使用 pytest 进行测试并报告覆盖率,使用 Sphinx 文档并通过 GitHub Pages 部署,以及自动化 CI/CD 用于跨多个平台的测试、构建和发布。
安全措施包括 CodeQL、OpenSSF Scorecard、依赖审查、使用 gitleaks 进行秘密扫描、使用 pip-audit 进行依赖审计、使用 zizmor 进行 GitHub Actions 静态分析,以及每个版本附带的 CycloneDX SBOM。该项目还使用 uv 进行依赖管理,使用 hatch 进行构建。
作者包含一个重要警告:hwid 不应作为许可系统的唯一组成部分。对于服务器-客户端架构,加密的 hwid 可以发送到服务器进行验证,尽管 HTTP 请求可能被 mitmproxy 等工具拦截。对于本地许可,hwid 可以加密并存储在文件中,建议使用 pyarmor 等代码混淆工具使逆向工程更加困难。
该项目在 MIT 许可下分发,并非用于恶意目的。
评论
0 评分人数达到10人后显示
登录后参与讨论。