簡介
nc
全稱 netcat
,是一個在 Linux
中多功能的網路工具,通常用於透過 TCP
或 UDP
讀取和寫入網路連線,也能作為客戶端或服務端用來 debug
,測試,網路問題分析。
常用示例
檢查埠是否是開啟的
nc -zv <hostname> <port>
nc -zv example.com 80
# -z:掃描但不傳送資料
# -v:詳細輸出模式
啟動一個簡單的 TCP
服務
nc -l <port>
nc -l 1234
# 啟動一個監聽在 1234 埠的服務,任何資料傳送在這個埠上將會顯示在終端
連線指定埠的 TCP
服務
nc <hostname> <port>
nc localhost 1234
# 連線 localhost 的 1234 埠
傳送檔案到指定服務埠
nc <receiver_ip> <port> < file_to_send
nc 192.168.1.10 1234 < file.txt
從指定服務埠接受檔案
nc -l <port> > received_file
nc -l 1234 > file.txt
埠掃描
nc -zv <hostname> <start_port>-<end_port>
nc -zv 192.168.1.1 20-25
# 掃描從20到25的埠
建立簡單的聊天會話
nc -l 1234
nc <server_ip> 1234
傳送 HTTP
請求到目標服務
echo -e "GET / HTTP/1.1\r\nHost: example.com\r\n\r\n" | nc example.com 80
連線到 UDP
服務
nc -u <hostname> <port>
nc -u localhost 1234
傳送資料到指定的主機埠
echo "Hello, World!" | nc <hostname> <port>
高階用法
建立一個 Web
服務
while true; do echo -e "HTTP/1.1 200 OK\r\n\r\nHello, World!" | nc -l 8080; done
# 建立一個監聽在 8080 埠的服務
監控網路流量
nc -l 1234 | tee output.log
# 記錄傳送到 1234 埠的資料並寫到日誌檔案