$NetBSD: patch-aa,v 1.4 2009/02/11 08:06:17 obache Exp $ --- main.c.orig 2003-08-07 23:55:55.000000000 +0000 +++ main.c @@ -47,7 +47,8 @@ unsigned int signlen, lsr_length = 0, ssr_length = 0, - tcp_ack; + tcp_ack, + tcp_mss; unsigned short int @@ -65,6 +66,7 @@ int recv_pkt = 0, out_of_sequence_pkt = 0, sending_wait = DEFAULT_SENDINGWAIT, /* see DEFAULT_SENDINGWAIT */ + opt_flood = FALSE, opt_rawipmode = FALSE, opt_icmpmode = FALSE, opt_udpmode = FALSE, @@ -98,6 +100,7 @@ int opt_tcpexitcode = FALSE, opt_badcksum = FALSE, opt_tr_keep_ttl = FALSE, + opt_tcp_mss = FALSE, opt_tcp_timestamp = FALSE, opt_tr_stop = FALSE, opt_tr_no_rtt = FALSE, @@ -179,6 +182,17 @@ int main(int argc, char **argv) char setflags[1024] = {'\0'}; int c, hdr_size; + /* open raw socket */ + sockraw = open_sockraw(); + if (sockraw == -1) { + printf("[main] can't open raw socket\n"); + exit(1); + } + if (getuid() && setuid(getuid()) == -1) { + printf("[main] can't drop privs\n"); + exit(1); + } + if (parse_options(argc, argv) == -1) { printf("hping2: missing host argument\n" "Try `hping2 --help' for more information.\n"); @@ -219,13 +233,6 @@ int main(int argc, char **argv) ifname, ifstraddr, h_if_mtu); } - /* open raw socket */ - sockraw = open_sockraw(); - if (sockraw == -1) { - printf("[main] can't open raw socket\n"); - exit(1); - } - /* set SO_BROADCAST option */ socket_broadcast(sockraw); /* set SO_IPHDRINCL option */ @@ -355,6 +362,13 @@ int main(int argc, char **argv) } } + /* flood mode */ + if (opt_flood) { + printf("Flooding...\n"); + for (;;) + send_packet(0 /* dummy */); + } + /* start packet sending */ kill(getpid(), SIGALRM);