找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 17266|回复: 2

[系统相关] 想用批处理写个简单的注册机

[复制链接]
发表于 2022-10-1 21:43:59 | 显示全部楼层 |阅读模式
想用批处理写个简单的注册机

研究了好几天 没有头绪。
比如说
1、获取到网卡的mac地址
2、把mac地址进行计算得到一个数值A,客户把A的值告诉我们后
3、我们把A的值放进我们的算法里计算得到序列号,发给客户。客户输入序列号后程序正常运行。

把A 通过算法 +-*/ 后,得到序列号。
要注册的程序输入这个序列号后,程序会经过+-*/逆向算法到的MAC地址。
大师有没有算法,公布一个。或者大家在这里讨论一下
发表于 2022-10-2 06:49:21 | 显示全部楼层
本帖最后由 HOPE2021 于 2022-10-2 06:53 编辑

回复 1# andycker
如果不需要逆向就好办了,只需要用Certutil生成一个信息摘要(P.S. Windows Vista 及更高版本的 Windows 才自带 Certutil),然后变形(就是交换顺序),接着在客户端分析输入的密钥是否由信息摘要变形而成。
由于信息摘要算法不可逆,所以无法还原MAC地址,但能求出值A。
Certutil 关于信息摘要的帮助文档:
  1. 用法:
  2.   CertUtil [选项] -hashfile InFile [HashAlgorithm]
  3.   通过文件生成并显示加密哈希

  4. 选项:
  5.   -Unicode          -- 以 Unicode 编写重定向输出
  6.   -gmt              -- 将时间显示为 GMT
  7.   -seconds          -- 用秒和毫秒显示时间
  8.   -v                -- 详细操作
  9.   -privatekey       -- 显示密码和私钥数据
  10.   -pin PIN                  -- 智能卡 PIN
  11.   -sid WELL_KNOWN_SID_TYPE  -- 数字 SID
  12.             22 -- 本地系统
  13.             23 -- 本地服务
  14.             24 -- 网络服务

  15. 哈希算法: MD2 MD4 MD5 SHA1 SHA256 SHA384 SHA512

  16. CertUtil -?              -- 显示动词列表(命名列表)
  17. CertUtil -hashfile -?    -- 显示 "hashfile" 动词的帮助文本
  18. CertUtil -v -?           -- 显示所有动词的所有帮助文本
复制代码
下面是一个简单的没有变形机制的注册码生成器,请您多多指教:
  1. @Echo Off
  2. @Goto :Main

  3. :Main
  4.         Cd. > Serial.Txt
  5.         For /F %%_ in ('GetMac ^| FindStr /B "..-"') Do (
  6.                 Call :InitSerialNumber %%_
  7.         )
  8.         Pause > Nul
  9. @Exit /B

  10. :InitSerialNumber <MAC>
  11.         If "%~1"=="" Then @Goto :Eof
  12.         Set "MAC=%1"
  13.         Echo.MAC 地址: %MAC%
  14.         >> Serial.Txt Echo.==MAC 地址: %MAC% ================
  15.         Set /P=%MAC:-=%< Nul > Temp.Txt

  16.         %= 方法一:转换成十六进制 =%
  17.         Certutil -EnCodeHex -F Temp.Txt Temp.Txt > Nul 2> Nul
  18.         For /F "Tokens=2 Delims=        " %%# in ('Type Temp.Txt') Do (
  19.                 Set SN[0]=%%#
  20.         )
  21.         Set SN[1]=%SN[0]:~0,36%
  22.         Set SN[2]=%SN[1]:~0,25%
  23.         Set SN[3]=%SN[1]:~-11%
  24.         Echo.        序列号一:%SN[3]: =%-%SN[2]: =%
  25.         >> Serial.Txt Echo.        序列号一:%SN[3]: =%-%SN[2]: =%

  26.         %= 方法二:信息摘要 =%
  27.         Set /P=%MAC%< Nul > Temp.Txt
  28.         Set "Hash="
  29.         For /F "Skip=1" %%# in ('Certutil -HashFile Temp.Txt MD5') Do (
  30.                 If Not Defined Hash Set Hash=%%#
  31.         )
  32.         Set SN[4]=%Hash:~0,8%
  33.         Set SN[5]=%Hash:~8,8%
  34.         Set SN[6]=%Hash:~16,8%
  35.         Set SN[7]=%Hash:~24,8%
  36.         Set /P=WScript.Echo UCase("%SN[4]%-%SN[5]%-%SN[6]%-%SN[7]%")<Nul > UCase.VBS
  37.         For /F %%# in ('CScript //NoLogo UCase.VBS') Do (
  38.                 Set SN[8]=%%#
  39.         )
  40.         Echo.        序列号二:%SN[8]%
  41.         >> Serial.Txt Echo.        序列号二:%SN[8]%
  42. @Goto :Eof
复制代码
 楼主| 发表于 2022-10-8 20:48:52 | 显示全部楼层
回复 2# HOPE2021


    辛苦了,我慢慢研究一下
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-19 14:45 , Processed in 0.009468 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表