NETCAT netcat是Linux常用的網路工具之一,它能通過TCP和UDP在網路中讀寫數據,通過與其他工具結合和重定向,可以在腳本中以多種方式使用它。 netcat所做的就是在兩臺電腦之間建立鏈接並返回兩個數據流,我們可以建立一個伺服器,傳輸文件,與朋友聊天,傳輸流媒體或者用它作為其它協議的獨 ...
NETCAT
netcat是Linux常用的網路工具之一,它能通過TCP和UDP在網路中讀寫數據,通過與其他工具結合和重定向,可以在腳本中以多種方式使用它。
netcat所做的就是在兩臺電腦之間建立鏈接並返回兩個數據流,我們可以建立一個伺服器,傳輸文件,與朋友聊天,傳輸流媒體或者用它作為其它協議的獨立客戶端。
準備工作:
1)首先我們先打開兩台Linux虛擬機(位於同一區域網,vmware虛擬機網路均選擇橋接模式即可) 當然netcat在windows中也有應用 現在我們只考慮Linux情況
2)關閉防火牆並使用root許可權
以centos7為例 輸入 systemctl stop firewalld.service 命令
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對於網路學習有很大用處