Cum se utilizează instrumentul de rețea netcat

Cuprins

În acest tutorial vom vorbi despre un instrument de rețea Netcat foarte puternic, prescurtat în mod obișnuit ca nc. Acest instrument este utilizat prin linia de comandă, iar sintaxa sa este foarte simplă. Ne va permite să scriem și să primim date prin socketuri (TCP sau UDP). Are multe caracteristici și, prin urmare, îl putem folosi în mai multe moduri. Este important să îi cunoaștem funcționarea, deoarece ne va permite să depanăm, să testăm și să investigăm în rețea.

Netcat poate funcționa în 2 moduri:

ClientÎn acest mod, acesta se va ocupa de conectarea cu ascultătorul (care ascultă la o anumită adresă și IP și pe care va trebui să îl cunoaștem).

Server sau ascultătorAșteptați conexiunile de la clienți pe un anumit port.

Noi mergem spre aflați cum funcționează Netcat sau nc prin exemple practice, care este cel mai bun mod de a învăța. Pentru aceasta voi folosi sistemul de operare Ubuntu 16.04.

Primul lucru pe care îl vom vedea este sintaxa netcat:

 nc [opțiuni] [țintă] [port]
Netcat aveți multe opțiuni, să vedem câteva:

Unele opțiuni netcar

  • -l: Spune netcat să asculte.
  • -p: Pentru a indica portul de origine.
  • -s: Pentru a indica adresa sursei.
  • -k: Pentru a permite conexiuni „infinite” ascultătorului (folosit cu -l).
  • -sau: Netcat deschide portul ca UDP în loc de TCP (care este implicit).
  • -v: Cu această opțiune ne va arăta informații despre conexiune.
  • -i: Pentru a indica întârzierea trimiterii și primirii. (În secunde).
  • -4: Permite Netcat să utilizeze numai IPv4.
  • -6: Ca și precedentul, dar forțează să folosească IPv6.

Există mai multe opțiuni pe care le putem vedea executând următoarea comandă:

 nc -h
Mai jos puteți vedea în imagine:

Vom începe cu exemplele, cel mai simplu va merge mai întâi, pentru a le complica, dar doar puțin, veți vedea că este foarte ușor de utilizat.

Exemplul 1
Puneți mașina să ascultă în portul 87:

 sudo nc -l -p 87
NotăAr funcționa la fel eliminând -p.

Acum vom stabili o conexiune de la un alt terminal, pe măsură ce îl rulez pe aceeași mașină, folosesc localhost ca adresă:

 nc localhost 87
Dacă scriem ceva de la client pe care tocmai l-am deschis, îl vom vedea și în terminalul care ascultă și astfel verificăm dacă conexiunea funcționează corect. Dar dacă scriem ascultătorului, primul terminal, acesta ajunge și la client. În continuare las o imagine a ascultătorului și alta a clientului:

Vedem că comunică așa cum am dorit în acest exemplu, să mergem pentru altul.

Exemplul 2
Putem face serverul sau ascultătorul să salveze datele trimise de client într-un fișier, pentru aceasta comanda de executat nu diferă mult de cea văzută în primul exemplu:

 sudo nc -l 87> test
Notătest este numele fișierului în care veți salva informațiile care sosesc.

Din partea clientului comanda va fi aceeași ca înainte:

 nc localhost 87
Următoarea imagine arată ce se execută pe client (ascultătorul ascultă înainte de a se conecta, altfel nu ar avea niciun efect):

Și pe partea de server putem vedea că aparent nu se primește nimic, dar singura certitudine este că nu este afișat pe ecran și este salvat în fișierul de testare:

Să continuăm cu un alt exemplu.

Exemplul 3
Vom verifica dacă există o serie de porturi, pentru a ști dacă sunt deschise sau nu, în acest exemplu intervalul va fi 80-90. Mai întâi deschidem un server pe portul 80 așa cum am făcut în primul exemplu (așa că vom vedea cum funcționează când este deschis și când nu):

 sudo nc -l 87
Și pe client vom executa:
 nc -z -v localhost 80-90
Parametru -z este utilizat pentru scanare și -v Așa cum am văzut înainte pentru a afișa informații (dacă nu punem acest lucru, nu va arăta ce port este deschis și care nu), atunci imaginea clientului:

Vom vedea o exemplu în UDP.

Exemplul 4
Acest exemplu este, de asemenea, simplu, vom asculta UDP în portul 2016 și îl vom forța să fie o adresă IPv4:

 sudo nc -l -u -4 2016
Și acum facem clientul să se conecteze:
 nc -u -4 2016
Nu furnizez o imagine, deoarece captura va fi aceeași ca în exemplul 1, schimbând desigur partea comenzii. Să trecem la un exemplu în care folosim codul Python.

Exemplul 5
Vom pune un cod cât mai simplu posibil în Python, astfel încât să asculte o conexiune, să primească date și să se termine.

 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 ") print (date) 
Voi rula acest cod pe Windows și apoi din Linux mă voi conecta la acesta prin netcat, următoarea imagine arată partea clientului pe Linux:

Și cum ar arăta pe Windows:

Dacă modificăm ceva codul, îl putem face să execute o comandă și să ne trimită conținutul, dar putem returna și un shell, care ne va permite să facem multe lucruri, așa că să trecem la următorul exemplu.

Exemplul 6
În acest exemplu, voi rula un cod python Pe aceeași mașină Linux și mă voi conecta cu netcat, vom verifica dacă un Shell (/ bin / bash) ne returnează. Mai jos las codul Python, cât mai simplu și mai scurt posibil, doar pentru exemplu.

 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 = subproces.Popen (["/ bin / bash"], stdin = conn, stdout = conn, stder = conn) 
Codul Python este executat și se vede următoarele (imaginea arată cum arată când se conectează de la netcat):

Vedem că ascultă când îl executăm, dar când un client se conectează, conexiunea se închide și avem un Shell pentru noi.

Am putea, de asemenea, să facem un cod care să se conecteze la mașina noastră, pe care îl vom pune pentru a asculta pe un anumit port, în general există multe posibilități, acum trebuie să investigați și să vă „jucați” cu netcat, ceea ce, după cum ați văzut, vă poate ajuta noi în multe momente.

V-a plăcut și ați ajutat acest tutorial?Puteți recompensa autorul apăsând acest buton pentru a-i oferi un punct pozitiv

Vei ajuta la dezvoltarea site-ului, partajarea pagina cu prietenii

wave wave wave wave wave