明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 72416|回复: 458

[源码] 【源码】程序使用权限

    [复制链接]
发表于 2014-2-4 11:06 | 显示全部楼层 |阅读模式
本帖最后由 荒野孤行 于 2021-2-21 18:32 编辑

此贴包含三种加密方式:

第一种:程序只可在规定时间内使用;
第二种:程序在规定时间内自行注册,可永久使用;
第三种:通过对比mac地址进行加密(根据坛友提供的源码而修改)。


  1. (princ "\n若需测试加密程序一,请输入调用命令jm1\n")
  2. (princ "\n若需测试加密程序二,请输入调用命令jm2\n")
  3. (princ "\n请修改程序内的日期参数,程序会根据其与电脑时间的关系比较得出不同的结果,记得先用unload命令(见最后的一个程序)清除注册码\n")

  4. ;;;*****时间限制方法一: 程序只可在规定时间内使用   程序开始
  5. (defun c:jm1 ()                                ;加密主程序
  6.   (vl-load-com)
  7.   (setq rqsj (rtos (* (getvar "cdate") 1E8))) ;获取日期时间
  8.   (setq riqi (atoi (substr rqsj 1 8)))        ;取出日期
  9.   (setq riqi_end 20161230)                ;设置程序的试用截止日期
  10.   (setq wdy_BaseTime (+ (* riqi 11) 10086))
  11.   (setq wdy_EndTime (+ (* riqi_end 11) 10086))
  12.   (setq        reg_BaseTime
  13.          (vl-registry-read
  14.            "HKEY_CURRENT_USER\\SOFTWARE\\Autodesk\\AutoCAD"
  15.            "BaseTime"
  16.          )
  17.   )                                        ;基准日期,用于与截止日期进行比较
  18.   (if (or (= reg_BaseTime nil)
  19.           (< (atoi reg_BaseTime) wdy_BaseTime)
  20.       )
  21.     (setq
  22.       reg_BaseTime
  23.        (vl-registry-write
  24.          "HKEY_CURRENT_USER\\SOFTWARE\\Autodesk\\AutoCAD"
  25.          "BaseTime"
  26.          (itoa wdy_BaseTime)
  27.        )
  28.     )
  29.   )
  30.   (setq        reg_EndTime
  31.          (vl-registry-read
  32.            "HKEY_CURRENT_USER\\SOFTWARE\\Autodesk\\AutoCAD"
  33.            "License1"
  34.          )
  35.   )                                        ;使用截止日期
  36.   (if (= reg_EndTime nil)
  37.     (setq
  38.       reg_EndTime
  39.        (vl-registry-write
  40.          "HKEY_CURRENT_USER\\SOFTWARE\\Autodesk\\AutoCAD"
  41.          "License1"
  42.          (itoa wdy_EndTime)
  43.        )
  44.     )
  45.     (if        (< (atoi reg_EndTime) wdy_EndTime)
  46.       (setq
  47.         reg_EndTime
  48.          (vl-registry-write
  49.            "HKEY_CURRENT_USER\\SOFTWARE\\Autodesk\\AutoCAD"
  50.            "License1"
  51.            (itoa wdy_EndTime)
  52.          )
  53.       )
  54.     )
  55.   )
  56.   (if (or (> (atoi reg_BaseTime) (atoi reg_EndTime))
  57.                                         ;若基准日期转换值大于截止日期转换值
  58.           (/= (strlen reg_EndTime) 9)
  59.                                         ;若截止日期转换值字符不等于9
  60.           (/= (rem (- (atoi reg_EndTime) 10086) 11) 0)
  61.           (/= (rem (- (atoi reg_BaseTime) 10086) 11) 0)
  62.       )
  63.     (wdy_right1)
  64.   )
  65.   (princ)
  66. )

  67. (defun wdy_right1 ()        ;核准验证码
  68.   (setq rqsj (rtos (* (getvar "cdate") 1E8)))
  69.   (setq riqi (atoi (substr rqsj 1 8)))
  70.   (setq UserCode (strcase (getstring "\n请输入验证码:")))
  71.   (setq
  72.     UserCode_OK
  73.      (strcase
  74.        (strcat
  75.          "WDY"
  76.          (itoa
  77.            (* (atoi (substr rqsj 1 5)) (atoi (substr rqsj 6 5)))
  78.          )
  79.          "D963C258B147A"
  80.        )
  81.      )
  82.   )
  83.   (if (= UserCode UserCode_OK)
  84.     (progn
  85.       (setq Year_current  (atoi (substr rqsj 1 4))
  86.             Month_current (atoi (substr rqsj 5 2))
  87.             Time_add          3                ;设定有效区再延长3个月
  88.             Year_next          (+ Year_current
  89.                              (fix (/ (+ Month_current Time_add) 12))
  90.                           )
  91.             Month_next          (rem (+ Month_current Time_add) 12)
  92.             Day_current          (atoi (substr rqsj 7 2))
  93.             Date_new          (+ (* Year_next 10000)
  94.                              (* Month_next 100)
  95.                              Day_current
  96.                           )
  97.       )
  98.       (setq EndTime_new (itoa (+ (* Date_new 11) 10086)))
  99.       (vl-registry-write
  100.         "HKEY_CURRENT_USER\\SOFTWARE\\Autodesk\\AutoCAD"
  101.         "License1"
  102.         EndTime_new
  103.       )
  104.       (alert
  105.         (strcat        "\n恭喜您,验证成功!\n\n已将程序有效期延长至"
  106.                 (itoa Year_next)
  107.                 "年"
  108.                 (itoa Month_next)
  109.                 "月"
  110.                 (itoa Day_current)
  111.                 "日\n"
  112.         )
  113.       )
  114.       (princ)
  115.     )
  116.     (progn (alert "\n很抱歉,验证失败!\n") (exit))
  117.   )
  118.   (princ)
  119. )
  120. ;;;*****时间限制方法一: 程序只可在规定时间内使用   程序结束

  121. ;;;*****时间限制方法二: 在规定时间内程序自行注册,可永久使用   程序开始
  122. (defun c:jm2 ()                                ;加密主程序
  123.   (vl-load-com)
  124.   (setq rqsj (rtos (* (getvar "cdate") 1E8))) ;获取日期时间
  125.   (setq riqi (atoi (substr rqsj 1 8)))        ;取出日期
  126.   (setq        riqi_start
  127.          20160101                        ;设置程序的自动注册起始日期
  128.         riqi_end 20160902                ;设置程序的自动注册截止日期
  129.   )
  130.   (setq        reg_license
  131.          (vl-registry-read
  132.            "HKEY_CURRENT_USER\\SOFTWARE\\Autodesk\\AutoCAD"
  133.            "License2"
  134.          )
  135.   )
  136.   (if (= reg_license nil)
  137.     (if        (and (>= riqi riqi_start) (<= riqi riqi_end))
  138.                                         ;设置权限自动注册日期;
  139.                                         ;缺点:若使用者直接将电脑系统的日期改到此时间内,则可自行破解;
  140.                                         ;若需更完善,可采用方法一添加基准时间去进行比较。
  141.       (vl-registry-write
  142.         "HKEY_CURRENT_USER\\SOFTWARE\\Autodesk\\AutoCAD"
  143.         "License2"
  144.         "A123B654C789D"
  145.       )
  146.       (wdy_right2)
  147.     )
  148.     (if        (/= (strcase reg_license) "A123B654C789D")
  149.       (wdy_right2)
  150.     )
  151.   )
  152.   (princ)
  153. )

  154. (defun wdy_right2 ()                        ;核准验证码
  155.   (setq rqsj (rtos (* (getvar "cdate") 1E8)))
  156.   (setq riqi (atoi (substr rqsj 1 8)))
  157.   (setq UserCode (strcase (getstring "\n请输入验证码:")))
  158.   (setq
  159.     UserCode_OK
  160.      (strcase
  161.        (strcat
  162.          "WDY"
  163.          (itoa
  164.            (* (atoi (substr rqsj 1 5)) (atoi (substr rqsj 6 5)))
  165.          )
  166.          "D963C258B147A"
  167.        )
  168.      )
  169.   )
  170.   (if (= UserCode UserCode_OK)
  171.     (progn (vl-registry-write
  172.              "HKEY_CURRENT_USER\\SOFTWARE\\Autodesk\\AutoCAD"
  173.              "License2"
  174.              "A123B654C789D"
  175.            )
  176.            (alert "\n恭喜您,验证成功!程序可永久使用!")
  177.            (princ)
  178.     )
  179.     (progn (alert "\n很抱歉,验证失败!\n") (exit))
  180.   )
  181.   (princ)
  182. )
  183. ;;;*****时间限制方法二: 在规定时间内程序自行注册,可永久使用   程序结束

  184. ;;;通过管理员密码计算得出验证码 程序开始
  185. (defun c:admin ()
  186.   (vl-load-com)
  187.   (setq rqsj (rtos (* (getvar "cdate") 1E8)))
  188.   (setq
  189.     ProveCode
  190.      (strcase
  191.        (strcat
  192.          "WDY"
  193.          (itoa
  194.            (* (atoi (substr rqsj 1 5)) (atoi (substr rqsj 6 5)))
  195.          )
  196.          "D963C258B147A"
  197.        )
  198.      )
  199.   )
  200.   (setq password (strcase (getstring "\n请输入管理员密码:")))
  201.   (if (= password "WDY123456789")
  202.     (princ
  203.       (strcat "\n管理员权限验证成功,您的注册码为:"
  204.               ProveCode
  205.               "\n"
  206.       )
  207.     )
  208.     (alert "\n管理员密码错误!")
  209.   )
  210.   (princ)
  211. )
  212. ;;;通过管理员密码计算得出验证码 程序结束

  213. ;;;注册码清除 程序开始
  214. (defun c:unload        ()
  215.   (vl-registry-delete
  216.     "HKEY_CURRENT_USER\\SOFTWARE\\Autodesk\\AutoCAD"
  217.     "License"
  218.   )
  219.   (vl-registry-delete
  220.     "HKEY_CURRENT_USER\\SOFTWARE\\Autodesk\\AutoCAD"
  221.     "License1"
  222.   )
  223.   (vl-registry-delete
  224.     "HKEY_CURRENT_USER\\SOFTWARE\\Autodesk\\AutoCAD"
  225.     "License2"
  226.   )
  227.   (vl-registry-delete
  228.     "HKEY_CURRENT_USER\\SOFTWARE\\Autodesk\\AutoCAD"
  229.     "BaseTime"
  230.   )
  231.   (vl-registry-delete
  232.     "HKEY_CURRENT_USER\\SOFTWARE\\Autodesk\\AutoCAD"
  233.     "EndTime"
  234.   )
  235.   (alert "\n恭喜你,注册码信息清除成功!")
  236.   (princ)
  237. )
  238. ;;;注册码清除 程序结束


第三种加密方式:
采用获取电脑的mac地址,与时间通过换算后组成序列号。请见附件(两个文件)!
这里的时间是软件使用的初始时间,以及软件试用到期的时间(通过时间对比判断软件是否到期,我还未写,有兴趣的同志可进行改进)。注册码是通过序列中的部分数据(即mac地址的部分数据)获取得来的,里面的crack是针对管理员而开放的,只要只要序列号,管理员输入正确的密码后,直接计算出注册码即可。
以上思路就是那样了,还需改进,有兴趣的可自行修改。

说明:
1.两个文件需要放在同一个位置
2.请将CAD文档也放在与两个文件一个位置,因为没有编译,只能通过相对路径读取
3.因为是采用的mac地址,所以需要联网才可测试(只有联网了电脑才可以读取mac)
4.如果不想用mac地址来加密,也可以通过硬盘ID、CPU ID来进行加密,论坛里面都有源码的。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x

评分

参与人数 6明经币 +6 收起 理由
1028882406@qq.c + 1
lishucheng96 + 1
kingofauto + 1 很给力!
ucuc2003 + 1 赞一个!
zctao1966 + 1 很给力!
革天明 + 1 赞一个!

查看全部评分

"觉得好,就打赏"
还没有人打赏,支持一下

本帖被以下淘专辑推荐:

发表于 2019-1-19 14:08 | 显示全部楼层
謝謝樓主!下載學習。
回复 支持 1 反对 0

使用道具 举报

发表于 2018-9-25 16:20 | 显示全部楼层
toproc 发表于 2018-9-9 13:28
不连线和连线虽然都能获取一堆MAC地址,但是连网后你通过判断,能直接获取当前连网的MAC地址。

如果用联网的网卡,那么有线、无线、VPN都不一样。注册后还限制联网方式,用户体验不佳。可以采用注册时绑定网卡的方式加密。为防止改时间破解,可以采用每一个工具命令执行时将当前时刻以加密的方式写入注册表,新命令执行时总是比较系统时间和注册表时间。
发表于 2018-8-28 19:30 | 显示全部楼层
toproc 发表于 2017-12-1 22:59
这种加密存在很多问题:1、cpuid不唯一的问题
2、硬盘只能取得逻辑序列号,重装系统后,逻辑序列号会发生 ...

应该说还有一个最大的问题,就是用户改系统时间的问题。
假如注册码的有效期是一个月,软件到期后,用户可以把系统时间改回第一次注册时的时间,然后重新用第一次的注册码注册,这样又能用一个月。只要不用在线时间,这种漏洞是肯定存在的!
发表于 2024-1-17 00:29 | 显示全部楼层
感谢大佬分享
发表于 2023-12-11 10:09 | 显示全部楼层
程序加密,学习思路!
发表于 2022-10-9 08:28 | 显示全部楼层
留个脚印,支持一下
发表于 2022-10-5 17:54 | 显示全部楼层
我很有热情,不眠不休学了几天了。
但是这个帖子附件无法下载了,我不知道该咋办。。。。
发表于 2022-2-16 21:59 | 显示全部楼层
不错   支持下
发表于 2022-2-16 21:20 | 显示全部楼层
多谢楼主分享。。。
发表于 2022-2-11 18:38 | 显示全部楼层
感谢楼主的分享
发表于 2022-2-8 13:01 | 显示全部楼层
多谢楼主分享。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-3-28 20:18 , Processed in 0.310349 second(s), 37 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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