- 帖子
- 16
- 精华
- 0
- 积分
- 64
- 阅读权限
- 20
- 注册时间
- 2022-9-13
- 最后登录
- 2024-1-19
|
本帖最后由 Danieldepython 于 2023-12-2 21:06 编辑
好久没来逛了,来发下最近做的小东西吧,不多说,我们进入正题:
有时做些软件时难免会做些付费激活的,但是有什么方法可以做到序列号标记呢
第一个想到的当然是文件,当然,这肯定不行,因为文件随时会丢失,pass
第二个就是注册表了,听起来不错,但一旦知道了就可以篡改,pass
第三个就是我们今天的主角了:
hwid
hwid是什么?这里可以看下度娘的结果
如图,可以看到hwid是一种类似根据硬件生成的识别代码
hwid并不会因为重装系统而改变,并且是唯一的,还不易篡改(除非你换硬件了)
因此,我们是不是可以用python实现hwid验证呢?
答案是当然可以
第一步就是获取机器的hwid了
打开cmd,输入 wmic csproduct get uuid 这时可以看到我们的hwid了
我们可以使用 subprocess 的 check_output 方法实现执行cmd指令获取输出了
但问题来了,该如何过滤呢?
这个简单,可以用写字符串方法过滤,也就是下面的 我也不知道这是什么原理,当我没说“简单”二字- import subprocess
- hwid = str(subprocess.check_output('wmic csproduct get uuid')).split('\\r\\n')[1].strip('\\r').strip()
- print(hwid)
复制代码 这是就可以获取hwid了,然后我们可以搭建一个服务器存储下已激活的hwid判断就行,但我没钱买服务器,刚好gitee可以存文件又有读取和写入的api,就只能借下gitee了
完整代码:- import subprocess
- import requests
- import base64
- hwid = str(subprocess.check_output('wmic csproduct get uuid')).split('\\r\\n')[1].strip('\\r').strip()
- print("验证中...")
- # 下面这段代码可以换成获取自己的服务器上的数据
- # try:
- # res = requests.get("https://gitee.com/api/v5/repos/***/***/contents/****?access_token=***").json()['content']
- # hwids = base64.b64decode(res.encode('utf-8')).decode('utf-8')
- # except:
- # hwids = ''
- if hwid in hwids:
- print("通过")
- else:
- print("未通过")
- input()
复制代码 |
|