在 Node.js 中移植 Netcat。 CLI 實用程式。
若要將其嵌入到 Node.js 應用程式中,請改用 netcat 套件。這旨在用作獨立工具,但它並不完全等於 netcat 的原始實作。
Linux | 蘋果電腦作業系統 | 視窗 |
---|---|---|
$ npm install -g nc
$ nc -l -p port [- options] [hostname] [port]
可用選項:
-c shell commands as `-e’; use /bin/sh to exec [dangerous!!]
-e filename program to exec after connect [dangerous!!]
-b allow broadcasts
-h this cruft
-i secs delay interval for lines sent, ports scanned
-k set keepalive option on socket
-l listen mode, for inbound connects
-n numeric-only IP addresses, no DNS
-o file hex dump of traffic
-p port local port number
-r randomize local and remote ports
-s addr local source address
-u UDP mode
-U Listen or connect to a UNIX domain socket
-v verbose
-w secs timeout for connects and final net reads (client-side)
-z zero-I/O mode [used for scanning]
$ nc -l -p 2389
$ nc localhost 2389
開啟到連接埠2389
原始連線。
伺服器端 | 客戶端 |
---|---|
nc -l 2389 > test | cat testfile | nc localhost 2389 |
$ nc -w 10 localhost 2389
上面的連線將在 10 秒後終止。
$ nc -kl 2389
這樣,即使客戶端斷開連接,伺服器仍保持運作。
更令人興奮的事情是透過使用-l
或listen
選項和-e
或execute
選項在遠端電腦上快速運行 shell。建立連線後,Netcat 會執行您選擇的程式並將程式的stdin
和stdout
連接到網路連線。
$ nc -l -p 23 -e /bin/sh
讓我們建立一個 HTTP 請求檔案get.txt
,其中包含以下行和一個空白行:
GET / HTTP/1.0
若要使用 Netcat 檢索網站的主頁,請使用:
$ nc -v www.website.com 80 < get.txt
您將看到 Netcat 與連接埠 80 建立連接,發送檔案get.txt
中包含的文本,然後將 Web 伺服器的回應輸出到stdout
。
正常情況下,如果nc客戶端斷開連接,則不會重試連線。使用--retry <secs>
或-R <secs>
參數,它將在 tot 秒後重試連線。
$ nc -R 5 localhost 2389
如果您有 docker,讓我們嘗試列出連接到 docker unix 套接字檔案的容器映像:
$ echo -e " GET /images/json HTTP/1.0rn " | nc -U /var/run/docker.sock
附言。對於此範例,需要 root 權限: sudo su
。
$ mkfifo /tmp/fifo
$ nc -l -k -p 8080 < /tmp/fifo | nc website.com 80 > /tmp/fifo
$ nc -z 192.168.1.100 1-255
如果使用-o
選項,您可以轉儲所有十六進位流量。
$ nc 127.0.0.1 4445 -o /tmp/log.txt
預設情況下,nc 實用程式建立的所有套接字都是 TCP 協議,但該實用程式也適用於 UDP 協定。若要啟用 UDP 協議,請使用 -u 標誌。
伺服器端 | 客戶端 |
---|---|
nc -u -l -p 2389 | nc -u localhost 2389 |
$ echo 'message' | nc -w 1 -u 192.168.1.111 514
透過 UDP (-u) 以 1 秒的等待時間 (-w) 透過管道傳送到連接埠514
上的192.168.1.111
。
調試與詳細模式匹配。您可以使用-v
參數或環境變數DEBUG=nc
啟用它。此模組在底層使用 netcat 的節點實現,可以使用以下命令進行偵錯: DEBUG=netcat:*,nc
。
羅科·穆索里諾 (@roccomuso)