Turinys:

„Netcat“sistemoje „Python“: 6 žingsniai
„Netcat“sistemoje „Python“: 6 žingsniai

Video: „Netcat“sistemoje „Python“: 6 žingsniai

Video: „Netcat“sistemoje „Python“: 6 žingsniai
Video: Netcat - Режим сканирование портов 2024, Lapkritis
Anonim
„Netcat“„Python“
„Netcat“„Python“

Kas yra netcat? „Netcat“vadovo puslapyje rašoma: „„ nc “(arba„ netcat “) įrankis naudojamas beveik viskam, kas yra saulėje, įskaitant TCP, UDP ar UNIX domeno lizdus. Jis gali atverti TCP ryšius, siųsti UDP paketus, klausytis savavališkai TCP ir UDP prievadus, nuskaito prievadus ir tvarko ir IPv4, ir IPv6. Skirtingai nuo „telnet“(1), „nc“puikiai parašo scenarijus ir atskiria klaidų pranešimus į standartinę klaidą, o ne siunčia juos į standartinę išvestį, kaip kai kurie „telnet“(1)"

Iš esmės „netcat“leidžia prisijungti prie kitų serverių naudojant TCP arba UDP protokolą. TCP reiškia perdavimo valdymo protokolą ir yra orientuotas į ryšį. UDP reiškia „Universal Datagram Protocol“ir yra be ryšio. TCP dažniausiai naudojamas interneto programoms, o UDP - medijos srautiniam perdavimui ar VPN.

1 žingsnis: kaip pradėti?

Kaip mes pradedame?
Kaip mes pradedame?

Aukščiau yra kaip vadinamas netcat. Matote, kad pabaigoje yra du argumentai, pavadinti „paskirties vieta“ir „uostas“. Paskirties vieta nurodo serverio, prie kurio bandome prisijungti, pagrindinio kompiuterio pavadinimą arba IP adresą, o prievadas nurodo serverio, prie kurio bandome prisijungti, prievadą.

2 žingsnis: Pradėkime

Pradėkime
Pradėkime

Aukščiau yra pradinis python kodas. Kaip matote, mes norime apdoroti programos argumentus panašiai, kaip tai daro tikroji programa. Pagrindinio kompiuterio pavadinimas bus pirmasis argumentas po vykdomojo failo pavadinimo, o prievadas bus antrasis argumentas po vykdomojo failo pavadinimo komandinėje eilutėje.

3 žingsnis: sukurkite ryšį

Ryšio kūrimas
Ryšio kūrimas

Sukurkime „netcat“funkciją, kurią galime naudoti. Čia mes iš esmės darome lizdą ir prisijungiame prie serverio naudodami nurodytus parametrus. „Netcat“komandai dabartiniai parametrai yra serverio, prie kurio bandome prisijungti, prieglobos serverio pavadinimas ir prievadas. Lizde yra parametrai „socket. AF_INET“ir „socket. SOCK_STREAM“, nes šioje mokymo programoje numatytasis TCP ryšys.

4 veiksmas: leiskite siųsti tam tikrą turinį

Leidžia siųsti tam tikrą turinį
Leidžia siųsti tam tikrą turinį

Mes išplėtėme savo „netcat“funkciją ir įtraukėme trečiąjį parametrą „turinys“. Čia yra daug turinio, todėl suskirstykime jį pagal eilutės numerį.

14-16 eilutė: mes siunčiame visą turinį per lizdą, šiek tiek palaukiame, tada uždarome lizdą prie bet kokių išeinančių duomenų, kad lizdas žinotų, jog daugiau duomenų nėra.

18-26 eilutė: sukuriame buferį serverio atsakymui saugoti, o kol lizdas priima duomenis, prie rezultato pridedame iki 1024 baitų duomenų, kol yra duomenų, kuriuos reikia perskaityti.

28-29 eilutė: norime, kad šis „netcat“ryšys būtų vienkartinis, todėl paskelbsime, kad ryšys uždarytas, o po to jį uždarome.

31 eilutė: tai standartinė HTTP užklausa. Jei paleisite kodą naudodami komandinės eilutės argumentus „google.com“ir „80“, pamatysite tinkamą HTTP atsakymą

5 žingsnis: Leiskite užmegzti ryšį

Leiskite turėti atvirą ryšį
Leiskite turėti atvirą ryšį

Aukščiau pateiktas kodas (kuris yra žemiau kodo iš ankstesnio skyriaus) tiesiog leidžia mums vykdyti kelias „netcat“komandas per pseudoatvirtą ryšį. (Tiesą sakant, kiekvieną kartą paleidus komandą, ji atsidaro, o po to uždaro naują TCP ryšį, todėl tikrai nesimulijuoja „netcat“elgesio, mes tiesiog tai darome mokymosi tikslais). Taip pat suskirstykime šią eilutę po eilutės:

31 eilutė: norime neribotą laiką skaityti komandas, kad išlaikytume „interaktyvumą“

32 eilutė: tai yra mūsų buferis, kuriame bus saugomas mūsų užklausos turinys

36-45 eilutė: Mes perskaitysime buferį, kol perskaitysime tuščią eilutę

48 eilutė: mes tiesiog vadiname savo „netcat“funkciją, nurodydami pagrindinio kompiuterio pavadinimą, prievadą ir naujai sukurtą turinį (kuris yra tinkamai užkoduotas)

50 eilutė: jei mūsų buferio turinyje kada nors yra „Ryšys: uždaryti“(tai reiškia, kad norime uždaryti ryšį), mes tiesiog išeiname iš ciklo

6 žingsnis: Išvada

Šios pamokos pabaigoje turėtumėte turėti minimalų „netcat“diegimą. Aš palieku vartotojui įgyvendinti tokias funkcijas kaip:

1. remti kitus protokolus

2. nustatydami kodą, kad kiekvieną kartą ryšys nebūtų nutrauktas

3. pridedant žymes, kad „netcat“jau turi pakeisti elgesį

Rekomenduojamas: