Welcome to Our Website

Linux NC command

uppdaterad: 03/06/2020 av Computer Hope

på Unix-liknande operativsystem körs NC-kommandot Netcat, ett verktyg för att skicka rådata via en nätverksanslutning.

det här dokumentet täcker Linux-versionen av nc.

beskrivning

Netcat är ett verktyg som läser och skriver data över nätverksanslutningar, med hjälp av TCP eller UDP-protokollet. Den är utformad för att vara en pålitlig ”back-end” verktyg som kan användas direkt eller drivs av andra program och skript., Samtidigt, det är en funktionsrik nätverk felsökning och prospektering verktyg eftersom det kan skapa nästan alla typer av anslutning du skulle behöva och har flera intressanta inbyggda funktioner. Vanliga användningsområden är:

  • enkla TCP-proxies
  • Shell-script baserade HTTP-klienter och servrar
  • Network daemon testing
  • a Socks or HTTP ProxyCommand for SSH

Syntax

alternativ

-4 Forces NC för att endast använda IPv4-adresser.
-6 tvingar nc att endast använda IPv6-adresser.,
-b Tillåt sändning.
-C skicka CRLF som line-ending.
-d aktivera felsökning på uttaget.
-d försök inte läsa från stdin.
-h skriver ut nc hjälp.
-i length anger storleken på TCP-mottagningsbufferten.
-i intervall anger en fördröjning tidsintervall mellan rader av text skickas och tas emot. Orsakar också en fördröjningstid mellan anslutningar till flera portar.,
-k tvingar nc att fortsätta lyssna efter en annan anslutning efter att dess nuvarande anslutning är klar. Det är ett fel att använda det här alternativet utan-l-alternativet.
-l används för att ange att nc ska lyssna efter en inkommande anslutning i stället för att initiera en anslutning till en fjärrvärd. Det är ett fel att använda det här alternativet tillsammans med alternativen-p, -s eller-z. Dessutom ignoreras alla tidsgränser som anges med-w-alternativet.
-n gör inga DNS-eller serviceuppslagningar på angivna adresser, värdnamn eller portar.,
-o längd anger storleken på TCP skicka buffert.
-p proxy_username anger ett användarnamn att presentera för en proxyserver som kräver autentisering. Om inget användarnamn anges kommer autentisering inte att försökas. Proxy-autentisering stöds endast för HTTP ANSLUTA ombud närvarande.
-p source_port anger Källporten nc ska använda, med förbehåll för behörighetsbegränsningar och tillgänglighet.,
-q sekunder efter EOF på stdin, vänta det angivna antalet sekunder och sedan avsluta. Om sekunder är negativa, vänta för alltid.
-r anger att källportar eller destinationsportar ska väljas slumpmässigt istället för sekventiellt inom ett intervall eller i den ordning som systemet tilldelar dem.
-s aktiverar RFC 2385 TCP MD5 signatur alternativet.
-s source anger IP för gränssnittet som används för att skicka paketen., För UNIX-domain datagram-uttag anger du den lokala tillfälliga socket-filen som ska skapas och användas så att datagram kan tas emot. Det är ett fel att använda det här alternativet i samband med-L-alternativet.
-t toskeyword ändra IPv4 TOS värde. toskeyword kan vara en av kritiska, inetcontrol, lowcost, lowdelay, netcontrol, genomströmning, tillförlitlighet eller en av DiffServ-kodpunkterna: ef, af11 … af43, cs0 … cs7, eller ett tal i hex eller decimal.
-t orsakar nc att skicka RFC 854 inte och kommer inte svar på RFC 854 göra och kommer att begära., Detta gör det möjligt att använda nc till script telnet sessioner.
-U anger att använda UNIX-domänuttag.
-u använd UDP istället för standardalternativet för TCP. För Unix-domänuttag, använd ett datagram-uttag istället för ett strömuttag. Om ett Unix-domänuttag används skapas ett tillfälligt mottagningsuttag i / tmp om inte-s-flaggan anges.
-V rtable Ställ in routningstabellen som ska användas. Standardvärdet är 0.
-v har nc ger mer utförlig utgång.,
-w timeout anslutningar som inte kan fastställas eller är inaktiv timeout efter timeout sekunder. Flaggan-w har ingen effekt på-l-alternativet, dvs. nc kommer att lyssna för alltid för en anslutning, med eller utan-w-flaggan. Standard är ingen timeout.
-X proxy_protocol begär att nc ska använda det angivna protokollet när man pratar med proxyservern. Stödda protokoll är ” 4 ”(SOCKS V.4),” 5 ”(SOCKS V. 5) och” connect ” (HTTPS proxy). Om protokollet inte anges används SOCKS version 5.,
-x proxy_address begär att nc ska ansluta till destination med en proxy på proxy_address och port. Om porten inte anges används den välkända porten för proxyprotokollet (1080 för strumpor, 3128 för HTTPS).
-Z dccp-läge.
-z anger att nc endast ska söka efter lyssnande dem utan att skicka några data till dem. Det är ett fel att använda det här alternativet i samband med-L-alternativet.,

destination kan vara en numerisk IP-adress eller ett symboliskt värdnamn (om inte-n-alternativet anges). I allmänhet måste en destination anges, om inte alternativet-l anges (i vilket fall den lokala värden används). För Unix-domänuttag krävs en destination och är uttaget vägen att ansluta till (eller lyssna på om-l alternativet ges).

port kan vara ett enda heltal eller en rad portar. I allmänhet måste en destinationsport anges, om inte-U-alternativet anges.,

klient/Servermodell

det är ganska enkelt att bygga en mycket grundläggande klient / servermodell med nc. På en konsol, börja nc lyssna på en viss port för en anslutning. Till exempel:

nc -l 1234

nc lyssnar nu på port 1234 för en anslutning. På en andra konsol (eller en andra maskin), Anslut till maskinen och porten som lyssnas på:

nc 127.0.0.1 1234

det borde nu finnas en anslutning mellan portarna. Allt som skrivs på den andra konsolen kommer att sammanfogas till den första och vice versa., När anslutningen har upprättats bryr sig nc inte riktigt vilken sida som används som en ”server” och vilken sida som används som en ”klient”. Anslutningen kan avslutas med en EOF (’^D’).

det finns inget-C eller-e-alternativ i modern netcat, men du kan fortfarande köra ett kommando efter att anslutningen har etablerats genom att omdirigera fildeskriptorer. Var försiktig här eftersom det är farligt att öppna en port och låta någon ansluten exekvera godtyckligt kommando på din webbplats., Om du verkligen behöver göra detta, här är ett exempel:

på ’server’ sida:

rm -f /tmp/f; mkfifo /tmp/f
cat /tmp/f | /bin/sh -i 2>&1 | nc -l 127.0.0.1 1234 > /tmp/f

på ’klient’ sida:

nc host.example.com 1234

(shell prompt från host.example.com)

genom att göra detta skapar du en fifo at / tmp / F och gör nc lyssna på port 1234 av adress 127.0.0.1 på ”server” sida, när en ”klient” etablerar en anslutning framgångsrikt till den porten, / bin / sh blir exekverad på ”server” sida och skalprompten ges till ”klient” sida.

När anslutningen avslutas avslutas också NC., Använd-k om du vill att det ska fortsätta att lyssna, men om kommandot avslutas kommer det här alternativet inte att starta om det eller hålla nc igång. Glöm inte att ta bort fildeskriptorn när du inte behöver den längre:

rm -f /tmp/f

dataöverföring

exemplet i föregående avsnitt kan utökas för att bygga en grundläggande dataöverföringsmodell. All information som matas in i ena änden av anslutningen kommer att matas ut till den andra änden, och ingång och utgång kan enkelt fångas för att efterlikna filöverföring.,

börja med att använda nc för att lyssna på en viss port, med utgång som fångas in i en fil:

nc -l 1234 > filename.out

Anslut till lyssnings nc-processen med en andra maskin, mata den filen som ska överföras:

nc host.example.com 1234 < filename.in

Efter att filen har överförts stängs anslutningen automatiskt.

prata med servrar

det är ibland användbart att prata med servrar ”för hand” snarare än via ett användargränssnitt., Det kan hjälpa till vid felsökning, när det kan vara nödvändigt att verifiera vilka data en server skickar som svar på kommandon som utfärdas av klienten. Till exempel, för att hämta hemsidan för en webbplats:

printf "GET / HTTP/1.0\r\n\r\n" | nc host.example.com 80

Observera att detta också visar rubrikerna som skickas av webbservern. De kan filtreras, med hjälp av ett verktyg som sed, om det behövs.

mer komplicerade exempel kan byggas upp när användaren känner till formatet på förfrågningar som krävs av servern., Som ett annat exempel kan ett e-postmeddelande skickas till en SMTP-server med:

portskanning

det kan vara användbart att veta vilka portar som är öppna och kör tjänster på en måldator. Flaggan-z kan användas för att berätta för nc att rapportera öppna portar, snarare än att initiera en anslutning. Vanligtvis är det användbart att slå på verbose-utgång till stderr genom att använda det här alternativet i samband med-v-alternativet.

till exempel:

nc -zv host.example.com 20-30
Connection to host.example.com 22 port succeeded!Connection to host.example.com 25 port succeeded!

portintervallet angavs för att begränsa sökningen till portarna 20 – 30 och skannas genom att öka ordningen.,

Du kan också ange en lista med portar att skanna, till exempel:

nc -zv host.example.com 80 20 22

portarna skannas av den ordning du gav.

Alternativt kan det vara bra att veta vilken serverprogramvara som körs och vilka versioner. Denna information finns ofta i hälsning banners. För att hämta dessa är det nödvändigt att först göra en anslutning och sedan bryta anslutningen när bannern hämtades., Detta kan åstadkommas genom att ange en liten timeout med-W-flaggan, eller kanske genom att utfärda ett ”QUIT” – kommando till servern:

echo "QUIT" | nc host.example.com 20-30
SSH-1.99-OpenSSH_3.6.1p2 Protocol mismatch. 220 host.example.com IMS SMTP Receiver Version 0.84 Ready

exempel

nc -p 31337 -w 5 host.example.com 42

öppnar en TCP-anslutning till port 42 av host.example.com, med hjälp av port 31337 som Källporten, med en timeout på 5 sekunder.

nc -u host.example.com 53

öppnar en UDP-anslutning till port 53 av host.example.com.

nc -s 10.1.2.3 host.example.com 42

öppnar en TCP-anslutning till port 42 av host.example.com använda 10.1.2.3 som IP för den lokala änden av anslutningen.,

nc -lU /var/tmp/dsocket

skapar och lyssnar på ett strömuttag för Unix-domän.

nc -x10.2.3.4:8080 -Xconnect host.example.com 42

Ansluts till port 42 i host.example.com via en HTTP-proxy på 10.2.3.4, port 8080. Detta exempel kan också användas av SSH.

nc -x10.2.3.4:8080 -Xconnect -Pruser host.example.com 42

samma som exemplet ovan, men den här gången aktiverar Proxyautentisering med användarnamn ”ruser” om proxy kräver det.

ifconfig — Visa eller ändra konfigurationen av nätverksgränssnitt.

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *