Obsah:

Netcat v Pythone: 6 krokov
Netcat v Pythone: 6 krokov

Video: Netcat v Pythone: 6 krokov

Video: Netcat v Pythone: 6 krokov
Video: Лучшая Графическая (GUI) Библиотека Для Python | Tkinter VS WxPython VS PyQt(PySide) VS Kivy 2024, November
Anonim
Netcat v Pythone
Netcat v Pythone

Čo je netcat? Stránka s manuálom pre netcat uvádza nasledovné: „Nástroj nc (alebo netcat) sa používa na takmer čokoľvek pod slnkom, vrátane zásuviek domény TCP, UDP alebo UNIX. Môže otvárať pripojenia TCP, odosielať pakety UDP, počúvať ľubovoľne Porty TCP a UDP vykonávajú skenovanie portov a vyrovnávajú sa s protokolmi IPv4 aj IPv6. Na rozdiel od telnetu (1), nc pekne skriptuje a namiesto odosielania na štandardný výstup oddeľuje chybové správy na štandardné chyby, ako to robí telnet (1)."

Netcat vám v podstate umožňuje pripojiť sa k iným serverom pomocou protokolu TCP alebo UDP. TCP je skratka pre Transmission Control Protocol a je orientovaná na pripojenie. UDP je skratka pre Universal Datagram Protocol a je bez pripojenia. TCP sa bežne používa pre internetové aplikácie, zatiaľ čo UDP sa používa pre streamovanie médií alebo VPN.

Krok 1: Ako začneme?

Ako začneme?
Ako začneme?

Hore je uvedené, ako sa nazýva netcat. Vidíte, že na konci sú dva argumenty s názvom „cieľ“a „port“. Cieľ odkazuje na názov hostiteľa alebo ip adresu servera, ku ktorému sa pokúšame pripojiť, zatiaľ čo port odkazuje na port servera, ku ktorému sa pokúšame pripojiť.

Krok 2: Začnime

Poďme začať
Poďme začať

Hore je nejaký začínajúci kód pythonu. Ako vidíte, argumenty v programe chceme spracovať podobne, ako to robí skutočný nástroj. Názov hostiteľa bude prvým argumentom za názvom spustiteľného súboru, zatiaľ čo port bude druhým argumentom za názvom spustiteľného súboru v príkazovom riadku.

Krok 3: Vytvorenie pripojenia

Vytvorenie spojenia
Vytvorenie spojenia

Vytvorme funkciu netcat, ktorú môžeme použiť. V zásade tu robíme vytvorenie soketu a pripojenie k serveru pomocou uvedených parametrov. Aktuálnymi parametrami príkazu netcat sú názov hostiteľa a port servera, ku ktorému sa pokúšame pripojiť. Soket obsahuje parametre „socket. AF_INET“a „socket. SOCK_STREAM“, pretože pre tento návod predvolene používame pripojenie TCP.

Krok 4: Poďme odoslať určitý obsah

Poďme odoslať nejaký obsah
Poďme odoslať nejaký obsah

Rozšírili sme našu funkciu netcat o tretí parameter, „obsah“. Je tu veľa obsahu, takže si to rozoberme podľa čísla riadka.

Riadok 14-16: odosielame všetok obsah cez soket, chvíľu počkáme a potom zatvoríme soket pre všetky odchádzajúce údaje, aby soket vedel, že už žiadne dáta neprichádzajú.

Riadok 18-26: vytvoríme vyrovnávaciu pamäť na uloženie odpovede servera a kým soket prijíma údaje, k výsledku pripojíme až 1024 bajtov údajov, pokiaľ existujú údaje na čítanie.

Riadok 28-29: chceme, aby toto pripojenie netcat bolo jednorazové, preto vyhlásime spojenie za uzavreté a potom spojenie uzatvoríme.

Riadok 31: Toto je štandardná požiadavka HTTP. Ak spustíte kód s argumentmi príkazového riadka „google.com“a „80“, zobrazí sa správna odpoveď

Krok 5: Poďme mať otvorené pripojenie

Poďme mať otvorené pripojenie
Poďme mať otvorené pripojenie

Vyššie uvedený kód (ktorý sa nachádza pod kódom z predchádzajúcej časti) nám jednoducho umožňuje spúšťať viac príkazov netcat cez pseudootvorené pripojenie. (V skutočnosti sa pri každom spustení príkazu otvorí a potom zatvorí nové pripojenie TCP, takže v skutočnosti nebude napodobňovať správanie siete netcat, robíme to jednoducho kvôli učeniu.) Poďme to tiež rozdeliť na riadky:

Riadok 31: Chceme čítať príkazy neobmedzene, aby sme zachovali „interaktivitu“

Riadok 32: Toto je naša vyrovnávacia pamäť, ktorá bude uchovávať obsah našej požiadavky

Riadok 36-45: Budeme čítať do vyrovnávacej pamäte, kým nenačítame prázdny riadok

Riadok 48: Jednoducho nazývame našu funkciu netcat pomocou názvu hostiteľa, portu a novo vytvoreného obsahu (ktorý je správne zakódovaný)

Riadok 50: ak obsah našej vyrovnávacej pamäte niekedy obsahuje „Pripojenie: zatvorenie“(naznačuje, že chceme ukončiť spojenie), jednoducho sa vymaníme zo slučky

Krok 6: Záver

Na konci tohto tutoriálu by ste mali mať minimálnu funkčnú implementáciu netcat. Nechám na užívateľovi, aby implementoval funkcie, ako napríklad:

1. podpora ďalších protokolov

2. oprava kódu, aby sa zakaždým neukončilo spojenie

3. pridanie vlajok, ktoré netcat už musí zmeniť správanie

Odporúča: