Warsztaty z tematyki kryptologii dla licealistów, zagadnienie dotyczące haseł - mające na celu zapoznanie z zasadmi obchodzenia się z nimi.
Jupyter umożliwia prezentowanie kodów źródłowych (między innymi w języky Python) i ich wykonywanie po fragmencie. Jest wygodniejszy w demonstorwaniu kodu sekwencyjnego w małych kawałkach.
Możemy uruchomić Jupyter na następujące sposoby:
- Google Colab (zalecane);
- W kontenerze (Docker);
- Natywnie na systemie operacyjnym.
- Wymaga jedynie przeglądarki;
- Najprostsze w uruchomieniu;
- Zapisuje na dysku google dokonane modyfikacje;
- Wykonuje się zdalnie (bezpiecznie - nie na naszym komputerze);
- Wymaga konta google;
- Ograniczona wydajność;
- Wymagane stałe połączenie z internetem;
- Jeśli zepsuje sie google, albo wyłączy usługę można stracić dane;
- Wchodzimy na stronę: https://colab.research.google.com/;
- Logujemy się;
- Wchodzimy w File -> Upload notebook i wybieramy nasz zeszyt
.ipynb
(możemy podać z dysku google, z komputera lokalnego lub z github);
- Dostarczony gotowy Dockerfile do zbudowania obrazu;
- Konteneryzacja ułatwia wyczyszczenie systemu z instalacji;
- Izolacja dockera chroni przed wykonaniem szkodliwego kodu w systemie plków maszyny hostującej (kod jest uruchamiany na naszym procesorze, ale odizolowany na zasobach);
- Domyślnie nie zapisuje efektów prac (zapisane zostanie to co jest umieszczone w katalogu współdzielonym między kontenerem i hostem)
- Wymaga silnika dockera;
- Problematyczne na MS Windows (wymaga WSL 2 i przewiduję problemy z instalacją Dockera);
- Modyfikacje środowiska są trudniejsze dla nie doświadczonych w technologii Docker;
-
Instalacja dockera - zalecam wejść na stronę Docker i postępować zgodnie z procedurą dla swojej dystrybucji systemu (Ubuntu/Debian/CentOS) lub na oficjalną stronę dystrybucji
1.1 Dodać użytkownika lokalnego do grupy docker (żeby móc sterować demonem dockera bez uprawnień roota)$ sudo usermod -a -G docker nazwa_uzytkownika
1.2. Przelogować sie użytkownikiem;
-
Zainstalować
git
- procedura może` się różnić od dystrybucji:debian/ubuntu:
$ sudo apt install git
centOS/redhat:
$ sudo yum install git
arch/manjaro:
$ sudo pacman -Syu git
-
Pobrać repozytorium z przygotowanym środowiskiem:
$ git pull https://github.com/moroviintaas/warsztaty_hasla
-
Przejść do katalogu:
$ cd warsztaty_hasla/docker
-
Zbudować obraz dockerowy:
$ docker -t hashimg:latest build .
-
Uruchomić konener:
$ docker run -p 8888:8888 -v notebooks:/home/labuser/notebooks \ -v hashes:/home/labuser/hashes -it --name hashcont hashimg
W terminalu wyświetli się link z tokenem, który należy wkleić do przeglądarki
-
Podłączyć się dodatkowym terminalem do kontenera:
$ docker exec -it hashcont /bin/bash
-
(Opcjonalnie) W przypadku gdy konerer się wyłączy
$ docker start hashcont
w terminalu (w kontenerze) uruchomić jupyter ręcznie:
$ /usr/local/bin/jupyter-notebook --ip 0.0.0.0 --notebook-dir /home/labuser/`
- Natywnie na maszynie - maksymalna wydajność;
- Dostępne w manadżerach Pip i Conda;
- Uruchamiany kod ma dostęp do zasobów hosta (system plików);
- Pakiet może zawierać niepotrzebne oprogramowanie (niewykorzystywane);
Pip jest manadżerem pakietów dla Pythona. Ścieżka dla użytkowników Pip (domyślna ścieżka dla systemu Ubuntu Linux). Należy mieć zainstalowany python3
i python3-pip
(pip3
)
-
Instalowanie paczek do
python
$ pip3 install cryptography
-
Instalowanie juyter notebook:
$ pip3 install notebook
-
Uruchamianie:
$ jupter notebook --notebook-dir=sciezka_do_katalogu_z_zeszytem
W terminalu wyświetli się link z tokenem, który należy wkleić do przeglądarki
Konda jest manadżerem, który dostarcza jednocześnie python
oraz potrzebne pakiety. Tę drogę bym polecał na systemie MS Windows (choć sam system odradzam #linuxmaserrace).
Zainstalowanie Conda - polecam postępować z oficjalną instrukcja dla systemu operacyjnego: instalacja condy. Zalecam wersję miniconda
(nie zajmie 3 GiB, tylko z 500 MiB)
Hashacat to otwarto źródłowy program do łamania hashy haseł. Podczas zajęć pokażę jego podstawowe możliwości.
Możlwiści konfiguracji środowiska:
- Natywnie;
- W maszynie wirtualnej;
- W kontenerze (Docker);
- Najlepsza wydajność;
- Niski koszt przetrzeniu dyskowej;
- Najlepsza współpraca ze sterownikiem karty graficznej (sterowniki);
- Zaśmiecanie sobie komputera jednorazowym programem (chyba że się spodoba);
Program można pobrać z oficjalnej strony https://hashcat.net (tak należy postępować dla MS Windows).
Na systemach linux w wielu dystrybucjach można go zainstalować w poprzez natywny manadżer pakietów:
- Ubuntu/Mint/Debian:
$ sudo apt install hashcat
- Arch/Manjaro:
$ sudo pacman -Syu hashcat
- Kali Linux: już jest
- Osbne środowisko, możliwe do łatwego usunięcia po zajęciach
- Gotowy obraz systemu z działającym
hashcat
- Obniżona wydajność (przez wirtualizację);
- Najwyższy koszt w przestrzeni dyskowej;
- Irytujący sposób przełączania się pomiędzy hostem i maszyną wirtualną;
- Możliwe problemy z konfiguracją sieci i pamięci współdzielonej
Maszyna wirtualna: Można postawić sobie maszynę wirtualną z hashcatem. W tym wypadku polecałbym użycie obrazu Kali Linux (ze względu na posiadany przez niego już zainstalowany program). Można pobrać z oficjalnej strony Kali Linux https://www.kali.org/.
Dla użytkowników Dockera, obraz zbudowany według dostarczonego tu przepisu (ten z juyterem) ma zainstalowany hashcat
, więc użytkownicy używający dockera mogą postępować jak w 1.2.
- Dla użytkowników Dockera przygotowany obraz z zainstaloawnym
hashcat
; - Wysoka wydajność na CPU;
- Bezpieczne środowisko do instalowania i testowania oprogramowania;
- Wymaga Docker Engine;
- Obraz nie zawiera sterowników do karty graficznej, więc nie uda się odpalić na kartach (można zmodyfikować obrazaby były, ale na potrzeby prezentacji nie było to konieczne);
- Skomplikowane użytkowanie dla niedoświadczonych;
Nie wszystkie powyższe kombinacje ze sobą dobrze współdziałają w mojej opinii wygodniejsze stanowiska będą skonfigurowane w następujące sposoby, w ogólności osobiście unikałbym maszyny wirtualnej:
Ranking | System Operacyjny | Notebook | Hashcat |
---|---|---|---|
1 | GNU/Linux (dowolny wybrany) | Colab | zainstalowany |
2 | GNU/Linux (dowolny wybrany) | Zainstalowany przez pip |
zainstalowany |
3 | GNU/Linux (dowolny wybrany) * | Docker | Docker |
4 | MS Windows | Colab | zainstalowany (jeśli się uda) |
5 | MS Windows | Conda | zainstalowany (jeśli się uda) |
* Moja osobista preferencja