網絡工具中的瑞士軍刀nc命令
VSole2022-01-25 06:20:26
NetCat,在網絡工具中有“瑞士軍刀”美譽,其有Windows和Linux的版本。因為它短小精悍(1.84版本也不過25k,舊版本或縮減版甚至更小)、功能實用,被設計為一個簡單、可靠的網絡工具,可通過TCP或UDP協議傳輸讀寫數據。同時,它還是一個網絡應用Debug分析器,因為它可以根據需要創建各種不同類型的網絡連接。
netcat(簡寫是 nc) 是 linux 上非常有用的網絡工具,它能通過 TCP 和 UDP 在網絡中讀寫數據。通過配合使用其他工具和重定向,可以在腳本中以多種方式使用它。netcat 所做的就是在兩臺電腦之間建立鏈接并返回兩個數據流,在這之后所能做的事就看你的想像力了。
安裝nc
yum install -y nc
用法簡介
nc [-hlnruz][-g < 網關…>][-G < 指向器數目 >][-i < 延遲秒數 >][-o < 輸出文件 >][-p < 通信端口 >][-s < 來源位址 >][-v…][-w < 超時秒數 >][主機名稱][通信端口…]
參數說明
- -g <網關> 設置路由器躍程通信網關,最丟哦可設置 8 個。
- -G <指向器數目> 設置來源路由指向器,其數值為 4 的倍數。
- -h 在線幫助。
- -i <延遲秒數> 設置時間間隔,以便傳送信息及掃描通信端口。
- -l 使用監聽模式,管控傳入的資料。
- -n 直接使用 IP 地址,而不通過域名服務器。
- -o <輸出文件> 指定文件名稱,把往來傳輸的數據以 16 進制字碼傾倒成該文件保存。
- -p <通信端口> 設置本地主機使用的通信端口。
- -r 亂數指定本地與遠端主機的通信端口。
- -s <來源位址> 設置本地主機送出數據包的 IP 地址。
- -u 使用 UDP 傳輸協議。
- -v 顯示指令執行過程。
- -w <超時秒數> 設置等待連線的時間。
- -z 使用 0 輸入 / 輸出模式,只在掃描通信端口時使用。
端口掃描
nc -v -w 2 192.168.2.34 -z 21-24 //輸出 nc: connect to 192.168.2.34 port 21 (tcp) failed: Connection refused Connection to 192.168.2.34 22 port [tcp/ssh] succeeded! nc: connect to 192.168.2.34 port 23 (tcp) failed: Connection refused nc: connect to 192.168.2.34 port 24 (tcp) failed: Connection refused
文件拷貝
在192.168.2.34上
nc -l 1234 > test.txt
在192.168.2.33上
nc 192.168.2.34 < test.txt
簡單聊天工具
在192.168.2.34上
nc -l 1234
在192.168.2.33上
nc 192.168.2.34 1234
這樣,雙方就可以相互交流了。使用 ctrl+C(或 D)退出。
用 nc 命令操作 memcached
- 存儲數據:printf “set key 0 10 6rnresultrn” |nc 192.168.2.34 11211
- 獲取數據:printf “get keyrn” |nc 192.168.2.34 11211
- 刪除數據:printf “delete keyrn” |nc 192.168.2.34 11211
- 查看狀態:printf “statsrn” |nc 192.168.2.34 11211
- 模擬 top 命令查看狀態:watch “echo stats” |nc 192.168.2.34 11211
- 清空緩存:printf “flush_allrn” |nc 192.168.2.34 11211 (小心操作,清空了緩存就沒了)
連接 web 服務器
//建立從本地1234端口到host.example.com的80端口連接,5秒超時 nc -p 1234 -w 5 host.example.com 80
udp 連接服務器
nc -u host.example.com 53
連接服務器并執行
echo -n "GET / HTTP/1.0"r"n"r"n" | nc host.example.com 80
指定 TCP 協議版本
netcat 的 -4 和 -6 參數用來指定 IP 地址類型,分別是 IPv4 和 IPv6:
//server nc -4 -l 2389 //client nc -4 localhost 2389
禁止從標準輸入中讀取數據
該功能使用 -d 參數,請看下面例子:
//server side $ nc -l 2389 //client side nc -d localhost 2389
強制 Netcat 服務器端保持啟動狀態
通常情況下如果連接到服務端的客戶端連接斷開, 服務端進程也會退出, 如果想讓服務端保持存活可以加一個-k的參數//server side $ nc -k -l 2389 //client side nc localhost 2389
nc聊天
server1:
[root@server1 ~]# nc -l 1234 hello! hi!
server2:
[root@server2 ~]# nc 192.168.200.27 1234 hello! hi!
VSole
網絡安全專家