Куча говна / Говнокод #26697 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
https://news.ycombinator.com/item?id=20426997

LiveJournal data breach impacts 33M users with plaintext passwords

Идиотия, кретинизм, олигофрения, и другие способы стать разработчиком в livejournal

Запостил: MAKAKA MAKAKA, (Updated )

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

    • Зато какая документация! С реальными примерами на «Перле»:
      use strict;
      use Fcntl;
      use XMLRPC::Lite;
      use Data::Dumper;
      use Digest::MD5 qw(md5_hex);
      
      my $xmlrpc = new XMLRPC::Lite;
      $xmlrpc->proxy("http://www.example.com/interface/xmlrpc");
      my $get_chal = xmlrpc_call("LJ.XMLRPC.getchallenge");
      my $chal = $get_chal->{'challenge'};
      
      my $user = "test";
      my $pass = "pass";
      print "chal: $chal\n";
      
      my $response = md5_hex($chal . md5_hex($pass));
      
      my $login = xmlrpc_call('LJ.XMLRPC.login', {
              'username' => $user,
              'auth_method' => 'challenge',
              'auth_challenge' => $chal,
              'auth_response' => $response,
      });
      
      print Dumper($login);
      
      sub xmlrpc_call {
          my ($method, $req) = @_;
          my $res = $xmlrpc->call($method, $req);
          if ($res->fault) {
              print STDERR "Error:\n".
              " String: " . $res->faultstring . "\n" .
              " Code: " . $res->faultcode . "\n";
              exit 1;
          }
          return $res->result;
      }
      Ответить
      • >>Fcntl
        ???
        >>MD5
        блядь

        ну ладно, допустим это 1999й.
        но даже тогда ПЛЕЙЕН ПЛЯТЬ ТЕКСТАОМ
        Ответить
  • Поправь меня, если я что-нибудь неправильно понял.

    В эпоху до повсеместного внедрения HTTPS «ЖЖ» решил защитить пароли пользователя от перехвата. Для этого у клиента перехватывалось событие сабмита формы, пароль кокококонкатенировался с одноразовым токеном, хэшировался/шифровался и в таком виде уже отправлялся на сервер. Сервер производил те же самые операции и сравнивал результаты.

    Поскольку перед конкатенацией пароль не хэшировался, серверу было необходимо хранить нехэшированный пароль, иначе он не сможет повторить эти операции.

    Эту схему можно было исправить: перед конкатенацией хэшировать пароль, тогда на сервере придётся хранить несолёные хэши либо передавать клиенту соль.
    Ответить
    • Хотя погоди, в реальном примере от пароля вычисляется MD5:
      my $response = md5_hex($chal . md5_hex($pass));


      Значит, на сервере их плейнтекстом хранить не нужно, достаточно сохранить MD5.
      Ответить
      • chal тут это челленлж, он выступает временной солью видимо, и потому они хранят плейнтекст.
        Но всё равно пиздец: пусть бы хоть хешировали с известной солью
        Ответить
        • Тут внутри md5_hex($pass). $chal наворачивается уже сверху. Значит, достаточно хранить md5_hex($pass) вместо $pass.

          Лучше, конечно, заменить md5_hex($pass) на хэширование хотя бы с постоянной известной солью, но даже в имеющемся варианте плейнтекст не нужен.
          Ответить
          • > хранить md5_hex($pass)

            Учитывая то, как быстро считается md5, это ничем не отличается от хранения самого пароля.
            Ответить
                • Какое всё-таки скучное занятие программирование: придумал движок блогоплатформы, а через каждые 20 лет его ещё обновлять нужно...
                  Ответить
            • Да и солью точно так же ломается. Просто дольше т.к. у каждого юзера своя соль и перебирать придётся для каждого из них в отдельности.
              Ответить
              • Ты меня не понял)

                Хеши для словарных паролей без соли уже известны, их ломать не надо.
                А в случае с неизвестной солю нужен перебор.

                Win7 + Strawberry perl 5.34
                C:\>perl -MDigest::MD5 -e"print Digest::MD5::md5_hex('passw0rd')";
                bed128365216c019988915ed3add75fb


                Ubuntu 20.04 WSL, Perl 5.26
                $ perl -MDigest::MD5 -e"print Digest::MD5::md5_hex('passw0rd')";
                bed128365216c019988915ed3add75fb


                Вводим хеш в гугол
                https://md5.gromweb.com/?md5=bed128365216c019988915ed3add75fb
                Ответить
                • Я с помощью «hashes.org» отреверсил е-мейлы некоторых юзеров «Говнокода» по граватаркам.
                  Ответить
                • Даже так. Я почему-то не подумал, что кто-то уже сгенерил табличку.
                  Ответить
                  • Давно уже.

                    Так что несоленый хеш со словарным паролем (а большинство паролей простых юзеров -- словарные) ломается за O(1) при наличии гугла.

                    А с солью тебе, хотя бы, придется что-то там перебирать.
                    Ответить
                    • Ну да, но тупой пароль даже pbkdf2 особо не спасёт. А я более чем уверен, что 20кк из этих 30кк тупые.
                      Ответить
                        • Потому что 95% людей идиоты. Но часть из них всё-таки поставила какой-нибудь плагин, который хранит и генерит пароли.
                          Ответить
                          • > Потому что 95% людей идиоты.
                            Потому, что учётки 95% пользователей веб-сайтов не имеют ценности, и потому защищены соответствующе.
                            Ответить
                            • Проблема не в том, что ты спиздишь мой пароль от форума любителей макромэ, и получишь возможность писать там от моего имени.

                              Проблема в том, что точно такой же пароль у меня от электронной почты, госуслуг, и рабочего компьютера.
                              Ответить
                                • Длинная, воронёная палка с крюком, которой пожилой санитар волочит трупы мною убиенных, чтобы затем затолкать их в гриль.
                                  Ответить
                        • Потому что типовой пароль пользователя это "Masha123"
                          Ответить
                      • Значит, надо требовать от питуза 8 символов в разном регистре.
                        А еще лучше OAuth и пусть у гугла голова болит.

                        А програмные клиенты пусть генерят пару ключей, и сдают тебе публичный. Нехуя чужие секреты хранить
                        Ответить
    • Srp обсуждали здесь 100 лет назад, он не поддерживается.
      Ответить
    • Нет конечно

      Какиры ломают говно не чтобы забесплатно отдать его миллионам питухоф
      Ответить
      • И нахуй ты это говно принес тогда?
        Ответить
        • Один из самых больших борделей мира — целый город под названием Даулатдия — лишился клиентов из-за пандемии. Власти Бангладеш решили закрыть публичные дома на время угрозы распространения вируса. Теперь как минимум полторы тысячи проституток умирают от голода.
          Ответить

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

Помни, guest, за тобой могут следить!

    А не использовать ли нам bbcode?


    8