Celem zadania jest uruchomienie równoległych obliczeń w wielu wątkach,
w liczbie zgodnej z liczbą posiadanych przez komputer rdzeni.
Tej liczby nie potrzeba wydobywać automatycznie z systemu - można ją podać
programowi w czasie uruchamiania (program psrinfo na Solarisie i plik
/proc/cpuinfo na Linuksie).
Obliczenia mają polegać na łamaniu haseł metodą słownikową.
Lista haseł zaszyfrowanych funkcją MD5 jest dana poniżej, i program
powinien próbować je po kolei łamać.
Algorytm łamania haseł oraz zrównoleglania obliczeń można zaczerpnąć z
jakiegoś gotowego programu do łamania haseł. Natomiast cały program,
w szczególności zarządzanie wątkami, uruchamianie i zatrzymywanie
obliczeń, należy napisać samemu.
Po złamaniu danego hasła należy wyświetlić je na wyjściu, oraz
obliczyć łączny czas CPU zużyty na obliczenia (funkcja times).
Nakład czasu na łamanie jednego hasła powinien być limitowany przez
program. Po osiągnięciu tego limitu dane hasło ma być porzucane i
próbowane następne. Limit czasowy jest określany w sekundach czasu
rzeczywistego (nie CPU) i powinien być zadawany jak argument wywołania
programu (brak limitu oznacza brak limitu - czyli liczenie każdego
hasła do skutku lub do wyczerpania wszystkich możliwości).
Słowniki, które można wykorzystać do łamania haseł:
http://security.stackexchange.com/questions/1376/where-can-i-find-good-dictionaries-for-dictionary-attacks
Serwisy, gdzie można znaleźć rzeczywiste hasła użytkowników wycieknięte
z różnych systemów:
https://twitter.com/PastebinLeaks
Proszę jako zbiory testowe wykorzystać następujące:
http://pastebin.com/L6YbD136 plik lokalny: biclopsgames.txt.gz
http://pastebin.com/YUjExprE plik lokalny: poison.txt.gz
Do raportu z wykonania zadania proszę dołączyć wyniki łamania haseł z tych
zbiorów.