/machine-code

machine-code,是忘忧草安全团队出品的一款使用GO语言实现的跨平台机器码(硬件信息)获取程序。 能获取的信息包括系统UUID、主板序列号、CPU序列号、MAC网卡信息、硬盘序列号等。主要用于设备特征识别、商业软件授权CDKEY生成等等。 同时支持windows、Linux、mac等系统!

Primary LanguageGo

简介

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, " "))
}

运行截图

image1

image2

注意事项

windows下使用的是wmi相关命令来获取系统信息。理论上99.99%成功率。但不排除部分电脑的wmi关闭或损坏等。

linux下主要是使用的基于特定系统文件读取信息。

其他

如果能帮到您,如果您觉得不错,请给项目点个赞(star)吧,您的支持是我前进的动力,谢谢!

技术交流QQ群:50246933
技术博客: http://www.xiao6.net

感谢 @lazyphp 和 @bestK 的改进提交!