Slik bruker du netcat -nettverksverktøyet

Innholdsfortegnelse

I denne opplæringen skal vi snakke om a veldig kraftig Netcat nettverksverktøy, ofte forkortet som nc. Dette verktøyet brukes gjennom kommandolinjen, og syntaksen er veldig enkel. Det vil tillate oss å skrive og motta data gjennom stikkontakter (TCP eller UDP). Den har mange funksjoner, og derfor kan vi bruke den på mange måter. Det er viktig å kjenne til driften, siden det vil tillate oss å feilsøke, teste og undersøke på nettverket.

Netcat kan operere i 2 moduser:

KlientI denne modusen vil den ha ansvaret for å koble til lytteren (som lytter på en bestemt adresse og IP, og som vi må vite).

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

Vi kommer til å lære hvordan Netcat eller nc fungerer gjennom praktiske eksempler, som er den beste måten å lære. Til dette vil jeg bruke operativsystemet Ubuntu 16.04.

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

 nc [alternativer] [mål] [port]
Netcat du har mange alternativer, la oss se noen:

Noen netcar -alternativer

  • -l: Forteller netcat å lytte.
  • -s: For å angi opprinnelsesporten.
  • -s: For å angi kildeadressen.
  • -k: For å tillate "uendelige" tilkoblinger lytteren (brukt med -l).
  • -eller: Netcat åpner porten som UDP i stedet for TCP (som er standard).
  • -v: Med dette alternativet vil det vise oss tilkoblingsinformasjon.
  • -Jeg: For å indikere forsinkelsen for sending og mottak. (I sekunder).
  • -4: Lar Netcat bare bruke IPv4.
  • -6: Som den forrige, men tvinger til å bruke IPv6.

Det er flere alternativer som vi kan se ved å utføre følgende kommando:

 nc -h
Nedenfor ser du på bildet:

Vi skal begynne med eksemplene, det enkleste vil gå først, for å komplisere dem, men bare litt, vil du se at det er veldig enkelt å bruke.

Eksempel 1
Sett maskinen min til å lytte på port 87:

 sudo nc -l -p 87
MerkDet ville fungere på samme måte å fjerne -s.

Nå skal vi opprette en forbindelse fra en annen terminal, ettersom jeg kjører den på samme maskin, bruker jeg localhost som adressen:

 nc lokal vert 87
Hvis vi skriver noe fra klienten som vi nettopp har åpnet, vil vi også se det i terminalen som lytter, og dermed bekrefter vi at tilkoblingen fungerer som den skal. Men hvis vi skriver til lytteren, den første terminalen, når den også klienten. Deretter legger jeg igjen et bilde av lytteren og en annen av klienten:

Vi ser at de kommuniserer som vi ønsket i dette eksemplet, la oss gå for en annen.

Eksempel 2
Vi kan få serveren eller lytteren til å lagre dataene som sendes av klienten i en fil, for dette skiller kommandoen som skal utføres ikke mye fra den som ble sett i det første eksemplet:

 sudo nc -l 87> test
Merktest er navnet på filen der du vil lagre informasjonen som kommer.

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

 nc lokal vert 87
Følgende bilde viser hva som utføres på klienten (lytteren lytter før den kobles til, ellers ville det ikke ha noen effekt):

Og på serversiden kan vi se at ingenting tilsynelatende er mottatt, men den eneste sikkerhet er at det ikke vises på skjermen og er lagret i testfilen:

La oss fortsette med et annet eksempel.

Eksempel 3
Vi skal sjekke om en rekke porter, for å vite om de er åpne eller ikke, i dette eksemplet vil rekkevidden være 80-90. Først åpner vi en server på port 80 som vi gjorde i det første eksemplet (så får vi se hvordan det fungerer når det er åpent, og når det ikke er det):

 sudo nc -l 87
Og på klienten vil vi utføre:
 nc -z -v lokal vert 80-90
Parameter -z brukes til skanning, og -v Som vi så før for å vise informasjon (hvis vi ikke legger dette, vil det ikke vise hvilken port som er åpen og hvilken som ikke er), så bildet av klienten:

Vi skal se a eksempel i UDP.

Eksempel 4
Dette eksemplet er også enkelt, vi skal lytte etter UDP på ​​port 2016, og vi kommer til å tvinge det til å være en IPv4 -adresse:

 sudo nc -l -u -4 2016
Og nå får vi klienten til å koble til:
 nc -u -4 2016
Jeg gir ikke et bilde, siden fangsten vil være den samme som i eksempel 1, og selvfølgelig endre delen av kommandoen. La oss gå videre til et eksempel der vi bruker Python -kode.

Eksempel 5
Vi skal sette en så enkel kode som mulig i Python, slik at den lytter etter en tilkobling, mottar 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 skal kjøre denne koden på Windows, og deretter fra Linux vil jeg koble til den via netcat, følgende bilde viser klientsiden på Linux:

Og hvordan det ville se ut på Windows:

Hvis vi endrer koden noe, kan vi få den til å utføre en kommando og sende oss innholdet, men vi kan også returnere et skall som lar oss gjøre mange ting, så la oss gå videre til neste eksempel.

Eksempel 6
I dette eksemplet skal jeg kjøre a python -kode På den samme Linux -maskinen, og jeg skal koble til netcat, skal vi sjekke at en Shell ( / bin / bash) returnerer oss. Nedenfor forlater jeg Python -koden, så enkel og kort som mulig, bare for eksempelet.

 import socket, subprosess s = socket.socket (socket.AF_INET) s.setsockopt (socket.IPPROTO_IP, socket.SO_REUSEADDR, 1) s.bind (("", 1987)) s.listen (1) conn, addr = s .aksept () p = delprosess.Popen ([" / bin / bash"], stdin = conn, stdout = conn, stder = conn) 
Python -koden kjøres og følgende ses (bildet viser hvordan det ser ut ved tilkobling fra netcat):

Vi ser at den lytter når vi kjører den, men når en klient kobler seg til, stenger forbindelsen, og vi har et Shell for oss.

Vi kan også lage en kode som kobles til maskinen vår, som vi vil sette den til å lytte til på en bestemt port, generelt er det mange muligheter, nå må du undersøke og "spille" med netcat, som du har sett kan hjelpe oss i mange øyeblikk.

Likte og hjalp du denne opplæringen?Du kan belønne forfatteren ved å trykke på denne knappen for å gi ham et positivt poeng

Du vil bidra til utvikling av området, dele siden med vennene dine

wave wave wave wave wave