nc用法小記
By francis_hao Jun 30,2017
ncat:連接和重定向套接字
概要
ncat [OPTIONS...] [hostname] [port]
描述
ncat 是一個集成的網絡工具包,從命令行通過網絡讀寫數據。它被設計成一個提供即時連接到其他應用和用戶的可靠性後端工具,ncat不僅僅工作於IPv4和IPv6,它提供給用戶一個近乎無限數量的潛在用途。
ncat提供了以下特性:重定向TCP、UDP和SCTP端口到其他站點,支持SSL,通過SOCKS4或HTTP的代理連接等。
ncat 操作處於兩種模式中的一種:連接模式和監聽模式。其他模式,像HTTP代理服務器,處於這兩種模式的特殊情形。在連接模式,ncat類似一個客戶端,在監聽模式,ncat類似一個服務器。
在連接模式下,hostname和port參數指明應該連接到哪,hostname是需要的,它可能是一個域名或ip地址。如果有port,它一定是一個十進制的端口號。如果省略,默認是31337。
在監聽模式下,hostname和port指定服務器要綁定的地址。這兩個參數都是可選的,如果省略了hostname,默認監聽所有可獲取的IPv4和IPv6地址。如果省略了port,默認為31337。
選項
選項 | 說明 |
協議選項 | |
-4 | 僅使用IPv4 |
-6 | 僅使用IPv6 |
-U, --unixsock | 使用Unix domain sockets而不是network sockets(見下文Unix domain sockets描述) |
-u, --udp | 使用UDP連接(默認是TCP) |
--sctp | 使用SCTP連接(默認是TCP) |
連接模式選項 | |
-g hop1[,hop2,…] | 為IPv4設置寬松源路由的下一跳,你可以使用一個-g帶以逗號分隔的路由表,或者使用多個-g,每個-g帶一個路由。或者這兩者混合使用,hop可以是域名或者ip地址。 |
-G ptr | Set source routing pointer |
-p port, --source-port port | 設置要綁定的端口號 |
-s host, --source host | 設置要綁定的地址 |
監聽模式選項 | |
-l, --listen | 進入監聽模式 |
-m numconns, --max-conns numconns | ncat接受的最大的同時連接數。默認是100 |
-k, --keep-open | 通常監聽服務器只接收一個連接然後當連接關閉時退出。此選項可以使它同時接收多個連接,並且在這些連接關閉後繼續監聽其他連接。 此選項必須和-l同時使用。 在此模式下,ncat沒辦法知道網絡輸入什麽時候終止,因此它會保持運行直到被打斷,這也意味著它不會關閉它的輸出流,因此任何讀取ncat並等待EOF的程序都將會掛起。 |
--broker | 允許多個分布的客戶端連接到ncat服務器,並且和彼此通訊,ncat可以在不能直接連接(例如NAT下)的系統中進行中繼通訊。 此選項和-l選項同時使用,使監聽端口使能中繼功能。 |
--chat | 使能對話功能,可以在多個用戶間交換數據。此模式下,中繼功能被打開。 ncat 在每條消息前加上唯一的ID,以區分不同的客戶端發送的不同的內容。 另外,不可打印字符(例如控制字符)被避開,以防影響終端 此選項的用法: 服務器:nc -l –chat 客戶端1:nc server_ip 客戶端2:nc server_ip 其中,服務器發消息時,客戶端1、2均能收到,客戶端1發消息時只有客戶端2能收到,服務器不接收消息。 |
SSL選項 | |
--ssl | 在連接模式,此選項顯式的和SSL服務器協商會話以加密連接,這對和使能了SSL的HTTP服務器傳輸提供了便利。 在服務器模式,此選項監聽連入的SSL連接,而不是看起來亂糟糟的數據。 |
--ssl-verify | 在客戶端模式,--ssl-verify類似--ssl,但是它還需要驗證服務器的證書。 ncat帶有一個默認的信任證書列表,在文件ca-bundle.crt裏。--ssl-trustfile可以用以指定自定義的信任列表,使用-v一次或多次了解驗證失敗詳情。 ncat不驗證吊銷的證書。 此選項對於服務器模式無意義。 |
--ssl-cert certfile.pem | 此選項指定一個PEM編碼的證書文件,用於認證服務器(監聽模式)或客戶端(連接模式)。一般和--ssl-key結合使用 |
--ssl-key keyfile.pem | 指定用--ssl-cert指定的證書文件對應的私鑰 |
--ssl-trustfile cert.pem | 此選項設置一系列受信任的證書,若不指定--ssl-verify,則此選項無效,PEM文件裏包含了受信任的證書,使用此選項後,ncat就不會使用默認的證書。 |
代理選項 | |
--proxy host[:port] | 通過host:port指定請求的代理,使用的協議由--proxy-type指定 如果沒有指定的端口號,那麽代理協議的眾所周知端口將被使用(SOCKS的1080和HTTP的3128)。但是,當使用IP地址而不是主機名指定IPv6的HTTP代理服務時,端口號必須同時被指定,如果代理需要認證,那麽使用--proxy-auth選項。 |
--proxy-type proto | 在連接模式,這個選項使用協議proto連接到用—proxy指定的主機,在監聽模式,用此指定的協議用作代理服務器。 連接模式當前可使用的協議是http(CONNECT)和socks4(SOCKSv4)。作為服務器當前僅支持http。如果此項未使用,默認的協議是http |
--proxy-auth user[:pass] | 在連接模式,指定在連接服務器時會用到的身份驗證信息。 在監聽模式,指定客戶端在連接時需要提供的身份驗證信息。 若使用--proxy-type http,驗證信息應該是user:pass,若使用--proxy-type socks4,驗證信息只需要提供username。 |
命令執行選項 | |
-e command, --exec command | 當連接已建立時執行指定的命令,命令必須以全路徑名被指定,遠端客戶端所有的輸入將被發送給該應用,並且回應會通過套接字返回給遠端客戶端,因此,讓你的命令行應用通過套接字可交互。 結合--keep-open選項,Ncat可以同時處理多個連接到你指定的端口/應用。 Ncat只接受一個可定義的最大同時連接數(通過-m指定),默認這被設置未100。 |
-c command, --sh-exec command | 類似-e,但是它會嘗試通過/bin/sh執行命令,這意味著你不必為命令指定全路徑,而且,shell相關的因子,例如環境變量是可獲取的。 |
--lua-exec file | 當連接建立時運行指定的作為lua腳本的文件,腳本的標準輸入和標準輸出都被重定向到連接的數據流。 |
權限控制選項 | |
--allow host[,host,...] | 只允許指定的host列表連接到Ncat程序,所有其余的連接都會被拒絕。 為防止--allow和--deny指定的host產生沖突,使用--allow選項優先。 |
--allowfile file | 類似--allow,只不過被允許的host列表放在了以回車分割的文件裏。 |
--deny host[,host,...] | 拒絕主機列表 |
--denyfile file | 主角主機列表文件 |
時間選項 | |
-d time, --delay time | 設置發送行的延時間隔,這對特定時間段內發送數據量有作用,可用於低帶寬的站點。 默認時間單位是s,但是也可以顯式的指明時間單位,例如ms,s,m和h。 |
-i time, --idle-timeout time | 設置空閑超時時間,如果空閑超時時間到了,連接會被終止。 |
-w time, --wait time | 設置嘗試連接的超時時間 |
輸出選項 | |
-o file, --output file | 轉儲會話數據到文件 |
-x file, --hex-dump file | 轉儲會話數據作為十六進制到文件 |
--append-output | 當使用-o或-x選項並指定-append-ouput選項時,它將追加結果到文件而不是截短所指定的輸出文件 |
-v, --verbose | 進入"啰嗦模式",這將會顯示很多有用的信息。使用多個(-vv,-vvv…)進入更"啰嗦"的模式。 |
雜項 | |
-C, --crlf | 此選項使Ncat在和標準輸入會話時,轉換LF(Line-Feed,換行)到CRLF(Carriage-Return& Line-Feed,回車換行),這對一些嚴格的服務器來說很有用,因為它們只接受CRLF作為行尾。 |
-h, --help | 顯示幫助信息並退出 |
--recv-only | 若指定此選項,Ncat將只接收數據而不會嘗試去發送任何數據。 |
--send-only | 只發送數據並忽略所有接收到的數據,此選項也會使得從標準輸入接收到EOF時關閉連接並終止。 |
-t, --telnet | 處理Telnet協商DO/DONT WILL/WONT,這使得Telnet會話腳本化。 |
--version | 顯示Ncat版本並退出。 |
UNIX域套接字
Unix域套接字作為文件系統項,你必須給要連接或監聽的套接字指定一個名字。例如,準備一個連接:
ncat -U ~/unixsock
監聽一個套接字
ncat -l -U ~/unixsock
如果套接字不存在,監聽模式將會創建一個套接字。套接字將會繼續存在,即使程序已結束。
示例
Connect to example.org on TCP port 8080.
ncat example.org 8080
Listen for connections on TCP port 8080.
ncat -l 8080
Redirect TCP port 8080 on the local machine to host on port 80.
ncat --sh-exec "ncat example.org 80" -l 8080
--keep-open
Bind to TCP port 8081 and attach /bin/bash for the world to access freely.
ncat --exec "/bin/bash" -l 8081
--keep-open
Bind a shell to TCP port 8081, limit access to hosts on a local network, and limit the maximum number of simultaneous connections to 3.
ncat --exec "/bin/bash"
--max-conns 3
--allow 192.168.0.0/24 -l 8081
--keep-open
Connect to smtphost:25 through a SOCKS4 server on port 1080.
ncat --proxy socks4host --proxy-type socks4 --proxy-auth user smtphost 25
Create an HTTP proxy server on localhost port 8888.
ncat -l --proxy-type http localhost 8888
Send a file over TCP port 9899 from host2 (client) to host1 (server).
HOST1$ ncat -l 9899
> outputfile
HOST2$ ncat HOST1 9899
< inputfile
Transfer in the other direction, turning Ncat into a "one file" server.
HOST1$ ncat -l 9899
< inputfile
HOST2$ ncat HOST1 9899
> outputfile
本文由 劉英皓 創作,采用 知識共享 署名-非商業性使用-相同方式共享 3.0 中國大陸 許可協議進行許可。歡迎轉載,請註明出處:
轉載自: http://www.cnblogs.com/yinghao1991/p/7100663.html
參考
【1】 man nc
nc用法小記