Program AC yang saya buat untuk mengirim paket UDP ke IP dan port tujuan tertentu melalui soket mentah. Program ini mendukung hal berikut:
pthreads
(multi-threading).Catatan - Program ini tidak mendukung fragmentasi paket dan tidak ada gunanya menambahkan dukungan tersebut karena program ini tidak dibuat untuk itu.
Saat ini saya mempelajari lebih lanjut tentang inspeksi paket mendalam serta mempelajari cara kerja serangan (D)DoS. Saya membuat program ini dan hanya menggunakannya di jaringan lokal saya. Saya berencana membuat aplikasi server UDP yang mampu memfilter serangan (D)DoS dan memblokirnya menggunakan XDP setelah terdeteksi. Tool ini akan digunakan untuk menguji aplikasi server yang akan saya buat ini. Akhirnya saya akan membuat perangkat lunak yang dapat berjalan di jaringan Anycast saya yang mampu menghentikan serangan (D)DoS yang terdeteksi melalui XDP di semua server POP.
Saya menggunakan GCC untuk mengkompilasi program ini. Anda harus menambahkan -lpthread
di akhir perintah saat mengkompilasi melalui GCC.
Berikut ini contohnya:
gcc -g UDP_Sender.c -o UDP_Sender -lpthread
Penggunaannya adalah sebagai berikut:
Usage: ./UDP_Sender <Source IP> <Destination IP> <Destination IP> [<Max> <Min> <Interval> <Thread Count>]
Harap dicatat bahwa intervalnya dalam mikrodetik . Payload Min dan Max dalam satuan byte . Jika Anda mengatur interval ke 0, interval tersebut tidak akan menunggu antara pengiriman paket di setiap thread.
Berikut ini contohnya:
./UDP_Sender 192.168.80.10 10.50.0.4 27015 1000 1200 1000 3
Di atas terus mengirimkan paket ke 10.50.0.4
(port 27015
) dan muncul dari 192.168.80.10
(dalam kasus saya, palsu). Ia mengirimkan 1000
- 1200
byte data payload setiap 1000
mikrodetik. Ini akan mengirimkan paket-paket ini dari 3
thread.
Saya dapat mendorong sekitar 300 mbps (~23K PPS) menggunakan program ini di jaringan lokal saya hingga membebani router dan VM saya (saya memiliki Edge Router kelas bawah). Ini tanpa interval yang ditetapkan dan menggunakan satu thread. VM yang mengirimkan informasi memiliki 6 vCPU dan prosesornya adalah Intel Xeon lama yang memiliki clock 2,4 GHz. VM ini juga menggunakan sekitar 90 - 95% CPU saat menjalankan program ini.
Saya masih cukup baru dalam pemrograman C dan jaringan. Oleh karena itu, saya yakin ada perbaikan yang bisa dilakukan. Jika Anda melihat sesuatu yang dapat ditingkatkan, beri tahu saya :)