Linux 基礎教程 28-nc命令

nc

    nc命名netcat,直譯爲網絡貓。在CentOS 7查看幫助的解釋以下所示:服務器

ncat - Concatenate and redirect sockets

翻譯過來就是能夠鏈接和重定向Sockets。經過查詢其餘資料,能夠看到nc命令功能確實很是多,它能夠打開TCP鏈接,發送UDP包,監聽TCP/UDP端口,進行端口掃描等等。微信

基本語法

nc [選項] [主機名] [端口]

經常使用參數以下所示:網絡

參數 說明
-4 僅使用IPv4
-6 僅使用IPv6
-c,--sh-exec [command] 執行給定的命令,同/bin/sh
-e,--exec [command] 執行給定的命令
-m,--max-conns [n] 設置同時鏈接的最大數
-d,--delay [time] 設置讀/寫的等待時間
-o,--output [filename] 將會話的數據保存爲文件
-i,--idle-timeout [time] 讀/寫空閒超時時間
-p,--source-port port 指定本機使用的通訊端口
-s,--source addr 指定遠程通訊的主機地址
-l,--listen 監聽傳入的鏈接信息
-k,--keep-open 在監聽模式中接收多個鏈接信息
-n,--nodns 直接使用IP地址,不解析域名
-t,--telnet 響應telnet請求
-u,--udp 使用UDP替換默認的TCP
-v,--verbose 顯示詳細的輸出信息
-w,--wait [time] 設置鏈接超時時間,單位爲秒
-z 創建鏈接後立刻斷開,不發送和接收任何數據,即Zero-I/O模式,僅用於測試鏈接狀態

示例

1.實現QQ的功能socket

  • 在本地終端監聽一個端口
nc -l 9999
  • 在另外一臺服務器中輸入如下命令創建鏈接
nc 鏈接服務器IP 9999
  • 在任何一個服務器上輸入的信息都將發送到另外一臺服務器上面

2.端口掃描tcp

    在Linux中雖然有專業的端口掃描端口工具,如nmap,但若是咱們只想知道端口是否處理開放狀態,nc命令其實也是能夠勝任的。下面演示就是掃描本機端口20-25工具

[root@localhost ~]# nc -z -v -n -w 2 127.0.0.1 20-25
nc: connect to 127.0.0.1 port 20 (tcp) failed: Connection refused
nc: connect to 127.0.0.1 port 21 (tcp) failed: Connection refused
Connection to 127.0.0.1 22 port [tcp/*] succeeded!
nc: connect to 127.0.0.1 port 23 (tcp) failed: Connection refused
nc: connect to 127.0.0.1 port 24 (tcp) failed: Connection refused
Connection to 127.0.0.1 25 port [tcp/*] succeeded!

    當鏈接到服務器上的某個端口時,監聽該端口的服務會傳送一個Banner(相似於一條歡迎消息)信息,這個Banner通常都會顯示自身程序的版本號等信息。而黑客就要能夠利用這些信息作入侵策略。從上面咱們能夠看到22端口處於開放狀態,所以咱們就能夠獲取端口22的Banner信息測試

[root@localhost ~]# nc -v 127.1 22
Ncat: Version 7.50 ( https://nmap.org/ncat )
Ncat: Connected to 127.0.0.1:22.
SSH-2.0-OpenSSH_7.4

    從上面信息能夠看到SSH的版本,若是這個版本的SSH有漏洞的話,就能夠被黑客給利用了。spa

3.傳輸文件翻譯

    在Linux傳輸文件,一般使用FTP和SCP,爲何還須要使用nc命令了?其實nc命令傳輸文件有其獨有的優點,即只須要選擇一個端口就能夠在兩臺服務器間傳輸文件,而不須要進行任何配置,也不須要像FTP和SCP那樣驗證用戶名和密碼等信息。code

  • 在文件的發送端,啓動監聽端口並準備好相應的文件
nc -v -l 9999 < out.txt
  • 在文件的接收端,使用如下命令接收數據
[root@localhost ~]# nc -v -n 服務器IP地址 9999 > in.txt
[root@localhost ~]#  ll in.txt
-rw-r--r-- 1 root root 25 7月  23 00:08 in.txt
  • 此時在發送端能夠看到以下信息
[root@localhost ~]# nc -v -l 9999 < out.txt 
Connection from 客戶端IP地址 port 9999 [tcp/distinct] accepted

4.傳輸文件夾

    若是須要傳輸多個文件或文件夾,nc是否是就沒法完成了?這時就須要使用tar命令了。

  • 使用管道技術,將tar的輸出經過管道傳給nc
[root@localhost~]# tar -cvPf - ~/out | nc -l 9999
/root/out/
/root/out/out.txt
/root/out/eip.sh
  • 在客戶端鏈接9999端口,而後將接收到數據經過tar解壓
[root@localhost ~]# nc -n 服務器IP地址 9999 | tar -xvPf -
/root/out/
/root/out/out.txt
/root/out/eip.sh

本文同步在微信訂閱號上發佈,如各位小夥伴們喜歡個人文章,也能夠關注個人微信訂閱號:woaitest,或掃描下面的二維碼添加關注: MyQRCode.jpg

相關文章
相關標籤/搜索