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 -hNíž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 87Pozná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 87Pokud 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> testPoznámkatest je název souboru, kam budete ukládat informace, které dorazí.
Na straně klienta bude příkaz stejný jako dříve:
nc localhost 87Ná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 87A na klientovi provedeme:
nc -z -v localhost 80-90Parametr -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 2016A nyní klienta přimějeme připojit:
nc -u -4 2016Neposkytuji 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