Linux 網絡工具netcat(nc)的應用


NETCAT

netcat是Linux常用的網絡工具之一,它能通過TCP和UDP在網絡中讀寫數據,通過與其他工具結合和重定向,可以在腳本中以多種方式使用它。

netcat所做的就是在兩台電腦之間建立鏈接並返回兩個數據流,我們可以建立一個服務器,傳輸文件,與朋友聊天,傳輸流媒體或者用它作為其它協議的獨立客戶端。

准備工作:

1)首先我們先打開兩台Linux虛擬機(位於同一局域網,vmware虛擬機網絡均選擇橋接模式即可) 當然netcat在windows中也有應用 現在我們只考慮Linux情況

2)關閉防火牆並使用root權限

  以centos7為例 輸入 systemctl stop firewalld.service 命令關閉防火牆  輸入su命令得到root權限

3)輸入命令 ifconfig 查看 ip 地址  


我們對於nc命令來做一個簡單介紹,我們在兩台機子上使用nc,所以會有一個服務端與客戶端的建立,其實就是一台機子打開一個偵聽端口,另一個去連接那個端口

我們可以在shell中輸入 nc -h 可以查看它的參數都有什么用

命令有很多就不再贅述 下面講最常見的幾個

  1)打開服務端口我們通常使用例如   nc -lp 333   333端口只是示例也可以選擇其他端口

  2)服務端連接端口使用 例如 nc -nv 192.168.0.115 333  其中192.168.0.115是目標ip 333是目標ip的開放端口

  3)執行相關指令時我們可以在命令后添加例如 -q 1 實現完成命令后1秒關閉連接

需要注意的是 連接是雙向的 無論后續進行什么操作,服務端與客戶端都可以進行,例如服務端可以向客戶端傳輸文件,同樣的客戶端也可以向服務端傳輸文件


 

傳輸文本信息

我們可以使用nc 傳輸文本信息就像聊天一項 下面進行演示

首先兩台機子ip已查

我們用左邊的機子作為服務端打開端口 輸入命令:

[root@bogon chenyuhong]# nc -lp 333

右邊機子去連接左邊機子 輸入命令:

root@Ksha:~# nc -nv 192.168.0.115 333
(UNKNOWN) [192.168.0.115] 333 (?) open

現在我們就可以實現簡單的信息交流了 直接在shell打字回車鍵即可


 

傳輸文件與目錄

我們可以傳輸文本信息 那么可以傳輸文件嗎 當然可以了 我們使用到重定向與nc結合就可以做到這點

例如我們傳輸一個mp4文件 

1)服務端向客戶端傳輸文件

服務端命令:

[root@bogon mvmp4]# nc -lp 333 < 1.mp4

客戶端命令:

root@Ksha:~/桌面/test# nc -nv 192.168.0.115 333 > 1.mp4 -p 1

然后我們打開客戶端文件夾 發現文件已經傳輸過來了 

2)客戶端向服務端傳輸文件

此步驟其實只需要把上邊兩條命令的重定向符號交換即可  下面講的各種操作均是如此 之后不再贅述

 

那么我們如何傳輸文件夾(目錄)呢

我們可以使用打包解包命令 即把文件夾先弄成壓縮包然后對方再解壓

服務端向客戶端傳輸目錄

服務端命令:

[root@bogon 下載]# tar -cvf - mvmp4/  | nc -lp 333
mvmp4/
mvmp4/1.mp4
mvmp4/test.py

客戶端命令:

root@Ksha:~/桌面/test# nc  192.168.0.115 333 | tar -xvf -
mvmp4/
mvmp4/1.mp4
mvmp4/test.py

注意:注意命令中的空格

然后發現文件夾已經傳輸過來了

我們還可以配合加密命令以及管道來進行加密傳輸 可以自己多嘗試


 

流媒體服務

我們甚至可以使用nc來做一個流媒體服務器

服務端:

[root@bogon mvmp4]# cat 1.mp4 | nc -lp 333

客戶端:

root@Ksha:~/桌面/test# nc -nv 192.168.0.115 333 | mplayer -vo x11 -cache 3000 -

3000是緩存大小  mplayer播放器需要自己安裝在系統種

效果


 

端口掃描

是的 nc甚至可以用來端口掃描,不過我們也知道端口掃描都不是百分百准確的所以我們只用來參考就好

掃描器端:使用命令 nc -nvz ip地址 端口范圍

root@Ksha:~/桌面/test# nc -nvz 192.168.0.115 1-65535
(UNKNOWN) [192.168.0.115] 6000 (x11) open
(UNKNOWN) [192.168.0.115] 111 (sunrpc) open
(UNKNOWN) [192.168.0.115] 22 (ssh) open

注意,此命令是掃描tcp 如果掃描udp 需要把命令變為  nc -nvzu

nc -nvzu 192.168.0.115 1-100


 

遠程硬盤克隆

我們可以遠程復制對方硬盤代碼如下

被克隆方:

 dd if=/dev/sda | nc -nv 1.1.1.1 333 –q 1 

克隆方(接收方):

 nc -lp 333 | dd of=/dev/sda 

遠程控制

 

我們還可以遠程控制對方系統,即控制shell效果

被控制方代碼:

[root@bogon mvmp4]# nc -lp 333 -c bash

控制方代碼:

 
         

root@Ksha:~/桌面/test# nc -nv 192.168.0.115 333
(UNKNOWN) [192.168.0.115] 333 (?) open
ls
1.mp4
test.py

發現我們現在在窗口敲得命令已經是對方的反饋了 同樣的我們上面講過服務是雙向的  所以也可以讓監聽端口方控制連接端口方 只需要把 -c bash換下位置即可如下圖

如上所述,netcat配合命令重定向可以完成的事情簡直不要太多 熟悉掌握nc對於網絡學習有很大用處

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM