想必大众对注册机这三个字并不陌生,不少软件采用经过绑定用户硬件信息的方式来进行软件授权,这其中就触及到设备码和注册码两个概念,前者是按照用户的计算机硬件信息结合加密算法生成的能够独一标识用户机的一串字符串,后者则是软件研发者或授权方基于用户供给的设备码给予软件授权的一串字符。
为了科研学习注册机的工作原理,博主利用闲暇之余写了一款matlab版的注册机,它能够完美的嵌入到任何采用matlab编程的程序代码中。大众都晓得,pcode加密方式并不安全的,有能手能够轻容易松破解。行之有效的办法便是将编程的matlab程序编译成可执行文件,如exe,这般就能够在必定程序上守护作者的原始代码。倘若想进一步守护自己的成果,例如研发的程序的部分高级功能只想向特定的用户研发,那样这个时候就需要一种方便的方式来对用户进行识别,注册机模式便是一种行之有效的办法。
1、注册机客户端
首要,需要运用matlab读取计算的硬件信息,常用的硬件信息包含CPU、BIOS、硬盘、主板、MAC位置等。对提取的硬件信息进行采用一定的加密算法进行加工处理成所说的设备码,如移位加密法、替换法等等。设备码是在用户端计算机上生成的,用于标识用户当前所运用的计算机。 注册机客户端界面源代码 %%Creat interfacescr = get(groot,ScreenSize);output = DecryptData(1);pictkhd=figure(position,[scr(3)/2-200,scr(4)/2-100, 700,200],name,欢迎加入原创代码与研究论文Q群:921720886,NumberTitle,off,menubar,none,toolbar,none,... Resize,off);uicontrol(pictkhd,style,text,position,[5 150 710 40],string,m文件注册机(客户端),FontSize,26);uicontrol(pictkhd,style,text,position,[5 103 710 40],string,源代码已上传至原创代码与研究论文Q群,... FontSize,15,FontWeight,bold,ForegroundColor,r);%% 设备码text1=uicontrol(pictkhd,style,text,position,[20 80 150 25],string,设备码:,FontSize,12);fileinput=uicontrol(pictkhd,style,edit,position,[130 80 520 30],string,output,FontSize,10);%% 一键复制fzbutton = uicontrol(pictkhd,Style,pushbutton, String, 复制,Position,[655 80 40 30],FontSize,10,Callback,clipboard("copy",output););%% 注册码text2=uicontrol(pictkhd,style,text,position,[20 40 150 25],string,注册码:,FontSize,12);fileoutput=uicontrol(pictkhd,style,edit,position,[130 40 520 30],string,,FontSize,10);ztbutton = uicontrol(pictkhd,Style,pushbutton, String, 粘贴,Position,[655 40 40 30],FontSize,10,Callback,ZCM = clipboard("paste");set(fileoutput,"string",ZCM););%% Dectyptiondncrypt=uicontrol(pictkhd,style,pushbutton,position,[200 5 100 30],string,注册,FontSize,12,CallBack,DecryptData(1,fileoutput););%%EXITexiting=uicontrol(pictkhd,style,pushbutton,position,[450 5 100 30],string,退出,FontSize,12,CallBack,close(pictkhd););
2、注册机服务端
用户将软件生成的设备码发送给软件研发者或授权方,得到设备码后,将设备码粘贴在服务端的设备码处,点击生成注册码就可生成注册码。软件研发者或授权方将注册码发给用户,用户运用注册码就可完成软件的授权认证。 注册机客户端界面源代码 %%Creat interfacescr = get(groot,ScreenSize);pictzcj=figure(position,[scr(3)/2-200,scr(4)/2-100, 700,200],name,欢迎加入原创代码与研究论文Q群:921720886,NumberTitle,off,menubar,none,toolbar,none,... Resize,off);uicontrol(pictzcj,style,text,position,[5 150 710 40],string,m文件注册机(服务端),FontSize,26);uicontrol(pictzcj,style,text,position,[5 103 710 40],string,源代码已上传至原创代码与研究论文Q群,... FontSize,15,FontWeight,bold,ForegroundColor,r);%% 设备码zcjtext1=uicontrol(pictzcj,style,text,position,[20 80 150 25],string,设备码:,FontSize,12);zcjfile_input=uicontrol(pictzcj,style,edit,position,[130 80 510 30],string,,FontSize,10);ztjqmbutton = uicontrol(pictzcj,Style,pushbutton, String, 粘贴,Position,[655 80 40 30],FontSize,10,Callback,ZCM = clipboard("paste");set(zcjfile_input,"string",ZCM););%% 注册码zcjtext2=uicontrol(pictzcj,style,text,position,[20 40 150 25],string,注册码:,FontSize,12);jieya_output=uicontrol(pictzcj,style,edit,position,[130 40 510 30],string,,FontSize,10);zcjbutton = uicontrol(pictzcj,Style,pushbutton, String, 复制,Position,[655 40 40 30],FontSize,10,Callback,clipboard("copy",get(jieya_output,"string")););%% Dectyptionencrypt = uicontrol(pictzcj,style,pushbutton,position,[200 5 100 30],string,生成注册码,FontSize,12,CallBack,DEncrypt(zcjfile_input,jieya_output););%%EXITexiting = uicontrol(pictzcj,style,pushbutton,position,[450 5 100 30],string,退出注册机,FontSize,12,CallBack,close(pictzcj););
为了更好的演示matlab版注册机运用,在客服端添加了一个文件解密功能,用户得到认证后就可运用该功能,如未得到则不可运用。
实现原理并不繁杂,这儿亦只是抛砖引玉,小伙伴们能够按照自己的理解写一款自己的matlab注册机,这儿就不上传完整源代码了。完整源代码已上传至原创代码与研究论文Q群(群号:921720886),如有对本文所讲注册机感兴趣的伙伴,可在matlab兴趣者公众号中回复“原创”加群获取源代码。
|