Wargames (1983)

Chciałem obejrzeć coś innego, ale znalazłem ten właśnie film. Wargames z roku 1983. Czyli sprzed czterdziestu lat. Postanowiłem obejrzeć, żeby zobaczyć, jak się zestarzał pod względem IT i bezpieczeństwa komputerowego. No i w końcu ocena 7,1 na IMDB to przyzwoity wynik.

Okazuje się, że film zestarzał się… nieźle. Jest nieco anachronizmów, jak choćby wykorzystanie modemów, w dodatku z aparatami starego typu, z osobną słuchawką. Ale poza tym? Całkiem nieźle. Niewiele się jakby zmieniło pod względem bezpieczeństwa systemów komputerowych. Bardziej niż na stary telefon zwróciłem uwagę na to, że na skuterze jeżdżą bez kasków. Choć dziś pewnie zamiast skutera byłaby hulajnoga elektryczna.

Jest i „skanowanie portów”, choć w tym przypadku bardziej mowa powinna być o skanowaniu numerów telefonów, pod którymi może odebrać modem innego systemu. Hasła nieco prostsze niż współcześnie, ale nadal zapisywane na karteczkach. I nadal najprostszą metodą włamania na konto jest zdobycie hasła. Sceny OSINTowe całkiem, całkiem, oczywiście z poprawką na technologię. Są i Ważne Systemy bez zabezpieczeń. No naprawdę zaskakująco mało się zmieniło przez te cztery dekady.

Oczywiście dziś zamiast programu, który uczy się sam od siebie, musiałaby wystąpić AI. Nawet lepiej by tu pasował LLM, biorąc pod uwagę jak przebiega konwersacja i jak się zachowuje program.

Najbardziej jednak rozbawiły mnie sceny, gdzie w imię poprawy kejpiajów zastępuje się ludzi automatami. Mającymi co prawda wady, ale… Od razu przypominają mi się rozmowy z automatycznym chatem, gdzie skrypt z uporem godnym lepszej sprawy robi „zacznijmy jeszcze raz, wybierz temat rozmowy”, choć sprawa zdecydowanie nie dla niego.

Kuleją komputerowe efekty specjalne w finale, choć początkowo centrum sterowania wyglądało całkiem dobrze. Z rzeczy, których już nie ma – budki telefoniczne.

Ocena ogólna: film Wargames można obejrzeć. Jednak mimo wszystko chętnie zobaczyłbym uwspółcześniony remake.

UPDATE: Przy okazji szukania remake’ów (patrz komentarze) znalazłem stronę filmu na Wikipedii. I okazuje się, że incydent z rzekomym atakiem nuklearnym na ZSSR miał miejsce już po premierze. Choć nie przypuszczam, żeby dyżurny miał szansę zobaczyć film przed incydentem.

FireHOL mirror is dead, long live FireHOL mirror!

Jakiś czas temu pisałem, że repozytorium projektu na GitHubie jest nieaktualizowane. Można było się przełączyć na pobieranie danych ze strony projektu FireHOL, ale przy niektórych zastosowaniach jest to mniej wygodne.

W komentarzach do zgłoszonego issue pojawił się link na nowy, lepszy mirror list FireHOL. Jest to stosunkowo świeże i robione przez niezależną od projektu osobę, ale LGTM i mam nadzieję, że będzie działać.

Czemu lepszy mirror? Ano dlatego, że jest parę ulepszeń, albo nawet i poprawek w stosunku do oryginału. Po pierwsze, usunięte są adresy prywatne. Usunięte są także stare blocklisty. I na koniec usunięte zostały niespójności pomiędzy plikami z sieciami i plikami z IP.

Połam to lepiej

Niedawno brałem udział w konkursie organizowanym przez Sekurak.pl. Konkurs polegał – jak to się potocznie mówi – na „łamaniu haseł”. Poprawniej byłoby rzec, że polegał na odzyskiwaniu haseł na postawie hashy, ale mniejsza o to. Udało mi się wygrać, tzn. złamałem największą ilość haseł jako pierwszy. Teoretycznie więc mógłbym na tym poprzestać, ale – z perspektywy patrząc – pewne rzeczy można było zrobić albo opisać lepiej. Oryginalny writeup mój i innych zwycięzców można znaleźć w tym artykule, natomiast ten wpis jest jedynie jego uzupełnieniem.

Dla przypomnienia, jeśli chodzi o gotowce, skorzystałem ze reguł wbudowanych w hashcata, reguły OneRuleToRuleThemAll[1]. Zaś jeśli chodzi o gotowe słowniki to użyłem RockYou, Ignis (10 mln) oraz słownika języka polskiego dostępnego w Debianie w pakiecie wpolish.

Co można zrobić lepiej? Przede wszystkim ten wpis na blogu daje namiar na „growy” słownik języka polskiego. Jest on mniejszy od tego z wpolish. Zawiera 3,2 mln linii, zamiast 4,3 mln. Mogłoby wydawać się to wadą, ale… przy skomplikowanych operacjach większy słownik nie musi być lepszy.

Słownik growy zawiera znaki końca linii w formacie windowsowym. Można je przekształcić na format uniksowy np. w taki sposób:

cat slowa.txt | perl -ne 'chomp; /(\S+)/ && print $1,$/' > slowa_unix.txt

Taka wersja przyda się w kolejnych operacjach.

Słownik wpolish można z kolei znormalizować przez usunięcie wielkich liter. Nie mają one znaczenia, bo występują na początku i któraś reguła hashcata z pewnością uwzględnia takie przekształcenie. Polecenie

cat /usr/share/dict/polish | tr "[:upper:]" "[:lower:]" | sort -u > wpolish_lower.txt

redukuje wielkość słownika o 46k wierszy, czyli nieco ponad 1%.

Z kolei jeśli chodzi o najbardziej kompletny słownik języka polskiego, to będzie nim złączenie znormalizowanego wpolish oraz growego z poprawionymi końcami nowej linii:

cat slowa_unix.txt wpolish_lower.txt | sort -u > slownik_all.txt

Wynik jest o jedynie 5k linii większy od oryginalnego wpolish.

Pozbycie się pl-znaków ze słownika:

cat slownik_all.txt | tr "ąćźżńłóęś" "aczznloes" | sort -u > slownik_all_nopl.txt

Łatwo zauważyć, że jeśli ktoś będzie miał hasło, które jest wyrazem w języku polskim, ale zapisanym w sposób mieszany, częściowo z polskimi znakami, częściowo wersją polskawą, to nasze słowniki taki wyraz ominą. Przykładem takiego słowa może być wyraz żółty zapisany jako zólty. Co wtedy?

Pomóc może zrobienie własnej reguły hashcata, wykorzystującą zastąpienie, czyli s:

Replace sXY Replace all instances of X with Y

Można od razu w podobny sposób potraktować „jednoliterowe” błędy ortograficzne i regułą zastąpić u przez ó i na odwrót. Niestety, z tego co widzę przy pomocy samego hashcata nie da się zrobić ani przekształcenia ch -> h, ani odwrotnego. W dodatku powyższe zastąpienie dotyczy wszystkich wystąpień, a niezupełnie o to chodzi. Jednak lepszy rydz, niż nic.

Tyle gwoli uzupełnienia. Regułę hashcata pozostawiam do samodzielnego montażu, a o zewnętrznym skrypcie do przekształceń jeszcze pomyślę.

[1] Celowo linkuję do genezy powstania, której lekturę gorąco polecam, nie samej reguły.