首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >量身定制独一无二的机器码【matlab软件开发】

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

作者头像
巴山学长
发布2021-01-27 11:14:23
发布2021-01-27 11:14:23
1.3K0
举报
文章被收录于专栏:巴山学长巴山学长

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

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

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

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

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

)。

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

代码语言:javascript
复制

% 作者:巴山
% 感谢关注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 + 自行设计

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-01-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 巴山学长 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档