多用途 TCP/UDP 網路工具
Netcrab 是一個命令列網路工具,可以做很多事情。它是對 netcat 的致敬,可以做許多它能做的事情。簡要概述它可以做的事情:
要完整使用,請執行netcrab --help
。
netcrab HOST:PORT
這將連接到指定的 TCP 伺服器。現在您的標準輸入將發送到伺服器,並且標準輸出將被列印出來。
主機名稱的 IPv6 格式應使用方括號括起來,例如 localhost 為[::1]
。
netcrab -L ADDR:PORT
netcrab -l ADDR:PORT
您可以以 TCP 伺服器偵聽一個或多個任意連接埠。使用-l
會在第一個傳入連線中斷後退出程式。使用-L
“更努力地監聽”:斷開連接後繼續監聽。
ADDR:PORT
語法支援一些特殊變體:
localhost:5000
:5000
*:5000
預設情況下,TCP 伺服器僅允許每個偵聽位址一次有一個傳入連線處於活動狀態,但-m max_inbound_clients
標誌允許多個連線。
與客戶端模式一樣,stdin 被傳送到所有連接的套接字,並且來自所有套接字的傳入資料被傳送到 stdout。這可以使用下面的輸入和輸出模式參數進行更改。
-z
參數導致套接字立即斷開連接,不允許發送任何資料。僅用於測試連接性。
netcrab -u -L ADDR:PORT
netcrab -u HOST:PORT
UDP 很奇怪,因為你並沒有真正與它「連接」。您綁定到本機端口,然後向遠端對等點發送/接收資料報。 UDP 的監聽模式和連接模式的工作原理完全相同,除了在連接模式下,第一個發送stdin 的對等點在開始時就已知,而在監聽模式下,stdin 流量不能發送到任何地方,直到監聽器至少接收到來自對等點的一個資料報。
對於-L
這支援與上面的 TCP 相同的ADDR:PORT
語法。
資料報大小預設為 1 字節,但可以透過--ss
參數控制。
netcrab -L ADDR1:PORT1 -L ADDR2:PORT2
netcrab -u -L ADDR1:PORT1 -L ADDR2:PORT2
Netcrab支援同時監聽多個本地位址和連接埠。它將接受到達其中任何一個的連接。這支援 TCP 和 UDP。
netcrab -u --mc HOST:PORT
Netcrab 透過新增--mc
參數支援將 UDP 套接字加入多重播放群組。它還可以控制多播封包的 TTL ( --ttl
) 以及是否接收自程式加入群組以來循環返回的多播封包 ( --mc_no_loop
)。
netcrab -u -b HOST:PORT
Netcrab支援發送UDP廣播資料報。
netcrab -i MODE
可以控制輸入模式。預設情況下,輸入來自 stdin。它接受以下其他模式:
none
:無法輸入。將處理的唯一流量將來自遠端對等點。stdin-nochar
:與 stdin 工作方式相同,但不參與「字元模式」。這對於互動式用途來說效果更差。echo
:任何收到的流量都會回顯給發送者。rand
:將產生隨機資料。資料的隨機大小可以透過--rsizemin
和--rsizemax
控制,資料的類型可以透過--rvals
控制。fixed
:僅對性能測試真正有用。具有固定資料的相同固定大小訊息將無限發送。您可以使用--ss
控制大小,並使用--rvals
控制其中隨機資料的類型pfqoscli
:根據 PlayFab 服務品質信標測量延遲。pfqossrv
:充當 PlayFab 服務品質信標伺服器,供客戶端作為測量延遲的目標。當使用其中一個標準輸入模式作為輸入時,您可以指定--exit-after-input
在輸入流到達文件末尾後退出程式。
netcrab -o MODE
預設情況下,輸出轉到 stdout,但將其更改為-o none
以跳過所有輸出通常很有用。當傳遞大量流量時,這特別有用,因為它會減慢輸出速度。
Netcrab 的預設模式是使用 stdin 和 stdout,因此您可以重定向檔案中的輸入並將輸出傳送到檔案(或在程式之間透過管道傳輸)。
netcrab HOST:PORT < file
echo message | netcrab HOST:PORT
netcrab -6
netcrab -4
您可以限制僅使用 IPv6 或 IPv4 位址系列。當連接到透過 DNS 解析的主機名稱或在未指定明確來源位址的情況下進行偵聽時,這會產生更大的差異。
netcrab -s ADDR:PORT
當建立出站 TCP 連線或傳送 UDP 資料封包時,預設會在通配符 IPv4 和 IPv6 位址建立(0.0.0.0:0 和 [::]:0)。您可以傳遞-s
來明確綁定到位址。這支援“TCP 伺服器”部分中描述的所有ADDR:PORT
變體。
netcrab HOST1:PORT1 HOST2:PORT2
Netcrab 允許同時連接到多個遠端對等點。與偵聽多個並發連線類似,來自本機電腦的流量將傳送至所有連線的對等點(入站或出站)。
netcrab -L ADDR:PORT HOST:PORT
Netcrab 支援同時偵聽入站連線和建立出站連線。這對於將流量從一個本地地址代理到另一個本地地址可能很有用,因為您可以獨立指定要偵聽的地址和用於出站連接的來源地址。
netcrab HOST:PORTxNUM
有時,能夠多次連接到同一端點非常有用,特別是對於通道場景。例如,要連線到主機名稱 12 次,您可以執行netcrab localhost:5000x12
。它將嘗試對同一主機名稱和連接埠進行 12 個並發出站連接。
這也可以與多個目標結合。在這裡,我們在 IPv4 上連接到本地主機五次,在 IPv6 上連接到本地主機十三次。 netcrab 127.0.0.1:5000x5 [::1]:5000x13
。
netcrab -r
netcrab -R
在出站連線模式下,您可以要求 Netcrab 重新建立斷開的連線。 -r
在正常連線關閉時重新建立。 -R
在不正常的錯誤上重新建立。兩者可以同時指定-r -R
或-rR
。
netcrab --fm channels
netcrab --fm linger-channels
現在讓我們來看看真正有用的部分。 Netcrab 可以變成路由器,在多個端點之間轉送流量。 「通道」模式將端點配對並將流量從一個端點雙向轉發到另一個端點,就像透明代理一樣。流量不在通道之間轉送。想像一下下面的圖表:
+-------------+ +-----------------------------+ +-------------+
| | | netcrab | | |
| HOST1:PORT1 <----> HOST2:PORT1 <-> HOST2:PORT2 <----> HOST3:PORT1 |
| HOST1:PORT2 <----> HOST2:PORT3 <-> HOST2:PORT4 <----> HOST3:PORT2 |
| | | | | |
+-------------+ +-----------------------------+ +-------------+
第一和第二通道一路穿過,但不交叉溪流。如果主機 1 或主機 3 斷開端點的連接,則該斷開也會「轉送」到頻道的另一端。如果該行為不適合您,您可以切換到延遲通道模式。
在通道模式下,假設使用者可能一次需要多個連線才能實際使用通道,則每個偵聽位址的最大客戶端數會自動增加到 10 個。這可以用-m
覆蓋。
netcrab --fm hub
集線器模式與通道模式類似,但更簡單:來自所有網路來源的所有流量都會轉回所有其他套接字。您可以用它來設置聊天室或其他東西。
與通道模式一樣,在集線器模式下,最大客戶端數會自動增加到每個偵聽位址 10 個,但可以使用-m
覆寫。
netcrab -e COMMAND
Netcrab 可以執行另一個程式並將其標準輸入和標準輸出連接到網路。可以輕鬆地使用它來公開遠端 shell 或其他東西,儘管您當然要小心這一點。在此模式下,常規輸入和輸出將被停用。
命令字串透過目前 shell 運行。
幾乎所有上述功能都可以同時組合和使用。例如,您可以偵聽多個位址並在相同會話中連接到多個目標,同時使用集線器在所有連線之間轉送。