- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
b1=100+(int)(255.0*rand()/(RAND_MAX+100.0));
b2=100+(int)(255.0*rand()/(RAND_MAX+100.0));
b3=100+(int)(255.0*rand()/(RAND_MAX+100.0));
b4=100+(int)(255.0*rand()/(RAND_MAX+100.0)); if(b1>255)
sprintf(b1s,"%d",b1);
sprintf(b2s,"%d",b2);
sprintf(b3s,"%d",b3);
sprintf(b4s,"%d",b4);
strcat(b1s,".");
strcat(b2s,".");
strcat(b3s,".");
strcat(b1s,b2s);
strcat(b1s,b3s);
strcat(b1s,b4s);
iph->ip_src.s_addr = inet_addr (b1s);
Some firewalls, such as ZoneAlarm Pro, detect SYN Flood and block the source IP address (see Figure 1). So we need to assign our spoofed source IP address a random number as shown below:
http://linux.sys-con.com/node/34589
вот какой шедевр откопал
Dummy00001 27.01.2011 16:34 # 0
или что-то в этом духе.
самое смешное, что так как адрес все равно спуфнутый, то даже нетворк байт ордер не нужен...
danilissimus 27.01.2011 16:43 # 0
а так не проще?
Dummy00001 27.01.2011 16:58 # 0
оригинальный код пытается что бы все числа в адресе были в диапазоне от 100 до 255. (хотя по уму надо было бы до 254 - что бы случаем бродкаст адрес не получился.)
ЗЫ ты исходишь из того RAND_MAX == 32767. хотя меньше оно не будет, а если и больше - то хуже не будет...
bugmenot 27.01.2011 20:01 # 0
Dummy00001 27.01.2011 20:05 # 0
guest 23.03.2012 17:27 # 0
Будет: некоторые биты будут OR'ом двух рандомов. Т.е. распределение будет 0- 1/4 1 - 3/4. Если делать говнокодом то:
(rand() << 16) ^ rand()
А если немного нормально:
COMPILE_TIME_ASSERT (RAND_MAX >= 32767);
ip = (rand() << 16) | (rand() & 0xffff);