Netcat(簡稱 nc)被譽為網絡工具界的「瑞士軍刀」,它能通過 TCP 和 UDP 協議在網絡中讀寫數據。憑藉簡潔的設計,配合重定向與管道,Netcat 可實現端口掃描、文件傳輸、聊天服務、流媒體傳輸甚至加密通訊等多種功能。本文將通過實例詳細介紹 Netcat 的核心用法。
nc [選項] [目標IP] [端口範圍]
系統管理員常用 Netcat 快速發現開放端口並識別服務版本:
# 掃描 172.31.100.7 的 21-25 端口
nc -z -v -n 172.31.100.7 21-25
發現開放端口後,可直接連接獲取服務 Banner 信息:
nc -v 172.31.100.7 21
Banner 信息有助於判斷服務類型、版本及潛在漏洞,但並非所有服務都會返回 Banner。
在無法使用即時通訊軟件的環境下,Netcat 可快速建立局域網聊天:
nc -l 1567
nc 172.31.100.7 1567
雙方鍵入的文字會即時顯示在對方終端,按 Ctrl+C 結束會話。
利用輸入/輸出重定向實現無需 FTP/SCP 的快速文件傳輸:
# A 端:監聽 1567 端口,將 file.txt 作為輸入
nc -l 1567 < file.txt
# B 端:連接 A,將接收內容保存為 file.txt
nc -n 172.31.100.7 1567 > file.txt
# A 端:監聽並將輸出保存到 file.txt
nc -l 1567 > file.txt
# B 端:連接 A,發送 file.txt 內容
nc 172.31.100.7 1567 < file.txt
通過管道結合 tar 實現整目錄傳輸:
# 服務端:打包目錄並發送
tar -cvf - dir_name | nc -l 1567
# 客戶端:接收並解包
nc -n 172.31.100.7 1567 | tar -xvf -
# 服務端:打包並用 bzip2 壓縮後發送
tar -cvf - dir_name | bzip2 -z | nc -l 1567
# 客戶端:接收、解壓、解包
nc -n 172.31.100.7 1567 | bzip2 -d | tar -xvf -
為保障數據安全,可在傳輸前進行加密:
# 服務端:接收加密數據並解密保存
nc -l 1567 | mcrypt --flush --bare -F -q -d -m ecb > file.txt
# 客戶端:加密文件並發送
mcrypt --flush --bare -F -q -m ecb < file.txt | nc 172.31.100.7 1567
雙端需使用相同密碼。亦可替換為 openssl、gpg 等工具。
雖非專業流媒體方案,但在缺乏專用工具時可應急使用:
# 服務端:發送視頻文件
cat video.mp4 | nc -l 1567
# 客戶端:接收並直接播放(需播放器支持管道輸入)
nc 172.31.100.7 1567 | mplayer -
-k 參數(部分版本支持)可在斷開連接後繼續監聽-w 秒數 設置連接超時-p 端口 指定發送端口,配合防火牆規則使用-6 強制 IPv6Netcat 功能強大且輕量,是系統管理員、滲透測試人員及開發者的必備工具。掌握其核心用法,能在無圖形界面、受限環境下快速解決網絡調試、文件傳輸、服務測試等問題。建議結合 man nc 閱讀完整手冊,探索更多組合用法。