netcat 使用
1.前言
1.1聲明
文章中的文字可能存在語法錯誤以及標(biāo)點錯誤,請諒解;
如果在文章中發(fā)現(xiàn)代碼錯誤或其它問題請告知,感謝!
2.netcat的使用
2.1netcat介紹
netccat是一個通過TCP/UDP在網(wǎng)絡(luò)中進行讀寫數(shù)據(jù)工具(命令),被稱為“瑞士軍刀”,主要用于調(diào)試領(lǐng)域、傳輸領(lǐng)域甚至黑客攻擊領(lǐng)域。利用該工具,可以將網(wǎng)絡(luò)中一端的數(shù)據(jù)完整的發(fā)送至另一臺主機終端顯示或存儲,常見的應(yīng)用為文件傳輸、與好友即時通信、傳輸流媒體或者作為用來驗證服務(wù)器的獨立的客戶端。當(dāng)然,也可以在腳本中使用該工具。
2.2netcat常用功能
2.2.1端口掃描
1.查看某IP端口開放狀態(tài)
命令:netcat -v ip port
實例1:netcat -v www.baidu.com 90
通過查看百度的90端口,可以發(fā)現(xiàn)該端口為閉合狀態(tài)。
實例2:netcat -v www.baidu.com 80
通過查看百度的80端口,可以發(fā)現(xiàn)該端口為開放狀態(tài)。
2.查看某IP的端口段(注意掃描速度會很慢)
命令:netcat -v ip port1-port2
實例:netcat -v www.baidu.com 78-82
2.2.2即時通信
netcat可以作為簡單的聊天工具使用,這個功能在只能連接局域網(wǎng)的網(wǎng)絡(luò)環(huán)境中特別方便。
假設(shè)現(xiàn)在有兩臺主機A和B,A想要和B進行簡單的信息通信,那么可以指定其中一臺主機作為server,綁定自己的一個端口作為通信端口(例如將主機A作為server,將其10000作為自己的通信端口)。
命令:netcat -l port
實例:netcat -l 10000
然后將主機B作為客戶端去連接主機A的1000端口(前提是要知道主機A的IP地址)
命令:netcat server_ip port
實例:netcat 192.168.237.131 10000
在server端和client端都搭建好了以后,就可以互相進行即時通信
注意在使用netcat進行即時通信的時候,要首先搭建server端然后搭建client端。
2.2.3文件傳輸
在兩臺主機之間傳送文件除了可以使用ftp軟件,也可以使用netcat進行文件傳輸。
2.2.3.1單個文件傳輸
假設(shè)現(xiàn)在有兩臺主機A和B,A想要和B進行文件傳送,那么可以指定其中一臺主機作為server,綁定自己的一個端口作為通信端口(例如將主機A作為server,將其10000作為自己的傳送端口)
命令:netcat -l port < file
實例:首先使用“cd”命令進入傳送文件所在目錄,然后輸入:netcat -l 1000 < test.txt
然后在主機B中接收文件
命令:netcat -n server_ip port > file
實例:首先使用“cd”命令進入想要保存文件的目錄,然后輸入:netcat -n 192.168.237.131 10000 >receive.txt(注意接收文件名可以和傳送文件的文件名不一樣)
這樣作為server端的主機中的文件就傳送至client端,但是每次只能傳送一個文件。
2.2.3.2多個文件傳輸
若我們要發(fā)送多個文件或者整個目錄,也可以實現(xiàn),此時需要一個tar壓縮工具。
在主機A進行發(fā)送:
命令:tar -cvf - server_dir_name | netcat -l port
實例:首先使用“cd”命令進入傳送文件夾所在目錄(/home/dlri/Desktop/Tests/),然后輸入tar -cvf - /home/dlri/Desktop/Tests/ | netcat -l 10000
然后在主機B指定位置接收:
命令:netcat -n server_ip port | tar -xvf -
實例:首先使用“cd”命令進入想要保存文件的目錄,然后輸入netcat -n 192.168.237.132 10000 | tar -xvf -
當(dāng)然,可以使用bzip2或其他壓縮工具進行壓縮傳送。
2.2.4視頻流傳輸
主機A作為server,將視頻發(fā)至指定端口:
命令:cat video.avi | netcat -l port
實例:首先使用“cd”命令進入想要保存文件的目錄,然后輸入:cat a.avi | netcat -l 10000
主機B作為client,接收視頻:
命令:netcat server_ip port | mplayer -vo x11 -cache 3000 -
實例:netcat 192.168.237.132 1000 | mplayer -vo x11 -cache 3000 -
2.2.5指定源端口
在2.2.2中,client接收使用的隨機端口接收server端的數(shù)據(jù),要想使用特定端口接收數(shù)據(jù)可以使用參數(shù)“-p”來指定
命令:netcat server_ip port1 -p port2
實例:netcat 192.168.237.131 10000 -p 1234
注意使用1024以內(nèi)的端口需要root權(quán)限。
2.2.6指定源地址
在2.2.3中,client使用一個網(wǎng)卡接收文件,當(dāng)client有多塊網(wǎng)卡的時候,可以通過參數(shù)“-s”指定接收文件的網(wǎng)卡。
命令:netcat server_ip port -s client_ip > file
實例:netcat 192.168.237.131 10000 -s 192.168.237.132 > receive.txt
2.2.7創(chuàng)建遠(yuǎn)程shell
常見的netcat分為GNU和OPENBSD版本,Ubuntu14.04自帶OPENBSD版本,若想使用netcat創(chuàng)建遠(yuǎn)程shell,則要下載安裝GNU版本。
下載地址:http://netcat.sourceforge.net/
解壓:
下載完成后,將netcat tar包解壓至指定文件夾中,例如解壓至/opt: tar -zxvf netcat-0.7.1.tar.gz -C /opt
編譯安裝:
進入解壓后的文件夾,依次輸入:
./configure
make
sudo make install
安裝完成。
因為Ubuntu已經(jīng)安裝了netcat,所以出現(xiàn)了重名,安裝完后輸入:/usr/local/bin/netcat -h,若出現(xiàn)紅框所標(biāo)識的內(nèi)容,則表示安裝成功。
現(xiàn)將主機A作為server:
命令:/usr/local/bin/netcat -l -p port -e /bin/bash
實例:/usr/local/bin/netcat -l -p 10000 -e /bin/bash
主機B作為client:
命令:/usr/local/bin/netcat server_ip port
實例:/usr/local/bin/netcat 192.168.237.132 10000
然后主機B就能登陸到主機A的shell:
在主機B使用“l(fā)s -l”命令查看到的內(nèi)容:
在主機A使用“l(fā)s -l”命令查看到的內(nèi)容:
需要注意的是,黑客可能會利用這個功能來進行遠(yuǎn)程控制(被控制的主機被稱為“肉雞”)。
本文來自 wangqingchuan92 的CSDN 博客 ,全文地址請點擊:https://blog.csdn.net/wangqingchuan92/article/details/79666885?utm_source=copy
總結(jié)
- 上一篇: 代码质量与规范,那些年你欠下的技术债
- 下一篇: 【跃迁之路】【597天】程序员高效学习方