Netcat (nc) 命令是分析網絡連接、掃描開放端口、傳輸數據等的強大工具。它是使用 TCP 或 UDP 協議讀取和寫入網絡連接的網絡實用程序。
如何 安裝網貓
它是一個跨平台工具,可用於 Linux、macOS、Windows 和 BSD。 我們將使用以下命令在 Ubuntu 18.04 機器上安裝 netcat apt install
或從源代碼編譯它。
使用 apt 安裝非常簡單,您只需要在終端中鍵入以下命令:
sudo apt install netcat
在 CentOS 8 上
在 RHEL 8/CentOS 8 上可以使用 nmap 包安裝 ncat。使用 dnf 命令如下
sudo dnf install nmap
如何從源代碼安裝netcat
從源代碼編譯netcat不像通過安裝那麼容易 apt install
,但如果您按照以下步驟操作,則可以輕鬆安裝。
從下載源代碼 網貓網站 使用以下命令
wget https://sourceforge.net/projects/netcat/files/netcat/0.7.1/netcat-0.7.1.tar.gz
提取新下載的存檔。 為此,您可以運行:
tar -xzvf netcat-0.7.1.tar.gz
cd
到包含包的源代碼和類型的目錄 ./configure
為您的系統配置軟件包。
cd netcat-0.7.1
./configure
如果您在運行 ./configure 命令時收到這樣的錯誤消息 – “在 $PATH 中找不到可接受的 C 編譯器”,請確保您已安裝 gcc 編譯器。 要安裝它,請鍵入以下命令:
apt-get install build-essential
跑步 configure
需要一段時間。
一旦配置成功完成運行:
sudo make
和
sudo make install
您可以通過鍵入從源代碼目錄中刪除程序二進製文件和目標文件 make clean
. 還要刪除那些 configure
創建,運行 make distclean
命令。
Netcat 示例
在開始探索一些 netcat 命令之前,重要的是要知道,如果您使用 nc 綁定到眾所周知的端口 (0-1023),您需要 root 權限。 否則,您可以以普通用戶身份運行 nc。
1) 測試遠程主機的特定 TCP 端口是否打開
nc -vn 192.168.40.146 2424
如果遠程服務器上的 2424 端口關閉,則輸出
nc: connect to 192.168.40.146 port 2424 (tcp) failed: Connection refused
如果遠程服務器上的端口已打開(例如 22 端口),則輸出
Connection to 192.168.40.146 22 port [tcp/*] succeeded!
SSH-2.0-OpenSSH_7.6p1 Ubuntu-4
2) 對遠程主機執行 TCP 端口掃描
下面的命令將檢查遠程主機上從 20 到 25 的端口並打印結果。
nc -vnz -w 1 192.168.40.146 20-25
輸出將如下所示
nc: connect to 192.168.40.146 port 20 (tcp) failed: Connection refused
nc: connect to 192.168.40.146 port 21 (tcp) failed: Connection refused
Connection to 192.168.40.146 22 port [tcp/*] succeeded!
nc: connect to 192.168.40.146 port 23 (tcp) failed: Connection refused
nc: connect to 192.168.40.146 port 24 (tcp) failed: Connection refused
nc: connect to 192.168.40.146 port 25 (tcp) failed: Connection refused
3) 對遠程主機執行UDP端口掃描
nc -vnzu 192.168.40.146 1-65535
輸出將僅顯示允許 udp 連接的端口。
Connection to 192.168.40.146 2424 port [udp/*] succeeded!
Connection to 192.168.40.146 12354 port [udp/*] succeeded!
4) 向遠程主機發送測試UDP數據包
echo -n "udp test" | nc -u -w1 192.168.40.146 2424
上面的命令將發送一個超時 1 秒的測試 UDP 數據包到端口 2424 的遠程主機
5) 將文件(例如 test.txt)從一台主機複製到另一台主機
在接收方主機(在我的例子中為 192.168.40.146)上運行:
nc -lp 2424 > test.txt
在發件人主機 (192.168.40.144) 上運行以下命令:
nc 192.168.40.146 2424 < test.txt
這將通過 2424 端口將 test.txt 文件從發送方主機複製到接收方主機。 確保在接收器主機上的 2424 端口上允許傳入連接。
6) 將整個目錄(包括其內容)從一台主機傳輸到另一台主機
在接收器主機上運行:
nc -l 2424 | tar xvf -
在發件人主機上運行以下命令:
tar cvf - /path/to/dir | nc 192.168.40.146 2424
7) 在遠程主機上創建硬盤驅動器的壓縮備份(例如,/dev/sdc)
在遠程主機上運行:
nc -lp 2424 | sudo dd of=/path/to/image.img.gz
在本地主機上運行以下命令:
dd if=/dev/sdc | gzip -c | nc 192.168.40.146 2424
8) 從存儲在遠程主機中的壓縮磁盤映像恢復硬盤驅動器(例如 /dev/sdc)
在本地主機上運行:
nc -lp 2424 | gunzip -c | sudo dd of=/dev/sdc
在遠程主機上運行以下命令:
cat /path/to/image.img.gz | nc 192.168.40.144 2424
9) 在兩個主機之間運行不安全的在線聊天
在一台主機(例如 192.168.40.144)上運行以下命令:
nc -lp 2424
在另一台主機(例如 192.168.40.146)上運行以下命令:
nc 192.168.40.144 2424
運行這些命令後,在兩個終端中輸入的任何內容都將在兩台主機上看到。
10) 運行帶有靜態網頁的 Web 服務器
在本地主機(例如 192.168.40.144)上運行以下命令以啟動一個在端口 80 上提供 test.html 的 Web 服務器。請注意,您必須使用 sudo 作為 80 的特權在眾所周知的端口範圍內 (1-1023)
while true; do sudo nc -lp 80 < test.html; done
現在開放 https://192.168.40.144/test.html
從另一台主機訪問它。
11) 使用 IPv6 地址偵聽 TCP 端口
您可以使用以下命令允許 nc 在偵聽 TCP 端口時使用 IPv6 地址。
nc -6 -l 2424
檢查它是否適用於以下命令
sudo netstat -nap | grep 2424
輸出將如下所示
tcp6 0 0 :::2424 :::* LISTEN 15665/nc
12)從服務器流式傳輸視頻文件,以便客戶端使用視頻播放器(例如,mplayer)觀看流式傳輸的視頻
在視頻服務器 (192.168.40.144) 上:
cat sample_video.avi | nc -l 2424
在客戶端主機 (192.168.40.146) 上:
nc 192.168.40.144 2424 | mplayer -vo x11 -cache 3000 –
另請閱讀:
- 如何使用 Linux Netcat 命令作為端口掃描器
- 如何在 Linux 中使用 netcat 創建一個簡單的聊天
如您所見,netcat 是用於 TCP/IP 網絡的出色工具,並且在進行與網絡相關的故障排除和實驗時,它是系統管理員最喜歡的工具之一。 這就是為什麼許多 Linux 發行版都預裝了 netcat。