Indholdsfortegnelse:

Netcat i Python: 6 trin
Netcat i Python: 6 trin

Video: Netcat i Python: 6 trin

Video: Netcat i Python: 6 trin
Video: Netcat - Режим сканирование портов 2024, November
Anonim
Netcat i Python
Netcat i Python

Hvad er netcat? Den manuelle side for netcat siger følgende: "værktøjet nc (eller netcat) bruges til næsten alt under solen, der involverer TCP-, UDP- eller UNIX-domæne-stik. Det kan åbne TCP-forbindelser, sende UDP-pakker, lytte på vilkårlig TCP- og UDP -porte, foretager portscanning og håndterer både IPv4 og IPv6. I modsætning til telnet (1), nc scripts pænt og adskiller fejlmeddelelser til standardfejl i stedet for at sende dem til standardoutput, som telnet (1) gør med nogle"

I det væsentlige giver netcat dig mulighed for at oprette forbindelse til andre servere ved hjælp af TCP- eller UDP -protokollen. TCP står for Transmission Control Protocol og er forbindelsesorienteret. UDP står for Universal Datagram Protocol og er forbindelsesfri. TCP bruges normalt til internetapplikationer, mens UDP bruges til mediestreaming eller VPN'er.

Trin 1: Hvordan starter vi?

Hvordan begynder vi?
Hvordan begynder vi?

Ovenstående er, hvordan netcat kaldes. Du kan se, at der i slutningen er to argumenter kaldet "destination" og "port". Destinationen refererer til et værtsnavn eller ip -adresse på den server, vi forsøger at oprette forbindelse til, mens porten refererer til porten på den server, vi forsøger at oprette forbindelse til.

Trin 2: Lad os begynde

Lad os begynde
Lad os begynde

Ovenfor er en begyndende python -kode. Som du kan se, vil vi behandle argumenterne til programmet på samme måde som det faktiske værktøj gør. Værtsnavnet vil være det første argument efter eksekverbarens navn, mens porten vil være det andet argument efter eksekverbarens navn i kommandolinjen.

Trin 3: Oprettelse af en forbindelse

Oprettelse af en forbindelse
Oprettelse af en forbindelse

Lad os oprette en netcat -funktion, vi kan bruge. Det, vi i bund og grund gør her, er at oprette en socket og oprette forbindelse til serveren ved hjælp af de angivne parametre. For netcat -kommandoen er de aktuelle parametre værtsnavnet og porten på den server, vi forsøger at oprette forbindelse til. Stikket indeholder parametrene "socket. AF_INET" og "socket. SOCK_STREAM", fordi vi som standard anvender en TCP -forbindelse til denne vejledning.

Trin 4: Lad os sende noget indhold

Lad os sende noget indhold
Lad os sende noget indhold

Vi udvidede vores netcat -funktion til at tage en tredje parameter, "indhold". Der er meget indhold her, så lad os opdele det efter linjenummer.

Linje 14-16: vi sender alt indhold over stikket, vi venter lidt, og derefter lukker vi stikket for alle udgående data, så stikket ved, at der ikke kommer flere data.

Linje 18-26: vi opretter en buffer til at gemme serverresponsen, og mens soklen modtager data, tilføjer vi op til 1024 bytes data til resultatet, så længe der er data, der skal læses.

Linje 28-29: vi vil have denne netcat-forbindelse til at være en engangsforbindelse, så vi erklærer forbindelsen for lukket og lukker derefter forbindelsen.

Linje 31: Dette er en standard HTTP -anmodning. Hvis du kører koden med kommandolinjeargumenterne "google.com" og "80", vil du se et korrekt HTTP -svar

Trin 5: Lad os have en åben forbindelse

Lad os have en åben forbindelse
Lad os have en åben forbindelse

Ovenstående kode (som er placeret under koden fra det foregående afsnit) giver os simpelthen mulighed for at køre flere netcat-kommandoer over en pseudo-åben forbindelse. (I virkeligheden, hver gang du kører en kommando, åbnes den og lukker derefter en ny TCP -forbindelse, så det efterligner ikke virkelig netcats adfærd, vi gør det simpelthen til læringsformål). Lad os også bryde denne ned linje for linje:

Linje 31: Vi vil læse kommandoer på ubestemt tid for at bevare "interaktivitet"

Linje 32: Dette er vores buffer, der gemmer indholdet af vores anmodning

Linje 36-45: Vi læser ind i bufferen, indtil vi læser en tom linje

Linje 48: vi kalder simpelthen vores netcat -funktion med værtsnavn, port og nyoprettet indhold (som er korrekt kodet)

Linje 50: hvis indholdet i vores buffer nogensinde indeholder "Forbindelse: Luk" (hvilket angiver, at vi vil lukke forbindelsen), bryder vi simpelthen ud af løkken

Trin 6: Konklusion

I slutningen af denne vejledning skal du have en minimal fungerende netcat -implementering. Jeg vil overlade det som en øvelse til brugeren at implementere funktioner som:

1. understøtter andre protokoller

2. fastsættelse af koden for ikke at lukke forbindelsen hver gang

3. tilføjelse af flag, som netcat allerede skal ændre adfærden

Anbefalede: