Sådan bruges netcat -netværksværktøjet

Indholdsfortegnelse

I denne tutorial vil vi tale om en meget kraftfuldt Netcat -netværksværktøj, almindeligt forkortet som nc. Dette værktøj bruges via kommandolinjen, og dets syntaks er meget enkel. Det giver os mulighed for at skrive og modtage data via sockets (TCP eller UDP). Det har mange funktioner, og derfor kan vi bruge det på mange måder. Det er vigtigt at kende dets funktion, da det giver os mulighed for at fejlsøge, teste og undersøge på netværket.

Netcat kan fungere i 2 tilstande:

KlientI denne tilstand er det ansvaret for forbindelsen til lytteren (som lytter på en bestemt adresse og IP, og som vi skal vide).

Server eller lytterVent på forbindelser fra klienter på en bestemt port.

Vi skal lære hvordan Netcat eller nc fungerer gennem praktiske eksempler, som er den bedste måde at lære på. Til dette vil jeg bruge operativsystemet Ubuntu 16.04.

Det første, vi skal se, er netcat -syntaksen:

 nc [muligheder] [mål] [port]
Netcat du har mange muligheder, lad os se nogle:

Nogle netcar muligheder

  • -l: Fortæller netcat at lytte.
  • -s: For at angive oprindelseshavnen.
  • -s: For at angive kildeadressen.
  • -k: For at tillade "uendelige" forbindelser lytteren (bruges med -l).
  • -eller: Netcat åbner porten som UDP i stedet for TCP (hvilket er som standard).
  • -v: Med denne mulighed viser det os forbindelsesoplysninger.
  • -jeg: For at angive forsinkelsen for afsendelse og modtagelse. (I sekunder).
  • -4: Tillader Netcat kun at bruge IPv4.
  • -6: Ligesom den forrige, men tvinger til at bruge IPv6.

Der er flere muligheder, som vi kan se ved at udføre følgende kommando:

 nc -h
Nedenfor kan du se på billedet:

Vi kommer til at starte med eksemplerne, det enkleste går først, for at komplicere dem, men bare lidt, vil du se, at det er meget let at bruge.

Eksempel 1
Sæt min maskine til at lytte på port 87:

 sudo nc -l -p 87
BemærkDet ville fungere samme fjernelse -s.

Nu skal vi oprette en forbindelse fra en anden terminal, da jeg kører den på den samme maskine, bruger jeg localhost som adressen:

 nc lokal vært 87
Hvis vi skriver noget fra klienten, som vi lige har åbnet, vil vi også se det i den terminal, der lytter, og dermed verificerer vi, at forbindelsen fungerer korrekt. Men hvis vi skriver til lytteren, den første terminal, når den også klienten. Dernæst efterlader jeg et billede af lytteren og en anden af ​​klienten:

Vi ser, at de kommunikerer, som vi ønskede i dette eksempel, lad os gå til en anden.

Eksempel 2
Vi kan få serveren eller lytteren til at gemme de data, der sendes af klienten i en fil, for at kommandoen, der skal udføres, ikke adskiller sig meget fra den, der ses i det første eksempel:

 sudo nc -l 87> test
Bemærktest er navnet på den fil, hvor du gemmer de oplysninger, der kommer.

På klientsiden vil kommandoen være den samme som før:

 nc lokal vært 87
Følgende billede viser, hvad der udføres på klienten (lytteren lytter, før den opretter forbindelse, ellers ville det ikke have nogen effekt):

Og på serversiden kan vi se, at der tilsyneladende ikke modtages noget, men den eneste sikkerhed er, at det ikke vises på skærmen og gemmes i testfilen:

Lad os fortsætte med et andet eksempel.

Eksempel 3
Vi skal kontrollere, om en række porte, for at vide, om de er åbne eller ej, i dette eksempel vil intervallet være 80-90. Først åbner vi en server på port 80, som vi gjorde i det første eksempel (så vi vil se, hvordan det fungerer, når det er åbent, og når det ikke er det):

 sudo nc -l 87
Og på klienten vil vi udføre:
 nc -z -v localhost 80-90
Parameter -z bruges til scanning, og -v Som vi så før for at vise oplysninger (hvis vi ikke sætter dette, viser det ikke, hvilken port der er åben, og hvilken der ikke er), så billede af klienten:

Vi skal se a eksempel i UDP.

Eksempel 4
Dette eksempel er også enkelt, vi vil lytte efter UDP på ​​port 2016, og vi vil tvinge det til at være en IPv4 -adresse:

 sudo nc -l -u -4 2016
Og nu får vi klienten til at oprette forbindelse:
 nc -u -4 2016
Jeg giver ikke et billede, da optagelsen vil være den samme som i eksempel 1, og selvfølgelig ændre delen af ​​kommandoen. Lad os gå videre til et eksempel, hvor vi bruger Python -kode.

Eksempel 5
Vi vil lægge en kode så enkel som muligt i Python, så den lytter efter en forbindelse, modtager en data og slutter.

 import socket s = socket.socket () s.bind (("192.168.56.1", 1987)) s.listen (1) conn, addr = s.accept () data = conn.recv (1024). decode (" utf-8 ") print (data) 
Jeg vil køre denne kode på Windows, og derefter fra Linux opretter jeg forbindelse til den via netcat, følgende billede viser klientsiden på Linux:

Og hvordan det ville se ud på Windows:

Hvis vi ændrer koden noget, kan vi få den til at udføre en kommando og sende os dens indhold, men vi kan også returnere en skal, som giver os mulighed for at gøre mange ting, så lad os gå videre til det næste eksempel.

Eksempel 6
I dette eksempel vil jeg køre en python -kode På den samme Linux -maskine, og jeg vil forbinde med netcat, skal vi kontrollere, at en Shell ( / bin / bash) returnerer os. Nedenfor forlader jeg Python -koden, så enkel og kort som muligt, kun for eksemplet.

 import socket, subprocess s = socket.socket (socket.AF_INET) s.setsockopt (socket.IPPROTO_IP, socket.SO_REUSEADDR, 1) s.bind (("", 1987)) s.listen (1) conn, addr = s .accept () p = subprocess.Popen ([" / bin / bash"], stdin = conn, stdout = conn, stder = conn) 
Python -koden udføres, og følgende ses (billedet viser, hvordan det ser ud, når der tilsluttes fra netcat):

Vi ser, at den lytter, når vi udfører den, men når en klient opretter forbindelse, lukker forbindelsen, og vi har en Shell til os.

Vi kunne også lave en kode, der forbinder til vores maskine, som vi vil sætte den til at lytte til på en bestemt port, generelt er der mange muligheder, nu skal du undersøge og "lege" med netcat, som du, som du har set, kan hjælpe os i mange øjeblikke.

Kan du lide og hjælpe denne vejledning?Du kan belønne forfatteren ved at trykke på denne knap for at give ham et positivt punkt

Du vil bidrage til udviklingen af ​​hjemmesiden, at dele siden med dine venner

wave wave wave wave wave