Tartalomjegyzék:

Netcat a Pythonban: 6 lépés
Netcat a Pythonban: 6 lépés

Videó: Netcat a Pythonban: 6 lépés

Videó: Netcat a Pythonban: 6 lépés
Videó: How to check ports without telnet or netcat in #linux 2024, November
Anonim
Netcat a Pythonban
Netcat a Pythonban

Mi az a netcat? A netcat kézikönyvének oldala a következőket mondja: "Az nc (vagy netcat) segédprogram szinte mindenre használható, ahol a nap alatt TCP, UDP vagy UNIX tartományú socketeket használnak. Megnyithatja a TCP kapcsolatokat, UDP csomagokat küldhet, tetszőleges módon hallgathatja TCP és UDP portok, portok szkennelése és IPv4 és IPv6 kezelése is. A telnettől (1) eltérően az nc szkriptjei rendben vannak, és a hibaüzeneteket szabványos hibára osztja fel, ahelyett, hogy szabványos kimenetre küldi őket, ahogy a telnet (1) néhány"

Lényegében a netcat lehetővé teszi, hogy TCP vagy UDP protokoll használatával csatlakozzon más szerverhez. A TCP jelentése Transmission Control Protocol, és kapcsolatorientált. Az UDP jelentése Universal Datagram Protocol, és kapcsolat nélküli. A TCP -t általában internetes alkalmazásokhoz használják, míg az UDP -t média streaminghez vagy VPN -hez.

1. lépés: Hogyan kezdjük?

Hogyan kezdjük?
Hogyan kezdjük?

Fent a netcat neve. Látható, hogy a végén két érv található: "cél" és "port". A rendeltetési hely annak a kiszolgálónak a gazdagépnevére vagy IP -címére vonatkozik, amelyhez csatlakozni próbálunk, míg a port annak a kiszolgálónak a portjára utal, amelyhez csatlakozni próbálunk.

2. lépés: Kezdjük

Kezdjük
Kezdjük

A fenti néhány kezdő python kód. Amint láthatja, a programhoz tartozó érveket a tényleges segédprogramhoz hasonlóan szeretnénk feldolgozni. A gazdagépnév lesz az első argumentum a végrehajtható fájl neve után, míg a port a második argumentum a végrehajtható fájl neve után a parancssorban.

3. lépés: Kapcsolat létrehozása

Kapcsolat létrehozása
Kapcsolat létrehozása

Hozzunk létre egy használható netcat függvényt. Itt alapvetően egy aljzatot hozunk létre, és a megadott paraméterek használatával csatlakozunk a szerverhez. A netcat parancs esetében az aktuális paraméterek a kiszolgáló gazdaneve és portja, amelyhez csatlakozni próbálunk. Az aljzat tartalmazza a "socket. AF_INET" és "socket. SOCK_STREAM" paramétereket, mert ebben az oktatóanyagban alapértelmezés szerint TCP -kapcsolatot használunk.

4. lépés: Küldjünk el néhány tartalmat

Küldjünk néhány tartalmat
Küldjünk néhány tartalmat

Bővítettük a netcat függvényünket egy harmadik paraméterre, a "content" -re. Rengeteg tartalom van itt, ezért bontsuk le sorszám szerint.

14-16. Sor: az összes tartalmat az aljzaton keresztül küldjük, várunk egy kicsit, majd bezárjuk a foglalatot a kimenő adatokhoz, így a foglalat tudja, hogy nincs több adat.

18-26. Sor: puffert hozunk létre a szerver válaszának tárolására, és amíg az aljzat adatokat fogad, legfeljebb 1024 bájt adatot fűzünk az eredményhez, amíg van olvasandó adat.

28-29. Sor: azt akarjuk, hogy ez a netcat kapcsolat egyszeri kapcsolat legyen, ezért a kapcsolatot lezártnak nyilvánítjuk, majd lezárjuk a kapcsolatot.

31. sor: Ez egy szabványos HTTP -kérés. Ha a kódot a "google.com" és a "80" parancssori argumentumokkal futtatja, akkor megfelelő HTTP -választ fog látni

5. lépés: Legyen nyílt kapcsolatunk

Legyen nyitott kapcsolatunk
Legyen nyitott kapcsolatunk

A fenti kód (amely az előző szakasz kódja alatt található) egyszerűen lehetővé teszi számunkra, hogy futtassunk többszörös netcat parancsokat pszeudo-nyílt kapcsolaton keresztül. (Valójában minden egyes parancs futtatásakor megnyílik, majd bezár egy új TCP kapcsolatot, tehát nem igazán emulálja a netcat viselkedését, ezt egyszerűen tanulási célból tesszük). Ezt is lebonthatjuk soronként:

31. sor: Korlátlan ideig szeretnénk olvasni a parancsokat az "interaktivitás" fenntartása érdekében

32. sor: Ez a pufferünk, amely tárolja kérésünk tartalmát

36-45. Sor: Addig olvasunk a pufferbe, amíg ki nem olvasunk egy üres sort

48. sor: egyszerűen meghívjuk a netcat függvényünket a gazdagépnévvel, a porttal és az újonnan létrehozott tartalommal (amely megfelelően kódolt)

50. sor: ha pufferünk tartalma valaha tartalmaz "Connection: Close" (jelezve, hogy le akarjuk zárni a kapcsolatot), egyszerűen kitörünk a körből

6. lépés: Következtetés

Ennek az oktatóanyagnak a végén egy minimálisan működő netcat implementációval kell rendelkeznie. Gyakorlatként a felhasználóra bízom az olyan funkciók megvalósítását, mint:

1. egyéb protokollok támogatása

2. rögzítse a kódot, hogy ne zárja le a kapcsolatot minden alkalommal

3. olyan zászlók hozzáadása, amelyeknek a netcat -nek már módosítania kell a viselkedést

Ajánlott: