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

    0

    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
    <?php
    if (!isset($argv[1]) || !isset($argv[2]) || in_array('--help', $argv)) {
        fwrite(STDERR, 'Usage: '.basename(__FILE__).' <start_date> <end_date>'.PHP_EOL.
            'Options:'.PHP_EOL.
            '   -z,   --with-zero  Adds dates with leading zero in day or month'.PHP_EOL.
            '   -r,   --reverse       Uses reverse format [Y.m.d] instead of straight [d.m.Y]'.PHP_EOL.
            '   -d delimiter          Set delimiter [by default .]'.PHP_EOL);
        exit(-1);
    }
    
    $delimiter = '.';
    
    if (in_array('-d', $argv) && isset($argv[array_search('-d', $argv) + 1])) $delimiter = $argv[array_search('-d', $argv) + 1];
    
    $with_zero = (in_array('-z', $argv) || in_array('--with-zero', $argv));
    $reverse = (in_array('-r', $argv) || in_array('--reverse', $argv));
    
    $start_date = strtotime($argv[1]);
    $end_date = strtotime($argv[2]);
    
    $start = array('d' => date('j', $start_date), 'm' => date('n', $start_date), 'y' => date('Y', $start_date));
    $end = array('d' => date('j', $end_date), 'm' => date('n', $end_date), 'y' => date('Y', $end_date));
    
    function is_leap($y) {
        return (($y % 4 == 0 && $y % 100 != 0) || $y % 400 == 0);
    }
    
    do {
        $date = $start;
    
        if ($reverse) $date = array_reverse($date);
    
        fwrite(STDOUT, implode($delimiter, $date).PHP_EOL);
    
        if ($with_zero && ($date['d'] < 10 || $date['m'] < 10)) {
            if ($date['d'] < 10)
                $date['d'] = '0'.$date['d'];
            if ($date['m'] < 10)
                $date['m'] = '0'.$date['m'];
            fwrite(STDOUT, implode($delimiter, $date).PHP_EOL);
        }
    
        if ($start == $end)
            break;
    
        if ($start['d'] == 28 && $start['m'] == 2) {
            if (is_leap($start['y'])) {
                $start['d'] = 29;
            } else {
                $start['d'] = 1;
                $start['m'] = 3;
            }
    
        } else if ($start['d'] == 29 && $start['m'] == 2) {
    
            $start['d'] = 1;
            $start['m'] = 3;
    
        } else if ($start['d'] == 31 && $start['m'] == 12) {
    
            $start['y']++;
            $start['d'] = 1;
            $start['m'] = 1;
    
        } else if (
            $start['m'] <= 7 && (($start['m'] % 2 != 0 && $start['d'] == 31) || ($start['m'] % 2 == 0 && $start['d'] == 30))
            || $start['m'] >= 8 && (($start['m'] % 2 == 0 && $start['d'] == 31) || ($start['m'] % 2 != 0 && $start['d'] == 30))
            ) {
    
            $start['d'] = 1;
            $start['m']++;
    
        } else {
            $start['d']++;
        }
    
    } while (true);

    Generates list of dates within interval for cracking purposes
    Генерирует список дат в указанном интервале с целью взлома паролей

    Использовать так:
    php generate_dates.php 1.1.1970 06.01.2017 -z

    dacave, 06 Января 2017

    Комментарии (74)
  2. PHP / Говнокод #21946

    0

    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
    <?php
    // init iso image
    $iso = new \CISOFile;
    $iso->open($filename);
    $iso->ISOInit();
    // get descriptor
    $usedDesc = $this->iso->GetDescriptor(SUPPLEMENTARY_VOLUME_DESC);
    if(!$usedDesc) $usedDesc = $this->iso->GetDescriptor(PRIMARY_VOLUME_DESC);
    // get block size
    $isoBlockSize = $usedDesc->iBlockSize;
    // traverse directories and create files table
    $files_locations = array();
    $files_sizes = array();
    $directories = $usedDesc->LoadMPathTable($this->iso);
    foreach ($directories as $Directory) {
        $directory = $Directory->GetFullPath($directories, false);
        $directory = trim($directory, '/');
        if ($directory != '') {
            $directory .= '/';
        }
        $files = $Directory->LoadExtents($this->iso, $usedDesc->iBlockSize, true);
        if ($files) {
            foreach ($files as $file) {
                if (in_array($file->strd_FileId, array('.', '..'))) continue;
                $files_locations[$file->Location] = $directory.$file->strd_FileId;
                $files_sizes[$directory.$file->strd_FileId] = $file->DataLen;
            }
        }
    }
    
    // find file position in iso image
    //  for example, let's use filename "README.txt"
    $Location = array_search('README.txt', $files_locations);
    $Location_Real = $Location * $isoBlockSize;
    
    // seek file
    $iso->Seek($Location_Real, SEEK_SET);
    
    // read file
    $content = $iso->Read($files_sizes['README.txt']);

    Example of extracting one file content from an iso image
    Пример распаковки одного файла из ISO-образа

    dacave, 06 Января 2017

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

    0

    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 <windows.h>
    #include <stdio.h>
    
    HANDLE hSlot;
    LPTSTR Slot = TEXT("\\\\.\\mailslot\\sample_mailslot");
    
    BOOL WINAPI MakeSlot(LPTSTR lpszSlotName) 
    { 
        hSlot = CreateMailslot(lpszSlotName, 
            0,                             // no maximum message size 
            MAILSLOT_WAIT_FOREVER,         // no time-out for operations 
            (LPSECURITY_ATTRIBUTES) NULL); // default security
     
        if (hSlot == INVALID_HANDLE_VALUE) 
        { 
            printf("CreateMailslot failed with %d\n", GetLastError());
            return FALSE; 
        } 
        else printf("Mailslot created successfully.\n"); 
        return TRUE; 
    }
    
    void main()
    { 
       MakeSlot(Slot);
    }

    @LPTSTR Slot = TEXT("\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ \\\\\\\\.\\mailslot\\sample_mailslot");

    Больше слэшэй богу слэшэй!..

    "С++" - убожество.

    rotretS, 05 Января 2017

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

    −1

    1. 1
    2. 2
    3. 3
    4. 4
    5. 5
    constexpr unsigned setColorComponent(unsigned color, unsigned componentIndex, unsigned value) noexcept
    {
        const auto offset = componentIndex << 2;
        return ((color | (15 << offset)) ^ (15 << offset)) | (value << offset);
    }

    jangolare, 05 Января 2017

    Комментарии (9)
  5. C++ / Говнокод #21943

    +5

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    // std::map<uint32_t, uint32_t> _mcpCarrierMap;
    
    uint32_t MCPCarrierUtil::virtualToReal(uint32_t cxr) 
    {
       for (const auto& mapping : _mcpCarrierMap)
      {
        if (mapping.first == cxr)
          return mapping.second;
      }
      return cxr;
    }

    Даже не знаю что єто. Толи незнание стандартной библиотеки, толи хитрьій умьісл.

    Elvenfighter, 05 Января 2017

    Комментарии (8)
  6. C++ / Говнокод #21942

    +4

    1. 1
    2. 2
    3. 3
    4. 4
    Chunk* Chunk::findChunk(int x, int y, int z, ptrdiff_t& index) noexcept
    {
        return const_cast<Chunk*>(const_cast<const Chunk*>(this)->findChunk(x, y, z, index));
    }

    8888

    jangolare, 05 Января 2017

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

    +5

    1. 1
    There are two common digital signature algorithms: RSA and Directory System Agent (DSA).

    Древняя сиськина книжка про секурити (цитаты есть тут: http://www.ccexpert.us/virtual-private-networks/hmac-algorithms.html).
    В оригинале было Democratic Socialists of America (DSA).

    Для тех, кто в танке:
    * Directory System Agent, an IT standard, part of X.500
    * Digital Signature Algorithm, a standard for digital signatures

    barop, 05 Января 2017

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

    +1

    1. 1
    2. 2
    Кто какие системы сборки использует для крестов?
    Оставляйте положительные и негативные отзывы о том, с чем имеется опыт.

    Я вот cmake люблю. Но я кроме него ничего не пробовал, например.
    Что скажете про waf и scons?

    guestinho, 04 Января 2017

    Комментарии (100)
  9. Python / Говнокод #21938

    0

    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
    def check(s, n):
        for left_open in range(0, len(s)):
            for right_close in range(left_open + 1, len(s)):
                for left_middle in range(left_open + 1, right_close):
                    for right_middle in range(left_middle + 1, right_close):                    
                        s1 = s[:left_open]
                        s2 = s[left_open:left_middle]
                        s3 = s[left_middle:right_middle]
                        s4 = s[right_middle:right_close]
                        s5 = s[right_close:]
                        exp1 = s1+'('+s2+'('+s3+')'+s4+')'+s5
                        exp2 = s1+'('+s2+')'+s3+'('+s4+')'+s5
                        try:
                            res = eval(exp1)                        
                            if res == n:
                                yield exp1
                        except:
                            continue
                        try:
                            res = eval(exp2)
                            if res == n:
                                yield exp2
                        except:
                            continue
    
    s = '1 + 2 * 3 + 4 * 5 + 6 * 7 + 8 * 9 + 10 * 11 + 12 * 13 + 14 + 15'
    for exp in check(s, 850):
        print(exp)

    Мой скрипт для решения задачи с javarush (расставить скобки в выражении, чтобы значение было равно 850). Такой же страшный, как и его вывод.

    bagor, 04 Января 2017

    Комментарии (19)
  10. JavaScript / Говнокод #21937

    +1

    1. 1
    2. 2
    if(city.toLowerCase().indexOf($scope.datasearch.value.toLowerCase()) !== -1 ) 
    return true;

    kniaz, 04 Января 2017

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