Cześć!
W poprzedniej części poznaliśmy podstawy języka bash oraz stworzyliśmy prosty skrypt, który sprawdzał nasz adres IP oraz skanował sieć lokalną za pomocą narzędzia nmap.
W tej części tutoriala rozszerzymy nasz skrypt o kilka nowych funkcji :
- Proste sprawdzanie zewnętrznego adresu IP
- Wybór interfejsu do zmiany adresu MAC
- Dodanie opcji skanowania sieci z różnymi parametrami przy użyciu nmap.
Dzięki nowym funkcjom nasz skrypt stanie się bardziej przydatny i pozwoli na lepsze poznanie sieci, w której się znajdujemy. W kolejnych krokach przejdziemy przez każdą z tych funkcji.
No to jedziemy!
- Menu Główne
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
#!/bin/bash clear while true; do # Menu echo echo "Menu:" echo "1. Sprawdź swoje IP" echo "2. Losowy adres MAC" echo "3. Skanuj sieć lokalną - nmap" echo "0. Wyjście" # Wybór użytkownika read -p "Wybierz opcję: " choice case "$choice" in |
Na początku skryptu w lini nr. 3 dodaliśmu polecenie clear, które wyczyści ekran przed wyświetleniem menu. W lini 7 natomiast mamy puste echo dla przejrzystości wyświetlania.
- Sprawdzanie IP
17 18 19 20 21 22 23 24 25 26 |
1) # Sprawdzenie IP echo echo "Twoje IP lokalne to:" ip -br a | awk '/UP/ {print $1,$3}' echo echo "Twoje IP zewnętrzne to: " curl ifconfig.me echo ;; |
W tym bloku zmodyfikowaliśmy nasze polecenia ip a z lini 21, dodaliśmy opcje -br za pomocą, której wyświetlimy interfejsy z aktualnym statusem w formacie skróconym. Przetwarzamy wyjście za pomocą narzędzia awk, które pozwoli nam przefiltrować i sformatować dane. W tym przypadku używamy wyrażenia regularnego /UP/ by wyszukać interfejsy, które są w stanie UP czyli są aktywne. Następnie poleceniem {print $1,$3} wyświetlamy pierwszą i trzecią kolumnę, czyli nazwę interfejsu oraz jego adres IP.

W tym bloku dodajemy także pobieranie naszego zewnętrznego IP. W lini numer 24 użyjemy narzędzia curl, aby za pośrednictwem protokołu HTTP pobrać swój adres IP ze strony ifconfig.me. Serwis ten udostępnia publiczny adres klienta, który go odwiedza, wykonując polecenie curl ifconfig.me pobieramy dane z serwisu i wyświetlamy je w konsoli.
- Zmiana Adresu MAC
27 28 29 30 31 32 33 34 35 36 37 38 39 |
2) # Zmiana adresu MAC # Pobranie listy interfejsów sieciowych interfaces=$(ip -br a show up | awk '{print $1}') echo "Dostępne interfejsy sieciowe:" # Dla każdego interfejsu for interface in $interfaces; do echo "$interface" done # Wybór użytkownika read -p "Podaj nazwę interfejsu sieciowego do zmiany: " interface sudo macchanger -r "$interface" ;; |
W bloku numer dwa w lini 30 deklarujemy zmienną interfaces, która jest wynikiem polecenia znajdującego sie w nawiasach. Pierwsza część polecenia ip -br a show up pobiera liste interfejsów sieciowych w stanie UP następnie wykorzystujemy awk aby wyciągnąć pierwszą kolumnę – awk ‘{print $1}’.

W zmiennej interfaces mamy teraz zapisaną liste interfejsów sieciowych, które są aktywne. Użyjemy pętli for aby wyświetlić je na ekranie za pomocą instrukcji echo linia 33 do 35. Teraz poprosimy użytkownika o wpisanie nazwy interfejsu i za pomocą instrukcji read zapiszemy ją do zmiennej interface. Na sam koniec uruchomimy maccchanger dodając wpisaną zmienną.
- Skanowanie sieci nmap
40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 |
3) # Skanowanie sieci lokalnej nmap clear echo "1. Skanowanie podstawowe" echo "2. Skanowanie z opcją -A" echo "3. Skanowanie z opcją -sS" read -p "Wybierz opcję skanowania: " scan_option case "$scan_option" in 1) read -p "Podaj adres IP lub zakres adresów : " target sudo nmap "$target" ;; 2) read -p "Podaj adres IP lub zakres adresów : " target sudo nmap -A "$target" ;; 3) read -p "Podaj adres IP lub zakres adresów : " target sudo nmap -sS "$target" ;; *) echo "Błędny wybór" ;; esac ;; 0) # Wyjście z programu break ;; *) echo "Błędny wybór" ;; esac done |
W tym bloku tworzymy kolejne menu z opcjami wyboru oraz na lini 48 dodajemy kolejną instrukcje case aby utworzyć bloki dla wyborów skanowania. W zależności od wyboru użytkownika, skrypt pobierze IP lub zakres adresów i za pomocą instrukcji read zapisze je zmiennej target następnie wykona skanowanie z odpowiednim parametrem nmap. W bloku 1) będzie to zwykłe skanowanie, następnie w bloku 2) parametr -A włączy wykrywanie systemu operacyjnego, wykrywanie wersji, skanowanie skryptów i traceroute. W 3) -Ss włączy skanownaie SYN najbardziej popularną metodę, która skanuje tysiące portów na sekundę.
Brawo! Kolejny sukces!
Oto nasz cały skrypt po updejcie.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 |
#!/bin/bash clear while true; do # Menu echo echo "Menu:" echo "1. Sprawdź swoje IP" echo "2. Losowy adres MAC" echo "3. Skanuj sieć lokalną - nmap" echo "0. Wyjście" # Wybór użytkownika read -p "Wybierz opcję: " choice case "$choice" in 1) # Sprawdzenie IP echo echo "Twoje IP lokalne to:" ip -br a | awk '/UP/ {print $1,$3}' echo echo "Twoje IP zewnętrzne to: " curl ifconfig.me echo ;; 2) # Zmiana adresu MAC # Pobranie listy interfejsów sieciowych interfaces=$(ip -br a show up | awk '{print $1}') echo "Dostępne interfejsy sieciowe:" # Dla każdego interfejsu for interface in $interfaces; do echo "$interface" done # Wybór użytkownika read -p "Podaj nazwę interfejsu sieciowego do zmiany: " interface sudo macchanger -r "$interface" ;; 3) # Skanowanie sieci lokalnej nmap clear echo "1. Skanowanie podstawowe" echo "2. Skanowanie z opcją -A" echo "3. Skanowanie z opcją -sS" read -p "Wybierz opcję skanowania: " scan_option case "$scan_option" in 1) read -p "Podaj adres IP lub zakres adresów : " target sudo nmap "$target" ;; 2) read -p "Podaj adres IP lub zakres adresów : " target sudo nmap -A "$target" ;; 3) read -p "Podaj adres IP lub zakres adresów : " target sudo nmap -sS "$target" ;; *) echo "Błędny wybór" ;; esac ;; 0) # Wyjście z programu break ;; *) echo "Błędny wybór" ;; esac done |
Podsumowanie
W pierwszej części poradnika poznaliśmy podstawy języka bash oraz zbudowaliśmy szkielet naszego skryptu z podstawowymi funkcjami nie omawiająć ich szczegółowo.
W drugiej części rozszerzyliśmy nasz skrypt o kilka nowych funkcjonalności.
Dodaliśmy możliwość sprawdzenia swojego zewnętrznego IP. Wprowadziliśmy także możliwość wyboru interfejsu sieciowego do zmiany adresu MAC, dzięki czemu mamy większą kontrolę nad tym, który interfejs zostanie zmieniony.
Zaimplementowaliśmy również podmenu dla opcji skanowania sieci z narzędziem nmap, co pozwala na wybór rodzaju skanowania.
W tej części nie tylko nauczyliśmy się jak rozbudować skrypt o nową funkcjonalność, ale też poznaliśmy narzędzie awk, które pozwala na wyciąganie informacji z wyświetlanych danych oraz ich filtrowanie.
W kolejnej części będziemy kontynuować rozbudowę skryptu dodamy nowe ciekawe narzędzie do naszego ekwipunku i poszerzymy funkcjonalność. 🙂
Do następnego. Cześć!
1 Odpowiedź
[…] […]