alphasec academy

Skaner portów TCP w bashu: for p in {22,443,2083,8880,31337}; do (timeout 1s bash -c "</dev/tcp/berkeley.edu/$p")2>/dev/null && echo "$p - open"||echo "$p - closed"; done

Dodatkowe informacje

Posiadając wyłącznie basha, bez dodatkowych narzędzi możemy zestawić połączenie na dowolnym porcie UDP bądź TCP z wybranym hostem wykorzystując pseudourządzenia
/dev/tcp/[host]/[port]
oraz
/dev/udp/[host]/[port]
. Tu warto dodać, że nie są to urządzenia dostarczane przez kernel, lecz jest to konstrukcja wykorzystywana przez basha. Jeśli port, na który staramy się zrobić połączenie nie jest dostępny, bash wyświetli odpowiedni błąd, natomiast nie interesuje nas jego treść, lecz fakt czy się udało zestawić połączenie czy nie.
Wykorzystując polecenie
timeout
z pakietu
coreutils
jesteśmy w stanie ograniczyć czas oczekiwania na połączenie - w naszym wypadku jest to jedna sekunda (oczywiście nasz skaner zadziała również bez niego, ale trzeba będzie zaakceptować długi czas oczekiwania w niektórych wypadkach lub inaczej rozwiązać kwestię timeoutu). Jeśli się uda, wykorzystujemy operator
&&
(and), by wyświetlić dobrą wiadomość, w innym wypadku skrypt przejdzie do operatora
||
(or), komunikując, że port niedostępny.

Wykorzystanie takiego skanera mogłoby wyglądać następująco:

Przydatne linki


Subskrybuj

Jeśli chcesz otrzymywać nowe, mięsiste protipy na maila, a także zostać czasem powiadomiony o wartościowych wydarzeniach - dołącz do subskrybentów.