首页  编辑  

屏幕保护密码

Tags: /超级猛料/Alogrith.算法和数据结构/杂项/   Date Created:

2.破译密码:

 首先,屏保密码最多8位,再多设也无意义,可以试一下。

 注册表中 HKEY_CURRENT_USER\Control Panel\desktop 找

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[i]:=0;

        end;

    MagicReg:=TRegistry.Create;

    MagicReg.RootKey:=HKEY_CURRENT_USER;

    MagicReg.OpenKey('Control Panel\desktop',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[i]<>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