"PHP" / Говнокод #25889 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  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 ropuJIJIa, (Updated )

Комментарии (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)
    Ответить
      • Братишка, я тут насру. Спамеры слетятся, тут мы их и прихлопнем!
        Ответить
      • Кстати, по непонятным причинам запрос к 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 адресов (единиц, а не тысяч).
    Ответить
    • Еловый лес, состоящий из дорожек и чащ.
      Сезоны меняются, но лес существует.
      Глубоко в деревьях что-то скрывается.
      Огромные тени, которые зовут меня.

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

      Они поднимаются и обнимают мое тело.
      Внезапно сглотнув, на всю жизнь - нет надежды.
      Меня медленно тянет внутрь к костному мозгу леса.
      Медленно исчезаю, худой и бесплодный.
      Ответить
      • Я барби-девочка в барби-мире
        Жизнь пластмассова, она фантастична
        Ответить
        • Я хочу любить тебя (П.Я.Т.)
          Довольно молодая вещь
          Вам нужно немного любви (T.L.C.)
          Нежная любовь
          И я отвезу тебя туда
          Я хочу любить тебя (П.Я.Т.)
          Довольно молодая вещь
          Вам нужно немного любви (T.L.C.)
          Нежная любовь
          Я отвезу тебя туда

          аххахахах
          Ответить
      • ебанутый))) ты бухать-то поедешь?
        Ответить
        • 16 морских саженей вниз
          Где мой корабль привязан
          Еще одна капля в океане
          16 морских саженей вниз

          Она сказала
          Моряк человек, поверь мне
          Я стою на твердй земле
          Ты говоришь твой план покинуть меня
          И уплыть из этого городка
          Ответить
          • Неторопливо приближается туман.
            Черные тучи в небе.
            Величественный вид.
            Злоба!
            Неистовство!
            Ярость!
            Гнев!
            ШТОРМ!
            В шторме собирается, необузданная ненависть
            Это глаз зла. Разрушение оно вызывает.
            Здесь нет законов, не сейчас, никогда.
            ШТОРМ!
            Неистовство!
            Ярость!
            Гнев!
            Злоба!
            Ответить
  • Срок действия антипиратского меморандума истек 30 сентября, пишет РБК. И с 1 октября интернет-компании формально не обязаны удалять из поисковой выдачи ссылки на нелегальный контент.

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

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

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

    В комнате, где ужинал мужчина, перегорела лампочка, и позже врачам пришлось вынимать кусок сала при свете фонаря.
    Ответить
  • Семь раз отмерил, один отрезал. Что дальше?
    Ответить
  • Именно поэтому я за «PHP».
    Ответить

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

Где здесь C++, guest?!

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


    8