屏幕保护密码

  • 主题发起人 主题发起人 import
  • 开始时间 开始时间
I

import

Unregistered / Unconfirmed
GUEST, unregistred user!
2.破译密码: 首先,屏保密码最多8位,再多设也无意义,可以试一下。
注册表中 HKEY_CURRENT_USERPanel找
ScreenSave_Data,鼠标双击它后出现“编辑二进制值”窗口,
在下面的键值框中看最右边的字符,(两行,具体看密码多少定)
两个字符为一组,数一下几组就知道密码有几位了。
假设密码为“12345”则那里会是这样的:79,DC,45,29,52
分别与 78,DE,46,2D,57,59,91,2B 进行异或(xor),
79 xor 78, -> 1
DC xor DE, -> 2
45 xor 46, -> 3
29 xor 2D, -> 4
52 xor 57, -> 5
就可得到密码了,从密钥可知,密码最长只有8位。
*********************
用这个就可以了:
Function TfrmMagic.FindScreenSaverPwd():String;//查找屏幕保护的口令
var
BTmp:Array[0..15] of Byte;
STmp:Array[1..32] of Byte;
intCount:Integer;
i:Integer;
j:Integer;
strTmp:String;
bytTmp:Byte;
strResult:String;
Begin
BTmp[0]:=(72);
BTmp[1]:=(238);
BTmp[2]:=(118);
BTmp[3]:=(29);
BTmp[4]:=(103);
BTmp[5]:=(105);
BTmp[6]:=(161);
BTmp[7]:=(27);
BTmp[8]:=(122);
BTmp[9]:=(140);
BTmp[10]:=(71);
BTmp[11]:=(248);
BTmp[12]:=(84);
BTmp[13]:=(149);
BTmp[14]:=(151);
BTmp[15]:=(95);
for i:=1 to 32 do
begin
STmp:=0;
end;
MagicReg:=TRegistry.Create;
MagicReg.RootKey:=HKEY_CURRENT_USER;
MagicReg.OpenKey('Control Panel',True);
intCount:=MagicReg.ReadBinaryData('ScreenSave_Data',STmp,Sizeof(STmp));
if intCount>0 then
Begin
j:=1;
For i:=1 To trunc((IntCount-1)/2) Do
begin
if STmp<>00 then
Begin
strTmp:=Chr(STmp[j]);
j:=j+1;
strTmp:=strTmp + Chr(STmp[j]);
bytTmp:=gStrToByte(strTmp);
strResult:=strResult+Chr(bytTmp Xor BTmp[i-1]);
j:=j+1;
end;
end;
end;
MagicReg.CloseKey;
MagicReg.Free;
FindScreenSaverPwd:=strResult;
end
 

Similar threads

I
回复
0
查看
736
import
I
I
回复
0
查看
587
import
I
I
回复
0
查看
666
import
I
I
回复
0
查看
639
import
I
后退
顶部