100 lines
2.8 KiB
Markdown
100 lines
2.8 KiB
Markdown
# 简介
|
||
|
||
machine-code,是忘忧草安全团队出品的一款使用GO语言实现的跨平台机器码(硬件信息)获取程序。
|
||
|
||
能获取的信息包括系统UUID、主板序列号、CPU序列号、MAC网卡信息、硬盘序列号等。主要用于设备特征识别、商业软件授权CDKEY生成等等。
|
||
|
||
同时支持windows、Linux、mac等系统,引入本库后,可与您的项目代码无缝集成,并且同时支持跨平台编译。
|
||
|
||
# 更新
|
||
|
||
|
||
## 2024-11-21 v1.3
|
||
|
||
1. 优化与修复windows下获取硬盘编号异常的问题;
|
||
2. 如果获取某个序列号失败,不会再直接返回以及终止其他序列号的获取逻辑。同时返回的错误信息可以存在多个。
|
||
3. mac系统下获取硬盘序列号的代码暂时以返回"xxx"代替,待回家找到mac本本实测后再补充(老版本逻辑依赖lsblk导致不好用)。
|
||
|
||
|
||
## 2024-11-18 v1.2
|
||
|
||
1. 优化linux下获取硬盘ID序列码。避免序列码太多导致拼接起来太长,使用MD5算法二次加密。
|
||
|
||
|
||
## 2024-11-18 v1.1
|
||
|
||
1. 项目重写与优化,调整项目文件结构;
|
||
2. 添加编译时变量,可直接无需调整任何代码,编译生成多个系统的目标文件不会出现编译错误;
|
||
3. linux下获取磁盘系列号方案更新;
|
||
4. 本着精简,能不用其他库就不用的原则,本项目不再使用其他三方库如wmi。
|
||
5. 迁移与合并码友对老版本的改进代码。
|
||
|
||
|
||
## 2021-07-20 v1.0
|
||
1. 只是简单的做个分享
|
||
|
||
|
||
# 安装说明
|
||
|
||
```
|
||
go get github.com/super-l/machine-code
|
||
```
|
||
|
||
|
||
# 使用方法
|
||
|
||
具体可查看项目的demo目录。并且提供编译好的demo测试程序,以及运行截图。
|
||
|
||
使用代码如:
|
||
|
||
```
|
||
package main
|
||
|
||
import (
|
||
"encoding/json"
|
||
"fmt"
|
||
machine_code "github.com/super-l/machine-code"
|
||
"strings"
|
||
)
|
||
|
||
func main() {
|
||
if machine_code.MachineErr != nil {
|
||
fmt.Println("获取机器码信息错误:" + machine_code.MachineErr.Error())
|
||
return
|
||
}
|
||
|
||
machineJson, _ := json.Marshal(machine_code.Machine)
|
||
fmt.Println("机器码信息汇总:" + string(machineJson))
|
||
|
||
trafficIp, _ := machine_code.GetIpAddr()
|
||
fmt.Println("当前活跃IP:" + trafficIp)
|
||
|
||
allIp, _ := machine_code.GetIpAddrAll()
|
||
fmt.Println("所有IP:" + strings.Join(allIp, " "))
|
||
}
|
||
|
||
```
|
||
|
||
# 运行截图
|
||
|
||

|
||
|
||

|
||
|
||
# 注意事项
|
||
|
||
windows下使用的是wmi相关命令来获取系统信息。理论上99.99%成功率。但不排除部分电脑的wmi关闭或损坏等。
|
||
|
||
linux下主要是使用的基于特定系统文件读取信息。
|
||
|
||
|
||
# 其他
|
||
|
||
如果能帮到您,如果您觉得不错,请给项目点个赞(star)吧,您的支持是我前进的动力,谢谢!
|
||
|
||
```html
|
||
技术交流QQ群:50246933
|
||
技术博客: http://www.xiao6.net
|
||
```
|
||
|
||
感谢 @lazyphp 和 @bestK 的改进提交! |