Sisukord:

Netcat Pythonis: 6 sammu
Netcat Pythonis: 6 sammu

Video: Netcat Pythonis: 6 sammu

Video: Netcat Pythonis: 6 sammu
Video: Алгоритмы на Python 3. Лекция №6 2024, Juuli
Anonim
Netcat Pythonis
Netcat Pythonis

Mis on netcat? Netcati käsiraamatulehel on öeldud järgmist: "utiliiti nc (või netcat) kasutatakse peaaegu kõigeks päikese all, mis hõlmab TCP-, UDP- või UNIX-domeeni pistikupesasid. See võib avada TCP-ühendusi, saata UDP-pakette, kuulata suvaliselt TCP- ja UDP -pordid, skaneerivad pordid ja tegelevad nii IPv4 kui ka IPv6 -ga. Erinevalt telnetist (1) skriptib nc kenasti ja eraldab veateated standardveale, selle asemel, et saata need standardväljundisse, nagu mõne telnet (1) puhul"

Sisuliselt võimaldab netcat ühendada teiste serveritega TCP või UDP protokolli abil. TCP tähistab edastamise juhtimisprotokolli ja on ühendusele orienteeritud. UDP tähistab Universal Datagram Protocol ja on ühenduseta. TCP -d kasutatakse tavaliselt Interneti -rakenduste jaoks, samas kui UDP -d kasutatakse meedia voogesituse või VPN -ide jaoks.

Samm: kuidas me alustame?

Kuidas me alustame?
Kuidas me alustame?

Eespool on, kuidas netcatit nimetatakse. Näete, et lõpus on kaks argumenti nimega "sihtkoht" ja "sadam". Sihtkoht viitab selle serveri hosti nimele või IP -aadressile, millega proovime ühendust luua, samas kui port viitab selle serveri pordile, millega proovime ühendust luua.

2. samm: alustame

Alustagem
Alustagem

Eespool on mõned algavad pythoni koodid. Nagu näete, tahame programmi argumente töödelda sarnaselt tegeliku kasulikkusega. Hosti nimi on esimene argument pärast käivitatava faili nime, port aga teine argument pärast käsureal käivitatava faili nime.

3. samm: ühenduse loomine

Ühenduse loomine
Ühenduse loomine

Loome netcati funktsiooni, mida saame kasutada. Põhimõtteliselt teeme siin pistikupesa ja ühendame serveriga antud parameetrite abil. Käsu netcat jaoks on praegused parameetrid selle serveri hostinimi ja port, millega proovime ühendust luua. Pistikupesa sisaldab parameetreid "socket. AF_INET" ja "socket. SOCK_STREAM", kuna selle õpetuse jaoks vaikimisi kasutame TCP -ühendust.

Samm 4: Võimaldab saata teatud sisu

Võimaldab saata teatud sisu
Võimaldab saata teatud sisu

Laiendasime oma netcati funktsiooni, et võtta kolmas parameeter "sisu". Siin on palju sisu, nii et jaotagem see reanumbri järgi.

Rida 14-16: saadame kogu sisu üle pistikupesa, ootame natuke ja seejärel sulgeme pistikupesa mis tahes väljuvate andmete jaoks, nii et pistikupesa teab, et enam andmeid ei tule.

Rida 18-26: loome puhver serveri vastuse salvestamiseks ja samal ajal kui pistikupesa andmeid võtab, lisame tulemusele kuni 1024 baiti andmeid seni, kuni on andmeid lugeda.

Rida 28-29: me tahame, et see netcat-ühendus oleks ühekordne ühendus, seega kuulutame ühenduse suletuks ja seejärel ühenduse.

Rida 31: see on tavaline HTTP -päring. Kui käivitate koodi käsurea argumentidega "google.com" ja "80", näete õiget HTTP -vastust

Samm: avame ühenduse

Võimaldab luua avatud ühenduse
Võimaldab luua avatud ühenduse

Ülaltoodud kood (mis asub eelmise jaotise koodi all) võimaldab meil lihtsalt pseudo-avatud ühenduse kaudu käivitada mitu netcat-käsku. (Tegelikult avab ja sulgeb iga kord käsu käivitamisel uue TCP -ühenduse, nii et see ei jäljenda tõeliselt netcati käitumist, me teeme seda lihtsalt õppimise eesmärgil). Jagame selle ka rida -realt:

Rida 31: me tahame käske lõputult lugeda, et säilitada interaktiivsus

Rida 32: see on meie puhver, mis salvestab meie taotluse sisu

Rida 36-45: loeme puhvrisse, kuni loeme tühja rida

Rida 48: me lihtsalt kutsume oma funktsiooni netcat koos hosti nime, pordi ja vastloodud sisuga (mis on korralikult kodeeritud)

50. rida: kui meie puhvri sisu sisaldab kunagi "Connection: Close" (mis näitab, et tahame ühenduse sulgeda), siis me lihtsalt lahkume tsüklist

6. samm: järeldus

Selle õpetuse lõpus peaks teil olema minimaalne töötav netcati juurutamine. Jätan kasutaja ülesandeks rakendada selliseid funktsioone nagu:

1. teiste protokollide toetamine

2. kinnitage kood, et mitte iga kord ühendust katkestada

3. lisades lippe, et netcat peab juba käitumist muutma

Soovitan: