INHOUDSOPGAWE:

Netcat in Python: 6 stappe
Netcat in Python: 6 stappe

Video: Netcat in Python: 6 stappe

Video: Netcat in Python: 6 stappe
Video: Python for Automating Information Security: What Is Netcat? | packtpub.com 2024, Julie
Anonim
Netcat in Python
Netcat in Python

Wat is netcat? Die handleidingblad vir netcat sê die volgende: "die nc (of netcat) nut word gebruik vir omtrent alles onder die son wat TCP-, UDP- of UNIX-domein-voetstukke insluit. Dit kan TCP-verbindings oopmaak, UDP-pakkies stuur, na willekeur luister TCP- en UDP -poorte, doen poortskandering en hanteer beide IPv4 en IPv6. Anders as telnet (1), werk nc scripts mooi en skei foutboodskappe op standaardfout in plaas daarvan om dit na standaarduitset te stuur, soos telnet (1) met sommige doen"

In wese kan u met netcat met die TCP- of UDP -protokol met ander bedieners skakel. TCP staan vir Transmission Control Protocol en is verbindingsgerig. UDP staan vir Universal Datagram Protocol en is verbindingsloos. TCP word algemeen gebruik vir internettoepassings, terwyl UDP gebruik word vir mediastroom of VPN’s.

Stap 1: Hoe begin ons?

Hoe begin ons?
Hoe begin ons?

Hierbo is hoe netcat genoem word. U kan sien dat daar aan die einde twee argumente 'bestemming' en 'poort' genoem word. Die bestemming verwys na 'n gasheernaam of ip -adres van die bediener waarmee ons probeer koppel, terwyl die poort verwys na die poort van die bediener waarmee ons probeer koppel.

Stap 2: Laat ons begin

Laat ons begin
Laat ons begin

Hierbo is 'n begin -python -kode. Soos u kan sien, wil ons die argumente van die program verwerk, net soos die werklike nut. Die gasheernaam is die eerste argument na die naam van die uitvoerbare, terwyl die poort die tweede argument agter die uitvoerbare naam in die opdragreël sal wees.

Stap 3: Maak 'n verbinding

Skep 'n verbinding
Skep 'n verbinding

Kom ons skep 'n netcat -funksie wat ons kan gebruik. Wat ons hier eintlik doen, is om 'n socket te skep en met die gegewe parameters aan te sluit op die bediener. Vir die netcat -opdrag is die huidige parameters die gasheernaam en poort van die bediener waarmee ons probeer koppel. Die sok bevat die parameters "socket. AF_INET" en "socket. SOCK_STREAM" omdat ons standaard 'n TCP -verbinding vir hierdie tutoriaal gebruik.

Stap 4: Laat ons 'n bietjie inhoud stuur

Laat ons 'n bietjie inhoud stuur
Laat ons 'n bietjie inhoud stuur

Ons het ons netcat -funksie uitgebrei tot 'n derde parameter, 'inhoud'. Daar is baie inhoud hier, dus laat ons dit volgens reëlnommer verdeel.

Reël 14-16: ons stuur al die inhoud oor die socket, ons wag 'n rukkie en maak dan die socket toe vir enige uitgaande data sodat die socket weet dat daar nie meer data kom nie.

Reël 18-26: ons skep 'n buffer om die bedienerreaksie op te slaan, en terwyl die socket data ontvang, voeg ons tot 1024 grepe data by die resultaat, solank daar data is om te lees.

Reël 28-29: ons wil hê dat hierdie netcat-verbinding 'n eenmalige verbinding moet wees, daarom verklaar ons die verbinding gesluit en sluit dan die verbinding.

Reël 31: Dit is 'n standaard HTTP -versoek. As u die kode gebruik met die opdragreël "google.com" en "80", dan sien u 'n behoorlike HTTP -antwoord

Stap 5: Laat ons 'n oop verbinding hê

Laat ons 'n oop verbinding hê
Laat ons 'n oop verbinding hê

Bogenoemde kode (wat onder die kode in die vorige afdeling geleë is) stel ons eenvoudig in staat om veelvuldige netcat-opdragte oor 'n pseudo-oop verbinding uit te voer. (In werklikheid word dit elke keer as u 'n opdrag uitvoer, 'n nuwe TCP -verbinding oopgemaak en gesluit, sodat dit nie werklik die gedrag van netcat naboots nie; ons doen dit eenvoudig vir leerdoeleindes). Kom ons breek ook hierdie reël vir reël af:

Reël 31: Ons wil opdragte vir onbepaalde tyd lees om 'interaktiwiteit' te behou

Reël 32: Dit is ons buffer wat die inhoud van ons versoek stoor

Reël 36-45: Ons lees in die buffer totdat ons 'n leë reël lees

Reël 48: ons noem eenvoudig ons netcat -funksie met die gasheernaam, poort en nuutgeskepte inhoud (wat behoorlik gekodeer is)

Reël 50: as die inhoud van ons buffer ooit 'Verbinding: Sluit' bevat (wat aandui dat ons die verbinding wil sluit), breek ons eenvoudig uit die kringloop

Stap 6: Gevolgtrekking

Aan die einde van hierdie tutoriaal behoort u 'n minimale werkende netcat -implementering te hê. Ek sal dit as 'n oefening aan die gebruiker oorlaat om funksies soos:

1. ondersteuning van ander protokolle

2. die regstelling van die kode om die verbinding nie elke keer te sluit nie

3. vlae byvoeg wat netcat reeds die gedrag moet verander

Aanbeveel: