Wstęp #
netcat
jest programem, który potrafi nawiązywać różne rodzaje połączeń sieciowych (TCP, UDP i nie tylko) i przesyłać dane ze swojego standardowego wejścia do połączenia sieciowego oraz wypisywać na standardowe wyjście dane otrzymane z sieci. Ten program można wykorzystać do wysyłania wiadomości do programów, które komunikują się przez sieć z użyciem zwykłego tekstu. Na zajęciach z SOP2 netcat
może się przydać na laboratorium, w trakcie którego wykorzystywane są połączenia sieciowe (L8) do testowania programów.
Warianty programu netcat #
Program netcat
można spotkać w różnych wariantach, w zależności od używanego systemu operacyjnego. Wszystkie potrafią nawiązywać podstawowe połączenia TCP i UDP, jednak mogą się różnić w przypadku bardziej zaawansowanych funkcjonalności. W dystrybucjach Linuksa można spotkać trzy popularne implementacje (implementacji w przyrodzie jest dużo więcej), warto sprawdzić która implementacja jest zainstalowana w systemie:
- tradycyjna,
- GNU,
- OpenBSD – implementacja z systemu OpenBSD, posiada więcej funkcjonalności, między innymi potrafi nawiązywać połączenia w domenie
unix, czego nie potrafią pozostałe.
Dalsza część tego opisu będzie zakładać wersję netcat
z OpenBSD, bo taka jest zainstalowana w laboratorium.
Użycie programu netcat #
netcat
jest szczegółowo opisany w podręczniku, poniżej podane są podstawowe wywołania przydatne na zajęciach.
W większości systemów netcat
dostępny jest jako polecenie nc
, rzadziej jako netcat
lub ncat
.
TCP #
Jeśli nie zostały podane żadne opcje specyfikujące protokół, który ma być użyty, to netcat
domyślnie wykorzysta TCP:
nc <host> <port>
— nawiązuje połączenie kliencie z podanym serwerem TCPnc -l -s <adres> -p <port>
— rozpoczyna nasłuchiwanie na podanym adresie i porcie, opcja-s
jest opcjonalna
UDP #
Wszystkie wywołania wykorzystujące protokół UDP wymagają flagi -u
:
nc -u <host> <port>
— tworzy socket udp na losowym porcie i wysyła wszystkie dane zstdin
na podany adres,nc -u -l -s <adres> -p <port>
— tworzy socket udp na podanym adresie i porcie, czeka na dane. Po otrzymaniu pakietustdin
jest wysyłane na adres, z którego przyszedł pakiet.
UNIX #
nc -U <ścieżka>
— łączy się z podanym socketem w domenie unix (strumieniowo)nc -l -U <ścieżka>
— nasłuchuje na podanym sockecie w domenie unix (strumieniowo)nc -U -u <ścieżka>
— wysyła dane na podany socket w domenie unix (datagramy)nc -l -U -u <ścieżka>
— nasłuchuje na podanym sockecie w domenie unix (datagramy)