Jak používat síťový nástroj netcat

Obsah

V tomto tutoriálu budeme hovořit o a velmi výkonný síťový nástroj Netcat, běžně zkráceně nc. Tento nástroj se používá prostřednictvím příkazového řádku a jeho syntaxe je velmi jednoduchá. Umožní nám zapisovat a přijímat data prostřednictvím soketů (TCP nebo UDP). Má mnoho funkcí, a proto jej můžeme použít mnoha způsoby. Je důležité znát jeho fungování, protože nám umožní ladit, testovat a zkoumat v síti.

Netcat může pracovat ve 2 režimech:

KlientV tomto režimu bude mít na starosti spojení s posluchačem (který naslouchá na konkrétní adrese a IP a to budeme potřebovat vědět).

Server nebo posluchačPočkejte na připojení od klientů na určitém portu.

Budeme pomocí praktických příkladů se dozvíte, jak Netcat nebo NC funguje, což je nejlepší způsob učení. K tomu použiji operační systém Ubuntu 16.04.

První věc, kterou uvidíme, je syntaxe netcat:

 nc [možnosti] [cíl] [port]
Netcat máte mnoho možností, podívejme se na některé:

Některé možnosti netcar

  • -l: Říká netcat, aby poslouchal.
  • -p: K označení přístavu původu.
  • -s: K označení adresy zdroje.
  • -k: Chcete -li povolit "nekonečné" připojení, naslouchací proces (používá se s -l).
  • -nebo: Netcat otevírá port jako UDP místo TCP (což je ve výchozím nastavení).
  • -proti: S touto volbou se nám zobrazí informace o připojení.
  • -i: Udává zpoždění odesílání a přijímání. (V sekundách).
  • -4: Umožňuje Netcat používat pouze IPv4.
  • -6: Stejně jako předchozí, ale nutí používat IPv6.

Existuje více možností, které můžeme vidět spuštěním následujícího příkazu:

 nc -h
Níže vidíte na obrázku:

Začneme s příklady, nejjednodušší půjde jako první, zkomplikujeme je, ale jen trochu, uvidíte, že se velmi snadno používají.

Příklad 1
Dejte můj počítač poslouchat na portu 87:

 sudo nc -l -p 87
PoznámkaStejné odstranění by fungovalo -p.

Nyní se chystáme navázat spojení z jiného terminálu, protože jej provozuji na stejném počítači, jako adresu používám localhost:

 nc localhost 87
Pokud napíšeme od klienta něco, co jsme právě otevřeli, uvidíme to také v terminálu, který naslouchá, a tím ověříme, že spojení funguje správně. Pokud ale napíšeme posluchači, prvnímu terminálu, dostane se i ke klientovi. Dále nechám obrázek posluchače a dalšího klienta:

Vidíme, že v tomto příkladu komunikují, jak jsme chtěli, pojďme k dalšímu.

Příklad 2
Můžeme přimět server nebo posluchače uložit data odeslaná klientem do souboru, proto se příkaz, který se má provést, příliš neliší od toho, který je vidět v prvním příkladu:

 sudo nc -l 87> test
Poznámkatest je název souboru, kam budete ukládat informace, které dorazí.

Na straně klienta bude příkaz stejný jako dříve:

 nc localhost 87
Následující obrázek ukazuje, co se provádí na klientovi (posluchač naslouchá, než se připojí, jinak by to nemělo žádný účinek):

A na straně serveru vidíme, že zjevně nic není přijato, ale jedinou jistotou je, že není zobrazen na obrazovce a je uložen v testovacím souboru:

Pokračujme dalším příkladem.

Příklad 3
Zkontrolujeme, zda je řada portů, abychom věděli, zda jsou otevřené nebo ne, v tomto případě bude rozsah 80-90. Nejprve otevřeme server na portu 80, jak jsme to udělali v prvním příkladu (uvidíme tedy, jak to funguje, když je otevřeno a kdy není):

 sudo nc -l 87
A na klientovi provedeme:
 nc -z -v localhost 80-90
Parametr -z se používá pro skenování a -proti Jak jsme viděli dříve, abychom zobrazili informace (pokud to neuvedeme, neukáže, který port je otevřený a který ne), pak obrázek klienta:

Uvidíme a příklad v UDP.

Příklad 4
Tento příklad je také jednoduchý, budeme poslouchat UDP na portu 2016 a vynutíme si, aby to byla adresa IPv4:

 sudo nc -l -u -4 2016
A nyní klienta přimějeme připojit:
 nc -u -4 2016
Neposkytuji obrázek, protože zachycení bude stejné jako v příkladu 1, samozřejmě se změní část příkazu. Přejdeme k příkladu, ve kterém používáme kód Pythonu.

Příklad 5
Vložíme kód do Pythonu co nejjednodušší, aby naslouchal připojení, přijal data a skončil.

 import socket s = socket.socket () s.bind (("" 192.168.56.1 ", 1987)) s.listen (1) conn, addr = s.accept () data = conn.recv (1024) .decode (" utf-8 ") tisk (data) 
Tento kód spustím ve Windows a poté z Linuxu se k němu připojím přes netcat, následující obrázek ukazuje klientskou stranu v Linuxu:

A jak by to vypadalo ve Windows:

Pokud kód něčím upravíme, můžeme jej přimět spustit příkaz a poslat nám jeho obsah, ale můžeme také vrátit shell, který nám umožní mnoho věcí, takže přejdeme k dalšímu příkladu.

Příklad 6
V tomto příkladu spustím a kód pythonu Na stejném stroji Linux a chystám se spojit s netcat, zkontrolujeme, zda nás vrací Shell ( / bin / bash). Níže ponechám kód Pythonu, co nejjednodušší a nejkratší, jen pro příklad.

 import socket, subprocess s = socket.socket (socket.AF_INET) s.setsockopt (socket.IPPROTO_IP, socket.SO_REUSEADDR, 1) s.bind (("", 1987)) s.listen (1) conn, addr = s .accept () p = podproces.Popen ([" / bin / bash"], stdin = conn, stdout = conn, stder = conn) 
Spustí se kód Pythonu a uvidíte následující (obrázek ukazuje, jak to vypadá při připojení z netcat):

Vidíme, že naslouchá, když ho spustíme, ale když se klient připojí, připojení se zavře a my pro nás máme Shell.

Mohli bychom také vytvořit kód, který se připojí k našemu počítači, že jej dáme poslouchat na určitý port, obecně existuje mnoho možností, nyní musíte prozkoumat a „hrát“ s netcat, což, jak jste viděli, může pomoci nás v mnoha okamžicích.

Líbil se vám tento návod a pomohl mu?Autora můžete odměnit stisknutím tohoto tlačítka, čímž mu dáte kladný bod
wave wave wave wave wave