# hardware-info **Repository Path**: devqiaoyu/hardware-info ## Basic Information - **Project Name**: hardware-info - **Description**: 快速获取本机硬件信息 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-09-05 - **Last Updated**: 2025-09-12 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 硬件许可证生成器 一个跨平台的Go应用程序,具有GUI界面,用于检测硬件信息并生成许可证文件。 ## 功能特性 - 🖥️ 跨平台支持 (Windows, Linux, macOS) - 🎯 基于Fyne框架的现代GUI界面 - 🔍 硬件检测:CPU ID、CPU名称、MAC地址 - 📄 带有过期日期控制的许可证生成 - 💾 硬件信息和许可证文件的JSON输出 - 🔐 基于RSA的许可证签名和验证 - ⚡ 许可证生成后自动退出程序 ## 项目结构 ``` hardwareInfo/ ├── main.go # 主GUI应用程序 ├── hardware/ │ └── hardware.go # 硬件检测核心逻辑 ├── license/ │ └── license.go # 许可证生成和验证 ├── config/ │ ├── private.pem # 用于签名的RSA私钥 │ └── public.pem # 用于验证的RSA公钥 ├── output/ # 硬件信息JSON文件 │ └── hardware-info-*.json ├── license.json # 生成的许可证文件(根目录) ├── go.mod # Go模块定义 ├── README.md # 项目文档(英文) └── README_zh.md # 项目文档(中文) ``` ## 快速开始 ### 前置要求 - Go 1.21 或更高版本 - 用于许可证签名的RSA密钥对(放置在 `config/` 目录中) ### 运行应用程序 ```bash # 构建应用程序 go build -o hardwareInfo . # 运行GUI应用程序 ./hardwareInfo ``` ### 使用GUI界面 1. **启动应用程序**:GUI窗口将打开,标题为"Hardware License Generator" 2. **设置过期日期**:输入或修改许可证过期日期(YYYY-MM-DD格式) 3. **生成许可证**:点击"Generate License"按钮 4. **自动处理过程**: - 自动检测硬件信息 - 生成并签名许可证文件 - 显示成功消息 - 自动关闭应用程序 ## 输出文件 ### 硬件信息 ```json { "cpuId": "Apple-M4", "cpuName": "Apple M4", "macAddress": "d0:11:e5:8f:2a:f8", "expiryDate": "2025-10-10", "admin": false } ``` *保存到:`output/hardware-info-YYYYMMDD-HHMMSS.json`* ### 许可证文件 ```json { "hardwareHash": "a1b2c3d4e5f6...", "encryptedExpiry": "encrypted_data...", "signature": "base64_signature..." } ``` *保存到:`license.json`(根目录)* ## 支持的平台 - **Windows**:使用 `wmic` 和 PowerShell 命令 - **Linux**:使用 `dmidecode`、`/proc/cpuinfo` 和网络接口文件 - **macOS**:使用 `sysctl` 和 `networksetup` 命令 ## 依赖项 - **Go运行时**:版本1.21或更高 - **Fyne GUI框架**:v2.4.5(由Go模块自动管理) - **系统命令**:特定平台的硬件检测工具(通常预装) - **RSA密钥对**:许可证签名/验证所需 ## 许可证系统 应用程序包含一个复杂的许可证管理系统: - **硬件指纹识别**:基于CPU ID、CPU名称和MAC地址创建唯一标识符 - **RSA数字签名**:使用RSA-2048确保许可证真实性 - **AES加密**:敏感数据(过期日期、管理员标志)使用硬件衍生密钥加密 - **过期控制**:基于北京时间(UTC+8)的过期验证 - **管理员覆盖**:特殊管理员许可证可绕过过期检查 ## 安全特性 - 🔐 **RSA-2048签名**:防止许可证篡改 - 🛡️ **硬件绑定**:许可证绑定到特定硬件配置 - 🔒 **AES加密**:敏感许可证数据加密 - ⏰ **时间验证**:精确的过期日期控制 - 🚫 **重放保护**:硬件指纹防止许可证重用 ## 注意事项 - **Linux权限**:某些命令可能需要root权限才能获得完整的硬件信息 - **网络接口**:MAC地址检测可能因网络配置而异 - **文件管理**:生成的文件包含时间戳以避免冲突 - **自动退出**:应用程序在成功生成许可证后自动关闭 - **密钥管理**:确保RSA密钥对正确放置在 `config/` 目录中 ## 构建和运行 ### 开发环境设置 ```bash # 下载依赖 go mod tidy # 编译程序 go build -o hardwareInfo . # 运行程序 ./hardwareInfo ``` ### 密钥生成 如果您需要生成新的RSA密钥对: ```bash # 创建config目录 mkdir -p config # 生成私钥 openssl genrsa -out config/private.pem 2048 # 生成公钥 openssl rsa -in config/private.pem -pubout -out config/public.pem ``` ## 故障排除 ### 常见问题 1. **权限不足**:在Linux系统上可能需要sudo权限 2. **依赖缺失**:确保系统安装了必要的硬件检测工具 3. **密钥文件缺失**:检查 `config/` 目录中的RSA密钥对 4. **网络接口检测失败**:某些虚拟环境可能无法正确检测MAC地址 ### 日志输出 程序会在控制台输出详细的执行信息,包括: - 硬件信息检测结果 - 许可证生成过程 - 文件保存路径 - 错误信息(如果有) ## 开发 ### 项目架构 - **main.go**:GUI界面和主要业务逻辑 - **hardware/hardware.go**:跨平台硬件信息获取 - **license/license.go**:许可证生成、加密和验证 ### 扩展功能 如需添加新的硬件检测字段或修改许可证格式,请参考现有代码结构进行扩展。 ## 许可协议 本项目为内部工具,请根据实际需求设置相应的许可协议。