Welcome to Our Website

Linux comanda nc

Actualizat: 03/06/2020 de Calculator Speranță

Pe Unix-cum ar fi sistemele de operare, nc execută comanda Netcat, un utilitar pentru trimiterea de date brute de peste o conexiune de rețea.acest document acoperă versiunea Linux a nc.

descriere

Netcat este un utilitar care citește și scrie date în conexiunile de rețea, folosind protocolul TCP sau UDP. Este conceput pentru a fi un instrument fiabil „back-end” care poate fi utilizat direct sau condus de alte programe și scripturi., În același timp, este un instrument de depanare și explorare a rețelei bogat în funcții, deoarece poate crea aproape orice fel de conexiune de care ai avea nevoie și are mai multe capabilități interesante încorporate. Utilizări comune includ:

  • Simplu TCP proxy-uri
  • Shell-script bazat pe HTTP clienți și servere
  • Rețea daemon testare
  • Un Șosete sau HTTP ProxyCommand pentru ssh

Sintaxa

Opțiuni

-4 Forțele nc pentru a utiliza adrese IPv4 numai.
-6 forțează nc să utilizeze numai adresele IPv6.,
-b Permite difuzare.pentru mai multe informatii, va rugam sa ne contactati
-D Activați depanarea pe soclu.
-d nu încercați să citiți de la stdin.
-h imprimă ajutor nc.
-i length specifică dimensiunea tamponului de primire TCP.
-i interval specifică un interval de timp de întârziere între liniile de text trimise și primite. De asemenea, provoacă un timp de întârziere între conexiunile la mai multe porturi.,
-k forțează nc să rămână ascultare pentru o altă conexiune după conexiunea curentă este finalizată. Este o eroare să utilizați această opțiune fără opțiunea-L.
-l folosit pentru a specifica faptul că nc ar trebui să asculte pentru o conexiune de intrare, mai degrabă decât să inițieze o conexiune la o gazdă la distanță. Este o eroare să utilizați această opțiune împreună cu opțiunile-p,- s sau-Z. În plus, orice expirare specificată cu opțiunea-w sunt ignorate.
-n nu efectuați căutări DNS sau servicii pe nicio adresă, nume de gazdă sau porturi specificate.,
-o lungime specifică dimensiunea tamponului de trimitere TCP.
– p proxy_username specifică un nume de utilizator pentru a prezenta la un server proxy care necesită autentificare. Dacă nu este specificat niciun nume de utilizator, autentificarea nu va fi încercată. Autentificarea Proxy este acceptată numai pentru proxy-urile HTTP CONNECT în prezent.
-p source_port Specifică portul sursă nc ar trebui să utilizeze, sub rezerva privilegiul de restricții și disponibilitatea.,
-Q secunde după EOF pe stdin, așteptați numărul specificat de secunde și apoi ieșiți. Dacă secundele sunt negative, așteptați pentru totdeauna.
-R specifică faptul că porturile sursă sau destinație ar trebui să fie alese aleatoriu în loc de secvențial într-un interval sau în ordinea în care sistemul le atribuie.
-s activează opțiunea de semnătură RFC 2385 TCP MD5.
-s source specifică IP-ul interfeței care este utilizat pentru a trimite pachetele., Pentru Unix-domain datagram sockets, specifică fișierul local socket temporar pentru a crea și de a folosi, astfel încât datagrame pot fi primite. Este o eroare să utilizați această opțiune împreună cu opțiunea-L.
-T toskeyword Schimba IPv4 TOS valoare. toskeyword poate fi unul de critică, inetcontrol, lowcost, lowdelay, netcontrol, transfer, fiabilitatea, sau unul dintre DiffServ Puncte de Cod: ef, af11 … af43, cs0 … cs7; sau un număr în hex sau zecimal.
-t determină nc să trimită RFC 854 nu și nu va răspunde la RFC 854 face și va cere., Acest lucru face posibilă utilizarea nc pentru script sesiuni telnet.
-U specifică utilizarea soclurilor de domeniu UNIX.
-u utilizați UDP în loc de opțiunea implicită a TCP. Pentru prizele de domeniu UNIX, utilizați o priză de datagramă în loc de o priză de flux. Dacă se utilizează un soclu de domeniu UNIX, se creează un soclu de recepție temporară în / tmp, cu excepția cazului în care este dat steagul-S.
-v rtable setați tabelul de rutare care va fi utilizat. Valoarea implicită este 0.
-v au nc da ieșire mai verbose.,
-w timeout conexiuni care nu pot fi stabilite sau sunt timeout inactiv după secunde timeout. Steagul-w nu are niciun efect asupra opțiunii-l, adică nc va asculta pentru totdeauna o conexiune, cu sau fără steagul-W. Valoarea implicită nu este timeout.
-x proxy_protocol solicită ca nc să utilizeze protocolul specificat atunci când vorbește cu serverul proxy. Protocoalele acceptate sunt ” 4 „(SOCKS V.4),” 5 „(SOCKS V. 5) și” connect ” (HTTPS proxy). Dacă protocolul nu este specificat, se utilizează SOCKS versiunea 5.,
-x proxy_address solicită ca nc să se conecteze la destinație folosind un proxy la proxy_address și port. Dacă portul nu este specificat, se utilizează portul binecunoscut pentru protocolul proxy (1080 pentru șosete, 3128 pentru HTTPS).modul DCCP.
-z specifică faptul că nc ar trebui să scaneze numai pentru ascultarea demonilor, fără a le trimite date. Este o eroare să utilizați această opțiune împreună cu opțiunea-L.,

destinația poate fi o adresă IP numerică sau un nume de gazdă simbolic (cu excepția cazului în care opțiunea-n este dată). În general, trebuie specificată o destinație, cu excepția cazului în care opțiunea-l este dată (caz în care se utilizează gazda locală). Pentru Unix-domain sockets, o destinație este necesară și este calea socket pentru a conecta la (sau asculta dacă opțiunea-l este dat).

portul poate fi un singur număr întreg sau o serie de porturi. Intervalele sunt în forma NN-mm.în general, trebuie specificat un port de destinație, cu excepția cazului în care este dată opțiunea-U.,

model Client / Server

este destul de simplu să construiți un model client/server foarte de bază folosind nc. Pe o consolă, începeți ascultarea nc pe un port specific pentru o conexiune. De exemplu:

nc -l 1234

nc ascultă acum pe portul 1234 pentru o conexiune. Pe o a doua consolă (sau o a doua mașină), conectați-vă la mașină și portul ascultat pe:

nc 127.0.0.1 1234

acum ar trebui să existe o conexiune între porturi. Orice tastat la a doua consolă va fi concatenat la primul și invers., După ce conexiunea a fost configurată, nc nu-i pasă cu adevărat care parte este folosită ca „server” și care parte este folosită ca „client”. Conexiunea poate fi terminată folosind un EOF (‘^D’).

nu există nici o opțiune-C sau-e în netcat moderne, dar încă mai poate executa o comandă după conexiune fiind stabilită prin redirecționarea descriptori de fișiere. Fiți precaut aici, deoarece deschiderea unui port și lăsați pe oricine conectat să execute comenzi arbitrare pe site-ul dvs. este periculos., Dacă într-adevăr nevoie pentru a face acest lucru, aici este un exemplu:

Pe „server” secundare:

rm -f /tmp/f; mkfifo /tmp/f
cat /tmp/f | /bin/sh -i 2>&1 | nc -l 127.0.0.1 1234 > /tmp/f

Pe „client” secundare:

nc host.example.com 1234

(shell prompt la host.example.com)

De a face acest lucru, creați un fifo la /tmp/f și de a face nc asculta la portul 1234 de adresa 127.0.0.1 pe „server” parte, atunci când un „client” stabilește o conexiune cu succes la port, /bin/sh executat pe „server” parte și shell prompt este dat de „client” parte.

când conexiunea este terminată, nc se închide, de asemenea., Utilizați-k dacă doriți să continuați să ascultați, dar dacă comanda se închide, această opțiune nu o va reporni sau nu va continua să funcționeze nc. De asemenea, nu uitați să îndepărtați descriptorul de fișier odată ce nu-mi mai trebuie:

rm -f /tmp/f

transfer de Date

De exemplu, în secțiunea anterioară poate fi extins pentru a construi o bază de transfer de date model. Orice informație introdusă într-un capăt al conexiunii va fi transmisă la celălalt capăt, iar intrarea și ieșirea pot fi ușor capturate pentru a emula transferul de fișiere.,

Începe prin nc pentru a asculta pe un anumit port, cu ieșire capturat într-un fișier:

nc -l 1234 > filename.out

Folosind un al doilea aparat, conectați-vă la ascultare nc procesul de hrănire este fișierul care urmează să fie transferate:

nc host.example.com 1234 < filename.in

După ce fișierul este transferat, conexiunea se va închide automat.uneori este util să vorbești cu serverele „de mână”, mai degrabă decât printr-o interfață de utilizator., Poate ajuta la rezolvarea problemelor, când ar putea fi necesar să verificați ce date trimite un server ca răspuns la comenzile emise de client. De exemplu, pentru a prelua pagina de pornire a unui site web:

printf "GET / HTTP/1.0\r\n\r\n" | nc host.example.com 80

rețineți că aceasta afișează și anteturile trimise de serverul web. Acestea pot fi filtrate, folosind un instrument cum ar fi sed, dacă este necesar.exemple mai complicate pot fi construite atunci când utilizatorul cunoaște formatul cererilor cerute de server., Ca un alt exemplu, un e-mail poate fi trimis la un server SMTP folosind:

scanarea porturilor

poate fi util să știți ce porturi sunt deschise și care rulează servicii pe o mașină țintă. Steagul-z poate fi folosit pentru a spune nc să raporteze porturile deschise, mai degrabă decât să inițieze o conexiune. De obicei, este util să activați ieșirea verbose la stderr utilizând această opțiune împreună cu opțiunea-V.

De exemplu:

nc -zv host.example.com 20-30
Connection to host.example.com 22 port succeeded!Connection to host.example.com 25 port succeeded!

portul gama a fost specificat pentru a limita căutarea la porturile 20 – 30 de ani, și este scanat de ordine crescatoare.,de asemenea, puteți specifica o listă de porturi de scanat, de exemplu:

nc -zv host.example.com 80 20 22

porturile sunt scanate după ordinea pe care ați dat-o.în mod alternativ, ar putea fi util să știți ce software de server rulează și ce versiuni. Aceste informații sunt adesea conținute în bannerele de salut. Pentru a le prelua, este necesar să faceți mai întâi o conexiune și apoi să întrerupeți conexiunea atunci când bannerul a fost recuperat., Acest lucru poate fi realizat prin specificarea un mic timeout cu -w pavilion, sau, poate, prin emiterea unui „QUIT” comanda la server:

echo "QUIT" | nc host.example.com 20-30
SSH-1.99-OpenSSH_3.6.1p2 Protocol mismatch. 220 host.example.com IMS SMTP Receiver Version 0.84 Ready

Exemple

nc -p 31337 -w 5 host.example.com 42

se Deschide o conexiune TCP la portul de 42 de host.example.com, folosind portul 31337 ca sursă port, cu o pauză de 5 secunde.

nc -u host.example.com 53

Deschide o conexiune UDP la portul 53 de host.example.com.

nc -s 10.1.2.3 host.example.com 42

se Deschide o conexiune TCP la portul de 42 de host.example.com folosind 10.1.2.3 ca IP locale capăt al conexiunii.,

nc -lU /var/tmp/dsocket

creează și ascultă pe un soclu flux UNIX-domeniu.

nc -x10.2.3.4:8080 -Xconnect host.example.com 42

se Conectează la portul de 42 de host.example.com prin intermediul unui proxy HTTP la 10.2.3.4, portul 8080. Acest exemplu ar putea fi folosit și de ssh.

nc -x10.2.3.4:8080 -Xconnect -Pruser host.example.com 42

La fel ca exemplul de mai sus, dar de data asta activarea proxy de autentificare cu nume de utilizator „ruser” dacă proxy-ul o cere.ifconfig-vizualizați sau modificați configurația interfețelor de rețea.

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *