netcat的使用

Getone超發表於2024-03-14

目錄
  • 一、基本使用簡介
  • 二、netcat的使用
    • 滲透測試(埠掃描)
    • 要判斷某個主機的監聽埠是否能連上
    • 3.監聽伺服器
    • 4.傳輸檔案
    • 5. 網速吞吐量測試

一、基本使用簡介

usage: nc [-46CDdFhklNnrStUuvZz] [-I length] [-i interval] [-M ttl]
          [-m minttl] [-O length] [-P proxy_username] [-p source_port]
          [-q seconds] [-s source] [-T keyword] [-V rtable] [-W recvlimit] [-w timeout]
          [-X proxy_protocol] [-x proxy_address[:port]]           [destination] [port]
        Command Summary:
                -4              Use IPv4
                -6              Use IPv6
                -b              Allow broadcast
                -C              Send CRLF as line-ending
                -D              Enable the debug socket option
                -d              Detach from stdin
                -F              Pass socket fd
                -h              This help text
                -I length       TCP receive buffer length
                -i interval     Delay interval for lines sent, ports scanned
                -k              Keep inbound sockets open for multiple connects(配合 -l 選項使用,可以重複接受客戶端連線。)
                -l              Listen mode, for inbound connects(開啟“監聽模式”,nc 作為【服務端】注:如不加該選項,nc 預設作為客戶端)
                -M ttl          Outgoing TTL / Hop Limit
                -m minttl       Minimum incoming TTL / Hop Limit
                -N              Shutdown the network socket after EOF on stdin
                -n              Suppress name/port resolutions
                -O length       TCP send buffer length
                -P proxyuser    Username for proxy authentication
                -p port         Specify local port for remote connects(指定“埠號”)
                -q secs         quit after EOF on stdin and delay of secs(讓 nc 延時(N 秒)再退出)
                -r              Randomize remote ports
                -S              Enable the TCP MD5 signature option
                -s source       Local source address
                -T keyword      TOS value
                -t              Answer TELNET negotiation
                -U              Use UNIX domain socket
                -u              UDP mode(使用 UDP 協議 注:如不加該選項,預設是 TCP 協議)
                -V rtable       Specify alternate routing table
                -v              Verbose (顯示詳細資訊)
                -W recvlimit    Terminate after receiving a number of packets
                -w timeout      Timeout for connects and final net reads(設定連線的超時間隔(N 秒))
                -X proto        Proxy protocol: "4", "5" (SOCKS) or "connect"(指定代理的型別)
                -x addr[:port]  Specify proxy address and port(以 IP:port 的格式指定代理的位置。)
                -Z              DCCP mode
                -z              Zero-I/O mode [used for scanning]
        Port numbers can be individual or ranges: lo-hi [inclusive]
        
        
-g <閘道器> # 設定路由器躍程通訊閘道器,最多可設定8個。
-G<指向器數目> # 設定來源路由指向器,其數值為4的倍數。
-h 線上幫助。
-i<延遲秒數> 設定時間間隔,以便傳送資訊及掃描通訊埠。
-l 使用監聽模式,管控傳入的資料。
-n 直接使用IP地址,而不透過域名伺服器。
-o<輸出檔案> # 指定檔名稱,把往來傳輸的資料以16進位制字碼傾倒成該檔案儲存。
-p<通訊埠> # 設定本地主機使用的通訊埠。
-r 亂數指定本地與遠端主機的通訊埠。
-s<來源位址> # 設定本地主機送出資料包的IP地址。
-u 使用UDP傳輸協議。
-v 顯示指令執行過程。
-w<超時秒數> # 設定等待連線的時間。
-z 使用0輸入/輸出模式,只在掃描通訊埠時使用

二、netcat的使用

  1. 滲透測試(埠掃描)

nc -znv 127.0.0.1 1-1024 2>&1 | grep succeeded

選項 -z
意思是:開啟“zero-I/O 模式”。該模式指的是:nc 只判斷某個監聽埠是否能連上,連上後【不】與對端進行資料通訊。

選項 -n
由於測試的是【IP 地址】,用該選項告訴 nc,【無須】進行域名(DNS)解析;
反之,如果你要測試的主機是基於【域名】,就【不能】用“選項 -n”

選項 -v
-v 選項前面也聊過,這裡要特地強調一下。
對 nc 的其它用法,-v 選項是可加可不加滴;但對於“埠掃描”而言,一定要有這個選項——否則你【看不到】掃描結果

2>&1 | grep succeeded
過濾掉不成功的資訊
  1. 要判斷某個主機的監聽埠是否能連上

    nc -nv 127.0.0.1 80 
    
    選項 -v
    如果你是 nc 的新手,建議總是帶上這個選項——透過更詳細的輸出,能幫你搞明白狀況。
    
    選項 -n
    由於測試的是【IP 地址】,用該選項告訴 nc,【無須】進行域名(DNS)解析;
    反之,如果你要測試的主機是基於【域名】,就【不能】用“選項 -n”
    
    選項 -w
    超時設定 在測試連結的時候,如果你沒使用 -w 這個超時選項,預設情況下 nc 會等待很久,然後才告訴你連線失敗。如果你所處的網路環境穩定且高速(比如:區域網內),那麼,你可以追加“-w 選項”,設定一個比較小的超時值。在下面的例子中,超時值設為3秒。
    nc -nv -w 3 x.x.x.x xx
    
    UDP 通常情況下,要測試的埠都是 TCP 協議的埠;如果你碰到特殊情況,需要測試某個 UDP 的埠是否可達。nc 同樣能勝任。只需要追加 -u 選項。
    

    3.監聽伺服器

    nc -lv -port 7000
    

    4.傳輸檔案

    4.1 單個檔案

    伺服器
    nc -l -p 7000 > file2
    
    客戶端
    nc 127.0.0.1 7000 < file1
    
    效能優勢 
    
    用 nc 傳輸檔案,相當於是:直接在【裸 TCP】層面傳輸。你可以通俗理解為:【沒有】應用層。如果你傳輸的檔案【超級大】或者檔案數
    量【超級多】,用 nc 傳輸檔案的效能優勢會很明顯(相比“FTP、SSH、共享目錄…”而言)
    

    4.2 目錄

    伺服器
     nc -lv -p 7000 | tar xvf -
    
    客戶端
    tar cvf - * | nc -nv 127.0.0.1 7000
    
    管道前面表示把當前目錄的所有檔案打包為 - 
    

    5. 網速吞吐量測試

    伺服器
    nc -nvv -l -p 7000 | pv
    
    客戶端
    time nc -n 127.0.0.1 7000 < /dev/zero
    
    -n是不要解析域名,避免解析域名造成時間誤差
    其實上面兩種方法都把建立連線的握手時間以及 TCP 視窗慢啟動的時間給計算進去了,不是特別精確,最精確的方式是搭配 pv 命令(監控統計管道資料的速度)
    

相關文章