Sadržaj:

Netcat u Pythonu: 6 koraka
Netcat u Pythonu: 6 koraka

Video: Netcat u Pythonu: 6 koraka

Video: Netcat u Pythonu: 6 koraka
Video: Математика это не Ислам 2024, Novembar
Anonim
Netcat u Pythonu
Netcat u Pythonu

Šta je netcat? Stranica s priručnikom za netcat kaže sljedeće: "uslužni program nc (ili netcat) koristi se za gotovo sve pod suncem, uključujući TCP, UDP ili UNIX domene. Može otvoriti TCP veze, slati UDP pakete, slušati na proizvoljan način. TCP i UDP portovi, vrše skeniranje portova i bave se i IPv4 i IPv6. Za razliku od telneta (1), nc skripte lijepo odvajaju poruke o grešci na standardnu grešku umjesto slanja na standardni izlaz, kao što to čini telnet (1) s nekim"

U suštini, netcat vam omogućava povezivanje sa drugim serverima koristeći TCP ili UDP protokol. TCP je kratica za Transmission Control Protocol i orijentiran je na povezivanje. UDP je kratica za Universal Datagram Protocol i nema veze. TCP se obično koristi za internetske aplikacije, dok se UDP koristi za streaming medija ili VPN -ove.

Korak 1: Kako počinjemo?

Kako počinjemo?
Kako počinjemo?

Gore je kako se zove netcat. Možete vidjeti da na kraju postoje dva argumenta koji se zovu "odredište" i "port". Odredište se odnosi na naziv hosta ili ip adresu servera na koji se pokušavamo povezati, dok se port odnosi na port servera na koji se pokušavamo povezati.

Korak 2: Počnimo

Počnimo
Počnimo

Gore je neki početni python kod. Kao što vidite, želimo obraditi argumente programa slično kao i stvarni uslužni program. Ime hosta bit će prvi argument nakon imena izvršne datoteke, dok će port biti drugi argument nakon imena izvršne datoteke u naredbenoj liniji.

Korak 3: Stvaranje veze

Kreiranje veze
Kreiranje veze

Kreirajmo netcat funkciju koju možemo koristiti. Ono što ovdje u osnovi radimo je stvaranje utičnice i povezivanje sa poslužiteljem pomoću navedenih parametara. Za naredbu netcat trenutni parametri su ime hosta i port poslužitelja na koji se pokušavamo povezati. Utičnica sadrži parametre "socket. AF_INET" i "socket. SOCK_STREAM" jer smo prema zadanim postavkama TCP veze za ovaj vodič.

Korak 4: Omogućimo slanje određenog sadržaja

Omogućava slanje određenog sadržaja
Omogućava slanje određenog sadržaja

Proširili smo našu funkciju netcat tako da preuzme treći parametar, "sadržaj". Ovdje ima puno sadržaja pa ga raščlanimo po broju retka.

Red 14-16: šaljemo sav sadržaj preko utičnice, čekamo malo, a zatim zatvaramo utičnicu za sve odlazne podatke tako da utičnica zna da nema više podataka koji dolaze.

Red 18-26: stvaramo bafer za spremanje odgovora poslužitelja i dok utičnica prima podatke, rezultatu dodajemo do 1024 bajta podataka sve dok postoje podaci za čitanje.

Red 28-29: želimo da ova netcat veza bude jednokratna, pa proglašavamo vezu zatvorenom, a zatim vezu zatvaramo.

Linija 31: Ovo je standardni HTTP zahtjev. Ako pokrenete kôd s argumentima naredbenog retka "google.com" i "80", vidjet ćete odgovarajući HTTP odgovor

Korak 5: Omogućimo otvorenu vezu

Omogućimo otvorenu vezu
Omogućimo otvorenu vezu

Gornji kôd (koji se nalazi ispod koda iz prethodnog odjeljka) jednostavno nam dopušta da pokrenemo više naredbi netcat preko pseudootvorene veze. (U stvarnosti, svaki put kada pokrenete naredbu, ona otvara, a zatim zatvara novu TCP vezu, tako da ne oponaša uistinu ponašanje netcat -a, jednostavno to radimo u svrhe učenja). Hajde da raščlanimo i ovu liniju po red:

Red 31: Želimo čitati naredbe unedogled kako bismo održali "interaktivnost"

Red 32: Ovo je naš bafer koji će pohraniti sadržaj našeg zahtjeva

Red 36-45: Čitaćemo u baferu dok ne pročitamo prazan red

Red 48: jednostavno pozivamo našu funkciju netcat s imenom hosta, portom i novonastalim sadržajem (koji je pravilno kodiran)

Red 50: ako sadržaj našeg međuspremnika ikada sadrži "Connection: Close" (označavajući da želimo prekinuti vezu), jednostavno izlazimo iz petlje

Korak 6: Zaključak

Na kraju ovog vodiča trebali biste imati minimalnu radnu implementaciju netcat -a. Korisniku ću ostaviti kao vježbu implementaciju značajki kao što su:

1. podržavanje drugih protokola

2. popravljajući kôd da se veza ne zatvara svaki put

3. dodavanje zastavica koje netcat već mora promijeniti

Preporučuje se: