LINUX.ORG.RU

Периодически сохранять в файл переменные из цикла

 


0

2

Есть маленький архив и консольная программа-распаковщик, которая требует пароль: 16-байт в виде HEX-последовательности.

Ранее я не сталкивался с подбором паролей и не умею пользоваться спецсофтом. Решил написать перебор на BASH`е.

Перебор такого пароля займёт очень много времени и у меня нет гарантий что исполняющий хост будет иметь столь долгий uptime.

Я хочу добавить периодический (раз в час или сутки) сброс переменной из цикла в файл, чтобы при падении перебора можно было начинать не с самого начала, но не пойму как это сделать. Перезаписывать файл с переменной при каждом прохождении цикла - не вариант, нужно делать записи раз в час/сутки/неделю...

Мой код:

#!/bin/bash
var=0000000000000000

# Продолжаем перебор пока не найдём правильное значение ${var}.
while true ; do
  echo -en "\rvar: ${var}";
# test ${var} && echo ${var}>file && break
  var=`printf "%016X\n" $((0x${var}+1))`;
done

Если Вы сможете дать рекомендации по спецсофту - буду очень рад примерам запуска. Особенно, если этот софт поддерживает «маску» (первая половина пароля может быть вычислена с точностью до 200 вариантов)

★★

Последнее исправление: zzdnx (всего исправлений: 3)

Ответ на: комментарий от peregrine

Проприентарный формат Sony. CPU AMD 4 ядра, видяха только бортовая, так что GPU мне не поможет(

zzdnx ★★
() автор топика
Последнее исправление: zzdnx (всего исправлений: 2)
Ответ на: комментарий от zzdnx

Сделай что-то типа worker'а в отдельном цикле и записывай переменную в файл с другой задержкой, а основной цикл пусть только переназначает значение переменной.

Вообще, на баше такие вещи не пишутся, возьми на вооружение что-нибудь более изящное, тот же питон, например (правда, он в потоки умеет так же паршиво, впрочем, лучше паршиво, чем никак).

r3lgar ★★★★★
()
Ответ на: комментарий от Bad_ptr

сделай tmpfs

И дёргать файл по расписанию из этого tmpfs?

zzdnx ★★
() автор топика

Сделай вложенный цикл до миллиона и за после него пиши в файл.

legolegs ★★★★★
()
Ответ на: комментарий от zzdnx

Ну так проверяй в цикле, не пришло ли время скинуть переменные на диск. Вариантов, как это сделать масса.

if [[ "`date +%M`" == "00" ]]; then
    echo "var=$var" > /path/to/file
fi
Это один из вариантов, вероятно, не самый лучший. Каждый час в 0 минут пишет состояние на диск. Можно, например, сделать, чтобы проверялось время запуска, и от него отсчитывался 1 час. Дальше думай сам.

Black_Shadow ★★★★★
()
Последнее исправление: Black_Shadow (всего исправлений: 1)

Решил написать перебор на BASH`е.

Программы надо писать на языке программирования, а не на баше

annulen ★★★★★
()
Ответ на: комментарий от Black_Shadow

Не самый лучший...

Это один из вариантов, вероятно, не самый лучший.

Может и не самый лучший, но этот ответ самый близкий к заданному вопросу. Благодарю за идею!

zzdnx ★★
() автор топика
Ответ на: комментарий от annulen

Программы надо писать на языке программирования

Святы слова твои, да только знаний у меня не хватает.

zzdnx ★★
() автор топика
Ответ на: комментарий от zolden

John the Ripper

Не однократно меня к нему отсылали, но я так и не смог понять как именно натравить его на этот архив. Если у Вас есть предложения или пример запуска - прошу научить меня.

zzdnx ★★
() автор топика
Ответ на: комментарий от zzdnx

Если пытаться (даже методом проб и ошибок) освоить, например, перл или питон, ты потратишь не больше времени на написание первой версии, чем на возню с башем, но пользы будет намного больше

annulen ★★★★★
()
Ответ на: комментарий от r3lgar

Вообще, на баше такие вещи не пишутся, возьми на вооружение что-нибудь более изящное, тот же питон,

На баше такие вещи не пишутся не из-за изящества, а из-за тормознутости — потери кучи времени при таких длительных циклах. И питон тут ничем не лучше. Но и это Вам не поможет, ибо при таком подходе: echo «var=$var» > /path/to/file вы всё равно можете нарваться на пустой файл если перезагрузкой системы вы не управляете.

vodz ★★★★★
()
Ответ на: комментарий от vodz

Я бы написал на С, но не умею.

Перезагрузкой управляю я, но бывают скачки напряжения и UPS не спасает...

zzdnx ★★
() автор топика
Ответ на: комментарий от zzdnx

Я бы написал на С, но не умею.

Но вы хотя бы посчитали, сколько времени у вас уйдёт на перебор всех паролей?

Перезагрузкой управляю я, но бывают скачки напряжения и UPS не спасает...

Это ещё хуже - перезагрузка управляется дьяволом :))

vodz ★★★★★
()
Ответ на: комментарий от vodz

Конечно, посчитал....

Есть брутфорсер под Win. Запустил его в WINE. Примерное время 8-10 лет)))))

zzdnx ★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.