nc (netcat) to scyzoryk szwajcarski sieci: czyta i zapisuje dane przez połączenia TCP oraz UDP. W praktyce użyjesz go do sprawdzenia, czy port jest otwarty, do podsłuchania ruchu na danym porcie, do prostego transferu pliku między dwiema maszynami albo do debugowania usługi przez ręczne wysłanie jej kilku bajtów. Mała komenda, a robi robotę za pół zestawu narzędzi. Uwaga: krąży kilka jej wariantów (OpenBSD, GNU, Ncat z Nmapa), więc część flag różni się między dystrybucjami — poniżej opisuję najpopularniejszy wariant OpenBSD, ten domyślny na większości Linuksów.
Składnia i najważniejsze opcje
Podstawowa forma to nc [opcje] host port. Bez flag nc po prostu łączy się z hostem i portem, a wszystko, co wpiszesz, leci na drugą stronę.
-l— tryb nasłuchu: zamiast łączyć się, czekasz na połączenie przychodzące na podanym porcie.-v— gadatliwość (verbose); pokazuje, co się dzieje z połączeniem. Podwojone-vvmówi jeszcze więcej.-z— tryb zero-I/O: sprawdza tylko, czy port odpowiada, i od razu zrywa połączenie. Idealne do skanowania portów.-u— używa UDP zamiast domyślnego TCP.-w sek— timeout: po tylu sekundach bezczynności (lub nieudanego połączenia)ncsię poddaje. Nie działa na-l.-k— po zakończeniu jednego połączenia nasłuchuj dalej; wymaga-l.-p port— wymusza konkretny port źródłowy połączenia.-n— nie rozwiązuj nazw DNS, działaj na czystych IP (szybciej, bez niespodzianek).
Przykłady użycia
nc -zv example.com 443— sprawdza, czy port 443 jest otwarty, i mówi ci to wprost. Twój pierwszy odruch przy „nie działa mi strona”.nc -zv 10.0.0.5 20-25— skanuje zakres portów od 20 do 25 na danym hoście.nc -lvp 4444— uruchamia nasłuch na porcie 4444 i czeka na połączenie (np. do szybkiego czatu między maszynami).nc -l 1234 > plik.tarna odbiorcy, anc host 1234 < plik.tarna nadawcy — przesyłasz plik bez SSH i FTP.nc -u 8.8.8.8 53— łączy się po UDP, np. do testów usług, które nie chodzą po TCP.
Częste błędy i pułapki
Najczęstsza zagwozdka: różnice między wariantami. Wersja OpenBSD nie ma opcji -e (uruchamianie programu po połączeniu) — to świadoma decyzja bezpieczeństwa, bo -e to klasyk reverse shelli. Jeśli widzisz tutorial z nc -e /bin/bash, autor używa GNU netcat lub Ncata, nie domyślnego nc z Twojego systemu. Druga pułapka: -w nie skróci nasłuchu — nc -l będzie wisieć w nieskończoność, dopóki go nie ubijesz. I nie traktuj nc jako szyfrowanego kanału — dane lecą czystym tekstem, więc do produkcji wybierz ssh albo socat.
Powiązane komendy: socat, ncat, ssh, curl, nmap, ss.