Форум русскоязычного сообщества Ubuntu


Следите за новостями русскоязычного сообщества Ubuntu в Twitter-ленте @ubuntu_ru_loco

Автор Тема: bash словарь паролей  (Прочитано 1597 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн hon

  • Автор темы
  • Старожил
  • *
  • Сообщений: 1044
  • Ubuntu 12.04 LTS
    • Просмотр профиля
bash словарь паролей
« : 28 Января 2014, 23:46:35 »
Нужен скрипт для генерации словарей паролей $1-ой длины из заданного в $2 алфавита.
Пример вызова: ./script 10 '1234567890-+' сгенерирует все возможные варианты 10-символьных паролей из символов 1234567890-+

Наработки:
#!/bin/bash
echo {0..9}{0..9}{0..9}{0..9}{0..9}{0..9}{0..9}{0..9} | sed -e 's/ /\n/g'
Недостатки наработок:
  • Ест очень-очень много памяти.
  • Не умеет читать длину пароля и словарь из $0 и $1
  • Не умеет индицировать прогресс выполнения.
Хочу использовать скрипт в образовательных целях для взлома своей Wi-Fi точки. Спасибо.

Update. Сделал такой скрипт, но это костыль:
#!/bin/bash

i1=0; i2=0; i3=0; i4=0; i5=0; i6=0; i7=0; i8=0
while [ "$i1" -le 9 ]; do
      while [ "$i2" -le 9 ]; do
            while [ "$i3" -le 9 ]; do
                  while [ "$i4" -le 9 ]; do
                        while [ "$i5" -le 9 ]; do
                              while [ "$i6" -le 9 ]; do
                                    while [ "$i7" -le 9 ]; do
                                          while [ "$i8" -le 9 ]; do
                                                echo "$i1$i2$i3$i4$i5$i6$i7$i8$i9"
                                          let i8+=1; done; i8=0;
                                    let i7+=1; done; i7=0;
                              let i6+=1; done; i6=0;
                        let i5+=1; done; i5=0;
                  let i4+=1; done; i4=0;
            let i3+=1; done; i3=0;
      let i+=2; done; i2=0;
let i1+=1; done; i1=0;
« Последнее редактирование: 29 Января 2014, 00:10:29 от hon »

Оффлайн unimix

  • Активист
  • *
  • Сообщений: 537
    • Просмотр профиля
Re: bash словарь паролей
« Ответ #1 : 29 Января 2014, 01:14:40 »
Ну да, так уж и своей... Зная пароль от своей точки, можно просчитать время, необходимое для её взлома. Нужна формула?
« Последнее редактирование: 29 Января 2014, 01:20:56 от unimix »

Оффлайн hon

  • Автор темы
  • Старожил
  • *
  • Сообщений: 1044
  • Ubuntu 12.04 LTS
    • Просмотр профиля
Re: bash словарь паролей
« Ответ #2 : 29 Января 2014, 18:28:29 »
Нужна не формула, а опыт. Я сменю пароль от точки на тот, который будет в словаре и понаблюдаю за процессом.

Оффлайн vasyl

  • Старожил
  • *
  • Сообщений: 1724
    • Просмотр профиля
Re: bash словарь паролей
« Ответ #3 : 29 Января 2014, 21:28:15 »
crunch может подойдет: http://sourceforge.net/projects/crunch-wordlist/?source=navbar ,
или hydra -x -h ?
« Последнее редактирование: 29 Января 2014, 21:53:03 от vasyl »
Ubuntu Mate 16.04 + Windows 10

Оффлайн peregrine

  • FSM
  • СуперМодератор
  • Старожил
  • *
  • Сообщений: 7212
  • Gentoo x64 Ubuntu 16.04.1 x64
    • Просмотр профиля
Re: bash словарь паролей
« Ответ #4 : 29 Января 2014, 22:04:23 »
hon, ох какой неподходящий инструмент для brute force выбрали. Посмотрите на C/C++ и CUDA, если на компе Nvidia карточка или OpenCL, если не Nvidia карточка. А ещё про параллельные вычисления почитайте теорию. Ваша задача очень хорошо разбивается на кучу потоков.
Если совсем простой пароль, а перебирать мало и уж очень хочется на BASH это делать, то используйте GNU Parallel.
Вот пример скрипта (обрабатываю им картинки для сайтов, сжатие без потерь сторонними утилитами в кучу потоков по несколько картинок сразу), возможно поможет разобраться с вашей задачей.
Код: (bash) [Выделить]
#!/bin/bash
opt_optipng ()
{
input="$1"
echo "Обрабатывается: (optipng) $input"
optipng0.7.4 -o3 "$input" >/dev/null 2>&1
}

opt_advpng ()
{
input="$1"
echo "Обрабатывается (advpng): $input"
advpng -z -4 "$input">/dev/null 2>&1
}

opt_advdef ()
{
input="$1"
echo "Обрабатывается (advdef): $input"
advdef -z -4 "$input">/dev/null 2>&1
}

opt_jpegtran ()
{
input="$1"
echo "Обрабатывается: $input"
jpegtran -optimize -progressive -copy none -outfile "$input" "$input" 2>&1
}

opt_gifsicle ()
{
input="$1"
echo "Обрабатывается (gifsicle): $input"
gifsicle --batch --optimize=3 "$input" >/dev/null 2>&1
}

SIZEPNG=$(find . -type f \( -iname '*.png' -o -iname '*.PNG' \) -printf '%s\n' | awk '{SUM+=$1} END {print SUM}');
SIZEGIF=$(find . -type f \( -iname '*.gif' -o -iname '*.GIF' \) -printf '%s\n' | awk '{SUM+=$1} END {print SUM}');
SIZEJPG=$(find . -type f \( -iname '*.JPG' -o -iname '*.jpg' -o -iname '*.jpeg' -o -iname '*.JPEG' \) -printf '%s\n' | awk '{SUM+=$1} END {print SUM}')
SIZE=$[SIZEPNG+SIZEGIF+SIZEJPG]

export -f opt_optipng
find  -type f | cut -c 3- | grep -ie '.png$' | sort | parallel opt_optipng '{}'
export -f opt_advpng
find  -type f | cut -c 3- | grep -ie '.png$' | sort | parallel opt_advpng '{}'
export -f opt_advdef
find  -type f | cut -c 3- | grep -ie '.png$' | sort | parallel opt_advdef '{}'
export -f opt_jpegtran
find  -type f | cut -c 3- | grep -e '.JPG$' -e '.jpg$' -e '.jpeg$' -e '.JPEG$' | sort | parallel opt_advdef '{}'
export -f opt_gifsicle
find  -type f | cut -c 3- | grep -ie '.gif$' | parallel opt_gifsicle '{}'

echo "Готово!"
SIZEPNG2=$(find . -type f \( -iname '*.png' -o -iname '*.PNG' \) -printf '%s\n' | awk '{SUM+=$1} END {print SUM}');
SIZEGIF2=$(find . -type f \( -iname '*.gif' -o -iname '*.GIF' \) -printf '%s\n' | awk '{SUM+=$1} END {print SUM}');
SIZEJPG2=$(find . -type f \( -iname '*.JPG' -o -iname '*.jpg' -o -iname '*.jpeg' -o -iname '*.JPEG' \) -printf '%s\n' | awk '{SUM+=$1} END {print SUM}')
SIZE2=$[SIZEPNG2+SIZEGIF2+SIZEJPG2]
if [ $SIZEPNG ]; then
PERCENTPNG=$[100-SIZEPNG2*100/SIZEPNG]
fi
if [ $SIZEGIF ]; then
PERCENTGIF=$[100-SIZEGIF2*100/SIZEGIF]
fi
if [ $SIZEJPG ]; then
PERCENTJPG=$[100-SIZEJPG2*100/SIZEJPG]
fi
if [ $SIZE ]; then
PERCENT=$[100-SIZE2*100/SIZE]
echo "Исходный размер всех обрабатываемых файлов был $SIZE байт а после обработки составил $SIZE2 байт. Среднее сжатие на $PERCENT%
Из них:"
fi
if [ $SIZEPNG ]; then
echo "PNG: было: $SIZEPNG байт, стало $SIZEPNG2 байт, сжалось на $PERCENTPNG%"
fi
if [ $SIZEGIF ]; then
echo "GIF: было: $SIZEGIF байт, стало $SIZEGIF2 байт, сжалось на $PERCENTGIF%"
fi
if [ $SIZEJPG ]; then
echo "JPG: было: $SIZEJPG байт, стало $SIZEPJPG байт, сжалось на $PERCENTJPG%"
fi
Узнать количество ядер CPU можно командой
grep ^processor /proc/cpuinfo | wc -lА вафли ломать противозаконно. Тем более изначально подход и выбор инструментов неверен.
« Последнее редактирование: 29 Января 2014, 22:06:12 от peregrine »

Оффлайн SkinnyJack

  • Любитель
  • *
  • Сообщений: 53
    • Просмотр профиля
Re: bash словарь паролей
« Ответ #5 : 29 Января 2014, 23:56:59 »
Набросал. Если баш не принципиален, и исключительно в образовательных целях, думаю, сойдёт.
(Нажмите, чтобы показать/скрыть)




Оффлайн hon

  • Автор темы
  • Старожил
  • *
  • Сообщений: 1044
  • Ubuntu 12.04 LTS
    • Просмотр профиля
Re: bash словарь паролей
« Ответ #6 : 31 Января 2014, 14:01:01 »
SkinnyJack, спасибо! То, что нужно.

 

Страница сгенерирована за 0.019 секунд. Запросов: 22.