大家都知道,WINDOWS9X只是一个桌面操作系统,它的稳定性和保密性一直受大家的批评。现在,我就通过介绍提取WINDOWS98的屏幕保护程序的密码的算法来说明WINDOWS98的保密性是怎样的差!
一、 屏幕保护程序(以下简称屏保)密码的加密算法
通常,一个加密过程如下图,屏保密码的加密过程也一样,但评价一个加密算法是否
一个强加密算法,就要看密钥怎么产生,加密算法是否强大。WINDOWS9的屏保密码的明文是有限制的,它的长度最大为128个字符,它的字符集是字母表,数字,和一些标点符号,也就是可视的ASCII字符集。WINDOWS98密码密文的长度是明文长度的两倍,它保存在注册表子键的HKEY_CURRENT_USER\Control Panel\Desktop的一个名为ScreenSave_Data的二进制值里。
l 加密算法
首先,WINDOWS98把密码明文中小写字母全转换为大写字母,其他字符不变。
然后,WINDOWS98按顺序把明文的每一个ASCII值与对应的一个8Bits的密钥进行异或(XOR),这样会得到与明文同样长度的数值串,把这些每一个数值转换为十六进制,再把这些十六进制的数值转换为字符串,按顺序连接起来,就成为一个两倍长度于明文的密文。密钥总是固定的,共有128BYTES。
最后,算法把这个密文字符串以十六进制ASCII码值的形式加上00H为结束标志保存在注册表里。下面通过例子说明这个算法:
例如:屏幕保护程序的密码是Visual Basic,转换成大写是VISUAL BASIC。相应的十六进制ASCII码值是:
密码明文 |
V |
I |
S |
U |
A |
L |
SPACE |
B |
A |
S |
I |
C |
ASCII值 |
56 |
49 |
53 |
55 |
41 |
4C |
20 |
42 |
41 |
53 |
49 |
43 |
密钥 |
48 |
EE |
76 |
1D |
67 |
69 |
A1 |
1B |
7A |
8C |
47 |
F8 |
XOR |
1E |
A7 |
25 |
48 |
26 |
25 |
81 |
59 |
3B |
DF |
0E |
BB |
把异或后的结果(十六进制值)当作字符串(数值ABCDEF以大写表示):1EA72523262581593BDF0EBB。共二十四个字符,把字符再以十六进制值ASCII码值表示为:
字符 |
1 |
E |
A |
7 |
2 |
5 |
4 |
8 |
2 |
6 |
2 |
5 |
16进制数 |
31 |
45 |
41 |
37 |
32 |
35 |
34 |
38 |
32 |
36 |
32 |
35 |
|
字符 |
8 |
1 |
5 |
9 |
3 |
B |
D |
F |
0 |
E |
B |
B |
16进制数 |
38 |
31 |
35 |
39 |
33 |
42 |
44 |
46 |
30 |
45 |
42 |
42 |
而注册表里SCREENSAVE_DATA的值为
"ScreenSave_Data"=hex:31,45,41,37,32,35,34,38,32,36,32,35,38,31,35,39,33,42,
44,46,30,45,42,42,00
l 获取密钥
WINDOWS98的屏保密码的密钥共有128BYTES,怎样才能知道全部的密钥呢?其实很简单,加密算法已知道,想知道密钥并不困难。像我在前面分析屏保密码那样做,设一个128BYTES长的屏保密码(千万要记住哦*o*)。然后,取出加密后的密文,共256BYTES,把这256个ASCII码数值表示为字符,按两个一对再合成一个十六进制的数值,共128个。你现在只要用计算器,逐个把明文的ASCII码值(记得把小写字母转换成大写字母)与刚才所得的128个数值进行异或,你就可以得到全部128个密钥了。下面是我测出来的128 BYTES 密钥:
密钥:48,EE,76,1D,67,69,A1,1B, 7A,8C,47,F8,54,95,97,5F,
78,D9,DA,6C,59,D7,6B,35, C5,77,85,18,2A,0E,52,FF,
00,E3,1B,71,8D,34,63,EB, 91,C3,24,0F,B7,C2,F8,E3,
B6,54,4C,35,54,E7,C9,49, 28,A3,85,11,0B,2C,68,FB,
EE,7D,F6,6C,E3,9C,2D,E4, 72,C3,BB,85,1A,12,3C,32,
E3,6B,4F,4D,F4,A9,24,C8, FA,78,AD,23,A1,E4,6D,9A,
04,CE,2B,C5,B6,C5,EF,93, 5C,A8,85,2B,41,37,72,FA,
57,45,41,A1,20,4F,80,B3, D5,23,02,64,3F,6C,F1,0F.
二、 程序实现提取屏保密码
知道了屏保密码得秘密。我们可以用VB6写一个程序来提取程序的密码。由于篇幅的关系,程序代码不便列出,有需要的朋友可以到网站http://www.csdn.net下载。
三、 屏幕保护程序
很多讲VB的书都会教大家怎样写屏幕保护程序,无非是WINDWOS98怎样调用屏保,怎样响应键盘、鼠标的事件,怎样设置屏保启动参数,怎样屏蔽ALT+CTRL+DEL的热启动,怎样令屏保ALWAYS ON TOP等。但很少书介绍屏保密码的响应。其实也很容易,只要你在鼠标和键盘的响应事件里加上密码的确认就可以了。
在注册表子键的HKEY_CURRENT_USER\Control Panel\Desktop里还有几个有关屏保的参数,字符串 "ScreenSaveTimeOut"="840" 是屏保的等待时间,字符串”ScreenSaveActive"="1" 是否启动屏幕保护程序的标志,“1”为是,“0”为否DWORD值"ScreenSaveUsePassword"=dword:00000001 是屏幕保护程序是否用密码保护,00000001为是,00000000为否。你可以根据SCREENSAVEUSEPASSWORD的值来确认是否使用密码保护你的屏保。
四、 忠告
大家使用密码时一定要小心,尽量不要使用相同的密码。如果你用银行存折的密码来设置屏保的密码,那别人来取你的密码是多么容易的事情!这篇文章只是给大家介绍屏保的加密算法,希望大家有所收获! 
|