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

    +1

    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
    <?php
    $fin = fopen($argv[1], 'r');
    if($fin === false) die();
    
    $fout = fopen('dump.csv', 'w');
    if($fout === false) die();
    
    while(!feof($fin)) {
        $rawline = fgets($fin);
        if(!preg_match('#\[+(.*)\]+,?#', $rawline, $matches)) continue;
        $fields = str_getcsv($matches[1]);
        $parts = explode(')', $fields[0]);
        if(count($parts) < 2) continue;
        list($host, $path) = $parts;
        $domains = explode(',', $host);
        $dirs    = explode('/', $path);
        if($domains[0] === 'ru' && $domains[1] === 'mail') {
            $email = $dirs[2] . '@' . $dirs[1] . '.ru';
            $hash = md5($email);
            fputcsv($fout, array($hash, $email));
        } else if($domains[0] === 'ru' && $domains[1] === 'rambler' && $dirs[1] = 'users') {
            if(strpos($dirs[2], '@') === false) {
                $email = $dirs[2] . '@rambler.ru';
            } else {
                $email = $dirs[2];
            }
            $hash = md5($email);
            fputcsv($fout, array($hash, $email));
        } else if($domains[0] === 'ru' && $domains[1] === 'ya') {
            $email = $domains[2] . '@yandex.ru';
            $hash = md5($email);
            fputcsv($fout, array($hash, $email));
            $email = $domains[2] . '@yandex.by';
            $hash = md5($email);
            fputcsv($fout, array($hash, $email));
            $email = $domains[2] . '@yandex.ua';
            $hash = md5($email);
            fputcsv($fout, array($hash, $email));
            $email = $domains[2] . '@yandex.kz';
            $hash = md5($email);
            fputcsv($fout, array($hash, $email));
            $email = $domains[2] . '@yandex.com';
            $hash = md5($email);
            fputcsv($fout, array($hash, $email));
            $email = $domains[2] . '@ya.ru';
            $hash = md5($email);
            fputcsv($fout, array($hash, $email));
        } else if($domains[0] === 'ru' && $domains[1] === 'yandex' && $dirs[1] = 'users') {
            $email = $dirs[2] . '@yandex.ru';
            $hash = md5($email);
            fputcsv($fout, array($hash, $email));
            $email = $dirs[2] . '@yandex.by';
            $hash = md5($email);
            fputcsv($fout, array($hash, $email));
            $email = $dirs[2] . '@yandex.ua';
            $hash = md5($email);
            fputcsv($fout, array($hash, $email));
            $email = $dirs[2] . '@yandex.kz';
            $hash = md5($email);
            fputcsv($fout, array($hash, $email));
            $email = $dirs[2] . '@yandex.com';
            $hash = md5($email);
            fputcsv($fout, array($hash, $email));
            $email = $dirs[2] . '@ya.ru';
            $hash = md5($email);
            fputcsv($fout, array($hash, $email));
        }
    }
    
    fclose($fout);
    fclose($fin);

    Генератор радужных таблиц для е-мейлов.

    Особенность программы в том, что «JSON» парсится как «CSV» в целях экономии оперативки.

    Запостил: ropuJIJIa, 01 Октября 2019

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

    • SEO-пост.

      Программе скармливал следующие данные:
      http://web.archive.org/cdx/search/cdx?url=my.mail.ru/mail&matchType=prefix&output=json&collapse=urlkey&filter=urlkey:ru,mail,my\)/mail/[a-z0-9\.\-_]*
      (содержит ≈ 117 тыс. адресов @mail.ru)
      http://web.archive.org/cdx/search/cdx?url=my.mail.ru/inbox&matchType=prefix&output=json&collapse=urlkey&filter=urlkey:ru,mail,my\)/inbox/[a-z0-9\.\-_]*
      (содержит ≈ 80 тыс. адресов @inbox.ru)
      http://web.archive.org/cdx/search/cdx?url=my.mail.ru/list&matchType=prefix&output=json&collapse=urlkey&filter=urlkey:ru,mail,my\)/list/[a-z0-9\.\-_]*
      (содержит ≈ 85 тыс. адресов @list.ru)
      http://web.archive.org/cdx/search/cdx?url=my.mail.ru/bk&matchType=prefix&output=json&collapse=urlkey&filter=urlkey:ru,mail,my\)/bk/[a-z0-9\.\-_]*
      (содержит ≈ 67 тыс. адресов @bk.ru)
      http://web.archive.org/cdx/search/cdx?url=planeta.rambler.ru/users&matchType=prefix&output=json&collapse=urlkey&filter=urlkey:ru,rambler,planeta\)/users/[^/\?]*
      (содержит ≈ 54 тыс. адресов @rambler.ru)
      http://web.archive.org/cdx/search/cdx?url=ya.ru/&matchType=domain&output=json&collapse=urlkey&filter=urlkey:ru,ya,.*\)/
      (содержит ≈ 8 тыс. адресов @yandex.ru)
      http://web.archive.org/cdx/search/cdx?url=fotki.yandex.ru/users&matchType=prefix&output=json&collapse=urlkey&filter=urlkey:ru,yandex,fotki\)/users/[^/\?]*
      (содержит ≈ 4 тыс. адресов @yandex.ru)
      http://web.archive.org/cdx/search/cdx?url=video.yandex.ru/users&matchType=prefix&output=json&collapse=urlkey&filter=urlkey:ru,yandex,video\)/users/[^/\?]*
      (содержит ≈ 15 тыс. адресов @yandex.ru)
      Ответить
      • показать все, что скрытоvanished
        Ответить
        • Братишка, я тут насру. Спамеры слетятся, тут мы их и прихлопнем!
          Ответить
          • Давай, давай, а ну, давай,
            Меня шмонай ты, вертухай,
            Да загляни под юбочку,
            Да посмотри на булочки.
            Понюхай попку носиком,
            Прикинься, киса, пёсиком,
            Вот в этом вся и разница,
            Кто хочет, а кто дразнится.
            Ответить
        • Кстати, по непонятным причинам запрос к http://web.archive.org/cdx/search/cdx возвращает слишком мало результатов для «Яндекса». Он возвращает не все профили, которые есть в архиве.
          Ответить
          • Понял. Нужно использовать «resume key». К первому запросу добавить:
            &limit=3000&showResumeKey=true

            Из ответа достать resumeKey (он будет самой последней строкой) и к последующим запросам добавлять &resumeKey. Тогда можно выкачать все профили.

            Ещё придумал, как получить гугловские адреса. У многих логин в «Блогспоте» совпадал с логином в «Гмейле», поэтому нужно сделать запрос следующего вида:
            http://web.archive.org/cdx/search/cdx?url=blogspot.com/&matchType=domain&output=json&collapse=urlkey&filter=urlkey:com.blogspot,.*\)/
            Ответить
            • Да, resumeKey работает.

              Пытался добыть список всех блогов «Блогспота». 650 страниц результатов по 3К (итого примерно 2 миллиона) — это только аккаунты на букву «a». Значит, всего можно скачать несколько десятков миллионов.

              Результаты по другим доменам:
              @mail.ru: 1,7 млн.
              @bk.ru: 100 тыс.
              @inbox.ru: 80 тыс.
              @list.ru: 80 тыс. (надо ещё проверить foto.mail.ru, video.mail.ru, otvet.mail.ru, blogs.mail.ru, вдруг найдутся не попавшие в список учётки).
              @rambler.ru (а также @ro.ru, @lenta.ru и т. п.): 50 тыс.
              @yandex.ru: 70 тыс. с «Фоток», 150 тыс. с «Я.ру» (возможно, они пересекаются).
              Ответить
    • Результаты: итоговая таблица содержит полмиллиона хэшей (точнее, 575 тысяч). Из полученных адресов пользователям «Говнокода» принадлежат 38 адресов (единиц, а не тысяч).
      Ответить
      • Еловый лес, состоящий из дорожек и чащ.
        Сезоны меняются, но лес существует.
        Глубоко в деревьях что-то скрывается.
        Огромные тени, которые зовут меня.

        Тени зовут!
        Громкая тьма!
        Тени зовут!
        Они отвезут меня туда!

        Они поднимаются и обнимают мое тело.
        Внезапно сглотнув, на всю жизнь - нет надежды.
        Меня медленно тянет внутрь к костному мозгу леса.
        Медленно исчезаю, худой и бесплодный.
        Ответить
    • показать все, что скрытоСрок действия антипиратского меморандума истек 30 сентября, пишет РБК. И с 1 октября интернет-компании формально не обязаны удалять из поисковой выдачи ссылки на нелегальный контент.

      Изначально меморандум должен был действовать до 1 сентября этого года, в конце августа срок был продлен до 31 декабря — при условии, что до 30 сентября в Госдуму должны быть внесены поправки в антипиратское законодательство, которые закрепляют прописанные в меморандуме положения. Законопроект в указанный срок не был внесен в Госдуму, а значит, меморандум перестал действовать с 1 октября.

      Из компаний, подписавших меморандум, текущую ситуацию РБК прокомментировали только Rambler Group и ассоциация "Интернет-видео". "Мы хорошо знаем, какой вред наносят пираты, поэтому мы будем делать все от нас зависящее, чтобы пиратский контент исчезал как можно быстрее", — говорится в заявлении гендиректора Okko Ивана Городецкого.

      Гендиректор "Интернет-видео" Алексей Бырдин отметил, что будет "очень разочарован", если с 1 октября интернет-компании прекратят удалять ссылки на пиратский контент.
      Ответить
    • показать все, что скрытоРоссиянин насмерть подавился салом, когда ел его в темноте

      В комнате, где ужинал мужчина, перегорела лампочка, и позже врачам пришлось вынимать кусок сала при свете фонаря.
      Ответить
    • показать все, что скрытоvanished
      Ответить
    • показать все, что скрытоvanished
      Ответить
    • puJIJIaro
      Ответить
    • Какое говно )))
      Ответить

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