Cuprins:

Netcat în Python: 6 pași
Netcat în Python: 6 pași

Video: Netcat în Python: 6 pași

Video: Netcat în Python: 6 pași
Video: CS50x 2023 - Lecture 6 - Python 2024, Iulie
Anonim
Netcat în Python
Netcat în Python

Ce este netcat? Pagina manuală pentru netcat spune următoarele: "utilitarul nc (sau netcat) este utilizat pentru aproape orice sub soare care implică socket-uri de domeniu TCP, UDP sau UNIX. Poate deschide conexiuni TCP, trimite pachete UDP, asculta în mod arbitrar Porturile TCP și UDP, scanează porturile și gestionează atât IPv4, cât și IPv6. Spre deosebire de telnet (1), scripturile nc se separă frumos și separă mesajele de eroare de erori standard în loc să le trimită la ieșirea standard, așa cum face telnet (1) cu unele"

În esență, netcat vă permite să vă conectați la alte servere utilizând protocolul TCP sau UDP. TCP înseamnă Protocolul de control al transmisiei și este orientat spre conexiune. UDP înseamnă Universal Datagram Protocol și este fără conexiune. TCP este utilizat în mod obișnuit pentru aplicații de internet, în timp ce UDP este utilizat pentru streaming media sau VPN-uri.

Pasul 1: Cum începem?

Cum începem?
Cum începem?

Mai sus este cum se numește netcat. Puteți vedea că la final există două argumente numite „destinație” și „port”. Destinația se referă la un nume de gazdă sau la adresa IP a serverului la care încercăm să ne conectăm, în timp ce portul se referă la portul serverului la care încercăm să ne conectăm.

Pasul 2: Să începem

Sa incepem
Sa incepem

Mai sus este un cod Python de început. După cum puteți vedea, vrem să procesăm argumentele programului în mod similar cu modul în care funcționează utilitatea reală. Numele de gazdă va fi primul argument după numele executabilului, în timp ce portul va fi al doilea argument după numele executabilului în linia de comandă.

Pasul 3: Crearea unei conexiuni

Crearea unei conexiuni
Crearea unei conexiuni

Să creăm o funcție netcat pe care o putem folosi. Ceea ce facem practic aici este crearea unui socket și conectarea la server utilizând parametrii dați. Pentru comanda netcat, parametrii actuali sunt numele gazdei și portul serverului la care încercăm să ne conectăm. Socketul conține parametrii "socket. AF_INET" și "socket. SOCK_STREAM", deoarece ne implicăm o conexiune TCP pentru acest tutorial.

Pasul 4: Permite trimiterea unui conținut

Permiteți să trimitem conținut
Permiteți să trimitem conținut

Ne-am extins funcția netcat pentru a lua un al treilea parametru, „conținut”. Există o mulțime de conținut aici, așa că haideți să îl împărțim în funcție de numărul de linie.

Linia 14-16: trimitem tot conținutul prin socket, așteptăm puțin și apoi închidem socketul pentru orice date de ieșire, astfel încât socketul să știe că nu mai vin date.

Linia 18-26: creăm un buffer pentru a stoca răspunsul serverului și, în timp ce socketul primește date, adăugăm până la 1024 octeți de date la rezultat, atâta timp cât există date de citit.

Linia 28-29: dorim ca această conexiune netcat să fie o conexiune unică, deci declarăm conexiunea închisă și apoi închidem conexiunea.

Linia 31: Aceasta este o cerere HTTP standard. Dacă rulați codul cu argumentele din linia de comandă „google.com” și „80”, atunci veți vedea un răspuns HTTP adecvat

Pasul 5: Să avem o conexiune deschisă

Să avem o conexiune deschisă
Să avem o conexiune deschisă

Codul de mai sus (care se află sub codul din secțiunea anterioară) ne permite pur și simplu să rulăm comenzi multcat netcat printr-o conexiune pseudo-deschisă. (În realitate, de fiecare dată când executați o comandă, aceasta se deschide și apoi închide o nouă conexiune TCP, deci nu emulează cu adevărat comportamentul netcat, pur și simplu facem acest lucru în scopuri de învățare). Să descompunem și această linie cu linie:

Linia 31: Vrem să citim comenzi la nesfârșit pentru a menține „interactivitatea”

Linia 32: Acesta este bufferul nostru care va stoca conținutul cererii noastre

Linia 36-45: Vom citi în buffer până când citim o linie goală

Linia 48: numim pur și simplu funcția noastră netcat cu numele gazdei, portul și conținutul nou creat (care este codat corect)

Linia 50: dacă conținutul bufferului nostru conține vreodată „Conexiune: Închidere” (indicând că dorim să închidem conexiunea), pur și simplu ieșim din buclă

Pasul 6: Concluzie

La sfârșitul acestui tutorial ar trebui să aveți o implementare minimă de lucru netcat. Voi lăsa utilizatorul să exercite funcții precum:

1. acceptarea altor protocoale

2. fixarea codului pentru a nu închide conexiunea de fiecare dată

3. adăugând steaguri pe care netcat le are deja pentru a modifica comportamentul

Recomandat: