Aceasta este comanda nc.openbsd care poate fi rulată în furnizorul de găzduire gratuit OnWorks folosind una dintre multiplele noastre stații de lucru online gratuite, cum ar fi Ubuntu Online, Fedora Online, emulator online Windows sau emulator online MAC OS
PROGRAM:
NUME
nc — conexiuni arbitrare TCP și UDP și ascultări
REZUMAT
nc [-46bCDdhklnrStUuvZz] [-I lungime] [-i interval] [-O lungime] [-P proxy_username]
[-p port_sursă] [-q secunde] [-s sursă] [-T toskeyword] [-V rtable] [-w timeout]
[-X proxy_protocol] [-x adresa_proxy[:port,destinație] [port]
DESCRIERE
nc (Sau netcat) utilitarul este folosit pentru aproape orice sub soare care implică TCP, UDP,
sau socket-uri de domeniu UNIX. Poate deschide conexiuni TCP, poate trimite pachete UDP, poate asculta arbitrar
Porturi TCP și UDP, scanează porturi și se ocupă atât de IPv4, cât și de IPv6. Spre deosebire de Telnet(1), nc
scripturi frumos și separă mesajele de eroare de erori standard în loc să le trimită
ieșire standard, ca Telnet(1) face cu unele.
Utilizările comune includ:
· simple proxy TCP
· Clienți și servere HTTP bazate pe shell-script
· testarea demonului de rețea
· un SOCKS sau HTTP ProxyCommand pentru ssh(1)
· si mult, mult mai mult
Opțiunile sunt următoarele:
-4 Forțele nc pentru a utiliza numai adrese IPv4.
-6 Forțele nc pentru a utiliza numai adrese IPv6.
-b Permite difuzarea.
-C Trimiteți CRLF ca sfârșit de linie.
-D Activați depanarea pe socket.
-d Nu încercați să citiți din stdin.
-h Imprimă nc de ajutor.
-I lungime
Specifică dimensiunea tamponului de recepție TCP.
-i interval
Specifică un interval de timp de întârziere între liniile de text trimise și primite. De asemenea
determină un timp de întârziere între conexiunile la mai multe porturi.
-k Forțele nc pentru a rămâne să asculte pentru o altă conexiune după ce conexiunea actuală este
efectuat. Este o eroare să utilizați această opțiune fără -l opțiune.
-l Folosit pentru a specifica asta nc ar trebui să asculte pentru o conexiune de intrare, mai degrabă decât
inițiază o conexiune la o gazdă la distanță. Este o eroare să utilizați această opțiune
împreună cu -p, -s, -z Opțiuni. În plus, orice timeout specificat
cu -w opțiunea sunt ignorate.
-n Nu efectuați nicio căutare DNS sau de servicii pe adrese, nume de gazdă sau porturi specificate.
-O lungime
Specifică dimensiunea bufferului de trimitere TCP.
-P proxy_username
Specifică un nume de utilizator de prezentat unui server proxy care necesită autentificare. Dacă
nu este specificat niciun nume de utilizator, atunci nu se va încerca autentificarea. Proxy
autentificarea este acceptată în prezent numai pentru proxy-urile HTTP CONNECT.
-p port_sursă
Specifică portul sursă nc ar trebui să utilizeze, sub rezerva restricțiilor de privilegii și
disponibilitate.
-q secunde
după EOF pe stdin, așteptați numărul specificat de secunde și apoi ieșiți. Dacă secunde
este negativ, așteptați pentru totdeauna.
-r Specifică faptul că porturile sursă și/sau destinație ar trebui 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 sursă
Specifică IP-ul interfeței care este folosită pentru a trimite pachetele. Pentru
Socket-uri de datagramă din domeniul UNIX, specifică fișierul socket temporar local de creat
și utilizați astfel încât datagramele să poată fi primite. Este o eroare să utilizați această opțiune
împreună cu -l opțiune.
-T toskeyword
Modificați valoarea IPv4 TOS. toskeyword poate fi unul dintre critic, inetcontrol, lowcost,
întârziere redusă, netcontrol, debit, încredere, sau unul dintre punctele de cod DiffServ:
ef, af11 ... af43, cs0 ... cs7; sau un număr fie hex sau zecimal.
-t Cauze nc pentru a trimite RFC 854 DON’T și WON’T răspunsuri la cererile RFC 854 DO și WILL.
Acest lucru face posibilă utilizarea nc pentru a scrie sesiuni telnet.
-U Specifică utilizarea socket-urilor de domeniu UNIX.
-u Utilizați UDP în loc de opțiunea implicită a TCP. Pentru socketurile de domeniu UNIX, utilizați a
soclu de datagramă în loc de un soclu de flux. Dacă se utilizează un socket de domeniu UNIX, a
soclul de recepție temporar este creat în / tmp cu excepția cazului în care -s este dat steag.
-V rtable
Setați tabelul de rutare care va fi utilizat. Valoarea implicită este 0.
-v Avea nc da rezultate mai detaliate.
-w timeout
Conexiuni care nu pot fi stabilite sau sunt expirate după timeout secunde.
-w steagul nu are efect asupra -l opțiune, adică nc va asculta pentru totdeauna pentru a
conexiune, cu sau fără -w steag. Valoarea implicită nu este timeout.
-X proxy_protocol
Solicită asta nc ar trebui să utilizeze protocolul specificat atunci când vorbesc 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 adresa_proxy[:port]
Solicită asta nc ar trebui să se conecteze la destinație folosind un proxy la adresa_proxy si
port. Dacă port nu este specificat, se folosește portul binecunoscut pentru protocolul proxy
(1080 pentru SOCKS, 3128 pentru HTTPS).
-Z Modul DCCP.
-z Precizează că nc ar trebui doar să scaneze pentru demoni de ascultare, fără a trimite date
lor. Este o eroare să utilizați această opțiune împreună cu -l opțiune.
destinație poate fi o adresă IP numerică sau un nume de gazdă simbolic (cu excepția cazului în care -n opțiunea este
dat). În general, trebuie specificată o destinație, cu excepția cazului în care -l este dată opțiunea (în
caz în care se utilizează gazda locală). Pentru socketurile de domeniu UNIX, este necesară o destinație și
este calea prizei la care să vă conectați (sau ascultați dacă -l este dată opțiunea).
port poate fi un singur întreg sau o serie de porturi. Intervalele sunt de forma nn-mm. În
general, trebuie specificat un port de destinație, cu excepția cazului în care -U este dată opțiunea.
CLIENT SERVER MODEL
Este destul de simplu să construiești un model de bază client/server folosind nc. Pe o singură consolă,
Începe nc ascultarea pe un anumit port pentru o conexiune. De exemplu:
$ nc -l 1234
nc acum ascultă pe portul 1234 pentru o conexiune. Pe o a doua consolă (sau o secundă
aparat), conectați-vă la aparat și la portul pe care se asculta:
$nc 127.0.0.1 1234
Ar trebui să existe acum o conexiune între porturi. Orice tastat la a doua consolă
va fi concatenat cu primul și invers. După ce conexiunea a fost configurată, nc
nu-i pasă de ce parte este folosită ca „server” și de ce parte este folosită
un client'. Conexiunea poate fi încheiată folosind un EOF ("^D").
Nu este -c or -e opțiune în acest netcat, dar încă puteți executa o comandă după
conexiunea fiind stabilită prin redirecționarea descriptorilor de fișiere. Fii precaut aici pentru că
deschiderea unui port și lăsarea oricărei persoane conectate să execute o comandă arbitrară pe site-ul dvs. este PERICOLOS.
Dacă chiar trebuie să faci asta, iată un exemplu:
Pe partea „server”:
$ 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 partea „client”:
$ nc host.example.com 1234
$ (prompt shell de la host.example.com)
Făcând acest lucru, creați un fifo la /tmp/f și faceți nc să asculte la portul 1234 al adresei
127.0.0.1 pe partea „server”, când un „client” stabilește o conexiune cu succes la acel
porturi, / Bin / sh este executat pe partea „server”, iar promptul shell-ului este dat pe partea „client”.
Când conexiunea este încheiată, nc renunță la fel. Utilizare -k daca vrei sa asculti in continuare, dar
dacă comanda iese din această opțiune, nu o va reporni și nu o va păstra nc alergare. De asemenea, nu uitați
eliminați descriptorul de fișier odată ce nu mai aveți nevoie de el:
$ rm -f /tmp/f
DATE TRANSFER
Exemplul din secțiunea anterioară poate fi extins pentru a construi un model de bază de transfer de date.
Orice informație introdusă într-un capăt al conexiunii va fi scoasă la celălalt capăt și
intrarea și ieșirea pot fi capturate cu ușurință pentru a emula transferul de fișiere.
Începeți prin utilizarea nc pentru a asculta pe un anumit port, cu ieșirea capturată într-un fișier:
$ nc -l 1234 > numefișier.out
Folosind un al doilea aparat, conectați-vă la ascultare nc proces, alimentându-i fișierul care urmează
fi transferat:
$ nc host.example.com 1234 < filename.in
După ce fișierul a fost transferat, conexiunea se va închide automat.
VORBIND LA SERVERE
Uneori este util să vorbiți cu serverele „de mână”, mai degrabă decât printr-o interfață cu utilizatorul.
Poate ajuta la depanarea, atunci când ar putea fi necesar să se verifice ce date este un server
trimiterea ca răspuns la comenzile emise de client. De exemplu, pentru a recupera casa
pagina 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. Ele pot fi filtrate,
folosind un instrument precum sete(1), dacă este necesar.
Exemple mai complicate pot fi construite atunci când utilizatorul cunoaște formatul cererilor
cerut de server. Ca un alt exemplu, un e-mail poate fi trimis la un server SMTP
folosind:
$ nc [-C] localhost 25 << EOF
HELO gazdă.example.com
POSTA DE LA:[e-mail protejat]>
RCPT către:[e-mail protejat]>
DATE
Corpul e-mailului.
.
PĂRĂSI
EOF
PORT SCANARE
Poate fi util să știți ce porturi sunt deschise și rulează servicii pe o mașină țintă. The
-z steag poate fi folosit pentru a spune nc pentru a raporta porturile deschise, în loc să inițieze o conexiune.
De obicei, este util să activați ieșirea verbose către stderr folosind această opțiune împreună
cu -v opțiune.
De exemplu:
$ nc -zv host.example.com 20-30
Conexiunea la portul host.example.com 22 [tcp/ssh] a reușit!
Conexiunea la portul host.example.com 25 [tcp/smtp] a reușit!
Intervalul de porturi a fost specificat pentru a limita căutarea la porturile 20 - 30 și este scanat de
ordine crescândă.
De asemenea, puteți specifica o listă de porturi de scanat, de exemplu:
$ nc -zv host.example.com 80 20 22
nc: conectare la host.example.com 80 (tcp) failed: Conexiune refuzată
nc: conectare la host.example.com 20 (tcp) failed: Conexiune refuzată
Conexiunea la portul host.example.com [tcp/ssh] a reușit!
Porturile sunt scanate după ordinea pe care ați dat-o.
Alternativ, ar putea fi util să știți ce software server rulează și care
versiuni. Aceste informații sunt adesea conținute în bannerele de salut. Pentru a
recuperați-le, este necesar să faceți mai întâi o conexiune și apoi să întrerupeți conexiunea
când bannerul a fost preluat. Acest lucru poate fi realizat prin specificarea unui mic timeout
cu -w flag, sau poate lansând o comandă „QUIT” către server:
$ echo „ÎȘIȚI” | nc host.example.com 20-30
SSH-1.99-OpenSSH_3.6.1p2
Nepotrivirea protocolului.
220 host.example.com IMS SMTP Receiver Versiunea 0.84 Gata
EXEMPLE
Deschideți o conexiune TCP la portul 42 al host.example.com, folosind portul 31337 ca port sursă,
cu un timeout de 5 secunde:
$ nc -p 31337 -w 5 host.example.com 42
Deschideți o conexiune UDP la portul 53 al host.example.com:
$ nc -u host.example.com 53
Deschideți o conexiune TCP la portul 42 al host.example.com folosind 10.1.2.3 ca IP pentru localul
sfârșitul conexiunii:
$ nc -s 10.1.2.3 host.example.com 42
Creați și ascultați pe un socket de flux de domeniu UNIX:
$ nc -lU /var/tmp/dsocket
Conectați-vă la portul 42 al host.example.com printr-un proxy HTTP la 10.2.3.4, portul 8080. Aceasta
exemplu ar putea fi folosit și de ssh(1); vezi ProxyCommand directivă în ssh_config(5) pentru
mai multe informatii.
$ nc -x10.2.3.4:8080 -Xconnect host.example.com 42
Același exemplu din nou, de data aceasta permițând autentificarea proxy cu numele de utilizator „ruser” dacă
proxy-ul necesită:
$ nc -x10.2.3.4:8080 -Xconnect -Pruser host.example.com 42
Utilizați nc.openbsd online folosind serviciile onworks.net