功能說明:功能強(qiáng)大的網(wǎng)絡(luò)工具( ̄▽ ̄)>,在網(wǎng)絡(luò)工具中有“瑞士軍刀”美譽(yù),其有Windows和Linux的版本。因?yàn)樗绦【?功能實(shí)用,被設(shè)計(jì)為一個(gè)簡(jiǎn)單、可靠的網(wǎng)絡(luò)工具,可通過TCP或UDP協(xié)議傳輸讀寫數(shù)據(jù)。同時(shí),它還是一個(gè)網(wǎng)絡(luò)應(yīng)用Debug分析器,因?yàn)樗梢愿鶕?jù)需要?jiǎng)?chuàng)建各種不同類型的網(wǎng)絡(luò)連接。
nc可以提供如下的網(wǎng)絡(luò)功能:
1) 監(jiān)聽特定端口,這時(shí)候nc就可以作為一個(gè)服務(wù)器,但是我發(fā)現(xiàn)這樣使用nc生成的服務(wù)器僅僅是一個(gè)echo服務(wù)器而已,沒有其他更加強(qiáng)大的功能.
2) 連接特定端口,這時(shí)候nc就成為了一個(gè)客戶端,同樣的,也是一個(gè)簡(jiǎn)單的客戶端,只能起echo的作用.
3) 掃描端口,這可以作為查詢某個(gè)機(jī)器上是否開啟了某個(gè)端口.
幾個(gè)具體的使用例子
例子1:
使用nc打開linux下的特定端口
nc -lp 23 (即telnet)
netstat -an|grep 23 (查看端口是否正常打開)
例子2:
使用nc進(jìn)行文件傳輸,命令
ssh root@www.freetstar.com “( nc -l 10003 > destination 2>/dev/null )” cat source | nc www.freetstar.com 10003
前邊ssh登錄到遠(yuǎn)程主機(jī)www.freetstar.com上,用nc命令打開本地的10003端口,成為后臺(tái)進(jìn)程
后邊,在本地機(jī)器上打開source文件,并將其重定向到www.freetstar.com的10003號(hào)端口,也就是讓遠(yuǎn)程www.freetstar.com主機(jī)10003號(hào)端口接收source文件
例子3:
使用nc掃描linux下的特定端口
nc -v -z host.example.com 70-80
掃描端口(70到80),可指定范圍。-v輸出詳細(xì)信息。
例子4:
克隆硬盤或分區(qū)
類似于例子2,只需要由dd獲得硬盤或分區(qū)的數(shù)據(jù),然后傳輸即可。
克隆硬盤或分區(qū)的操作,不應(yīng)在已經(jīng)mount的的系統(tǒng)上進(jìn)行。所以,需要使用安裝光盤引導(dǎo)后,進(jìn)入拯救模式(或使用Knoppix工 具光盤)啟動(dòng)系統(tǒng)后
server1上執(zhí)行:# nc -l -p 1234 | dd of=/dev/sda
server1上執(zhí)行1234號(hào)端口監(jiān)聽,將得到的文件保存到/dev/sda上
server2上執(zhí)行:# dd if=/dev/sda | nc server1 1234
例子5:
保存Web頁(yè)面
while true; do nc -l -p 80 -q 1 somepage.html; done
例子6:
模擬HTTP Headers
[root@hatest1 ~]# nc www.huanxiangwu.com 80
GET / HTTP/1.1
Host: ispconfig.org
Referrer: mypage.com
User-Agent: my-browser
在nc命令后,輸入紅色部分的內(nèi)容,然后按兩次回車,即可從對(duì)方獲得HTTP Headers內(nèi)容。
例子7:
聊天
server1上監(jiān)聽1234端口[root@hatest2 tmp]# nc -lp 1234
server2上向server1的1234端口發(fā)送消息[root@hatest1 ~]# nc server1 1234
這樣,雙方就可以相互交流了。使用Ctrl+D正常退出。
更多的使用,查看man手冊(cè)
nc example.host port 打開與example.host主機(jī)的port的一個(gè)TCP鏈接.如果鏈接失敗,不顯示任何錯(cuò)誤信息,僅僅退出
nc -p 31337 -w 5 example.host 42 打開與example。host主機(jī)的42號(hào)端口的一個(gè)TCP鏈接。用31337作為源端口,超時(shí)鏈接時(shí)間為5秒
nc -u example.host 53 指定協(xié)議為udp協(xié)議
語(yǔ) 法:nc [-hlnruz][-g網(wǎng)關(guān)...>][-G指向器數(shù)目>][-i延遲秒數(shù)>][-o輸出文件>][-p通信端口>][-s來源位址>][-v...][-w超時(shí)秒數(shù)>][主機(jī)名稱][通信端口...]
參 數(shù):
-g網(wǎng)關(guān)> 設(shè)置路由器躍程通信網(wǎng)關(guān),最多可設(shè)置8個(gè)。
-G指向器數(shù)目> 設(shè)置來源路由指向器,其數(shù)值為4的倍數(shù)。
-h 在線幫助。
-i延遲秒數(shù)> 設(shè)置時(shí)間間隔,以便傳送信息及掃描通信端口。
-l 使用監(jiān)聽模式,管控傳入的資料。
-n 直接使用IP地址,而不通過域名服務(wù)器。
-o輸出文件> 指定文件名稱,把往來傳輸?shù)臄?shù)據(jù)以16進(jìn)制字碼傾倒成該文件保存。
-p通信端口> 設(shè)置本地主機(jī)使用的通信端口。
-r 亂數(shù)指定本地與遠(yuǎn)端主機(jī)的通信端口。
-s來源位址> 設(shè)置本地主機(jī)送出數(shù)據(jù)包的IP地址。
-u 使用UDP傳輸協(xié)議。
-v 顯示指令執(zhí)行過程。
-w超時(shí)秒數(shù)> 設(shè)置等待連線的時(shí)間。
-z 使用0輸入/輸出模式,只在掃描通信端口時(shí)使用。
來看下它的基本用法:
1.監(jiān)聽本地端口
root@10.1.1.43:~# nc -l -p 1234
root@10.1.1.43:~# netstat -tunlp | grep 1234
tcp 0 0 0.0.0.0:1234 0.0.0.0:* LISTEN 15543/nc
2.端口掃描
root@10.1.1.43:~# nc -v -w 10 10.1.1.180 80
(UNKNOWN) [10.1.1.180] 80 (www) open
root@10.1.1.43:~# nc -v -w 10 10.1.1.180 -z 80-30000
(UNKNOWN) [10.1.1.180] 22000 (?) open
(UNKNOWN) [10.1.1.180] 80 (www) open
3.文件傳出
源10.1.1.43 text.txt
目的 10.1.1.180
root@10:~# nc -l -p 1234 > test.txt #開10.1.1.180:1234端口監(jiān)聽,并將socket傳輸過來的數(shù)據(jù)重定向到test.txt文件 test 43 nc
root@10.1.1.43:~#cat test.txt
root@10.1.1.43:~# nc 10.1.1.180 1234 test.txt #連接遠(yuǎn)程的10.1.1.180,從test.txt的路徑從定向到socket,從而將文件傳輸?shù)竭h(yuǎn)方。
root@10:~# cat test.txt
test 43 nc
4.目錄傳輸
源10.1.1.43 python_program
目的 10.1.1.180
root@10:~# nc -l -p 1234 | tar xzvf -
root@10.1.1.43:~# tar czvf - python_program | nc 10.1.1.180 1234
python_program/
python_program/1.py
python_program/4.py
python_program/3.py
5.測(cè)試UDP端口
root@172.16.211.34:web# netstat -tunlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1111/sshd
udp 0 0 0.0.0.0:68 0.0.0.0:* 887/dhclient
root@172.16.211.35:~# nc -vuz 172.16.211.34 68
Connection to 172.16.211.34 68 port [udp/bootpc] succeeded!