Advent of Code 2016 dzień 4 logo
Advent of Code 2016 dzień 4
6 grudnia 2016
Advent of Code 2016 dzień 6 artykuł
Advent of Code 2016 dzień 6
8 grudnia 2016
Advent of Code dzień 5 zadanie

Advent of Code 2016 dzień 5. Tym razem trzeba znaleźć hasło do drzwi. Tu poznasz czym jest bruteforce ;)…

Wprowadzenie

Oryginalna strona z zadaniami z Advent of Code 2016. Zadanie z artykułu dostępne jest pod adresem http://adventofcode.com/2016/day/5

Advent of Code to inicjatywa, w której codziennie publikowane są zadania algorytmiczne dla programistów. Ich rozwiązywanie pomaga rozwijać umiejętności nie tyko początkujących programistów. W tej serii artykułów pokazuję zadanie opublikowane w ramach Advent of Code 2016 wraz z przykładowym rozwiązaniem.

Jeśli masz ochotę na odrobinę rywalizacji możesz dołączyć do klasyfikacji, którą założyłem na oryginalnej stronie. Aby dołączyć do tej klasyfikacji zaloguj się na http://adventofcode.com/2016 i dołącz wpisując kod 124245-88569bd0.

Dzień 5 zadanie 1

Dzięki temu, że wczoraj znalazłeś poprawny pokój, dzisiaj stoisz przed drzwiami bezpieczeństwa opracowanymi przez inżynierów Króliczka Wielkanocnego. Wydaje się, że większość swojej wiedzy o bezpieczeństwie wyciągnęli oglądając filmy o hakerach.

Hasło chroniące drzwi o długości ośmiu znaków wygenerowane jest znak po znaku znajdując odpowiednią sumę MD5. Suma ta generowana jest na podstawie identyfikatora drzwi i numeru. Numer przy każdej iteracji zwiększamy o jeden zaczynając od 0.

Hash zawiera kolejny symbol kodu jeśli jego heksadecymalna reprezentacja zaczyna się pięcioma zerami. Jeśli tak jest, szósty znak w sumie jest kolejnym znakiem hasła do drzwi.

Dla przykładu, jeśli identyfikator drzwi to abc:

  • Pierwszy numer, przy którym otrzymamy sumę zaczynającą się od pięciu zer to 3231929. Tę sumę MD5 znajdziemy dla łańcucha abc3231929. Szósty znak otrzymanej sumy kontrolnej, jest kolejnym znakiem hasła. W tym przypadku szósty znak to 1 i jest pierwszy znakiem hasła,
  • przy 5017308 otrzymamy kolejną interesującą nas sumę kontrolną, zaczyna się ona od 000008f82, więc drugim znakiem hasła jest 8 (szósty znak w sumie),
  • trzecią suma zaczynająca się od pięciu zer otrzymamy dla łańcucha abc5278568, odnajdując kolejny znak hasła f.

W tym przykładzie, kontynuując poszukiwania aż odnajdziemy osiem znaków hasło jakie otrzymamy to 18f47a30.

Jakie będzie hasło jeśli identyfikator drzwi to abbhdwsy?

Podsumowanie

Zachęcam do dalszej zabawy z drugim zadaniem, jego treść pokaże się na stronie AoC2016 po rozwiązaniu pierwszego. Takie zadania pomagają w rozwijaniu umiejętności nie tylko początkujących programistów. Jeśli będziesz miał jakikolwiek problem z rozwiązaniem zadania możesz rzucić okiem do przykładowego rozwiązania, jednak zrób to raczej w ostateczności.

Na koniec mam do Ciebie prośbę – podziel się linkiem do artykułu ze znajomymi, może Oni także będą chcieli pomóc Świętemu Mikołajowi 😉 ? Jeśli nie chcesz ominąć kolejnych artykułów proszę zapisz się do mojego newslettera i polub stronę na facebooku. Do następnego razu!

Newsletter

  Jeśli chcesz otrzymywać informacje o nowych artykułach na blogu prosto na Twój email, zapisz się 🙂

Zdjęcie dzięki uprzejmości https://www.flickr.com/photos/derekl/sets/72157649148835567

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *