Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem 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.

Předmět Autor Datum
Delphi neovládam, ale každý znak má svoju ASCII hodnotu (číslo) a tie idú za sebou. přidal další pi…
sakraforte 18.02.2014 20:27
sakraforte
Ehm, sorry ale ty toho asi nedocilis. Kym by sme ti totiz vysvetlili jak zistit ci to heslo je sprav…
MM.. 18.02.2014 20:33
MM..
1. "Třeba RAR Password recovery. Jak docilim něčeho takoveho." - to sú sofistikované algoritmy - zab…
pme 18.02.2014 20:34
pme
3. "Jak na to aby při vypsaní všech znaku program přidal další pismeno." - kam pridal? To co nakous…
Ivoš.M 18.02.2014 21:07
Ivoš.M
Ja Ti stále nerozumiem a netuším čoho chceš vlastne dosiahnuť? Chceš generovať nejaké heslo o ľubovo…
pme 18.02.2014 21:11
pme
Kravinu mas ty v hlave. Ja som si bruteforcer urobil davno a je 100x rychlejsi jak ty za cely zivot…
MM.. 18.02.2014 23:41
MM..
A ked ta zaujima jak taka moja "kravina" vypada v C, tak takto (toto sa vola z nekonecnej slucky az…
MM.. 19.02.2014 00:57
MM..
To EE, to je generator. Tak jinak S:='abcdefghijklmnopqrstuvwxyz0123456789' Pomoci smyčky For to nat…
Ivoš.M 18.02.2014 22:15
Ivoš.M
Tak přidá další znak a pokračuje. V čem vidíš problém?
Wikan 18.02.2014 22:20
Wikan
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 te…
Ivoš.M 18.02.2014 22:46
Ivoš.M
jezismaria urob si 1000znakove pole. Stav sa so mnou o milion ze nabeton nepretecie (aj 20znakov sta…
MM.. 18.02.2014 23:42
MM..
No někam se ty hodnoty musí ukladat ne? Jen jsem to projel, ten thread ale výběr cílové datovéstruk… poslední
AZOR 19.02.2014 08:14
AZOR

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?

3. "Jak na to aby při vypsaní všech znaku program přidal další pismeno." - kam pridal?

To co nakousl MM..,

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.

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);

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 :-D)

const char strBruteCharset[] = "abcdefghijklmnopqrstuvwxyz";

// bruteforce character set length (without terminating null)
#define BRUTE_CHARSET_LEN  ((sizeof(strBruteCharset)-1)/sizeof(strBruteCharset[0]))


BOOL CreateNextPass(int *piPassLen, int *piPass, char *strPass)
{
	int i;

	for(i = (*piPassLen)-1; i >= 0; i--)
	{
		if(++piPass[i] < BRUTE_CHARSET_LEN)
		{
			strPass[i] = strBruteCharset[piPass[i]];
			break;
		}
		else
		{
			piPass[i] = 0;
			strPass[i] = strBruteCharset[0];
		}
	}

	if(i<0)
	{
		if((*piPassLen) >= MAX_PASS_LEN)
			return FALSE;

		(*piPassLen)++;
		for(i=0; i<(*piPassLen); i++)
		{
			piPass[i] = 0;
			strPass[i] = strBruteCharset[0];
		}
		strPass[i] = '\0';
	}

	return TRUE;
}

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.

No někam se ty hodnoty musí ukladat ne?

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.

Zpět do poradny Odpovědět na původní otázku Nahoru