Spisu treści:
- Krok 1: Jak zaczynamy?
- Krok 2: Zacznijmy
- Krok 3: Tworzenie połączenia
- Krok 4: wyślijmy trochę treści
- Krok 5: Miejmy otwarte połączenie
- Krok 6: Wniosek
Wideo: Netcat w Pythonie: 6 kroków
2024 Autor: John Day | [email protected]. Ostatnio zmodyfikowany: 2024-01-30 11:31
Co to jest netcat? Strona podręcznika dla netcata mówi: "narzędzie nc (lub netcat) jest używane do prawie wszystkiego pod słońcem, obejmującego gniazda TCP, UDP lub domeny UNIX. Może otwierać połączenia TCP, wysyłać pakiety UDP, nasłuchiwać arbitralnie Porty TCP i UDP, wykonują skanowanie portów i obsługują zarówno IPv4, jak i IPv6. W przeciwieństwie do telnet(1), skrypty nc ładnie rozdzielają komunikaty o błędach na standardowe błędy zamiast wysyłać je na standardowe wyjście, tak jak robi to telnet(1) z niektórymi"
Zasadniczo netcat umożliwia łączenie się z innymi serwerami za pomocą protokołu TCP lub UDP. TCP to skrót od Transmission Control Protocol i jest zorientowany na połączenie. UDP oznacza Universal Datagram Protocol i jest bezpołączeniowy. TCP jest powszechnie używany w aplikacjach internetowych, podczas gdy UDP jest używany do przesyłania strumieniowego multimediów lub sieci VPN.
Krok 1: Jak zaczynamy?
Powyżej tak nazywa się netcat. Widać, że na końcu są dwa argumenty zwane „miejscem docelowym” i „portem”. Miejsce docelowe odnosi się do nazwy hosta lub adresu IP serwera, z którym próbujemy się połączyć, podczas gdy port odnosi się do portu serwera, z którym próbujemy się połączyć.
Krok 2: Zacznijmy
Powyżej znajduje się początkowy kod Pythona. Jak widać, chcemy przetwarzać argumenty do programu podobnie, jak robi to rzeczywiste narzędzie. Nazwa hosta będzie pierwszym argumentem po nazwie pliku wykonywalnego, podczas gdy port będzie drugim argumentem po nazwie pliku wykonywalnego w wierszu poleceń.
Krok 3: Tworzenie połączenia
Stwórzmy funkcję netcat, której możemy użyć. To, co w zasadzie tutaj robimy, to tworzenie gniazda i łączenie się z serwerem przy użyciu podanych parametrów. W przypadku polecenia netcat bieżącymi parametrami są nazwa hosta i port serwera, z którym próbujemy się połączyć. Gniazdo zawiera parametry „socket. AF_INET” i „socket. SOCK_STREAM”, ponieważ w tym samouczku domyślnie używamy połączenia TCP.
Krok 4: wyślijmy trochę treści
Rozszerzyliśmy naszą funkcję netcat o trzeci parametr, „treść”. Jest tu dużo treści, więc podzielmy to według numeru wiersza.
Linia 14-16: przesyłamy całą zawartość przez gniazdo, czekamy chwilę, a następnie zamykamy gniazdo dla wszystkich danych wychodzących, aby gniazdo wiedziało, że nie ma więcej danych.
Linia 18-26: tworzymy bufor do przechowywania odpowiedzi serwera, a gdy gniazdo odbiera dane, dodajemy do wyniku do 1024 bajtów danych, o ile są dane do odczytania.
Linia 28-29: chcemy, aby to połączenie netcat było połączeniem jednorazowym, więc deklarujemy połączenie zamknięte, a następnie zamykamy połączenie.
Linia 31: To jest standardowe żądanie HTTP. Jeśli uruchomisz kod z argumentami wiersza poleceń „google.com” i „80”, zobaczysz poprawną odpowiedź
Krok 5: Miejmy otwarte połączenie
Powyższy kod (który znajduje się pod kodem z poprzedniej sekcji) po prostu pozwala nam uruchamiać wiele poleceń netcata przez połączenie pseudo-otwarte. (W rzeczywistości za każdym razem, gdy uruchamiasz polecenie, otwiera ono, a następnie zamyka nowe połączenie TCP, więc tak naprawdę nie naśladuje zachowania netcata, robimy to po prostu w celach edukacyjnych). Przeanalizujmy to również linia po linii:
Linia 31: Chcemy czytać polecenia w nieskończoność, aby zachować „interaktywność”
Linia 32: To jest nasz bufor, w którym będzie przechowywana zawartość naszego żądania
Linia 36-45: Będziemy czytać do bufora, dopóki nie odczytamy pustej linii
Linia 48: po prostu wywołujemy naszą funkcję netcat z nazwą hosta, portem i nowo utworzoną zawartością (która jest poprawnie zakodowana)
Linia 50: jeśli zawartość naszego bufora kiedykolwiek zawiera "Connection: Close" (wskazując, że chcemy zamknąć połączenie), po prostu wyrywamy się z pętli
Krok 6: Wniosek
Pod koniec tego samouczka powinieneś mieć minimalną działającą implementację netcata. Jako ćwiczenie pozostawiam użytkownikowi zaimplementowanie funkcji takich jak:
1. wspieranie innych protokołów
2. naprawienie kodu, aby nie zamykać połączenia za każdym razem;
3. dodanie flag, które netcat już musi zmodyfikować,
Zalecana:
Skaner kodów QR przy użyciu OpenCV w Pythonie: 7 kroków
Skaner kodów QR przy użyciu OpenCV w Pythonie: W dzisiejszym świecie widzimy, że kod QR i kod kreskowy są używane prawie wszędzie, od pakowania produktów po płatności online, a obecnie widzimy kody QR nawet w restauracji, aby zobaczyć menu. Więc nie wątpię, że teraz jest to wielka myśl. Ale czy kiedykolwiek
Program w Pythonie - naliczanie odsetek Z miesięcznymi składkami/depozytami: 5 kroków
Python Program - Składane odsetki Z miesięcznymi składkami/depozytami: Program do obliczania odsetek składanych z miesięcznymi składkami na koniec miesiąca.Formuła zaczerpnięta z TheCalculatorSite.com:Oprocentowanie złożone dla kapitału: P(1+r/n)^(nt) Przyszła wartość szeregu: PMT × (((1 + r/n)^nt - 1) / (r/n))
Obserwator wilgotności i temperatury używający Raspberry Pi z SHT25 w Pythonie: 6 kroków
Obserwator wilgotności i temperatury używający Raspberry Pi z SHT25 w Pythonie: Będąc entuzjastami Raspberry Pi, pomyśleliśmy o kilku bardziej spektakularnych eksperymentach z nim. W tej kampanii stworzymy obserwatora wilgotności i temperatury, który mierzy wilgotność względną i temperaturę za pomocą Raspberry Pi i SHT25, Humid
Prosty backdoor w Pythonie: 7 kroków
Prosty backdoor w Pythonie: więc po prawie roku od uruchomienia mojego prostego backdoora Netcat, zostałem zainspirowany do stworzenia podobnej, ale bardziej funkcjonalnej wersji przy użyciu języka programowania Python, ponieważ jest to dość prosty język w porównaniu z innymi. Więc jeśli
MIDI Drum Kit na Pythonie i Arduino: 5 kroków (ze zdjęciami)
MIDI Drum Kit na Pythonie i Arduino: Zawsze chciałem kupić zestaw perkusyjny, odkąd byłem dzieckiem. W tamtych czasach cały sprzęt muzyczny nie miał wszystkich zastosowań cyfrowych, bo dzisiaj mamy ich pod dostatkiem, stąd ceny i oczekiwania były zbyt wysokie. Ostatnio zdecydowałem się na zakup c