Unix-szerű operációs rendszereken az nc parancs fut Netcat, egy segédprogram a nyers adatok hálózati kapcsolaton keresztüli küldésére.
Ez a dokumentum az NC Linux verziójára vonatkozik.
leírás
a Netcat egy olyan segédprogram, amely a TCP vagy UDP protokoll segítségével beolvassa és írja az adatokat a hálózati kapcsolatokon keresztül. Úgy tervezték, hogy egy megbízható” back-end ” eszköz, amely közvetlenül használható, vagy hajtja más programok, szkriptek., Ugyanakkor ez egy funkciókban gazdag hálózati hibakeresési és feltárási eszköz, mivel szinte bármilyen kapcsolatot képes létrehozni, amire szüksége lenne, és számos érdekes beépített képességgel rendelkezik. Gyakori felhasználások a következők:
- egyszerű TCP proxy
- Shell-script alapú HTTP kliensek és szerverek
- hálózati démon tesztelés
- a zokni vagy HTTP ProxyCommand az ssh
Szintax
opciók
a cél lehet numerikus IP-cím vagy szimbolikus hostname (kivéve, ha a-n opció meg van adva). Általában meg kell adni egy rendeltetési helyet, kivéve, ha a-l opció meg van adva (ebben az esetben a helyi gazdagépet használják). UNIX-tartományú aljzatokhoz egy célállomás szükséges, amely a csatlakozóaljzat elérési útja (vagy hallgassa meg, ha a-l opció meg van adva).
port lehet egy egész vagy egy sor Port. A tartományok nn-mm formában vannak.általában meg kell adni a rendeltetési portot, kivéve, ha a-U opció meg van adva.,
kliens / szerver modell
nagyon egyszerű egy nagyon alapvető kliens/szerver modell felépítése az nc használatával. Az egyik konzolon indítsa el az nc hallgatását egy adott porton a kapcsolathoz. Például:
nc -l 1234
nc most hallgat port 1234 egy kapcsolat. Egy második konzolon (vagy egy második gépen) csatlakozz a géphez és a porton hallgatva:
nc 127.0.0.1 1234
kapcsolatnak kell lennie a portok között. Bármi gépelt a második konzol lesz összefűzve az első, és fordítva., A kapcsolat létrehozása után az nc nem igazán érdekli, hogy melyik oldalt használják “szerverként”, és melyik oldalt használják “kliensként”. A kapcsolat megszakítható egy EOF (‘^D’) segítségével.
a modern netcat-ben nincs-c vagy-e opció, de a kapcsolat létrehozása után is végrehajthat egy parancsot a fájlleírók átirányításával. Legyen óvatos itt, mert megnyitása port, és hagyja, hogy bárki csatlakozik végre önkényes parancsot a webhelyen veszélyes., Ha tényleg ezt akarod, itt egy példa:
A ‘server’ oldalon:
rm -f /tmp/f; mkfifo /tmp/f
cat /tmp/f | /bin/sh -i 2>&1 | nc -l 127.0.0.1 1234 > /tmp/f
Az “ügyfél” oldalon:
nc host.example.com 1234
(shell promptot a host.example.com)
ezzel, hozzon létre egy fifo a /tmp/f, s, hogy nc figyelj a port 1234 a 127.0.0.1 cím a szerver oldalán, amikor egy “ügyfél” hoz létre a kapcsolat sikeresen, hogy a port, a /bin/sh kerül végrehajtásra, a ‘server’ oldalán a shell promptot adnak, hogy “ügyfél” oldalon.
amikor a kapcsolat megszűnik, az nc is kilép., Használja a-k-t, ha azt akarja, hogy továbbra is hallgassa, de ha a parancs kilép, akkor ez az opció nem indítja újra, vagy nem tartja az nc futását. Ne felejtse el eltávolítani a fájlleírót, ha már nincs rá szüksége:
rm -f /tmp/f
adatátvitel
az előző szakasz példája kibővíthető egy alapvető adatátviteli modell felépítéséhez. Minden információ bemenet egyik végén a kapcsolat lesz kimenet a másik végén, input és output könnyen rögzíthető emulálni fájlátvitel.,
a Start segítségével nc hallgatni egy adott port, a kimeneti elfogták a fájlt:
nc -l 1234 > filename.out
a második gép, csatlakoztatás a hallgatás nc folyamat, eteti a fájlt át:
nc host.example.com 1234 < filename.in
Után a fájlt át, a kapcsolat automatikusan bezáródik.
beszél szerverek
néha hasznos beszélni szerverek “kézzel”, nem pedig egy felhasználói felületen keresztül., Segíthet a hibaelhárításban, amikor szükség lehet annak ellenőrzésére, hogy a kiszolgáló milyen adatokat küld az ügyfél által kiadott parancsokra válaszul. Például egy weboldal honlapjának letöltéséhez:
printf "GET / HTTP/1.0\r\n\r\n" | nc host.example.com 80
vegye figyelembe, hogy ez megjeleníti a webszerver által küldött fejléceket is. Szűrhetők, szükség esetén olyan eszközzel, mint a sed.
bonyolultabb példák építhetők fel, ha a Felhasználó ismeri a szerver által igényelt kérelmek formátumát., Egy másik példa, hogy egy e-mail küldhető egy SMTP-kiszolgálónak a következő használatával:
port szkennelés
hasznos lehet tudni, hogy mely portok vannak nyitva, és mely szolgáltatások futnak a célgépen. A-z zászló lehet használni, hogy elmondja nc jelenteni nyitott portok, ahelyett, hogy kapcsolatot kezdeményez. Általában hasznos a verbose kimenet stderr-re történő bekapcsolása, ha ezt az opciót a-v opcióval együtt használja.
például:
nc -zv host.example.com 20-30
Connection to host.example.com 22 port succeeded!Connection to host.example.com 25 port succeeded!
a porttartományt úgy határozták meg, hogy a keresést a 20-30 – as portokra korlátozza, majd a sorrend növelésével beolvassa.,
megadhatja a beolvasandó portok listáját is, például:
nc -zv host.example.com 80 20 22
a portokat a megadott sorrendben szkennelik be.
Alternatív megoldásként hasznos lehet tudni, hogy melyik szerver szoftver fut,és mely verziók. Ezt az információt gyakran az üdvözlő bannerek tartalmazzák. Ezek letöltéséhez először létre kell hozni egy kapcsolatot, majd meg kell szakítani a kapcsolatot, amikor a szalaghirdetést lekérik., Ez megvalósítható megadásával egy kis szünet a -w zászló, vagy talán kiadásával egy “KILÉPÉS” parancsot a szerver:
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
Példa
nc -p 31337 -w 5 host.example.com 42
Megnyit egy TCP kapcsolat port 42 host.example.com segítségével port 31337, mint a forrás port, a timeout 5 másodperc.
nc -u host.example.com 53
megnyit egy UDP kapcsolatot az 53-as porthoz host.example.com.
nc -s 10.1.2.3 host.example.com 42
TCP kapcsolatot nyit meg a 42-es porthoz host.example.com a 10.1.2.3 használata IP-ként a kapcsolat helyi végéhez.,
nc -lU /var/tmp/dsocket
létrehoz és hallgat egy UNIX-domain stream aljzaton.
nc -x10.2.3.4:8080 -Xconnect host.example.com 42
csatlakozik a port 42 a host.example.com HTTP proxy segítségével 10.2.3.4, 8080 port. Ezt a példát az ssh is felhasználhatja.
nc -x10.2.3.4:8080 -Xconnect -Pruser host.example.com 42
ugyanaz, mint a fenti példa, de ezúttal lehetővé teszi a proxy hitelesítést felhasználónévvel” ruser”, ha a proxy megköveteli.
ifconfig-a hálózati interfészek konfigurációjának megtekintése vagy módosítása.