Talaan ng mga Nilalaman:

Netcat sa Python: 6 na Hakbang
Netcat sa Python: 6 na Hakbang

Video: Netcat sa Python: 6 na Hakbang

Video: Netcat sa Python: 6 na Hakbang
Video: Email with Python 2024, Nobyembre
Anonim
Netcat sa Python
Netcat sa Python

Ano ang netcat? Ang manu-manong pahina para sa netcat ay nagsabi ng mga sumusunod: "ang utility ng nc (o netcat) ay ginagamit para sa anumang bagay sa ilalim ng araw na kinasasangkutan ng mga socket ng domain na TCP, UDP, o UNIX. Maaari itong buksan ang mga koneksyon sa TCP, magpadala ng mga packet ng UDP, makinig sa di-makatwirang Mga port ng TCP at UDP, gawin ang pag-scan sa port, at pakikitungo sa parehong IPv4 at IPv6. Hindi tulad ng telnet (1), maganda ang mga script ng nc, at pinaghihiwalay ang mga mensahe ng error sa karaniwang error sa halip na ipadala ang mga ito sa karaniwang output, tulad ng ginagawa ng telnet (1) sa ilan"

Sa esensya, pinapayagan ka ng netcat na kumonekta sa iba pang mga server gamit ang TCP o UDP protocol. Ang TCP ay nangangahulugang Transmission Control Protocol, at nakatuon sa koneksyon. Ang UDP ay nangangahulugang Universal Datagram Protocol, at walang koneksyon. Karaniwang ginagamit ang TCP para sa mga aplikasyon sa internet, habang ang UDP ay ginagamit para sa streaming ng media o mga VPN.

Hakbang 1: Paano Kami Magsisimula?

Paano Kami Magsisimula?
Paano Kami Magsisimula?

Sa itaas ay kung paano tinawag ang netcat. Maaari mong makita na mayroong dalawang mga argumento sa dulo na tinatawag na "patutunguhan" at "port." Ang patutunguhan ay tumutukoy sa isang hostname o ip address ng server na sinusubukan naming kumonekta, habang ang port ay tumutukoy sa port ng server na sinusubukan naming kumonekta.

Hakbang 2: Magsimula Na

Magsisimula Na
Magsisimula Na

Sa itaas ay ilang panimulang python code. Tulad ng nakikita mo, nais naming iproseso ang mga argumento sa programa na katulad sa kung paano ang aktwal na utility. Ang hostname ay magiging unang argumento pagkatapos ng pangalan ng maipapatupad, habang ang port ay magiging pangalawang argument matapos ang pangalan ng maipapatupad sa linya ng utos.

Hakbang 3: Lumilikha ng isang Koneksyon

Lumilikha ng isang Koneksyon
Lumilikha ng isang Koneksyon

Lumikha tayo ng isang netcat function na maaari nating magamit. Ano ang karaniwang ginagawa namin dito ay ang paglikha ng isang socket at pagkonekta sa server gamit ang mga ibinigay na parameter. Para sa utos ng netcat, ang kasalukuyang mga parameter ay ang hostname at port ng server na sinusubukan naming kumonekta. Naglalaman ang socket ng mga parameter na "socket. AF_INET" at "socket. SOCK_STREAM" sapagkat nagde-default kami sa isang koneksyon sa TCP para sa tutorial na ito.

Hakbang 4: Nagbibigay-daan sa Magpadala ng Ilang Nilalaman

Nagbibigay-daan sa Magpadala ng Ilang Nilalaman
Nagbibigay-daan sa Magpadala ng Ilang Nilalaman

Pinahaba namin ang aming netcat function upang kumuha ng pangatlong parameter, "nilalaman." Maraming nilalaman dito kaya't paghiwalayin natin ito sa pamamagitan ng numero ng linya.

Linya 14-16: ipinapadala namin ang lahat ng nilalaman sa socket, naghihintay kami nang kaunti, at pagkatapos ay isinasara namin ang socket sa anumang papalabas na data upang malaman ng socket na wala nang darating na data.

Linya 18-26: lumilikha kami ng isang buffer upang maiimbak ang tugon ng server, at habang ang socket ay tumatanggap ng data, idinagdag namin ang hanggang sa 1024 bytes ng data sa resulta hangga't may data na basahin.

Linya 28-29: nais naming ang koneksyon sa netcat na ito ay isang isang beses na koneksyon, kaya idineklara namin na sarado ang koneksyon at pagkatapos isara ang koneksyon.

Linya 31: Ito ay isang pamantayang kahilingan sa HTTP. Kung patakbuhin mo ang code na may mga linya ng utos na utos na "google.com" at "80," makikita mo ang isang tamang tugon sa

Hakbang 5: Hinahayaan Magkaroon ng Bukas na Koneksyon

Hinahayaan Magkaroon ng isang Bukas na Koneksyon
Hinahayaan Magkaroon ng isang Bukas na Koneksyon

Ang code sa itaas (na kung saan matatagpuan sa ibaba ng code mula sa nakaraang seksyon) ay pinapayagan lamang kaming magpatakbo ng mga multple netcat command sa isang pseudo-open na koneksyon. (Sa katotohanan, sa tuwing nagpapatakbo ka ng isang utos, magbubukas ito at pagkatapos magsara ng isang bagong koneksyon sa TCP, kaya't hindi nito tunay na ginaya ang pag-uugali ng netcat, ginagawa lamang namin ito para sa mga layunin ng pag-aaral). Hinahayaan din itong masira sa pamamagitan ng linya din:

Linya 31: Nais naming basahin ang mga utos nang walang katiyakan upang mapanatili ang "pagiging interactive"

Linya 32: Ito ang aming buffer na mag-iimbak ng nilalaman ng aming kahilingan

Linya 36-45: Magbabasa kami sa buffer hanggang mabasa namin ang isang walang laman na linya

Line 48: tawagan lang namin ang aming netcat function na may hostname, port, at bagong nilikha na nilalaman (na maayos na naka-encode)

Linya 50: kung ang nilalaman ng aming buffer ay naglalaman ng "Koneksyon: Isara" (na nagpapahiwatig na nais naming isara ang koneksyon), lumalabas lamang kami mula sa loop

Hakbang 6: Konklusyon

Sa pagtatapos ng tutorial na ito dapat kang magkaroon ng isang minimal na gumaganang pagpapatupad ng netcat. Iiwan ko ito bilang isang ehersisyo sa gumagamit upang magpatupad ng mga tampok tulad ng:

1. pagsuporta sa iba pang mga protokol

2. pag-aayos ng code upang hindi isara ang koneksyon sa bawat oras

3. pagdaragdag ng mga watawat na mayroon nang netcat upang baguhin ang pag-uugali

Inirerekumendang: