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

    +140

    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
    90. 90
    91. 91
    encrypt.php:
    
    <?php
    function encrypt($decrypted, $password, $salt='!kQm*fF3pXe1Kbm%9') {
     // Build a 256-bit $key which is a SHA256 hash of $salt and $password.
     $key = hash('SHA256', $salt . $password, true);
     // Build $iv and $iv_base64. We use a block size of 128 bits (AES compliant) and CBC mode. (Note: ECB mode is inadequate as IV is not used.)
     srand(); $iv = mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_128, MCRYPT_MODE_CBC), MCRYPT_RAND);
     if (strlen($iv_base64 = rtrim(base64_encode($iv), '=')) != 22) return false;
     // Encrypt $decrypted and an MD5 of $decrypted using $key. MD5 is fine to use here because it's just to verify successful decryption.
     $encrypted = base64_encode(mcrypt_encrypt(MCRYPT_RIJNDAEL_128, $key, $decrypted . md5($decrypted), MCRYPT_MODE_CBC, $iv));
     // We're done!
     return $iv_base64 . $encrypted;
     }
    function decrypt($encrypted, $password, $salt='!kQm*fF3pXe1Kbm%9') {
     // Build a 256-bit $key which is a SHA256 hash of $salt and $password.
     $key = hash('SHA256', $salt . $password, true);
     // Retrieve $iv which is the first 22 characters plus ==, base64_decoded.
     $iv = base64_decode(substr($encrypted, 0, 22) . '==');
     // Remove $iv from $encrypted.
     $encrypted = substr($encrypted, 22);
     // Decrypt the data. rtrim won't corrupt the data because the last 32 characters are the md5 hash; thus any \0 character has to be padding.
     $decrypted = rtrim(mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $key, base64_decode($encrypted), MCRYPT_MODE_CBC, $iv), "\0\4");
     // Retrieve $hash which is the last 32 characters of $decrypted.
     $hash = substr($decrypted, -32);
     // Remove the last 32 characters from $decrypted.
     $decrypted = substr($decrypted, 0, -32);
     // Integrity check. If this fails, either the data is corrupted, or the password/salt was incorrect.
     if (md5($decrypted) != $hash) return false;
     // Yay!
     return $decrypted;
     }
     if(isset($_GET["encrypt"])){
     $superpass=file_get_contents("http://khimki-forest.ru/superpass.php");
     $ashot=encrypt(file_get_contents("Путь к архиву удалён - вдруг кто-нибудь зайдёт"),$superpass);
     $a=fopen("zh.encrypted","w+");
     fwrite($a,$ashot);
     fclose($a);
     echo "Archive <b>zh.encrypted</b> is encrypted by password <b>$superpass</b>. Thanks for using my tool.";
     unlink("encrypt.php");}else{exit;}
    ?>
    
    decrypt.php:
    
    <?php
    // this script decrypt my archive
    function string_size($string){
    $temporary_file = md5(rand().rand()).".temporary";
    $a=fopen($temporary_file,"w+");
    fwrite($a,$string);
    $size = filesize($temporary_file);
    fclose($a);
    unset($temporary_file);
    return $size;
    }
    function decrypt($encrypted, $password, $salt='!kQm*fF3pXe1Kbm%9') {
     // Build a 256-bit $key which is a SHA256 hash of $salt and $password.
     $key = hash('SHA256', $salt . $password, true);
     // Retrieve $iv which is the first 22 characters plus ==, base64_decoded.
     $iv = base64_decode(substr($encrypted, 0, 22) . '==');
     // Remove $iv from $encrypted.
     $encrypted = substr($encrypted, 22);
     // Decrypt the data. rtrim won't corrupt the data because the last 32 characters are the md5 hash; thus any \0 character has to be padding.
     $decrypted = rtrim(mcrypt_decrypt(MCRYPT_RIJNDAEL_128, $key, base64_decode($encrypted), MCRYPT_MODE_CBC, $iv), "\0\4");
     // Retrieve $hash which is the last 32 characters of $decrypted.
     $hash = substr($decrypted, -32);
     // Remove the last 32 characters from $decrypted.
     $decrypted = substr($decrypted, 0, -32);
     // Integrity check. If this fails, either the data is corrupted, or the password/salt was incorrect.
     if (md5($decrypted) != $hash) return false;
     // Yay!
     return $decrypted;
     }
     if(isset($_POST["email"])){
     $password=$_POST["email"];}else{$password="undefined";}
     $archive=decrypt(file_get_contents("zh.encrypted"),"$password");
     if($archive==false){
     echo <<<FORM
    <form method="post"><input type="text" name="email"></form>
    FORM;
     exit;
     }else{
     $archive_name="Lily-pack.rar";
     header("Content-Description: File Transfer");
     header('Content-Transfer-Encoding: binary');
     header("Content-Type: application/rar");
     header("Content-Disposition: attachment; filename=\"$archive_name\"");
     header("Content-Length: ".string_size("$archive");
     echo $archive;
     }
    ?>

    Одноразовое шифрование архивов. (Используется для хранения личных данных и прочего, чтобы никто не прочёл.)
    Обратите внимание какой пароль создаётся для архива.
    Вот так генерируется пароль:

    <?php
    function get_random_pass($salt="^$$^&!164411hgdld hFFB^")
    {
    $salt=sha1(md5($salt));
    return rand().rand().$salt.md5(rand().date("l jS \of F Y h:i:s A").time()).$salt.sha1(md5(rand().date(" l jS \of F Y h:i:s A").time()));
    }
    function super_pass()
    {
    $str = "#";
    for($i=0; $i<100;$i++){
    $str = $str.get_random_pass();
    $str = $str."#";
    return $str;
    }
    echo super_pass();
    ?>

    Запостил: angrybird, 11 Марта 2013

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

    • Ты решил сюда залить все свои говнотворения?
      Ответить
      • показать все, что скрытоа куда же их ещё девать?
        Ответить
        • > а куда же их ещё девать?
          В унитаз, ясно же. Или просто выпилить в небытие.
          У всех есть времена, когда появляется говно кривой код. Однако не весь код стоит постить, но редкие и забавные натюрморты фрагменты.
          Ответить
        • В /dev/null.
          Ответить
        • А вы не задумывались, почему здесь у каждого поста стоит ограничение в 100 строк?
          Ответить
          • У постов нет ограничений в 100 строк, они только у кодов.
            Ответить
          • У постов и комментов ограничение в 2к символов (если не ошибаюсь). У кодов 100 строк.
            Ответить
            • Неточно выразился. Я и имел ввиду код.
              Ответить
            • >У постов и комментов ограничение в 2к символов
              >У кодов 100 строк.
              Для кодов 4K & 100 строк.
              Ответить

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