如何将U盘改成“U-KEY”使用

U盘改Ukey的算法

  • U盘改Ukey的算法尝试
    • 思路
    • 解决方案
    • 优缺点分析
    • 加密程序
    • 如何使用

U盘改Ukey的算法尝试

半年前曾经做了一个项目,客户想把软件绑定到UKey上面用,但是在网上找了找,Ukey挺贵的,还得对接口,客户突发奇想,看着Ukey和U盘长得差不都,问我U盘能不能改成Ukey?经过尝试,的却做出来了,并且把加密工具分享了出来。一直以为没人用,前几天有人下载了,但是没联系我,估计觉得不能用,这里把原理和使用方法也分享出来。

思路

其实我也没对接过Ukey,U盘改Ukey我之前也考虑过,比较简单的办法就是,放一串密钥到U盘里。这个密钥相当于之前软件的序列号。但是这个方法不太好:
1、把密钥放到U盘里面,密钥被拷贝到别的U盘里,序列号就泄密了。咱们使用UKey加密的主要原因就是不想做联网验证功能了。序列号不能做到一key一密起不到防拷贝防盗版的作用。
2、U盘里的文件一旦误删除了,就失效了。

解决方案

基于上面的两点问题,研究了一下U盘的读写构造。其实如果有一块只读区域,而这个区域只能由我们来写,这个问题就好办了。
1、不知道大家有没有买过假的缩水盘,就是插到电脑上显示的是512G,实际上存16G或者32G文件就会发生丢失,原因就是真实硬件存储很少,在U盘量产的时候做了假的只读取,让操作系统认为是一块很大的盘。那么咱们能不能反过来,假如U盘16G,我们给它做成15G留下1G用来存放咱们的只读序列?这个问题我研究了一半,这样的盘能做出来,但是我不知道怎么通过软件来读写这1G的存储区域。那么这个方案就破产了。
2、研究了一下U盘的其他区域,发现NTFS文件格式下,有一个卷标头,这个里面存放了卷信息,其中有一个信息是卷序列号,而U盘在量产的时候有一个出场的硬序列号。那么如果把应序列号做为信息,自己设定密钥,做摘要算法,再将生成的密文写入NTFS的卷序列号中。是否可以达到加密验密的目的呢?最后按照这个思路写了程序,经过尝试这个方案是可行的。

优缺点分析

我们采用了方案2,这个方案也有它的优缺点:
优点1:便宜,那种招标U盘淘宝上都是按盒卖的非常便宜。
优点2:做Ukey的情况下,不影响U盘存储文件使用,很方便有经济价值。
缺点1:U盘如果进行格式化,序列号会被重置成随机序列号,失效需要重新加密。
缺点2:不如真正的Ukey更保险,因为这种U盘可以通过量产进行拷贝,不过这种操作技术难度较高,如果是小规模、小成本的软件不需要考虑,总体说比序列号要安全的多。

加密程序

https://download.csdn.net/download/zhigongjz/12920011

如何使用

加好密的U盘,我们就可以在程序中验证,从而控制只有加密U盘才可使用我们的软件。使用方法如下:
1、软件打开时运行锁定程序。锁定程序定时查询每个盘符硬序列号Win32_LogicalDiskToPartition和逻辑序列号Win32_LogicalDisk。
2、对硬盘序列号加上你自己设定的加密密钥进行MD5加密,然后那摘要得后几位和逻辑序列号即卷序列号进行对比,如果一致则进入程序,如果不一致,则继续定时检查,等待插入“UKEY”。

你可能感兴趣的:(工具类)