如何通過示例使用 Netcat 命令

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。