Innehållsförteckning:

Netcat i Python: 6 steg
Netcat i Python: 6 steg

Video: Netcat i Python: 6 steg

Video: Netcat i Python: 6 steg
Video: Python for Automating Information Security: What Is Netcat? | packtpub.com 2024, Juli
Anonim
Netcat i Python
Netcat i Python

Vad är netcat? Den manuella sidan för netcat säger följande: "verktyget nc (eller netcat) används för nästan allt under solen som involverar TCP-, UDP- eller UNIX-domänuttag. Det kan öppna TCP-anslutningar, skicka UDP-paket, lyssna på godtyckligt TCP- och UDP -portar, gör portskanning och hanterar både IPv4 och IPv6. Till skillnad från telnet (1), nc -skript snyggt och separerar felmeddelanden till standardfel istället för att skicka dem till standardutgång, som telnet (1) gör med vissa"

I huvudsak låter netcat dig ansluta till andra servrar med TCP- eller UDP -protokollet. TCP står för Transmission Control Protocol och är anslutningsorienterat. UDP står för Universal Datagram Protocol och är anslutningsfritt. TCP används vanligtvis för internetapplikationer, medan UDP används för mediestreaming eller VPN.

Steg 1: Hur börjar vi?

Hur börjar vi?
Hur börjar vi?

Ovan är hur netcat kallas. Du kan se att det finns två argument i slutet som kallas "destination" och "port". Destinationen avser ett värdnamn eller ip -adress för servern vi försöker ansluta till, medan porten hänvisar till porten på servern vi försöker ansluta till.

Steg 2: Låt oss börja

Låt oss börja
Låt oss börja

Ovan är en början pythonkod. Som du kan se vill vi bearbeta argumenten till programmet på samma sätt som det faktiska verktyget gör. Värdnamnet är det första argumentet efter den körbara namnet, medan porten är det andra argumentet efter den körbara namnet på kommandoraden.

Steg 3: Skapa en anslutning

Skapa en anslutning
Skapa en anslutning

Låt oss skapa en netcat -funktion som vi kan använda. Vad vi i princip gör här är att skapa ett uttag och ansluta till servern med de angivna parametrarna. För kommandot netcat är de aktuella parametrarna värdnamn och port på servern som vi försöker ansluta till. Socket innehåller parametrarna "socket. AF_INET" och "socket. SOCK_STREAM" eftersom vi som standard använder en TCP -anslutning för den här självstudien.

Steg 4: Låt oss skicka lite innehåll

Låt oss skicka lite innehåll
Låt oss skicka lite innehåll

Vi utökade vår netcat -funktion till att ta en tredje parameter, "innehåll". Det finns mycket innehåll här så låt oss bryta ner det efter radnummer.

Rad 14-16: vi skickar allt innehåll över uttaget, vi väntar lite och stänger sedan uttaget för utgående data så att uttaget vet att det inte kommer mer data.

Rad 18-26: vi skapar en buffert för att lagra serversvaret, och medan sockeln tar emot data lägger vi upp till 1024 byte med data till resultatet så länge det finns data att läsa.

Rad 28-29: vi vill att denna netcat-anslutning ska vara en engångsanslutning, så vi förklarar anslutningen avslutad och stänger sedan anslutningen.

Rad 31: Detta är en standard HTTP -begäran. Om du kör koden med kommandoradsargumenten "google.com" och "80" ser du ett korrekt HTTP -svar

Steg 5: Låt oss ha en öppen anslutning

Låt oss ha en öppen anslutning
Låt oss ha en öppen anslutning

Ovanstående kod (som ligger under koden från föregående avsnitt) låter oss helt enkelt köra flera nätcat-kommandon över en pseudo-öppen anslutning. (I verkligheten, varje gång du kör ett kommando, öppnas det och stängs sedan en ny TCP -anslutning, så det efterliknar inte riktigt netcats beteende, vi gör det helt enkelt för inlärningsändamål). Låt oss bryta ner denna rad för rad också:

Rad 31: Vi vill läsa kommandon på obestämd tid för att behålla "interaktivitet"

Rad 32: Detta är vår buffert som lagrar innehållet i vår begäran

Rad 36-45: Vi kommer att läsa in i bufferten tills vi läser en tom rad

Rad 48: vi kallar helt enkelt vår netcat -funktion med värdnamn, port och nyskapat innehåll (som är korrekt kodat)

Rad 50: om innehållet i vår buffert någonsin innehåller "Anslutning: Stäng" (indikerar att vi vill stänga anslutningen), bryter vi helt enkelt ur slingan

Steg 6: Slutsats

I slutet av denna handledning bör du ha en minimal fungerande netcat -implementering. Jag lämnar det som en övning för användaren att implementera funktioner som:

1. stödja andra protokoll

2. fixa koden för att inte stänga anslutningen varje gång

3. lägga till flaggor som netcat redan måste ändra beteendet

Rekommenderad: