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