1. Си / Говнокод #20900

    +2000

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    18. 18
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    24. 24
    25. 25
    26. 26
    unsigned int get_spoofed() {
        char spa[21];
        int a, b, c, d;
    
        srand(time(0));
    
        random_ct = rand();
        random_num = ((random_ct % 254) + 1);
        a = random_num;
    
        random_ct = rand();
        random_num = ((random_ct % 254) + 1);
        b = random_num;
    
        random_ct = rand();
        random_num = ((random_ct % 254) + 1);
        c = random_num;
    
        random_ct = rand();
        random_num = ((random_ct % 254) + 1);
        d = random_num;
    
        snprintf(spa, sizeof(spa), "%d.%d.%d.%d", a, b, c, d);
    
        return ((unsigned int)host2ip(spa));
    }

    Ддосбот для роутеров https://github.com/eurialo/lightaidra/blob/master/source/utils.c

    Запостил: nyaknyan, 20 Августа 2016

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

    • Геренацию рендомного IP адреса вижу я
      Причем во всех сетях включая мультикасты
      Не знаю что делает host2ip, боюсь думать
      Ответить
      • > Не знаю что делает host2ip
        Велосипедный inet_addr(), скорее всего.
        Ответить
        • стоп

          а нахуя тогда вообще текстовое представление? Поцчему нельзя нашифтить все в 4 байта и потом поменять байтордер (если надо)?
          Ответить
          • Ну вот поэтому оно и тут. Байтордер для рандома менять не имеет смысла.
            Ответить
            • >>Байтордер для рандома менять не имеет смысла.
              и правда))

              --мне все равно куда попасть
              --тогда все равно куда идти

              Вообще как они так ловко юзают Int?
              а там хуяк и 64 бита
              и все поедет

              uint32_t же надо
              Ответить
              • В gcc бывает инт 64бита? Эта штука под линуксы заточена.
                Там вообще весь код по ссылке тот еще шедевр.
                А привычка юзать uint**_t под ипишки и порты хорошая, сам юзаю.
                Ответить
                • Не бывает, наверное

                  Небось из за таких как он и оставили 32) Но вообще если в RFC ясно сказано "4 октета" то проще, чище и понятнее писать "32 бита" чем int:)
                  Зачем самому себе жизнь портить?
                  Ответить
                  • >4 байта

                    4 октета.
                    Ответить
                    • ты прав, я исправил)

                      В теории может быть платформа, где понятия "байт" нет.

                      лол, как же там работает жаба с типом byte?
                      Ответить
                      • Жаба работает на абстрактной машине с 8битным байтом. Проблемы реализации этой машины на конкретной платформе её не ебут.
                        Ответить
                        • спасибо, кэп

                          я зеленым забыл выделить
                          Ответить
                      • Сомневаюсь что такая платформа станет распространенной в ближайшие десятки лет.
                        Я стараюсь в своем коде поддерживать endian neutral и не делать unaligned access . Но не 8битовый байт это уже что-то за гранью добра и зла.
                        Ответить
                        • Так речь жеж не о поддержке, а о том , почему в RFC нельзя писать "byte"

                          https://tools.ietf.org/html/rfc176

                          Ряд ЭВМ 1950-х и 1960-х годов (БЭСМ-6, М-220) использовали 6-битовые символы в 48-битовых или 60-битовых машинных словах. В некоторых моделях ЭВМ производства Burroughs Corporation (ныне Unisys) размер символа был равен 9 битам. В советской ЭВМ Минск-32 использовался 7-битный байт.
                          Ответить
                        • На ДСПшках байт часто 16битный.
                          Ответить
                        • > Но не 8битовый байт это уже что-то за гранью добра и зла.

                          байт уже давно не совсем байт.

                          раньше в память ходили за байтом.

                          нынешние интерфейсы памяти уже давно ничего побайтово не адресуют. с тех пор как все начали мучатся с cache-line-alignment, это и был момент смерти настоящего байта: процессору/контроллеру памяти приходится симулировать байты, потому что физическая память уже давно 128-/256-/больше битовая и с одним байтом работать не способна.
                          Ответить
                          • Какой багор )))
                            Ответить
                          • А x86 неудобно с байтами работать даже в регистрах - получаются ложные зависимости от старого значения регистра. gcc вон всегда старается воткнуть movzx rax, xxx вместо mov al, xxx.
                            Ответить
                            • Потому что процессоры не могут быстро в байьовые команды. Это идёт в разрез с системой анализа зависимостей между регистрами и соответственно с системой виртуальных регистров (ренейминг регистров)
                              Ответить
                            • в *H и *L вполне можешь
                              в 16битном режие

                              ps: но читались из памяти 2 байта даже в 8086!

                              именно потому надо было выравнивать (И собственно отсюда 16 бит стали называть словом)
                              Ответить
                          • Память вполне себе адресуется побайтово. Тот факт что ты не можешь _физически_ считать один байт ниочем не говорит.

                            Из банка ты читаешь рядом, из модуля -- шириной канала (64 бита) а поскольку читает кеш-контроллер то он читает линейкой.

                            Однако в ISA процессора ты все равно можешь оперировать байтом
                            Ответить
                            • > Однако в ISA процессора ты все равно можешь оперировать байтом

                              Это ёжику понятно.

                              > Из банка ты читаешь рядом, из модуля -- шириной канала (64 бита) а поскольку читает кеш-контроллер то он читает линейкой.

                              Не стоит забывать что virtual 64-bit memory space != NNGB of physical RAM.

                              Ширина шины данных ничего общего с этим иметь не будет. Ширина адресной шины - я еще только про редкие high-end HPC ящики читал которые имеют 64 бит аддресную шину. У большинства современных компов/процов аддресная шина 42-52 бита.

                              И на этой теме: если задуматся, накой х будут делать шину в которой Н нижних бит будет всегда нулем? Учитывая как скупы и экономны железячники, я очень сомневаюсь что они для нулей будут линейки проводить.

                              ЗЫ Я правда не уверен какая там именно организация шины к памяти. Я видел схематики одной PowerPC-based (много лет назад) архитектуры и там для адреса и данных одна и та же 32-бита HW шина использовалась. Как оно сейчас, и на 64-бит процах, и со встроеными контроллерами памяти, я не знаю/не читал.
                              Ответить
                              • >>virtual 64-bit memory space
                                Я вообще-то про ширину канала у контроллера памяти, а не о размере адресуемой процессором памяти)

                                В контроллере (даже не смотря на то что сейчас он в процессоре)есть N каналов. Каждый канал это 64 физические дорожки, и они бегут к модулю DIMM. Если модуль двухсторонник, то можно два канала к нему подвести.

                                Ширина "канала" на модуле складывается из N микроскхем.
                                Например 8 микросхем по 8 бит каждая. Или 16 микросхем по 4 бита каждая.

                                Дальше я должен написать про банки внутри микрух, про их ряды и про sense ampl, но мне лень.

                                >>шину в которой Н нижних бит будет всегда нулем?
                                Да ни на какой, ты прав. Часть проводов тупо "не прокладывают" , в результате чего адресовать можно только пачку байтов.

                                Как я уже пейсал выше даже 8086 считывал всегда 2 байта (выравнивался по ним короче).

                                Но когда они все уже зачитаны в кеш, работать можно с каждым по отдельности.
                                Ответить
                                • > Как я уже пейсал выше даже 8086 считывал всегда 2 байта (выравнивался по ним короче).

                                  На том PowerPC который втыкал, всегда передавалось 4 байта. Если читаешь 1 невыровненый байт, то на шине байт стоял в октете тоже со смещением. (Типа: если читаешь байт по адрессу 0х1, то на проц приходило 0х00нн0000 (биг-эндиан).)

                                  Вообщем кавардак.
                                  Ответить
                                  • да, обычно нужно вырваниваться

                                    ну вот 8086 разрешает не выравниваться и наказывает тормозом (если ты читаешь байты 2 и 3, то на самом деле проц читает байты 1 и 2, затем 1 выкидывает, читает 3 и 4, 4 выкидывает итд)

                                    А некоторые cpu и вовсе выдавали ошыбку
                                    Ответить
                                • > Дальше я должен написать про банки внутри микрух, про их ряды и про sense ampl, но мне лень.

                                  Я к слову про это читал, но мне после пары абзацев тоже лень стало.

                                  Я в курсе что там между контроллером памяти и памятью протокол не тривильный, потому что память относительно тупая.
                                  Ответить
                                  • Там еще высший пилотаж контроллера заключается в том, чтобы правильно выстроить в очередь запросы на чтение и запись и правильно распихать их по памяти, чтобы одна память перезаряжалась, а другая отдавала данные (хотя сейчас кое-кто умеет класть все в стат. кеш на время перезарядки).

                                    И при этом еще нужно как-то соседние адреса разложить так, чтобы их было удобнее читать. Клиент (кеш контроллер) то читает соседние адреса линейками. Cобссно мапинг линейного адреса в "DIMM, rank, колонку" итд -- так еще штука
                                    Ответить
    • ну вообще если посмотреть на сцайт и репы коммитера то всё становится понятно
      http://deftcode.ninja/

      это вебмартышка обычная, и немного кулхацкор-скрипт-кидди
      Ответить
      • блеать, кто запилил зону .ninja?!
        Ответить
        • Какой багор )))
          Ответить
        • Ответа нет, но вы держитесь. Хорошего вам настроения!
          Ответить
          • показать все, что скрытоСтоит отметить, что, если ехать в секс-тур по Камеруну, то языкового барьера между мною и тамошними шоколадными зайцами не возникнет, ибо говорят там по-английски; а уж я с мало-мальским знанием английского языка завсегда смогу прокричать "Deeper, deeper!", верно?
            Ответить
    • Какой багор )))
      Ответить
    • https://lurkmore.to/Алексей_Бабушкин#.D0.91.D1.80.D0.B0.D0.BD.D0.B4.D0.BC.D0.B0.D1.83.D1.8D.D1.80
      в Антивирусе Бабушкина (брандмауэр) и то более продвинутая генерация случайных IP
      if not "%netra%"=="3" if "%bb%"=="1" if "%net%"=="3" if "%inetparam%"=="0" goto :inscr
       
      :inscr
      set inetx=0
      for /f "delims== tokens=2* skip=2" %%i in ('ping mail.ru -n 1 -w 1000') do (
      set inetx=%%i
      set inetx=!inetx:~1,1!
      )
      :num1
      set num1=%random:~0,3%
      if %num1% GTR 200 goto :num1
      if %num1% LSS 10 goto :num1
      :num2
      set num2=%random:~0,3%
      if %num2% GTR 200 goto :num2
      if %num2% LSS 50 goto :num2
      :num3
      set num3=%random:~0,2%
      if %num3% GTR 80 goto :num3
      if %num3% LSS 10 goto :num3
      :num4
      set num4=%random:~0,3%
      if %num4% GTR 250 goto :num4
      if %num4% LSS 20 goto :num4
      set prt=%random:~0,4%
      echo Входящий IP адрес: %num1%.%num2%.%num3%.%num4% >ip
      echo Протокол передачи: UDP >>ip
      echo Порт подключения: %prt% >>ip
      echo --------------------------------------------------- >>ip
      echo Подключение заблокировано сетевым экраном. >>ip
      Ответить
    • показать все, что скрытоДоктор Попов, блядь. ) Гламурный целитель засовывает себе в жопу огурцы, для пущего гламура даже не срывая их.

      https://lurkmore.to/%D0%94%D0%BE%D0%BA%D1%82%D0%BE%D1%80_%D0 %9F%D0%BE%D0%BF%D0%BE%D0%B2
      Ответить
    • Какой багор )))
      Ответить
      • показать все, что скрытоСтоит отметить, что, если ехать в секс-тур по Камеруну, то языкового барьера между мною и тамошними шоколадными зайцами не возникнет, ибо говорят там по-английски; а уж я с мало-мальским знанием английского языка завсегда смогу прокричать "Deeper, deeper!", верно?
        Ответить

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