參考:html
http://www.javashuo.com/article/p-cleqzevl-kx.htmllinux
https://www.oschina.net/translate/linux-netcat-commandnginx
https://blog.csdn.net/qq_29499107/article/details/82384393 bash
nc提供的功能:能夠經過Tcp和Udp在網絡中讀寫數據。它所做的工做就是在兩臺電腦之間創建鏈接並返回兩個數據流,基於這樣的功能能夠有不少的使用場景。服務器
用於發現機器上開放的端口網絡
$ nc -v -z -w2 127.0.0.1 1-100
Connection to 127.0.0.1 22 port [tcp/ssh] succeeded! Connection to 127.0.0.1 53 port [tcp/domain] succeeded! Connection to 127.0.0.1 80 port [tcp/http] succeeded! ... nc: connect to 127.0.0.1 port 100 (tcp) failed: Connection refused
這個命令打印1-100的開發端口。dom
z 參數告訴netcat使用0 IO,鏈接成功後當即關閉鏈接, 不進行數據交換(謝謝@jxing 指點)ssh
v 參數顯示執行過程tcp
n 參數告訴netcat 不要使用DNS反向查詢IP地址的域名spa
一旦發現開放端口,就可使用nc鏈接服務抓取banner。Banner是一個你鏈接的服務發送給你的文本信息。當你試圖鑑別漏洞或者服務的類型和版本的時候,Banner信息是很是有用的。可是,並非全部的服務都會發送banner。
nc -v 172.31.100.7 21
netcat 命令會鏈接開放端口21而且打印運行在這個端口上服務的banner信息。
若是隻是臨時一次文件傳輸,使用nc就不用麻煩的配置ftp等。
首先在接收端192.168.1.3上: nc -l 1234 > file.txt
而後在發送端192.168.1.2上: nc 192.168.1.3 < file.txt
server $nc -l 1567 < file.txt
client $nc -n 172.31.100.7 1567 > file.txt
這裏在A上建立了一個服務器,而且重定向netcat的輸入爲文件file.txt,若有有鏈接鏈接到1234端口,nc會發送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
注意:先運行接收端,指定一個端口爲1234,文件爲test.txt,再執行發送端,而且發送端必須存在同名的文件test.txt
-l 開啓 監聽模式,用於指定nc將處於監聽模式。一般 這樣表明着爲一個 服務等待客戶端來連接指定的端口。
-p<通訊端口> 設置本地主機使用的通訊端口。有可能會關閉
-k<通訊端口>強制 nc 待命連接.當客戶端從服務端斷開鏈接後,過一段時間服務端也會中止監聽。 但經過選項 -k 咱們能夠強制服務器保持鏈接並繼續監聽端口。
從server1(192.168.16.233)拷貝nginx目錄內容到server2(192.168.48.47)上。須要先在server2上,用nc激活監聽,
server2上運行:# nc -l 1234 | tar xzv-
server1上運行:# tar czv- nginx | nc 192.168.48.47 1234
在Server(192.168.1.2)上:
$nc -l 1567
在Client(192.168.1.3)上:
$nc 192.168.1.2 1567