Generator hesla - Delphi
Dobry den.
Už jsem mněl tu možnost vyzkoušet par programku, ktere se snaži odhalit heslo.
Třeba RAR Password recovery.
Jak docilim něčeho takoveho.
Chci aby mi smyčka generovala heslo do memo.
Takto mi to vypiše pismena A -Z
var
c : char;
begin
For c := 'A' to 'Z' do Memo1.Lines.Add(c);
end;
Jak na to aby to vypsalo všechny znaky?
Jak na to aby při vypsaní všech znaku program přidal další pismeno.
Určitě bych to zvlad sam, ale zkušení programatoři to zvladnou mnohem jednoduchším zpusoben než ja a jejich kod je mnohem menší.
Předem moc dik.
1. "Třeba RAR Password recovery. Jak docilim něčeho takoveho." - to sú sofistikované algoritmy - zabudni
2. "Jak na to aby to vypsalo všechny znaky?" - skús sa pozrieť na ASCII tabuľku znakov a tiež kódovaciu stránku (code page)...
3. "Jak na to aby při vypsaní všech znaku program přidal další pismeno." - kam pridal?
To co nakousl MM..,
Toto je kravina bo nevím kolik pismen bude mít heslo
For A1 := 'A' to 'Z' do
Memo1.Lines.Add(A5+A4+A3+A2+A1);
A ked ta zaujima jak taka moja "kravina" vypada v C, tak takto (toto sa vola z nekonecnej slucky az kym nevrati false - dlzka dosiahla maximum, typicky by to znamenalo ze ten kto odstartoval program uz nezije )
BTW. je to silne optimalizovane na rychlost, a na fakt aby charset mohol byt cokolvek a akokolvek usporiadany. Da sa to este dost zjednodusit, za tym if(i<0) nemusi byt for cyklus, stacilo pridat na koniec jeden znak a zakoncovaciu nulu. A keby som dal namiesto break return, tak sa ani nemuselo testovat if(i<0). Do delphi si to prepis sam :)
To EE, to je generator.
Tak jinak
S:='abcdefghijklmnopqrstuvwxyz0123456789'
Pomoci smyčky For to natlačim do memo.
a
b
c
atd.
Pokud smyčka dojde do konce tak se vloži před znak a smyčka pokede znovu.
aa
ab
ac
atd.
Pokud smyčka dojde do konce tak se posune ten první znak B smyčka pokede znovu.
ba
bb
bc
atd.
Pokud smyčka dojde do konce tak se posune ten první znak C smyčka pokede znovu.
ca
cb
cc
atd.
Ono to vypada jednoduše ale. co když to dojde až třeba k 8 mistnemu heslu.
Tak přidá další znak a pokračuje. V čem vidíš problém?
No někam se ty hodnoty musí ukladat ne?
Pokud je v S třeba 32 znaku
For a := 1 to length(s)
A pak teprve vkladat do memo.
Memo1.Lines.Add(copy(s,a,1));
Uvažoval jsem o StringListu?
Nebo nějake dinamicke pole?
jezismaria urob si 1000znakove pole. Stav sa so mnou o milion ze nabeton nepretecie (aj 20znakov staci ptz bruteforcingu dlhsieho hesla by si sa nedozil)
(P.S> a maximalna dlzka hesla je snad vstupny parameter algoritmu, nebude sa to robit donekonecna)
Jen jsem to projel, ten thread ale výběr cílové datovéstruktury kam to budeš ukládat se řidí co s tim chceš dělat.
Chceš li tozobrait - použij Memo.
Chceš li s tim pracvat - použij pole
Chceš li to uložit do souboru - použij pole jako buffer a ukládej to po částech do souboru, vždy více než velkost datového bloku operačního systému - ideálně více a násobky.