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.

Jsou zobrazeny jen nové odpovědi. Zobrazit všechny
Předmět Autor Datum
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
A ked ta zaujima jak taka moja "kravina" vypada v C, tak takto (toto sa vola z nekonecnej slucky az… nový
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… nový
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

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

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