明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 25350|回复: 71

Vlisp 产生 序列号 源码

  [复制链接]
发表于 2007-9-8 10:11:00 | 显示全部楼层 |阅读模式
本帖最后由 作者 于 2007-9-8 10:11:58 编辑

上网查了一下相关的资料,大多序列号是取硬盘网卡序列号之类,实际使用发现有很多问题,主要是取硬盘或网卡序列号经常有问题,再说用vlax-create...函数要类型库支持,特写了这个函数

;;;用计算机名和用户名产生序列号

;;;参数username为用户名 ,computername为计算机名,参数bstr为加密字串

;;;师兄 QQ361865648  2007/9/8

(defun getkey(username computername bstr / usname cname)
  (setq usname username cname computername)
(if (not usname)(setq usname(getenv "UserName")))
(if (not cname)(setq cname (getenv "ComputerName")   ))
(setq keyn(strcat(vl-string-trim " " (substr usname 1 2))
          (vl-string-trim " " (substr cname 1 2))))
(setq addlst '("B" "C" "D" "F" "G"))
(setq i 0)
(while (< (strlen keyn) 4)
  (setq keyn(strcat keyn (nth i addlst)))
  (setq i(1+ i)))
(setq tosumlst(VL-STRING->LIST keyn))
(setq sellst(mapcar '(lambda (x / tmpstr)
         (setq tmpstr(rtos x 2 0))
         (substr tmpstr 2 1)) tosumlst))
(setq basstr bstr)
  (if (not bstr)
  (setq basstr "B2CDF5G3HJ4K6MPQ7RT9VWX8YKF6J8CD4G3"))
(setq i 1)
(setq key(mapcar '(lambda (x / num)
    (setq num(fix(* 3 (atof x))))
    (substr basstr (1+ num) 4)) sellst))
  )
;;;测试

(getkey nil nil nil);_按默认方式计算序列号

返回 ("DF5G" "DF5G" "B2CD" "WX8Y")

具体算法就不多说了,自已研究去吧,这个序列号太长了,改一改程序可得到你想要的序列

发表于 2007-10-9 23:07:00 | 显示全部楼层
既然大家对 cpu序列号感兴趣,就发个程序
  1. ;; cpuid=获得首枚CPU的序列号。by lxx.2007
  2. ;; (cpuid) -> "078BFBFF00000F7A"
  3. (defun cpuid (/ str)
  4.   (setq str
  5.   "Set objSWbemObject = GetObject("winmgmts:Win32_Processor.DeviceID='cpu0'")
  6.   ret = objSWbemObject.ProcessorId
  7.   'msgbox "首枚CPU序列号:" & ret" )
  8.   (if (not *wsc)(setq *wsc (vlax-create-object "ScriptControl")))
  9.   (vlax-put *wsc 'language "vbs")
  10.   (vlax-invoke *wsc 'ExecuteStatement str)
  11.   (vlax-invoke *wsc 'eval "ret")
  12. )
回复 支持 1 反对 0

使用道具 举报

发表于 2021-2-13 18:12:21 | 显示全部楼层

好东西,学习一下!
发表于 2007-9-8 12:25:00 | 显示全部楼层

能不能写个例子呀.这个好像太深了,有点看不懂

发表于 2007-9-8 14:10:00 | 显示全部楼层

呵呵,我也在写一个,不过我的是按计算机名和硬盘序列号算的。
不考虑用用户名,是因为考虑到一部电脑可能存在多用户。
至于网卡,我看网上的那些程序听麻烦的。硬盘号还可以。至于错误还没发现

 楼主| 发表于 2007-9-8 14:20:00 | 显示全部楼层
取硬盘序列号然后生成序列号经验证不稳定,有部份硬盘取出序列号不正确
发表于 2007-9-8 14:21:00 | 显示全部楼层
本帖最后由 作者 于 2007-9-8 14:24:59 编辑

我的想法是把机器码写入文件以后加密
最心仪的机器码是CPU编号 只有这个是确定一机一套的最佳选择
做成授权文件

这样的好处是电脑格式化了也照用

硬盘序列号我曾经试过 DOSLib里取到的是卷序列号 并非硬盘的物理序列号
二者的区别是硬盘序列号不变 卷序列号在格式化以后会改变 有些软件可以修改卷序列号

楼主的方法 重装系统就得重新算序列号了吧?

另外计算机名和用户名是可以抄袭的(只要不是同一网段)

发表于 2007-9-8 16:18:00 | 显示全部楼层

收下先

发表于 2007-9-8 16:42:00 | 显示全部楼层
非常好,学习学习。
发表于 2007-10-8 14:12:00 | 显示全部楼层
好东西,学习一下!
发表于 2007-10-9 20:54:00 | 显示全部楼层

计算机名和用户名好像都可以改变的,如果重装就不行了。同意使用CPU序列号。

您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-25 07:28 , Processed in 0.208266 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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