| 操作系统 办公 实用知识 设计 开发 WEB开发 移动开发 数据库 软件工程 网管 安全 管理 信息化 答疑 渠道 |
细说Windows屏幕保护程序的密码作为微软的看家产品,Windows从当初的3.1已经发展到了现在的2000,但论使用广泛性还应数经常遭受“批评责骂”的Win9x。在每个Windows版本中,都带有屏幕保护程序,除在最新的Windows 2000操作系统中去除了屏幕保护程序密码的设置功能外,最初的Win3.1和大家所熟知的Windows 9x中都提供了屏幕保护程序密码的设置功能。在Win3.1中,屏幕保护程序的密码是被保存在control.ini这个文件中的,虽然在Windows 9x中control.ini依然被使用,但屏幕保护程序密码的存放位置已经被转移到了注册表中,具体的存放位置在HKEY_CURRENT_USERS/Control Panel/desktop/ScreenSave_Data对应的键值中。 和Win3.1中的明文密码相比,Windows 9x的密码保护相对来说要“高明”许多,采用了加密过的密文方式进行保存。举个例子,当我们将屏幕保护程序的密码设置为“cfan”后,注册表中HKEY_CURRENT_USERS/Control Panel/desktop/ScreenSave_Data对应的键值就变成了“30 42 41 38 33 37 35 33 00”,显然,这就是密码“cfan”经过一定的加密算法转化后形成的密文内容,两者的差距是比较大的,那么这两者是如何对应起来的呢,下面我们就来好好地剖析一下其中的“秘密”。 Windows 9x在进行明文的加密时,首先把密码明文中小写字母全转换为大写字母,其他字符保持不变。然后,按顺序把密码明文中的每一个字符的ASCII值与对应的一个8位密钥进行异或(xor)操作,这样就会得到一个与明文同样长度的数值串,把这些数值一一转换为十六进制,再把这些十六进制的数值转换为字符串,按顺序连接起来,就形成最后的密码密文(两倍长度于明文)。Windows 9x的密钥总是固定的,共有128位。 我们就通过上面举的例子来详细地看看这个加密算法的具体实现过程: 我们这里采用的测试密码是“cfan”,Windows 9x在进行加密时,首先将“cfan”中的小写字母转换为“CFAN”,然后按顺序将“CFAN”中每一个字符的ASCII值与对应的一个8位密钥进行异或(xor)操作(操作过程如下表,具体加密密钥的内容请见附录): 密码明文 C F A N 将上面最后异或后得到的结果从左到右全部连接在一起重新组合为一个新的字符串组合“0BA83753”(大家不知注意到没有,这时密码的长度已经如上面所介绍的变为了原来的2倍长),然后再将这些字符逐一转化为相应的ASCII值并以16进制的显示表示(如下表): 字符 0 B A 8 3 7 5 3 将上表中最后得到的ASCII值(16进制)从左到右依次连接在一起就是“30 42 41 38 33 37 35 33”,和上面在注册表中存储的数据完全一样。至此,我们已经基本上了解了Windows 9x对于屏幕保护程序密码的整个加密过程,如果要进行解密还原的话,只要将上面的步骤逆向运行一遍就可以了。不过要注意的是,由于我们在上面采用的测试密码“cfan”是4位的,在进行加密时只用到了加密密钥128位的前4位,通常相应的密码为多少位,在加密时就要用到加密密钥128位的前多少位。 以上介绍的是Windows 9x屏幕保护程序密码的加密过程,其实Windows 9x其他方面的密码设置采用的也是类似的原理,如共享目录的密码,其口令密文放在注册表HKEY_CURRENT_ MACHINE\software\micorsoft\windows\c urrent_version\network\lanman\共享名\parm1enc和parm2enc两处,其中parm2enc中存放的是“只读共享” 密码,parm1enc中存放的是“完全共享”的密码,在进行加密转化时首先同样要把密码明文中小写字母全转换为大写字母,其他字符保持不变。然后,按顺序把密码明文中的每一个字符的ASCII值与对应的一个8位密钥(它密钥的前八个数是35、9A、4D、A6、53、A9、D4、6A)进行异或(xor)操作并将得到的结果转化为16位进制,相应地,就形成最后的密码密文(长度和明文一样)。和上面的屏幕保护程序密码相比,共享密码的加密似乎要简单了一些。 附录:(Windows 9x屏幕保护程序密码的密钥) 48 EE 76 1D 67 69 A1 1B 共享密码加密密钥的具体反算方法可以上面介绍的共享密码的算法以及屏幕保护程序密码密钥的反算方法进行具体操作。 作者:张京京
今日推荐
|
重点推荐
领军企业技术文库
+更多领军技术文库
最新专题
电子杂志订阅
| ||||||||