我製作的AC程式透過原始套接字將UDP封包傳送到指定的目標IP和連接埠。該計劃支持以下內容:
pthreads
(多執行緒)。注意- 該程式不支援資料包分段,並且實際上沒有必要添加該支持,因為這不是該程式的用途。
我目前正在學習有關深度資料包檢查的更多信息,以及 (D)DoS 攻擊的工作原理。我製作了這個程序,並且只在我的本地網路上使用它。我計劃創建一個 UDP 伺服器應用程序,能夠過濾 (D)DoS 攻擊並在檢測到時使用 XDP 阻止它們。該工具將用於測試我將製作的伺服器應用程式。最終,我將製作在我的 Anycast 網路上運行的軟體,該軟體能夠透過所有 POP 伺服器上的 XDP 丟棄偵測到的 (D)DoS 攻擊。
我使用 GCC 來編譯這個程式。透過 GCC 編譯時,必須在指令末尾加上-lpthread
。
這是一個例子:
gcc -g UDP_Sender.c -o UDP_Sender -lpthread
用法如下:
Usage: ./UDP_Sender <Source IP> <Destination IP> <Destination IP> [<Max> <Min> <Interval> <Thread Count>]
請注意,間隔以微秒為單位。最小和最大有效負載以位元組為單位。如果將間隔設為 0,則每個執行緒上傳送資料包之間不會等待。
這是一個例子:
./UDP_Sender 192.168.80.10 10.50.0.4 27015 1000 1200 1000 3
上面的程式碼不斷地將封包傳送到10.50.0.4
(連接埠27015
),並從192.168.80.10
出現(在我的例子中,是欺騙的)。它每1000
微秒發送1000
- 1200
位元組的有效負載資料。它將從3
線程發送這些資料包。
我能夠在本地網路上使用此程式推動大約 300 mbps (~23K PPS),直到它使我的路由器和虛擬機器過載(我有一個低端邊緣路由器)。這是沒有設定間隔並使用一個執行緒的情況。傳送訊息的虛擬機器有 6 個 vCPU,處理器是較舊的 Intel Xeon,主頻為 2.4 GHz。執行程式時,該虛擬機器還使用了大約 90 - 95% 的 CPU。
我對 C 語言和網路程式設計還很陌生。因此,我確信可以進行改進。如果您發現任何可以改進的地方,請告訴我:)