1. PHP / Говнокод #17381

    +169

    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
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    function
    enc($str,$k)//$str - входная строка, $k - ключ от 0 до f
    {
    $m=floor(strlen($str)/2);
    $a=strrev(substr($str,0,$m));
    $b=strrev(substr($str,$m));
    $c=$a.$b;
    $s=bin2hex($c);
    switch($k)
    {
    case '0':$c0='h';$c1='y';$c2='j';$c3='z';$c4='i';$c5='g';$c6='x';$c7='k';$c8='s';$c9='w';$ca='p';$cb='l';$cc='q';$cd='m';$ce='v';$cf='t';break;
    case '1':$c0='u';$c1='k';$c2='x';$c3='m';$c4='s';$c5='w';$c6='r';$c7='z';$c8='q';$c9='t';$ca='g';$cb='v';$cc='o';$cd='y';$ce='n';$cf='i';break;       
    case '2':$c0='i';$c1='u';$c2='n';$c3='k';$c4='y';$c5='x';$c6='o';$c7='m';$c8='q';$c9='s';$ca='g';$cb='v';$cc='w';$cd='r';$ce='t';$cf='z';break;
    case '3':$c0='k';$c1='j';$c2='z';$c3='x';$c4='q';$c5='s';$c6='n';$c7='i';$c8='l';$c9='r';$ca='g';$cb='p';$cc='w';$cd='y';$ce='v';$cf='m';break;
    case '4':$c0='m';$c1='g';$c2='p';$c3='t';$c4='i';$c5='l';$c6='r';$c7='s';$c8='n';$c9='q';$ca='k';$cb='j';$cc='h';$cd='u';$ce='z';$cf='v';break;
    case '5':$c0='q';$c1='i';$c2='u';$c3='z';$c4='t';$c5='n';$c6='k';$c7='r';$c8='w';$c9='y';$ca='x';$cb='v';$cc='g';$cd='o';$ce='m';$cf='s';break;
    case '6':$c0='s';$c1='l';$c2='h';$c3='i';$c4='t';$c5='k';$c6='r';$c7='q';$c8='o';$c9='v';$ca='w';$cb='x';$cc='n';$cd='u';$ce='p';$cf='j';break;
    case '7':$c0='s';$c1='j';$c2='l';$c3='p';$c4='u';$c5='h';$c6='i';$c7='n';$c8='x';$c9='t';$ca='k';$cb='w';$cc='v';$cd='r';$ce='q';$cf='o';break;
    case '8':$c0='o';$c1='s';$c2='q';$c3='j';$c4='l';$c5='r';$c6='v';$c7='p';$c8='u';$c9='w';$ca='h';$cb='k';$cc='t';$cd='i';$ce='x';$cf='n';break;
    case '9':$c0='v';$c1='h';$c2='t';$c3='y';$c4='j';$c5='m';$c6='q';$c7='z';$c8='i';$c9='l';$ca='p';$cb='g';$cc='x';$cd='w';$ce='s';$cf='k';break;
    case 'a':$c0='k';$c1='v';$c2='h';$c3='s';$c4='t';$c5='w';$c6='x';$c7='y';$c8='j';$c9='g';$ca='p';$cb='m';$cc='q';$cd='l';$ce='z';$cf='i';break;
    case 'b':$c0='i';$c1='k';$c2='z';$c3='v';$c4='h';$c5='l';$c6='q';$c7='s';$c8='t';$c9='m';$ca='p';$cb='w';$cc='x';$cd='g';$ce='j';$cf='y';break;
    case 'c':$c0='y';$c1='i';$c2='k';$c3='j';$c4='z';$c5='g';$c6='v';$c7='x';$c8='h';$c9='w';$ca='p';$cb='l';$cc='q';$cd='m';$ce='t';$cf='s';break;
    case 'd':$c0='s';$c1='y';$c2='t';$c3='i';$c4='k';$c5='m';$c6='j';$c7='q';$c8='l';$c9='z';$ca='g';$cb='p';$cc='w';$cd='v';$ce='h';$cf='x';break;
    case 'e':$c0='u';$c1='z';$c2='o';$c3='k';$c4='q';$c5='j';$c6='t';$c7='i';$c8='w';$c9='g';$ca='x';$cb='p';$cc='m';$cd='n';$ce='r';$cf='l';break;
    case 'f':$c0='l';$c1='u';$c2='r';$c3='z';$c4='o';$c5='n';$c6='m';$c7='k';$c8='q';$c9='p';$ca='x';$cb='j';$cc='t';$cd='g';$ce='w';$cf='i';break;
    }
    $f=str_replace('0',$c0,$s);
    $f=str_replace('1',$c1,$f);
    $f=str_replace('2',$c2,$f);
    $f=str_replace('3',$c3,$f);
    $f=str_replace('4',$c4,$f);
    $f=str_replace('5',$c5,$f);
    $f=str_replace('6',$c6,$f);
    $f=str_replace('7',$c7,$f);
    $f=str_replace('8',$c8,$f);
    $f=str_replace('9',$c9,$f);
    $f=str_replace('a',$ca,$f);
    $f=str_replace('b',$cb,$f);
    $f=str_replace('c',$cc,$f);
    $f=str_replace('d',$cd,$f);
    $f=str_replace('e',$ce,$f);
    $f=str_replace('f',$cf,$f);
    return $f;
    }

    "От SQL иньекции проще простого защиться при помощи шифрования входных данных перед вставкой их в запрос к базе данных...И не надо ничего мудрить со специальными функциями....И соответственно в базе данные будут храниться в зашифрованном виде...Пример функции для кодирования:"

    Отрыто в комментариях к статье, рассказывающей о встроенных в php алгоритмах шифрования.
    А ведь это лишь функция для шифровки. Есть еще и для дешифровки. Даже для говнокода многовато букавок. (:

    Запостил: ElForastero, 29 Декабря 2014

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

    • Но ведь за счет восьмой строки он таки защитился от SQL иньекции!
      Ответить
    • P.S. s-box начинающийся со слова hui - просто прелесть.

      Ключ длиной аж в 4(!) бита тоже порадовал.
      Ответить
      • > hui
        huinday

        > аж в 4(!) бита
        А ведь мог бы применить ключ длиной 3 бита. И... молчать, гусары!
        Ответить
      • Зато нитормозит, и вообще, длина ключа – это простое писькомерство, которое ни на что не влияет.
        Ответить
    • А говорят, что в "php" есть структура данных "array". Врут наверное...
      Ответить
      • Array для школьников. Настоящие ТруЪ Энтерпрайз ПХП Разработчики Веб Сервисов Руками С Использованием ООП (c) сами реализуют интерфейс ArrayAccess.
        Ответить
        • а что реализовать интерфейс можно не самому ?
          Ответить
    • Увидел, стало плохо.
      Ответить
    • >От SQL иньекции проще простого защиться при помощи шифрования входных данных перед вставкой их в запрос к базе данных
      А фильтровать эти данные потом вобще одно сплошное удовольствие.
      Ответить
      • Заказчик: У нас на сайте почему-то не ищется $shit_name по запросу $query
        Программист: Ок, сейчас посмотрим, в чем проблема...
        SELECT * FROM `hujgfvbflwfiewgjd` WHERE `pizdajfgdktyrngvye` LIKE `%djigoordsaqsfdkdjtdncldkc%`
        Ответить
    • А мне понравилось.
      Хорошо отформатированно, ровно.
      Ответить
    • http://mzcoding.com/php_articles/xss__csrf__ataki_i_zashhita_ot_nikh/11/ - сам эпичный трэд.
      Ответить
      • эпохальное чтиво.
        Ответить
        • А сейчас речь пойдет, как защитить свой сайт чтобы разные школьники не могли вам туда не чего внедрить.

          Вообще для экранирования кавычек, я рекомендую использовать функции драйверов Базы Данных.
          Ответить
          • Мне это всегда напоминает древнюю байку про то как один чудак объявил конкурс: денежное вознаграждение тому кто сможет на его сайте хакнуть и подменить главную страничку. В добавок - сайт крутился под Win95 и штатный IIS - хакай не хачу! Долгое время никому ничего не удавалось и народ начал возмущатся что организатор мухлюет. Конкурс был закрыт и секрет опубликован: да, сайт вертелся на обычной Win95... которая была запущена с live CD на ПЦ без винта. если винда подвисала - то вотч дог просто рестартовал комп, и винда, как новая, опять бутилась с CD.
            Ответить
            • Мне где-то недавно попадалась статья про рам-фс в памяти видеокарточки - тоже можно было бы туда, например, поставить чего-нибудь, тот же Апач - по крайней мере быстрее было бы.
              Ответить
              • http://www.gentoo-wiki.info/TIP_Use_memory_on_video_card_as_swap

                мля и почему я на секунду сомневался что линух это может?
                Ответить
                • > Use_memory_on_video_card_as_swap
                  А ведь оперативка дешевле, чем видеокарта с джвумя гигами на борту...
                  Ответить
                  • на одной оперативке игоря не запустишь, а видеокарта большую часть времени простаивает
                    Ответить
                    • >It's nice to have fast swap or RAM disk on your home computer but be warned, if a binary driver is loaded for X, it may freeze the whole system or create graphical glitches. Usually there is no way to tell the driver how much memory could be used, so it won't know the upper limit. However, the VESA driver can be used because it provides the possibility to set the video RAM size. So, Direct Rendering or fast swap. Your choice.
                      Ответить
                      • За каким-то хреном ставить крутую видюху с кучей памяти и не юзать её по назначению... замечательное решение.
                        Ответить
                        • Тем более что PCI-ex добавляет неплохую такую латенси.
                          Ответить
                          • Ну там выше фраза была - на сервере видеокарта всё равно не используется. Я вот только не понял, какого хуя ее в сервер воткнули, если использовать не собираются...

                            P.S. Латентси у видюхи всяко на порядки меньше, чем у флешек, винтов и даже SSD.
                            Ответить
                            • Речь о том что латенси шины в сотни раз больше чем латенси памяти.

                              >Я вот только не понял, какого хуя ее в сервер воткнули, если использовать не собираются...
                              но_зачем.жпег
                              Ответить
                              • > в сотни раз
                                Ну у меня вот своп шифрованный, и разница совершенно незаметна (потому что 8 гигов памяти и своп почти никогда не юзается).

                                > но_зачем.жпег
                                Генту же. Кому еще нужны такие оптимизации...
                                Ответить
                                • >Генту же
                                  Ааа. Проебал этот момент. Тогда всё ясно.
                                  Но ставить генту на сервер это лютый мазохизм.
                                  Ответить
                        • раньше серваки для виндов исключительно делались, и там видео чип был интегрирован.

                          а сейчас видео ставят для GPU акселерации и прочего.

                          учитывая что линух может чего в свап просто так отложить (на большинстве моих систем 20-30МБ свопа всегда используется) то даже 64МБ недискового свопа могут чуток производительности помочь.
                          Ответить
                          • > видео чип был интегрирован
                            И юзал основную память для своих нужд. На такой не посвопуешься.

                            > для GPU акселерации
                            Дело в том, что если GPU акселерация используется, вся эта петушня со свопом на видюху уже не заработает. По крайней мере в описанном варианте. Если через какие-нибудь CUDA или OpenCL массив выделять, а потом только его юзать как своп - может быть и проканает.

                            > 20-30МБ свопа всегда используется
                            > даже 64МБ недискового свопа могут чуток производительности помочь
                            Да и хер с ними. Лежат, никому не мешают. Скорее всего эти 20-30 мег никто никогда уже не прочитает. В целом - не так страшен своп, как i/o в него. И если интенсивное i/o уже началось - тут 64 метрами не отмашешься, надо или память докупать или проги урезать.
                            Ответить
                            • > > для GPU акселерации
                              > Дело в том, что если GPU акселерация используется, вся эта петушня со свопом на видюху уже не заработает.

                              некоторые драйвера поддерживают ограничение количества видео памяти, через опцию в x.conf'ве.

                              https://wiki.archlinux.org/index.php/swap_on_video_ram#Xorg_driver_config

                              в старые времена даже nvidia эту опцию поддерживала: я слышал что народ ей пользовался для сильно оверклокнутых видеокард и некондиционых видеокарт с битой памятью.
                              Ответить
                              • > ограничение количества видео памяти, через опцию в x.conf'ве
                                Makes sense...

                                > народ ей пользовался
                                А те, кому не везло, и битые байты оказывались в начале, тупо шли покупать новую карту или убирали оверклок... Русская рулетка какая-то, ей-богу.
                                Ответить
                      • чукча не читатель :)
                        я подумал, что там использовалась vramfs
                        Ответить
    • Автор путает шифрование с обфускацией.
      Ответить

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