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, Studeni
Anonim
Netcat u Pythonu
Netcat u Pythonu

Što 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, skenirajte portove i bavite se i IPv4 i IPv6. Za razliku od telneta (1), nc skripte lijepo odvajaju poruke o pogreškama na standardnu pogrešku, umjesto da ih šalju na standardni izlaz, kao što to čini telnet (1) s nekim"

U biti, netcat vam omogućuje povezivanje s drugim poslužiteljima 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 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 poslužitelja na koji se pokušavamo povezati, dok se port odnosi na port poslužitelja na koji se pokušavamo povezati.

Korak 2: Počnimo

Započnimo
Započnimo

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

Korak 3: Stvaranje veze

Stvaranje veze
Stvaranje veze

Izradimo 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 naziv 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 nekog sadržaja

Omogućavamo slanje nekog sadržaja
Omogućavamo slanje nekog 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.

Redak 14-16: šaljemo sav sadržaj preko utičnice, pričekamo malo, a zatim zatvaramo utičnicu za sve izlazne podatke kako bi utičnica znala da nema više podataka.

Redak 18-26: stvaramo međuspremnik za pohranu 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.

Redak 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 pseudo-otvorene veze. (U stvarnosti, svaki put kada pokrenete naredbu, ona otvara, a zatim zatvara novu TCP vezu, tako da uistinu ne oponaša ponašanje netcata, mi to jednostavno radimo u svrhu učenja). Razdvojimo i ovu liniju po red:

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

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

Redak 36-45: Čitat ćemo u međuspremniku sve dok ne pročitamo prazan redak

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

Redak 50: ako sadržaj našeg međuspremnika ikada sadrži "Veza: Zatvori" (što znači da želimo prekinuti vezu), jednostavno se prekidamo 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čeni: