功能說明:功能強大的網絡工具<( ̄▽ ̄)>,在網絡工具中有“瑞士軍刀”美譽,其有Windows和Linux的版本。因為它短小精悍,功能實用,被設計為一個簡單、可靠的網絡工具,可通過TCP或UDP協議傳輸讀寫數據。同時,它還是一個網絡應用Debug分析器,因為它可以根據需要創建各種不同類型的網絡連接。
nc可以提供如下的網絡功能:
1) 監聽特定端口,這時候nc就可以作為一個服務器,但是我發現這樣使用nc生成的服務器僅僅是一個echo服務器而已,沒有其他更加強大的功能.
2) 連接特定端口,這時候nc就成為了一個客戶端,同樣的,也是一個簡單的客戶端,只能起echo的作用.
3) 掃描端口,這可以作為查詢某個機器上是否開啟了某個端口.
幾個具體的使用例子
例子1:
使用nc打開linux下的特定端口
nc -lp 23 & (即telnet)
netstat -an|grep 23 (查看端口是否正常打開)
例子2:
使用nc進行文件傳輸,命令
ssh [email protected] “( nc -l 10003 > destination 2>/dev/null & )” && cat source | nc www.freetstar.com 10003
&& 前邊ssh登錄到遠程主機www.freetstar.com上,用nc命令打開本地的10003端口,成為後台進程
&&後邊,在本地機器上打開source文件,並將其重定向到www.freetstar.com的10003號端口,也就是讓遠程www.freetstar.com主機10003號端口接收source文件
例子3:
使用nc掃描linux下的特定端口
nc -v -z host.example.com 70-80
掃描端口(70到80),可指定范圍。-v輸出詳細信息。
例子4:
克隆硬盤或分區
類似於例子2,只需要由dd獲得硬盤或分區的數據,然後傳輸即可。
克隆硬盤或分區的操作,不應在已經mount的的系統上進行。所以,需要使用安裝光盤引導後,進入拯救模式(或使用Knoppix工 具光盤)啟動系統後
server1上執行:# nc -l -p 1234 | dd of=/dev/sda
server1上執行1234號端口監聽,將得到的文件保存到/dev/sda上
server2上執行:# dd if=/dev/sda | nc server1 1234
例子5:
保存Web頁面
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命令後,輸入紅色部分的內容,然後按兩次回車,即可從對方獲得HTTP Headers內容。
例子7:
聊天
server1上監聽1234端口[root@hatest2 tmp]# nc -lp 1234
server2上向server1的1234端口發送消息[root@hatest1 ~]# nc server1 1234
這樣,雙方就可以相互交流了。使用Ctrl+D正常退出。
更多的使用,查看man手冊
nc example.host port 打開與example.host主機的port的一個TCP鏈接.如果鏈接失敗,不顯示任何錯誤信息,僅僅退出
nc -p 31337 -w 5 example.host 42 打開與example。host主機的42號端口的一個TCP鏈接。用31337作為源端口,超時鏈接時間為5秒
nc -u example.host 53 指定協議為udp協議
語 法:nc [-hlnruz][-g<網關...>][-G<指向器數目>][-i<延遲秒數>][-o<輸出文件>][-p<通信端口>][-s<來源位址>][-v...][-w<超時秒數>][主機名稱][通信端口...]
參 數:
-g<網關> 設置路由器躍程通信網關,最多可設置8個。
-G<指向器數目> 設置來源路由指向器,其數值為4的倍數。
-h 在線幫助。
-i<延遲秒數> 設置時間間隔,以便傳送信息及掃描通信端口。
-l 使用監聽模式,管控傳入的資料。
-n 直接使用IP地址,而不通過域名服務器。
-o<輸出文件> 指定文件名稱,把往來傳輸的數據以16進制字碼傾倒成該文件保存。
-p<通信端口> 設置本地主機使用的通信端口。
-r 亂數指定本地與遠端主機的通信端口。
-s<來源位址> 設置本地主機送出數據包的IP地址。
-u 使用UDP傳輸協議。
-v 顯示指令執行過程。
-w<超時秒數> 設置等待連線的時間。
-z 使用0輸入/輸出模式,只在掃描通信端口時使用。
來看下它的基本用法:
1.監聽本地端口
復制代碼代碼如下:
[email protected]:~# nc -l -p 1234
[email protected]:~# netstat -tunlp | grep 1234
tcp 0 0 0.0.0.0:1234 0.0.0.0:* LISTEN 15543/nc
2.端口掃描
復制代碼代碼如下:
[email protected]:~# nc -v -w 10 10.1.1.180 80
(UNKNOWN) [10.1.1.180] 80 (www) open
復制代碼代碼如下:
[email protected]:~# 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端口監聽,並將socket傳輸過來的數據重定向到test.txt文件 test 43 nc
[email protected]:~#cat test.txt
[email protected]:~# nc 10.1.1.180 1234 < test.txt #連接遠程的10.1.1.180,從test.txt的路徑從定向到socket,從而將文件傳輸到遠方。
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 -
[email protected]:~# 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.測試UDP端口
復制代碼代碼如下:
[email protected]: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
復制代碼代碼如下:
[email protected]:~# nc -vuz 172.16.211.34 68
Connection to 172.16.211.34 68 port [udp/bootpc] succeeded!