Obsah:

Netcat v Pythonu: 6 kroků
Netcat v Pythonu: 6 kroků

Video: Netcat v Pythonu: 6 kroků

Video: Netcat v Pythonu: 6 kroků
Video: CS50x 2023 - Lecture 6 - Python 2024, Listopad
Anonim
Netcat v Pythonu
Netcat v Pythonu

Co je netcat? Stránka manuálu pro netcat uvádí následující: „Nástroj nc (nebo netcat) se používá téměř ke všemu, co je pod sluncem, včetně soketů domén TCP, UDP nebo UNIX. Může otevírat připojení TCP, odesílat pakety UDP, poslouchat libovolně Porty TCP a UDP provádějí skenování portů a vypořádávají se s protokoly IPv4 i IPv6. Na rozdíl od telnetu (1) skript nc pěkně skriptuje a odděluje chybové zprávy na standardní chyby místo jejich odesílání na standardní výstup, jak to dělá telnet (1) u některých"

Netcat vám v podstatě umožňuje připojit se k jiným serverům pomocí protokolu TCP nebo UDP. TCP znamená Transmission Control Protocol a je orientovaný na připojení. UDP znamená Universal Datagram Protocol a je bez připojení. TCP se běžně používá pro internetové aplikace, zatímco UDP se používá pro streamování médií nebo VPN.

Krok 1: Jak začneme?

Jak začneme?
Jak začneme?

Výše je uvedeno, jak se nazývá netcat. Vidíte, že na konci jsou dva argumenty s názvem „destinace“a „port“. Cíl odkazuje na název hostitele nebo IP adresu serveru, ke kterému se pokoušíme připojit, zatímco port odkazuje na port serveru, ke kterému se pokoušíme připojit.

Krok 2: Začněme

Pojďme začít
Pojďme začít

Nahoře je nějaký začínající kód pythonu. Jak vidíte, chceme zpracovat argumenty programu podobně, jako to dělá skutečný nástroj. Název hostitele bude prvním argumentem za názvem spustitelného souboru, zatímco port bude druhým argumentem za názvem spustitelného souboru na příkazovém řádku.

Krok 3: Vytvoření připojení

Vytvoření připojení
Vytvoření připojení

Vytvořme funkci netcat, kterou můžeme použít. V zásadě zde děláme vytvoření soketu a připojení k serveru pomocí zadaných parametrů. Pro příkaz netcat jsou aktuálními parametry název hostitele a port serveru, ke kterému se pokoušíme připojit. Soket obsahuje parametry „socket. AF_INET“a „socket. SOCK_STREAM“, protože pro tento výukový program používáme výchozí připojení TCP.

Krok 4: Umožňuje odeslat nějaký obsah

Pojďme poslat nějaký obsah
Pojďme poslat nějaký obsah

Rozšířili jsme naši funkci netcat, aby získala třetí parametr, „obsah“. Je tu hodně obsahu, pojďme to tedy rozdělit podle čísla řádku.

Řádek 14-16: odešleme veškerý obsah přes soket, chvíli počkáme a poté uzavřeme soket pro všechna odchozí data, aby soket věděl, že žádná další data nepřicházejí.

Řádek 18-26: vytvoříme vyrovnávací paměť pro uložení odpovědi serveru a zatímco soket přijímá data, připojíme k výsledku až 1024 bajtů dat, pokud jsou k dispozici data ke čtení.

Řádek 28-29: chceme, aby toto připojení k netcatu bylo jednorázové, proto prohlásíme připojení za uzavřené a poté připojení uzavřeme.

Řádek 31: Toto je standardní požadavek HTTP. Pokud spustíte kód s argumenty příkazového řádku „google.com“a „80“, uvidíte správnou odpověď

Krok 5: Pojďme mít otevřené připojení

Pojďme mít otevřené připojení
Pojďme mít otevřené připojení

Výše uvedený kód (který je umístěn pod kódem z předchozí části) nám jednoduše umožňuje spouštět více příkazů netcat přes pseudootevřené připojení. (Ve skutečnosti pokaždé, když spustíte příkaz, otevře a zavře nové připojení TCP, takže ve skutečnosti neimuluje chování netcatu, děláme to jednoduše pro účely učení). Pojďme to rozebrat také řádek po řádku:

Řádek 31: Chceme číst příkazy neomezeně, abychom udrželi „interaktivitu“

Řádek 32: Toto je naše vyrovnávací paměť, která bude ukládat obsah naší žádosti

Řádek 36-45: Budeme číst do vyrovnávací paměti, dokud nenačteme prázdný řádek

Řádek 48: Jednoduše zavoláme funkci netcat pomocí názvu hostitele, portu a nově vytvořeného obsahu (který je správně zakódován)

Řádek 50: pokud obsah naší vyrovnávací paměti někdy obsahuje „Připojení: Zavřít“(což znamená, že chceme připojení ukončit), jednoduše se vymaníme ze smyčky

Krok 6: Závěr

Na konci tohoto kurzu byste měli mít minimální funkční implementaci netcatu. Nechám na uživateli, aby implementoval funkce, jako jsou:

1. podpora dalších protokolů

2. oprava kódu, aby se připojení pokaždé neukončilo

3. přidání příznaků, které netcat již musí upravit chování

Doporučuje: