Sisällysluettelo:

Netcat Pythonissa: 6 vaihetta
Netcat Pythonissa: 6 vaihetta

Video: Netcat Pythonissa: 6 vaihetta

Video: Netcat Pythonissa: 6 vaihetta
Video: Ubuntu: Как создать веб-сайт для обмена данными 2024, Heinäkuu
Anonim
Netcat Pythonissa
Netcat Pythonissa

Mikä on netcat? Netcatin käyttöoppaassa sanotaan seuraavaa: "nc (tai netcat) -apuohjelmaa käytetään melkein mihin tahansa auringon alla, johon liittyy TCP-, UDP- tai UNIX-verkkotunnuksen pistorasioita. Se voi avata TCP-yhteyksiä, lähettää UDP-paketteja, kuunnella mielivaltaisesti TCP- ja UDP -portit, skannaavat portit ja käsittelevät sekä IPv4- että IPv6 -protokollaa."

Pohjimmiltaan netcatin avulla voit muodostaa yhteyden muihin palvelimiin TCP- tai UDP -protokollan avulla. TCP tarkoittaa lähetyksen ohjausprotokollaa ja on yhteyskeskeinen. UDP tarkoittaa Universal Datagram Protocolia ja on yhteydetön. TCP: tä käytetään yleisesti Internet -sovelluksissa, kun taas UDP: tä käytetään median suoratoistoon tai VPN -verkkoihin.

Vaihe 1: Miten aloitamme?

Miten aloitamme?
Miten aloitamme?

Yllä on netcatin nimi. Näet, että lopussa on kaksi argumenttia nimeltä "määränpää" ja "portti". Kohde viittaa palvelimen isäntänimeen tai IP -osoitteeseen, johon yritämme muodostaa yhteyden, kun taas portti viittaa palvelimen porttiin, johon yritämme muodostaa yhteyden.

Vaihe 2: Aloitetaan

Aloitetaanpa
Aloitetaanpa

Yllä on alkuinen python -koodi. Kuten näette, haluamme käsitellä ohjelman argumentit samalla tavalla kuin varsinainen apuohjelma. Isäntänimi on ensimmäinen argumentti suoritettavan tiedoston nimen jälkeen, kun taas portti on toinen argumentti suoritettavan tiedoston nimen jälkeen komentorivillä.

Vaihe 3: Yhteyden luominen

Yhteyden luominen
Yhteyden luominen

Luodaan netcat -toiminto, jota voimme käyttää. Pohjimmiltaan teemme täällä pistorasian luomisen ja yhteyden muodostamisen palvelimeen annettujen parametrien avulla. Netcat -komennon nykyiset parametrit ovat palvelimen isäntänimi ja portti, johon yritämme muodostaa yhteyden. Pistorasia sisältää parametrit "socket. AF_INET" ja "socket. SOCK_STREAM", koska tässä opetusohjelmassa oletusarvoisesti käytetään TCP -yhteyttä.

Vaihe 4: Lähetetään sisältöä

Lähetetään sisältöä
Lähetetään sisältöä

Laajensimme netcat -toimintoamme ottamaan kolmannen parametrin, "content". Tässä on paljon sisältöä, joten jakakaamme se rivinumeron mukaan.

Rivi 14-16: lähetämme kaiken sisällön pistorasian yli, odotamme hetken ja suljemme sitten pistorasian kaikilta lähteviltä tiedoilta, jotta pistorasia tietää, ettei tietoja ole enää tulossa.

Rivi 18-26: luomme puskurin palvelimen vastauksen tallentamiseksi, ja kun pistorasia vastaanottaa dataa, liitämme tulokseen jopa 1024 tavua dataa niin kauan kuin on luettavaa.

Rivi 28-29: haluamme, että tämä netcat-yhteys on kertaluonteinen yhteys, joten julistamme yhteyden suljetuksi ja sitten suljemme yhteyden.

Rivi 31: Tämä on tavallinen HTTP -pyyntö. Jos suoritat koodin komentoriviargumenteilla "google.com" ja "80", näet oikean HTTP -vastauksen

Vaihe 5: Luo avoin yhteys

Saadaan avoin yhteys
Saadaan avoin yhteys

Yllä olevan koodin (joka sijaitsee edellisen osan koodin alla) avulla voimme yksinkertaisesti suorittaa useita netcat-komentoja pseudo-avoimen yhteyden yli. (Todellisuudessa joka kerta, kun suoritat komennon, se avaa ja sulkee uuden TCP -yhteyden, joten se ei todellakaan jäljittele netcatin käyttäytymistä, teemme tämän vain oppimistarkoituksiin). Jaetaan tämäkin rivi riviltä:

Rivi 31: Haluamme lukea komentoja loputtomasti "vuorovaikutteisuuden" ylläpitämiseksi

Rivi 32: Tämä on puskurimme, joka tallentaa pyyntömme sisällön

Rivi 36-45: Luemme puskuriin, kunnes luemme tyhjän rivin

Rivi 48: kutsumme yksinkertaisesti netcat -toimintoa isäntänimellä, portilla ja vasta luodulla sisällöllä (joka on koodattu oikein)

Rivi 50: jos puskurimme sisältö sisältää joskus "Yhteys: Sulje" (osoittaa, että haluamme sulkea yhteyden), me yksinkertaisesti poistumme silmukasta

Vaihe 6: Johtopäätös

Tämän opetusohjelman lopussa sinulla pitäisi olla minimaalinen toimiva netcat -toteutus. Jätän käyttäjän tehtäväksi toteuttaa seuraavat ominaisuudet:

1. muiden protokollien tukeminen

2. vahvista koodi, joka ei sulje yhteyttä joka kerta

3. lisäämällä lippuja, joiden netcatin on jo muutettava käyttäytymistä

Suositeltava: