Security score compare

Nazwa projektu jest nieciekawa, ale przyznaję, nie miałem weny. Za to mówi wszystko. Zaczęło się od porównywania punktacji na platformach do zabaw z security wśród znajomych z pracy. Szybko zeszło na to, że suche porównywanie wyników nie jest zbyt fajne, lepiej byłoby rysować wyniki w czasie.

I tak powstał skrypt w Pythonie, który pobiera wyniki z Root Me oraz RingZer0 Team Online CTF[1], parsuje HTML przy pomocy regexpa[2] i zapisuje do bazy SQLite. W innym trybie pobiera dane dla podanej platformy i generuje obrazek z wykresem punktacji. Taki jak poniżej:

Przykładowy ocenzurowany wykres generowany przez security score compare

Po drodze jest parę uproszczeń (typu dopełnianie braków zerami „od lewej”) i jest to bardzo wstępna wersja, ale działa i coś tam już widać. Strzelać z tego nikt nie będzie. 😉

Security score compare znaleźć można na GitHubie. Może komuś się przyda, albo nawet ktoś pomoże w rozwoju?

Jakby ktoś się zastanawiał, czemu ostatnio jest mniej wpisów na blogu, to tak, mam nowe zajęcie w czasie wolnym. 😉

[1] Nie są to wszystkie platformy na których się bawimy, ale te dwie są najpopularniejsze i… nie wymagają logowania, by sprawdzić punktację.
[2] Tak, wiem, ble i fuj. Ale działa.

Advent of Code

Dowiedziałem się, że jest coś takiego jak Advent of Code. Czyli kalendarz adwentowy, tylko zamiast łakoci są zadania programistyczne do rozwiązania. Dwa dziennie, liczy się i fakt rozwiązania, i czas. Rozwiązywać można w dowolnym języku, weryfikacja rozwiązania jest przez podanie wyniku.

Podobno maja być z różnych dziedzin i o różnym poziomie trudności – dziś były bardzo proste. Zrobiłem w Pythonie, potem lepszą wersję, potem jedno w Perlu, jako krótki oneliner.

Jest rywalizacja globalna, ale można też tworzyć prywatne rywalizacje i porównywać się ze znajomymi. Ja bawię się z ludźmi z pracy, choć sporo z nich utrudniło sobie wyzwanie i poznaje przy okazji nowy język. Ale ja nie jestem programistą… 😉

Trochę skojarzenie z konkursami programistycznymi, którymi bawiłem się na studiach. Żeby nie było samych zalet – mimo, że każdy uczestnik ma inne dane wejściowe, to czas rozwiązania liczy się od publikacji zadania, które ma miejsce o północy w dziwnej strefie czasowej, co pewnie faworyzuje niektóre lokalizacje geograficzne. Ale nie ma to większego znaczenia w przypadku zabawy ze znajomymi.

Polecam zerknięcie – można sobie odświeżyć umiejętności programistyczne, poćwiczyć i przede wszystkim pobawić się.

Google CTF begginers quest – wrażenia

O Google CTF dowiedziałem się zupełnym przypadkiem, prawdopodobnie info mignęło mi na Twitterze. Do głównego nie podchodziłem i z braku czasu, i umiejętności, ale stwierdziłem w sobotę, że pobawię się chociaż zadaniami dla początkujących przy kawie, czyli begginers quest. Pierwsze wrażenie jak najbardziej pozytywne, jest fabuła, jest estetyczna strona.

Google CTF screenshot
Google CTF screenshot – poza ostatnim dolnym te zadania albo umiałem rozwiązać, albo bardzo niewiele zabrakło

Zadanie pierwsze (letter) trywialne, zadanie drugie (floppy) też poszło szybko i… się wciągnąłęm. Zadanie trzecie (JS safe) już nie takie proste, tzn. niby widzę o co chodzi, ale JS to nie moja działka, więc próbuję innej ścieżki. Na warsztat poszło zadanie z dolnej ścieżki (moar) i… wpadłem w mailny, niepotrzebnie walcząc z socat zamiast przejść do sedna. TBH zmyliło mnie zepsute wyświetlanie i liczyłem, że flaga będzie po prostu gdzieś w manualu, jak tylko naprawię wyświetlanie, tj. połączę się przy pomocy socat zamiast nc. Żeby było śmieszniej o prawidłowym rozwiązaniu też pomyślałem, ale… zafiksowałem się na tym, że najpierw wymagany jest socat i nie drążyłem tematu.

Postanowiłem zajrzeć w górną ścieżkę i… bingo, pierwsze zadanie (OCR is cool) wygląda na proste. Najwięcej czasu zeszło mi na OCR (da się znaleźć sensowne online, niemniej jak potem testowałem to najlepiej od kopa działał lios). Kolejne zadania idą dość szybko, choć nie zawsze do końca ortodoksyjnie. Utknąłem dopiero na Media DB. Oczywiście prawidłowo rozpoznałem i typ, i miejsce, gdzie jest luka ale… zabrakło skilla, a w przykładach w sieci dominuje PHP, MySQL i… nieco inne payloady, niż wymagany. Jak się później okazało, chciałem to zrobić w sposób mocno przekombinowany. Chwilę powalczyłem, ale nie wiedząc, czy specyfika Pythona, czy SQLite, odpuściłem, robiąc finalnie sześć zadań.

Przyznaję, że CTF bardzo mi się podobał, niestety trochę słabo z czasem stałem, poza tym, to jedna z pierwszych tego typu zabaw, chociaż z tego co pamiętam w jakieś podobne zagadki kiedyś się okazjonalnie bawiłem, choć może nie do końca się to CTF nazywało i bardziej związane ze steganografią były. Klimat nieco podobny jak przy konkursach związanych z programowaniem, choć tu się bardziej psuje/debuguje, niż tworzy. 😉

Tak czy inaczej polecam zabawę, jeśli ktoś ma chwilę. Przez jakiś czas serwis powinien jeszcze działać, choć nie jest już supportowany, można się pobawić (dlatego bez spoilerów). Bardzo staranne przygotowanie, choć zadania trochę trudne, jak dla początkujących i bardzo przekrojowe.

Jeśli komuś się znudzi, albo po prostu utknie, to Gynvael pokazywał na YouTube rozwiązanie wszystkich zadań z Google CTF dla początkujących na żywo. Jest podział na zadania, można przeskoczyć do wybranego, co się przydaje, bo materiału trwa prawie cztery godziny.

Co do samego streamu mam mieszane uczucia – z jednej strony bardzo fajnie i live, z drugiej trochę chaosu i momentami dłużyzn. Ale takie są uroki rozwiązywania na żywo. Za to jest klimat i wytłumaczenie okolic i przyległości, a jakby coś było za szybko lub niezrozumiałe, to materiały powinny już być na GitHubie, więc ostatecznie polecam, tym bardziej, że nie kojarzę innego miejsca z kompletem rozwiązań.

Okazało się, że brakuje mi porządnego deassemblera. Moje hexedytory też nie do końca spełniają oczekiwania (lub nie umiem ich sprawnie używać). Ale przede wszystkim muszę dojść do porozumienia z terminalem, bo w zadaniu Fridge TODO list zamiast bannera widzę krzaki. I szczerze mówiąc myślałem, że pozbycie się ich to część zadania, dopiero ww. stream pokazał, że zupełnie nie o to chodzi… 😉

Rogalowe Muzeum Poznania

W ramach imprezy Nocy Muzeów (mocno okrojonej i mało nocnej w tym roku, przynajmniej dla nas) trafiliśmy do Rogalowego Muzeum Poznania. Weszliśmy na styk, z marszu (nie polecam, jest napisane, żeby być wcześniej, ale wyszedł spontan) i w sumie nie wiedziałem czego się spodziewać, więc byłem zaskoczony.

Nie jest to typowe muzeum, gdzie chodzimy i oglądamy eksponaty. Jest to bardziej pokaz czy prezentacja, co dla przyjezdnych zwiedzających może być miłą odmianą i chwilą wytchnienia. Zrobione z pomysłem, stylizowane, odpowiednia ilość gwary, robiąca klimat, ale nie nastręczająca problemu ze zrozumieniem przekazu.

Pokaz jest na żywo, z udziałem kolejnych osób z publiczności i polega m.in. na robieniu rogala, z żywego ciasta i składników, z pominięciem co bardziej czasochłonnych etapów. Więcej nie napiszę, żeby nie spoilować.

W każdym razie bardzo ciekawie przygotowane i poprowadzone, mi i dzieciom się podobało, więc zdecydowanie polecam odwiedzającym Poznań uwzględnienie Muzeum w planie wycieczki i zarezerwowanie godziny czasu. Tym bardziej, że blisko Rynku, więc zaraz można iść coś zjeść albo oglądać inne atrakcje.

Kręć kilometry – plan na 2018

Sezon rowerowy rozpocząłem nadspodziewanie dobrze w tym roku. Tak mi się przynajmniej wydawało. Co prawda na rower wsiadłem dość późno, bo pod koniec kwietnia, ale pogoda sprzyja częstym dojazdom rowerem do firmy.

Kręć kilometry ma w tym roku trochę ciekawych wyzwań. Niektóre śmieszne, typu 31 km w maju, co można zrobić bez stresu w 1 dzień, przez te ciekawsze, dłuższe. Jak np. 1500 km w maju (nie ma szans, zupełnie, przynajmniej nie w moim wydaniu, gdzie większość to wycieczki z dziećmi i dojazdy do pracy), po 500 km w okresie od początku maja do końca września, co wyglądało na zupełnie realne. Dodam tylko, że te wyzwania bardzo miło motywują – jest motywacja, ale bez żadnej spiny.

500 km na rowerze to dla mnie sporo, biorąc pod uwagę dotychczasowe wyniki, ale maj był zachęcający. Postanowiłem policzyć, czy się uda. Niby mogę przejechać 40 km tygodniowo, ale nie jeżdżę zawsze gdy mogę, bo albo pogoda nie sprzyja, albo coś wypadnie. Sprawdziłem statystyki i wychodzi przejechanych 80 km, czyli jakaś połowa teoretycznego dystansu. Miesięcy jest pięć, więc powinienem robić 100 km miesięcznie, jeśli mam zaliczyć wyzwanie. Będzie ciężko, bo po drodze jeszcze urlop, a wtedy nie jeżdżę. Niemniej, będę próbował. W końcu te 20 km to jest jakaś godzinka czy dwie jazdy więcej. 🙂