JavaScript 通过WMI 获取根据盘符获取U 盘物理序列号 一:达到的效果 根据UKeyTool 生成的U 盘文件xxxx_private.ukey 内的md5 与U 盘物理序列号+ xxxx_uKey+界面读取文件自由串(50*10)计算的md5 对比,如果一样,则允许登录,否则不允许登录 二:加密工具 1 原理 U 盘序列号信息格式:vid_0537&pid_a703#192b0c00048a,其中192b0c00048a 为U 盘的物理序列号(唯一); U 盘中的验证文件名为xxxx_private.ukey;将U 盘的物理序列号加工后保存在文件xxxx_private.ukey 中,使U 盘和文件一一对应。 2 加密步骤 1. 把U 盘的物理序列号中的所有字母转换成大写,如192B0C00048A,标为串1; 2. 固定串xxxx_uKey,标为串2; 3. 随机生成50*10 个的可见字符:ASCII 范围33-126,标为串3; 4. 串1、串2、串3 顺序合并,计算32 位 MD5(字母大写); 5. 创建文件ipbc_private.ukey,写入字符串:File:xxxx_V3 USB Private key; 6. 换行,写入版本号,格式:Version:1.0.0.0 7. 换行,写入 MD5 值; 8. 换行,写入串3,每 50 个字符换行; 三:Jav aScript 解密 1 解密步骤 1. 把U 盘的物理序列号中的所有字母转换成大写,如192B0C00048A,标为串1; 2. 固定串xxxx_uKey,标为串2; 3. 打开文件xxxx_private.ukey,读入50*10 个可见字符,标为串3; 4. 串1、串2、串3 顺序合并,计算 32 位 MD5(字母大写); 5. 打开文件xxxx_private.ukey,读取 MD5 值; 6. 比较计算的和读取的 MD5 值是否相同,相同则通过验证,否则失败。 2 JavaScript 读取 U 盘物理序列号(推荐方案 3) 准备 1 读取 U 盘盘符 /** * 判断是否有 U 盘并获取 U 盘盘符,只适用于 IE? * @returns {string} 返回 U 盘盘符 * @constructor */ function CheckUsb() { var e, x; var ForReading = 1, RorWriting = 2; var bfResult = ''; try { var fso = new ActiveXObject("Scripting.FileSystemObject"); } catch(err) { return bfResult; } e = new Enumerator(fso.Drives); for (; ! e.atEnd(); e.moveNext()) { x = e.item(); if (x.DriveType == 1) { if (x.Path != "A:") { bfResult += x.Path + ','; } } } return bfResult; } 方案1:根据WMI 的Win32_USBHub 读取U 盘物理序列号 缺陷: 无法...