77 lines
1.7 KiB
ObjectPascal
77 lines
1.7 KiB
ObjectPascal
program Brute_Force_SHA256;//Parallel_Brute_Force_SHA256;
|
|
{$mode Delphi}
|
|
//{$DEFINE UseCThreads}
|
|
uses
|
|
{$IFDEF UNIX}{$IFDEF UseCThreads}unix,cthreads,{$ENDIF}{$ENDIF}
|
|
SysUtils,Classes,fpsha256;
|
|
|
|
var
|
|
Words: array[1..3] of AnsiString =
|
|
('1115dd800feaacefdf481f1f9070374a2a81e27880f187396db67958b207cbad',
|
|
'3a7bd3e2360a3d29eea436fcfb7e44c735d117c42d1c1835420b6b9942dd4f1b',
|
|
'74e1bb62f8dabb8125a58852b63bdf6eaef667cb56ac7f7cdba6d7305c50a22f');
|
|
found: Integer;
|
|
|
|
procedure OutSol(const password,hash:AnsiString);
|
|
begin
|
|
Writeln('>>', password, ' => ', hash);
|
|
end;
|
|
|
|
procedure Force(const password: AnsiString);inline;
|
|
var
|
|
hash: AnsiString;
|
|
SB : TBytes;
|
|
i : Int32;
|
|
begin
|
|
SB:=TEncoding.UTF8.GetAnsiBytes(password);
|
|
TSHA256.DigestHexa(SB, hash);
|
|
For i := found downto low(words) do
|
|
begin
|
|
if SameText(hash, words[i]) then
|
|
begin
|
|
OutSol(password, hash);
|
|
//remove from search
|
|
words[i] := words[found];
|
|
dec(found);
|
|
break;
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
var
|
|
password : AnsiString;
|
|
a,b,c,d,e: byte;
|
|
|
|
begin
|
|
Words[1] := uppercase(Words[1]);
|
|
Words[2] := uppercase(Words[2]);
|
|
Words[3] := uppercase(Words[3]);
|
|
|
|
found := length(Words);
|
|
password := 'aaaaa';
|
|
for a := ord('a')to Ord('z') do
|
|
begin
|
|
password[1] := chr(a);
|
|
for b := ord('a')to Ord('z') do
|
|
begin
|
|
password[2] := chr(b);
|
|
for c := ord('a')to Ord('z') do
|
|
begin
|
|
password[3] := chr(c);
|
|
for d := ord('a')to Ord('z') do
|
|
begin
|
|
password[4] := chr(d);
|
|
for e := ord('a')to Ord('z') do
|
|
begin
|
|
password[5] := chr(e);
|
|
force(password);
|
|
end;
|
|
end;
|
|
end;
|
|
end;
|
|
end;
|
|
Writeln('Enter to exit ',password);
|
|
{$IFDEF WINDOWS}
|
|
readln;
|
|
{$ENDIF}
|
|
end.
|