目錄
- 一、基本使用簡介
- 二、netcat的使用
- 滲透測試(埠掃描)
- 要判斷某個主機的監聽埠是否能連上
- 3.監聽伺服器
- 4.傳輸檔案
- 5. 網速吞吐量測試
一、基本使用簡介
usage: nc [-46CDdFhklNnrStUuvZz] [-I length] [-i interval] [-M ttl]
[-m minttl] [-O length] [-P proxy_username] [-p source_port]
[-q seconds] [-s source] [-T keyword] [-V rtable] [-W recvlimit] [-w timeout]
[-X proxy_protocol] [-x proxy_address[:port]] [destination] [port]
Command Summary:
-4 Use IPv4
-6 Use IPv6
-b Allow broadcast
-C Send CRLF as line-ending
-D Enable the debug socket option
-d Detach from stdin
-F Pass socket fd
-h This help text
-I length TCP receive buffer length
-i interval Delay interval for lines sent, ports scanned
-k Keep inbound sockets open for multiple connects(配合 -l 選項使用,可以重複接受客戶端連線。)
-l Listen mode, for inbound connects(開啟“監聽模式”,nc 作為【服務端】注:如不加該選項,nc 預設作為客戶端)
-M ttl Outgoing TTL / Hop Limit
-m minttl Minimum incoming TTL / Hop Limit
-N Shutdown the network socket after EOF on stdin
-n Suppress name/port resolutions
-O length TCP send buffer length
-P proxyuser Username for proxy authentication
-p port Specify local port for remote connects(指定“埠號”)
-q secs quit after EOF on stdin and delay of secs(讓 nc 延時(N 秒)再退出)
-r Randomize remote ports
-S Enable the TCP MD5 signature option
-s source Local source address
-T keyword TOS value
-t Answer TELNET negotiation
-U Use UNIX domain socket
-u UDP mode(使用 UDP 協議 注:如不加該選項,預設是 TCP 協議)
-V rtable Specify alternate routing table
-v Verbose (顯示詳細資訊)
-W recvlimit Terminate after receiving a number of packets
-w timeout Timeout for connects and final net reads(設定連線的超時間隔(N 秒))
-X proto Proxy protocol: "4", "5" (SOCKS) or "connect"(指定代理的型別)
-x addr[:port] Specify proxy address and port(以 IP:port 的格式指定代理的位置。)
-Z DCCP mode
-z Zero-I/O mode [used for scanning]
Port numbers can be individual or ranges: lo-hi [inclusive]
-g <閘道器> # 設定路由器躍程通訊閘道器,最多可設定8個。
-G<指向器數目> # 設定來源路由指向器,其數值為4的倍數。
-h 線上幫助。
-i<延遲秒數> 設定時間間隔,以便傳送資訊及掃描通訊埠。
-l 使用監聽模式,管控傳入的資料。
-n 直接使用IP地址,而不透過域名伺服器。
-o<輸出檔案> # 指定檔名稱,把往來傳輸的資料以16進位制字碼傾倒成該檔案儲存。
-p<通訊埠> # 設定本地主機使用的通訊埠。
-r 亂數指定本地與遠端主機的通訊埠。
-s<來源位址> # 設定本地主機送出資料包的IP地址。
-u 使用UDP傳輸協議。
-v 顯示指令執行過程。
-w<超時秒數> # 設定等待連線的時間。
-z 使用0輸入/輸出模式,只在掃描通訊埠時使用
二、netcat的使用
-
滲透測試(埠掃描)
nc -znv 127.0.0.1 1-1024 2>&1 | grep succeeded
選項 -z
意思是:開啟“zero-I/O 模式”。該模式指的是:nc 只判斷某個監聽埠是否能連上,連上後【不】與對端進行資料通訊。
選項 -n
由於測試的是【IP 地址】,用該選項告訴 nc,【無須】進行域名(DNS)解析;
反之,如果你要測試的主機是基於【域名】,就【不能】用“選項 -n”
選項 -v
-v 選項前面也聊過,這裡要特地強調一下。
對 nc 的其它用法,-v 選項是可加可不加滴;但對於“埠掃描”而言,一定要有這個選項——否則你【看不到】掃描結果
2>&1 | grep succeeded
過濾掉不成功的資訊
-
要判斷某個主機的監聽埠是否能連上
nc -nv 127.0.0.1 80 選項 -v 如果你是 nc 的新手,建議總是帶上這個選項——透過更詳細的輸出,能幫你搞明白狀況。 選項 -n 由於測試的是【IP 地址】,用該選項告訴 nc,【無須】進行域名(DNS)解析; 反之,如果你要測試的主機是基於【域名】,就【不能】用“選項 -n” 選項 -w 超時設定 在測試連結的時候,如果你沒使用 -w 這個超時選項,預設情況下 nc 會等待很久,然後才告訴你連線失敗。如果你所處的網路環境穩定且高速(比如:區域網內),那麼,你可以追加“-w 選項”,設定一個比較小的超時值。在下面的例子中,超時值設為3秒。 nc -nv -w 3 x.x.x.x xx UDP 通常情況下,要測試的埠都是 TCP 協議的埠;如果你碰到特殊情況,需要測試某個 UDP 的埠是否可達。nc 同樣能勝任。只需要追加 -u 選項。
3.監聽伺服器
nc -lv -port 7000
4.傳輸檔案
4.1 單個檔案
伺服器 nc -l -p 7000 > file2 客戶端 nc 127.0.0.1 7000 < file1 效能優勢 用 nc 傳輸檔案,相當於是:直接在【裸 TCP】層面傳輸。你可以通俗理解為:【沒有】應用層。如果你傳輸的檔案【超級大】或者檔案數 量【超級多】,用 nc 傳輸檔案的效能優勢會很明顯(相比“FTP、SSH、共享目錄…”而言)
4.2 目錄
伺服器 nc -lv -p 7000 | tar xvf - 客戶端 tar cvf - * | nc -nv 127.0.0.1 7000 管道前面表示把當前目錄的所有檔案打包為 -
5. 網速吞吐量測試
伺服器 nc -nvv -l -p 7000 | pv 客戶端 time nc -n 127.0.0.1 7000 < /dev/zero -n是不要解析域名,避免解析域名造成時間誤差 其實上面兩種方法都把建立連線的握手時間以及 TCP 視窗慢啟動的時間給計算進去了,不是特別精確,最精確的方式是搭配 pv 命令(監控統計管道資料的速度)