Няшная / Говнокод #5401 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 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

вот какой шедевр откопал

Запостил: danilissimus danilissimus, (Updated )

Комментарии (6) RSS

  • свинство.
    b1 = 100 + floorl(drand48()*(255-100));
    b2 = 100 + floorl(drand48()*(255-100));
    b3 = 100 + floorl(drand48()*(255-100));
    b4 = 100 + floorl(drand48()*(255-100));
    iph->ip_src.s_addr = (b1<<24)|(b2<<16)|(b3<<8)|b4;

    или что-то в этом духе.
    самое смешное, что так как адрес все равно спуфнутый, то даже нетворк байт ордер не нужен...
    Ответить
      • хез.

        оригинальный код пытается что бы все числа в адресе были в диапазоне от 100 до 255. (хотя по уму надо было бы до 254 - что бы случаем бродкаст адрес не получился.)

        ЗЫ ты исходишь из того RAND_MAX == 32767. хотя меньше оно не будет, а если и больше - то хуже не будет...
        Ответить
          • тоже правда. проще было бы наверное просто самый нижний бит убить. тогда бы этот адрес не мог бы случайно совпасть с широковещательным.
            Ответить
        • >а если и больше - то хуже не будет...
          Будет: некоторые биты будут OR'ом двух рандомов. Т.е. распределение будет 0- 1/4 1 - 3/4. Если делать говнокодом то:
          (rand() << 16) ^ rand()
          А если немного нормально:
          COMPILE_TIME_ASSERT (RAND_MAX >= 32767);
          ip = (rand() << 16) | (rand() & 0xffff);
          Ответить

Добавить комментарий

Из-за тебя ушел bormand, guest!

    А не использовать ли нам bbcode?


    8