Historia Advent of Code 2016
Advent of Code 2016 opowiada o misji ratunkowej do siedziby Wielkanocy Królik (Easter Bunny Headquarters - EBHQ), gdzie zostałeś airdrop (zrzucony z samolotu), aby odzyskać pięćdziesiąt gwiazdek, które zostały ukradzione z zegara Świętego Mikołaja! Bez tych gwiazdek czasomierz sań nie działa, a Święty Mikołaj nie będzie mógł dostarczać prezenty. Musisz przejść przez wielopiętrowiec EBHQ, naprawiać systemy i rozwiązywać zagadki bezpieczeństwa.
Przebieg fabuły
Dzień 1-2: Przybycie i bezpieczeństwo budynku[1]
Lądujesz w pobliżu siedziby Easter Bunny Headquarters. Dostajesz instrukcje nawigacyjne w postaci sekwencji skoków (turn left/right i przejdź naprzód N bloków). Musisz obliczyć odległość Manhattanu do celu.
Docierasz do wejścia do budynku, ale są klawisze do kodu dostępu podobne do telefonicznych. Okazuje się, że procedura bezpieczeństwa wymaga zapamiętania procedury przesuwania palca po klawiszy, zaczynając od piątki.
Dni 3-5: Bezpieczeństwo budynku
Elfy przeprowadziły cię przez biuro z specyfikacjami trójkątów - wiele z nich to fałszywe niemożliwe trójkąty. Musisz znaleźć, które są prawidłowe.
Docierasz do drzwi z zabezpieczeniem hasłem MD5 - system generuje osiem znakowe hasło poprzez znalezienie MD5 haszów, które zaczynają się od pięciu zer.
Okazuje się, że otrzymana jest wiadomość z szumem - musisz odkodować wiadomość o błędzie poprzez znalezienie najczęstszego znaku na każdej pozycji.
Dni 6-8: Przechodzenie przez biuro
Znajdujesz lista zaszyfrowanych adresów IP - okazuje się, że IPv7 obsługuje TLS (transport-layer snooping) poprzez szukanie wzorów ABBA poza nawiasami.
Docierasz do dwuetapowego systemu uwierzytelniania - masz kartę magnetyczną i musisz wyświetlić kod na małym ekranie. Okazuje się, że ekran jest potrzebą sterowania za pomocą instrukcji rect, rotate row, rotate column.
Dni 9-10: Magazyn i roboty
W głębi biura znajdujesz skompresowane dane - musisz zdekodować je, korzystając ze specjalnych markerów formatu kompresji.
Docierasz do fabryki robotów obsługujących mikroczipy - każdy robot robi coś tylko gdy ma dwa mikroczipy, potem je rozdzieli. Musisz znaleźć, który robot porównuje określone mikrochipy.
Dni 11-13: Górne piętra
Wchodzisz do Facility Radioisotope Thermoelectric Generators - masz generator i mikroczipy na różnych piętrach, musisz je wszystkie przenieść na czwarte piętro za pomocą windy.
Na dachu znajdujesz monorail - system wymaga wykonania assembunny kodu (Assembly Bunny - nowy język programowania) na czterech rejestrach (a, b, c, d).
Przechodzisz przez labirynt cubicles - każda lokacja ma współrzędne (x,y) które mogą być ścianami lub otwartymi przejściami na podstawie wzoru matematycznego.
Dni 14-16: Elektronika i kody
Znajdujesz system One-Time Pad oparty na MD5 - musisz znaleźć 64-ty klucz szukając trójek i piątek znaków w haszach.
Blisko sufitu odkrywasz system kinetyczny z dykami - musisz obliczyć właściwy czas aby kapsuła mogła przejść przez wszystkie dyski.
Odkrywasz szyfrowanie Dragon Curve - musisz wygenerować dane za pomocą specjalnego algorytmu i obliczyć sumy kontrolne.
Dni 17-19: Więcej pięter i bezpieczeństwo
Docierasz do sejfu w siatce 4x4 - drzwi otwierają się na podstawie haszów MD5 ścieżki, którą przeszyłeś.
Przechodzisz przez pokoje pełne pułapek - musisz nauczyć się reguł aby wiedzieć, które płytki są pułapkami.
Na innym piętrze spotykasz elfów grających w White Elephant - musisz rozgryźć, które elfy dostaną jakie prezenty.
Dni 20-22: Konieczne naprawy
Znajdujesz firewall z listą zablokowanych adresów IP - musisz znaleźć najniższy adres IP, który nie jest zablokowany.
W biurze odszyfrowanego bezpieczeństwa descobierasz funkcję scramblingu hasła - musisz zastosować różne operacje transformacyjne do hasła.
Docierasz do klastrów przechowywania danych połączonych w siatkę - musisz znaleźć viable pairs węzłów, gdzie dane z jednego mogą być przeniesione na drugi.
Dni 23-25: Finał - Dach i antenna
W bezpieczeństwie sejfu Easter Bunny znajdujesz keypad z logiką - ekstrakt wyciąga assembunny kod z nową instrukcją tgl do przełączania instrukcji.
Docierasz do labiryntu kanałów ventylacyjnych - robot musi odwiedzić wszystkie oznaczone lokacje w najkrótszej trasie.
Finał: Dzień 25 - Dach i sygnał zegarowy
Na dachu budynku znajdujesz antenę - potrzebuje sygnału zegarowego (0,1,0,1,0,1...). Ekstrakt assembunny kod z instrukcją out do transmisji wartości. Musisz znaleźć najmniejszą liczbę dodatnią, którą można wpisać w rejestr a, aby generować prawidłowy sygnał zegarowy!
Podsumowanie
Historia 2016 roku to operacja infiltracyjna do siedziby Easter Bunny Headquarters z celem odzyskania pięćdziesięciu gwiazdek kluczowych dla działania zegara Świętego Mikołaja. Przechodzisz przez siedemnaście pięter budynku, naprawiając systemy bezpieczeństwa (klawiatury, ekrany, sejfy, firewall), rozwiązując zagadki kryptograficzne (MD5, szyfry, kody dostępu) i ultimately docierając na dach, gdzie transmitując właściwy sygnał zegarowy do anteny, ratujesz Święta Bożego Narodzenia!