量身定制独一无二的机器码【matlab软件开发】

8131533c59d2b5872ade55d4b0e11ad4.png

虽然使用机器码加注册码模式进行软件授权验证有些落后,但作为学习方法而言是值得的学习的。很久很久以前,基本上的软件授权都采用机器码加注册模式,但这种模式极为脆弱,在电脑高手面前就如同一层窗户纸。

即便如此,给软件添加一件保护外衣总是好的。那么如何在matlab中实现基于计算机硬件设备的机器码呢?第一步就得知道如何用matlab读取计算机硬件信息,采用wmic命令即可轻松完成,这里不再赘述,直接进入下一个环节。

常用的电脑硬件信息有CPUID、主板序列号、硬盘序列号、物理MAC等等,原则上这些信息是独一无二的,但还是可以通过技术手段进行修改的,这里我们暂且不谈该问题。假设每台电脑的硬件信息独一无二,且我们已经通过matlab将所有需要硬件信息读取,那如何来处理这些信息呢?

如果只是简单的让用户提供硬件信息,这是极不安全的验证方式,也不利于保护用户的个人隐私,因此需要对计算机硬件信息进行预处理。一则可以让用户不清楚到底使用哪些硬件信息,二则可以有效保护用户隐私。

这里仅是为了抛砖引玉,所以不用太复杂,将获取的用户信息进行简单的加密来生成机器码。而最简单的文本加密莫过于凯撒加密算法,仅需移位替换即可完成信息加密。为了增强凯撒加密的强度,小编自行对凯撒加密算法进行了升级,即移位替换的字母串不再是规则的“ABCD...”,而是随机打乱之后的,通过引入随机操作的方式来提高破解难度 (其实毫无难度可言,只是个障眼法)。

下面物理MAC为例来演示如何采用凯撒加密方法生成机器码:

% 作者:巴山
% 感谢关注matlab爱好者公众号


clc;clear;
% 随便设置的物理MAC
str  = '001B44113AB7'; 
% 正常字母顺序
tab  = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ012345678';
len  = length(tab);
% 置随机数种子
% rng(2020315657);
% 随机打乱字母顺序
ntab = tab(randperm(len,len));
% 移位位数
n    = 6;
% 重组字符串
if n == 0
    ttab = ntab;
elseif n == len
    ttab =  strcat(ntab(n),ntab(1:n-1));
else
    ttab = strcat(ntab(n+1:end),ntab(1:n));
end


% 加密过程
lens = length(str);
sstr = str; % 存储加密后的信息
for k = 1:lens
    loc  = strfind(ntab,str(k));
    sstr(k) = ttab(loc);
end


% 解密过程
jstr = str; % 存储解密后的信息
for k = 1:lens
    loc  = strfind(ttab,sstr(k));
    jstr(k) = ntab(loc);
end

本文仅作为演示用,实际操作过程中切勿使用本文所讲方法。对机器码生成感兴趣的伙伴,可以加原创代码共享Q群与小编详聊。

最后感谢大家的阅读,祝大家生活愉快!

参考资料:https://zh.wikipedia.org/wiki/%E5%87%B1%E6%92%92%E5%AF%86%E7%A2%BC

封面图片:Pixabay + 自行设计

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值