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.
Delphi neovládam, ale každý znak má svoju ASCII hodnotu (číslo) a tie idú za sebou.
Sčítanie dvoch reťazcov..
Ehm, sorry ale ty toho asi nedocilis. Kym by sme ti totiz vysvetlili jak zistit ci to heslo je spravne, tak by bol rok 3142
P.S. k tvojej otazke - slucka bude nie od A do Z ale vpodstate nekonecna, v kazdom priebehu zvysujes posledne pismeno a testujes ci si tym poslednym pismenom dosiel "na koniec", ak ano tak zvysis predosle a posledne das zas na A. Samozrejme ze ak predosle pismeno neexistuje tak musis jedno pismeno pridat, za sucasneho testu ze ci uz mas max. dlzku hesla.
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);
Ja Ti stále nerozumiem a netuším čoho chceš vlastne dosiahnuť?
Chceš generovať nejaké heslo o ľubovoľnom počte znakov, alebo aký má byť výsledok toho celého snaženia?
Niečo o generovaní hesla aj so zdrojovým kódom:
www.delphicoding.com
Kravinu mas ty v hlave. Ja som si bruteforcer urobil davno a je 100x rychlejsi jak ty za cely zivot budes schopny vyrobit.
Zacni programovat zaklady, co to je pole, apod, a mozno si chod niekam kupit najprv kalkulacku, a pochopis jak dlhe bude heslo (staci si dat do kalkulacky 26 na desiatu a pochopis)
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.