设为首页收藏本站

Crossin的编程教室

 找回密码
 立即加入
查看: 1166|回复: 2
打印 上一主题 下一主题

[小作品]利用hwid做到激活验证

[复制链接]

7

主题

1

好友

64

积分

注册会员

Rank: 2

跳转到指定楼层
楼主
发表于 2023-12-2 21:04:17 |只看该作者 |倒序浏览
本帖最后由 Danieldepython 于 2023-12-2 21:06 编辑

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

使用道具 举报

7

主题

1

好友

64

积分

注册会员

Rank: 2

沙发
发表于 2023-12-2 21:09:16 |只看该作者
详细关于gitee读取与写入数据api到时候有空详细做一期教程(我也不知道要到啥时候)
回复

使用道具 举报

174

主题

45

好友

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

板凳
发表于 2023-12-3 01:36:29 |只看该作者
手动点赞
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即加入

QQ|手机版|Archiver|Crossin的编程教室 ( 苏ICP备15063769号  

GMT+8, 2024-4-27 14:30 , Processed in 0.027369 second(s), 24 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部