Programowanie wątków - komunikacja i synchronizacja


Test 1

Test łamania hasła pochodzącego ze słownika - proste dopasowanie hasła
Hasła do złamania - format:   [id]   [zahaszowane hasło]   [mail]   [nazwa użytkownika]
Mini słownik potencjalnych haseł

Oczekiwany rezultat:

	Pasword for spencernagata@yahoo.com is woman
	Pasword for Arkbaby2004@chater.net is worry
	Pasword for slandrewski@yahoo.com is yeah

Test 2

Test łamania hasła pochodzącego ze słownika - możliwy prefix i postfix liczbowy
Hasła do złamania - format:   [id]   [zahaszowane hasło]   [mail]   [nazwa użytkownika]
Mini słownik potencjalnych haseł

Oczekiwany rezultat:

	Pasword for drannor68@hotmail.com is yard8
	Pasword for spencernagata@yahoo.com is 2wonder
	Pasword for RAWRurfacexx@aol.com is 31year12
	Pasword for Arkbaby2004@chater.net is worry

Test 3

Test łamania hasła pochodzącego ze słownika - możliwy prefix i postfix liczbowy oraz różne wielkości liter (wszystkie małe, wszystkie duże lub pierwsza duża)
Hasła do złamania - format:   [id]   [zahaszowane hasło]   [mail]   [nazwa użytkownika]
Mini słownik potencjalnych haseł

Oczekiwany rezultat:

	Pasword for pjvnoon@cox.net is yard8
	Pasword for kyle_fulton_1991@hotmail.com is WORD
	Pasword for bremen_4@hotmail.com is Writer19
	Pasword for jc34166@yahoo.com is 31Year12

Test 4

Test łamania hasła pochodzącego ze słownika - hasła dwuwyrazowe (wyraz spacja wyraz). Większy słownik.
Hasła do złamania - format:   [id]   [zahaszowane hasło]   [mail]   [nazwa użytkownika]
Mały słownik potencjalnych haseł

Oczekiwany rezultat:

	Pasword for christinajohnson@mac.com is opportunity outside
	Pasword for bremen_4@hotmail.com is outside outside
	Pasword for gavinfoster@mac.com is traditional people
	Pasword for www.conspiracy_1@hotmail.com is word year

Test 5

Zarządzanie pamięcią podczas łamania haseł. Duży słownik.
Hasła do złamania - format:   [id]   [zahaszowane hasło]   [mail]   [nazwa użytkownika]
Duży słownik potencjalnych haseł

Ile haseł udało się złamać?




Wskazówka 1

W celu zahaszowania hasła można użyć algorytmu md5 w następujący sposób (panamint):
#include  	<openssl/evp.h>
#include  	<string.h>

void bytes2md5(const char *data, int len, char *md5buf) {
	EVP_MD_CTX *mdctx = EVP_MD_CTX_new();
	const EVP_MD *md = EVP_md5();
	unsigned char md_value[EVP_MAX_MD_SIZE];
	unsigned int md_len, i;
	EVP_DigestInit_ex(mdctx, md, NULL);
	EVP_DigestUpdate(mdctx, data, len);
	EVP_DigestFinal_ex(mdctx, md_value, &md_len);
	EVP_MD_CTX_free(mdctx);
	for (i = 0; i < md_len; i++) {
		snprintf(&(md5buf[i * 2]), 16 * 2, "%02x", md_value[i]);
	}
}
Przykład wykorzystania funkcji:
	const char *test = "Wrong99";
	char md5[33]; // 32 characters + null terminator
	bytes2md5(test, strlen(test), md5);
	printf("%s ======================> %s\n", test, md5);
Żeby móc użyć funkcji kryptograficznych należy wywoałać kompilator z następującymi parametrami
	gcc zad.c -o zad -lssl -lcrypto -pthread