Netcat (lubnc
) jest narzędziem wiersza poleceń, które odczytuje i zapisuje dane w połączeniach sieciowych, przy użyciu protokołów TCP lub UDP. Jest to jedno z najpotężniejszych narzędzi w arsenale administratorów sieci i systemów i jest uważane za szwajcarski nóż wojskowy narzędzi sieciowych.
Netcat jest wieloplatformowy i jest dostępny dla Systemów Linux, macOS, Windows i BSD. Netcat można używać do debugowania i monitorowania połączeń sieciowych, skanowania w poszukiwaniu otwartych portów, przesyłania danych, jako serwera proxy itp.,
Pakiet Netcat jest preinstalowany na macOS i popularnych dystrybucjach Linuksa, takich jak Ubuntu, Debian czy CentOS.
składnia Netcat #
najbardziej podstawowa składnia narzędzia Netcat ma następującą postać:
nc host port
w Ubuntu możesz użyćnetcat
lubnc
. Oba są dowiązaniami symbolicznymi do wersji OpenBSD Netcata.
domyślnie Netcat spróbuje uruchomić połączenie TCP z podanym hostem i portem., Jeśli chcesz nawiązać połączenie UDP, użyj opcji -u
:
nc -u host port
skanowanie portów #
skanowanie portów jest jednym z najczęstszych zastosowań Netcata. Możesz skanować pojedynczy port lub zakres portów.,
na przykład, aby skanować otwarte porty w zakresie 20-80, należy użyć następującego polecenia:
nc -z -v 10.10.8.8 20-80
opcja -z
powie nc
aby skanować tylko otwarte porty, bez wysyłania do nich żadnych danych i -v
opcja, aby podać więcej szczegółowych informacji.
wynik będzie wyglądał mniej więcej tak:
Jeśli chcesz wydrukować tylko linie z otwartymi portami, możesz filtrować wyniki za pomocą polecenia grep
.,
nc -z -v 10.10.8.8 20-80 2>&1 | grep succeeded
Connection to 10.10.8.8 22 port succeeded!Connection to 10.10.8.8 80 port succeeded!
Możesz również użyć programu Netcat, aby znaleźć oprogramowanie serwera i jego wersję. Na przykład, jeśli wyślesz polecenie „EXIT” do serwera na domyślnym porcie SSH 22 :
echo "EXIT" | nc 10.10.8.8 22
wynik będzie wyglądał mniej więcej tak:
SSH-2.0-OpenSSH_7.6p1 Ubuntu-4Protocol mismatch.
aby skanować porty UDP, po prostu dodaj opcję -u
do polecenia, jak pokazano poniżej:
nc -z -v -u 10.10.8.8 20-80
zazwyczaj Nmap jest lepszym narzędziem niż netcat do skomplikowanego skanowania portów.,
wysyłanie plików przez Netcat #
Netcat może być używany do przesyłania danych z Jednego Hosta do drugiego, tworząc podstawowy model klient / serwer.
działa to poprzez ustawienie Netcat nasłuchiwać na określonym porcie (używając opcji-l
) na Hostie odbierającym, a następnie ustanowienie zwykłego połączenia TCP z innego hosta i wysłanie pliku przez niego.,
przy odbiorze uruchom następujące polecenie, które otworzy port 5555 dla połączenia przychodzącego i przekieruje wyjście do pliku:
nc -l 5555 > file_name
z hosta wysyłającego połącz się z hostem odbierającym i Wyślij plik:
nc receiving.host.com 5555 < file_name
aby przesłać katalog możesz użyć tar
aby zarchiwizować katalog na hoście źródłowym i rozpakować archiwum na hoście docelowym.
na serwerze odbierającym Ustaw narzędzie Netcat, aby nasłuchiwało połączenia przychodzącego na porcie 5555., Przychodzące dane są przesyłane do polecenia tar
, które rozpakuje archiwum:
nc -l 5555 | tar xzvf -
na wysyłającym Hostie zapakuj katalog i wyślij dane przez podłączenie do procesu nasłuchującego nc
na odbierającym Hostie:
tar czvf - /path/to/dir | nc receiving.host.com 5555
możesz obserwować postęp transferu na obu końcach. Po zakończeniu wpisz CTRL+C
, aby zamknąć połączenie.
Tworzenie prostego serwera czatu #
procedura tworzenia czatu online między dwoma lub więcej hostami jest taka sama jak podczas przesyłania plików.,
na pierwszym hoście uruchom proces netcat do nasłuchiwania na porcie 5555:
nc -l 5555
z drugiego hosta uruchom następujące polecenie, aby połączyć się z portem nasłuchiwania:
nc first.host.com 5555
teraz, jeśli wpiszesz wiadomość i naciśniesz ENTER
będzie wyświetlany na obu hostach.
aby zamknąć połączenie, wpisz CTRL+C
.
Wykonywanie żądania HTTP #
chociaż istnieją znacznie lepsze narzędzia do żądań HTTP , takie jakcurl
, Możesz również użyć Netcata do wysyłania różnych żądań do zdalnych serwerów.,
na przykład, aby pobrać stronę man Netcat ze strony OpenBSD, należy wpisać:
printf "GET /nc.1 HTTP/1.1\r\nHost: man.openbsd.org\r\n\r\n" | nc man.openbsd.org 80
pełna odpowiedź, w tym nagłówki HTTP i kod HTML, zostanie wydrukowana w terminalu.
podsumowanie #
w tym samouczku nauczyłeś się, jak używać narzędzia Netcat do tworzenia i testowania połączeń TCP i UDP.
aby uzyskać więcej informacji, odwiedź Stronę man Netcat i przeczytaj o wszystkich innych zaawansowanych opcjach polecenia Netcat.
Leave a Reply