GNU/Linux >> Znalost Linux >  >> Linux

Příkaz Netcat (nc) s příklady

Netcat (nebo nc ) je nástroj příkazového řádku, který čte a zapisuje data přes síťová připojení pomocí protokolů TCP nebo UDP. Je to jeden z nejmocnějších nástrojů v arzenálu síťových a systémových administrátorů a je považován za švýcarský armádní nůž síťových nástrojů.

Netcat je multiplatformní a je k dispozici pro Linux, macOS, Windows a BSD. Netcat můžete použít k ladění a sledování síťových připojení, skenování otevřených portů, přenosu dat, jako proxy a další.

Balíček Netcat je předinstalovaný v macOS a populárních distribucích Linuxu, jako je Ubuntu, Debian nebo CentOS.

Syntaxe Netcat #

Nejzákladnější syntaxe nástroje Netcat má následující podobu:

nc [options] host port

Na Ubuntu můžete použít buď netcat nebo nc . Oba jsou symbolickým odkazem na openBSD verzi Netcatu.

Ve výchozím nastavení se Netcat pokusí zahájit připojení TCP k určenému hostiteli a portu. Pokud chcete vytvořit UDP spojení, použijte -u možnost:

nc -u host port

Prohledávání portů #

Skenování portů je jedním z nejčastějších použití Netcatu. Můžete skenovat jeden port nebo rozsah portů.

Například pro vyhledání otevřených portů v rozsahu 20-80 byste použili následující příkaz:

nc -z -v 10.10.8.8 20-80

-z volba řekne nc pouze vyhledávat otevřené porty, aniž by se na ně posílala jakákoli data a -v možnost poskytnout podrobnější informace.

Výstup bude vypadat nějak takto:

nc: connect to 10.10.8.8 port 20 (tcp) failed: Connection refused
nc: connect to 10.10.8.8 port 21 (tcp) failed: Connection refused
Connection to 10.10.8.8 22 port [tcp/ssh] succeeded!
nc: connect to 10.10.8.8 port 23 (tcp) failed: Connection refused
...
nc: connect to 10.10.8.8 port 79 (tcp) failed: Connection refused
Connection to 10.10.8.8 80 port [tcp/http] succeeded!

Pokud chcete tisknout pouze řádky s otevřenými porty, můžete výsledky filtrovat pomocí grep příkaz.

nc -z -v 10.10.8.8 20-80 2>&1 | grep succeeded
Connection to 10.10.8.8 22 port [tcp/ssh] succeeded!
Connection to 10.10.8.8 80 port [tcp/http] succeeded!

Můžete také použít Netcat k nalezení serverového softwaru a jeho verze. Pokud například odešlete příkaz „EXIT“ serveru na výchozí port SSH 22:

echo "EXIT" | nc 10.10.8.8 22

Výstup bude vypadat nějak takto:

SSH-2.0-OpenSSH_7.6p1 Ubuntu-4
Protocol mismatch.

Chcete-li vyhledat porty UDP, jednoduše přidejte -u možnost k příkazu, jak je uvedeno níže:

nc -z -v -u 10.10.8.8 20-80

Nmapis je obvykle lepší nástroj než Netcat pro komplexní skenování portů.

Odesílání souborů přes Netcat #

Netcat lze použít k přenosu dat z jednoho hostitele na druhého vytvořením základního modelu klient/server.

Funguje to tak, že Netcat nastavíte tak, aby naslouchal na konkrétním portu (pomocí -l option) na přijímajícím hostiteli a poté navázáním běžného TCP spojení z druhého hostitele a odesláním souboru přes něj.

Při příjmu spusťte následující příkaz, který otevře port 5555 pro příchozí připojení a přesměruje výstup do souboru:

nc -l 5555 > file_name

Z odesílajícího hostitele se připojte k přijímajícímu hostiteli a odešlete soubor:

nc receiving.host.com 5555 < file_name

K přenosu adresáře můžete použít tar archivovat adresář na zdrojovém hostiteli a extrahovat archiv na cílovém hostiteli.

Na přijímajícím hostiteli nastavte nástroj Netcat tak, aby naslouchal příchozímu připojení na portu 5555. Příchozí data jsou směrována do tar příkaz, který rozbalí archiv:

nc -l 5555 | tar xzvf -

Na odesílajícím hostiteli zabalte adresář a odešlete data připojením k naslouchajícímu nc proces na přijímajícím hostiteli:

tar czvf - /path/to/dir | nc receiving.host.com 5555

Průběh přenosu můžete sledovat na obou koncích. Po dokončení zadejte CTRL+C pro ukončení připojení.

Vytvoření serveru pro jednoduchý chat #

Postup pro vytvoření online chatu mezi dvěma nebo více hostiteli je stejný jako při přenosu souborů.

Na prvním hostiteli spusťte proces Netcat, aby naslouchal na portu 5555:

nc -l 5555

Z druhého hostitele spusťte následující příkaz pro připojení k naslouchajícímu portu:

nc first.host.com 5555

Nyní, když napíšete zprávu a stisknete ENTER bude zobrazen na obou hostitelích.

Chcete-li připojení ukončit, zadejte CTRL+C .

Provedení požadavku HTTP #

I když existují mnohem lepší nástroje pro požadavky HTTP, jako je curl , můžete také použít Netcat k odesílání různých požadavků na vzdálené servery.

Chcete-li například získat manuálovou stránku Netcatu z webu OpenBSD, zadejte:

printf "GET /nc.1 HTTP/1.1\r\nHost: man.openbsd.org\r\n\r\n" | nc man.openbsd.org 80

Úplná odpověď, včetně HTTP hlaviček a HTML kódu, bude vytištěna v terminálu.

Závěr č.

V tomto tutoriálu jste se naučili používat nástroj Netcat k navazování a testování připojení TCP a UDP.

Pro více informací navštivte manuálovou stránku Netcat a přečtěte si o všech dalších výkonných možnostech příkazu Netcat.

Pokud máte nějaké dotazy nebo připomínky, zanechte prosím níže komentář.


Linux
  1. Linux Tee Command s příklady

  2. Příkaz linuxové hlavy s příklady

  3. Příkaz Nohup s příklady

  1. wc Linux Command s příklady

  2. Linux řazení příkazů s příklady

  3. JQ Command v Linuxu s příklady

  1. Echo Command v Linuxu (s příklady)

  2. man Command v Linuxu s příklady

  3. Příkaz AWK v Linuxu s příklady