Netcat (eller nc
) är ett kommandoradsverktyg som läser och skriver data över nätverksanslutningar, med hjälp av TCP eller UDP-protokoll. Det är en av de mest kraftfulla verktyg i nätverket och systemadministratörer arsenal, och det som betraktas som en schweizisk armékniv av nätverksverktyg.
Netcat är plattformsoberoende, och det är tillgängligt för Linux, macOS, Windows och BSD. Du kan använda Netcat för att felsöka och övervaka nätverksanslutningar, söka efter öppna portar, överföra data, som en proxy, och mer.,
Netcat-paketet är förinstallerat på macOS och populära Linux-distributioner som Ubuntu, Debian eller CentOS.
netcat Syntax #
netcat-verktygets mest grundläggande syntax tar följande form:
nc host port
På Ubuntu kan du använda antingennetcat
ellernc
. De är båda symboliska länkar till openBSD-versionen av Netcat.
som standard försöker Netcat starta en TCP-anslutning till den angivna värden och porten., Om du vill upprätta en UDP-anslutning använder du alternativet -u
:
nc -u host port
Port Scanning #
Skanningsportar är en av de vanligaste användningsområdena för Netcat. Du kan skanna en enda port eller ett portintervall.,
till exempel, för att söka efter öppna portar i intervallet 20-80 skulle du använda följande kommando:
nc -z -v 10.10.8.8 20-80
alternativet -z
kommer att berätta för nc
att bara söka efter öppna portar, utan att skicka data till dem och alternativet -v
att ge mer information om utförlig information.
utgången kommer att se ut så här:
om du bara vill skriva ut linjerna med de öppna portarna kan du filtrera resultaten med kommandot 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!
Du kan också använda Netcat för att hitta serverprogramvaran och dess version. Om du till exempel skickar ett ”EXIT” – kommando till servern på standard SSH-porten 22 :
echo "EXIT" | nc 10.10.8.8 22
utdata kommer att se ut så här:
SSH-2.0-OpenSSH_7.6p1 Ubuntu-4Protocol mismatch.
för att söka efter UDP-portar lägger du bara till -u
– alternativet till kommandot som visas nedan:
nc -z -v -u 10.10.8.8 20-80
vanligtvis är Nmap ett bättre verktyg än netcat för komplex portskanning.,
skicka filer via Netcat #
Netcat kan användas för att överföra data från en värd till en annan genom att skapa en grundläggande klient / servermodell.
detta fungerar genom att ställa in Netcat att lyssna på en viss port (med alternativet -l
) på den mottagande värden och sedan upprätta en vanlig TCP-anslutning från den andra värden och skicka filen över den.,
vid mottagningen kör följande kommando som öppnar porten 5555 för inkommande anslutning och omdirigerar utmatningen till filen:
nc -l 5555 > file_name
från den sändande värden Anslut till den mottagande värden och skicka filen:
nc receiving.host.com 5555 < file_name
för att överföra en katalog som du kan använda tar
för att arkivera katalogen på den mottagande värden.källvärd och för att extrahera arkivet på destinationsvärden.
på den mottagande värden ställer du in Netcat-verktyget för att lyssna på en inkommande anslutning på port 5555., Den inkommande data leds till kommandot tar
, som kommer att extrahera arkivet:
nc -l 5555 | tar xzvf -
på det sändande värdpaketet katalogen och skicka data genom att ansluta till lyssnings nc
– processen på den mottagande värden:
tar czvf - /path/to/dir | nc receiving.host.com 5555
Du kan titta på överföringen framsteg i båda ändar. När du är klar skriver du CTRL+C
för att stänga anslutningen.
skapa en enkel Chatserver #
proceduren för att skapa en online-chatt mellan två eller flera värdar är densamma som vid överföring av filer.,
på den första värden starta en Netcat-process för att lyssna på port 5555:
nc -l 5555
från den andra värden kör följande kommando för att ansluta till lyssningsporten:
nc first.host.com 5555
Nu, om du skriver ett meddelande och trycker påENTER
visas det på båda värdarna.
för att stänga anslutningen, skrivCTRL+C
.
utföra en HTTP-begäran #
Även om det finns mycket bättre verktyg för HTTP-förfrågningar som curl
, kan du också använda Netcat för att skicka olika förfrågningar till fjärrservrar.,
för att till exempel hämta netcat man-sidan från OpenBSD-webbplatsen skriver du:
printf "GET /nc.1 HTTP/1.1\r\nHost: man.openbsd.org\r\n\r\n" | nc man.openbsd.org 80
det fullständiga svaret, inklusive HTTP-rubrikerna och HTML-koden, kommer att skrivas ut i terminalen.
slutsats #
i den här handledningen har du lärt dig hur du använder Netcat-verktyget för att upprätta och testa TCP-och UDP-anslutningar.
För mer information, besök netcat man-sidan och läs om alla andra kraftfulla alternativ för netcat-kommandot.
Leave a Reply