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


Считаете, что Ubuntu недостаточно дружелюбна к новичкам?
Помогите создать новое Руководство для новичков!

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

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
  • СуперМодератор
  • Старожил
  • *
  • Сообщений: 7169
  • 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
  1. #!/bin/bash
  2. opt_optipng ()
  3. {
  4.         input="$1"
  5.         echo "Обрабатывается: (optipng) $input"
  6.         optipng0.7.4 -o3 "$input" >/dev/null 2>&1
  7. }
  8.  
  9. opt_advpng ()
  10. {
  11.         input="$1"
  12.         echo "Обрабатывается (advpng): $input"
  13.         advpng -z -4 "$input">/dev/null 2>&1
  14. }
  15.  
  16. opt_advdef ()
  17. {
  18.         input="$1"
  19.         echo "Обрабатывается (advdef): $input"
  20.         advdef -z -4 "$input">/dev/null 2>&1
  21. }
  22.  
  23. opt_jpegtran ()
  24. {
  25.         input="$1"
  26.         echo "Обрабатывается: $input"
  27.         jpegtran -optimize -progressive -copy none -outfile "$input" "$input" 2>&1
  28. }
  29.  
  30. opt_gifsicle ()
  31. {
  32.         input="$1"
  33.         echo "Обрабатывается (gifsicle): $input"
  34.         gifsicle --batch --optimize=3 "$input" >/dev/null 2>&1
  35. }
  36.  
  37. SIZEPNG=$(find . -type f \( -iname '*.png' -o -iname '*.PNG' \) -printf '%s\n' | awk '{SUM+=$1} END {print SUM}');
  38. SIZEGIF=$(find . -type f \( -iname '*.gif' -o -iname '*.GIF' \) -printf '%s\n' | awk '{SUM+=$1} END {print SUM}');
  39. SIZEJPG=$(find . -type f \( -iname '*.JPG' -o -iname '*.jpg' -o -iname '*.jpeg' -o -iname '*.JPEG' \) -printf '%s\n' | awk '{SUM+=$1} END {print SUM}')
  40. SIZE=$[SIZEPNG+SIZEGIF+SIZEJPG]
  41.  
  42. export -f opt_optipng
  43. find  -type f | cut -c 3- | grep -ie '.png$' | sort | parallel opt_optipng '{}'
  44. export -f opt_advpng
  45. find  -type f | cut -c 3- | grep -ie '.png$' | sort | parallel opt_advpng '{}'
  46. export -f opt_advdef
  47. find  -type f | cut -c 3- | grep -ie '.png$' | sort | parallel opt_advdef '{}'
  48. export -f opt_jpegtran
  49. find  -type f | cut -c 3- | grep -e '.JPG$' -e '.jpg$' -e '.jpeg$' -e '.JPEG$' | sort | parallel opt_advdef '{}'
  50. export -f opt_gifsicle
  51. find  -type f | cut -c 3- | grep -ie '.gif$' | parallel opt_gifsicle '{}'
  52.  
  53. echo "Готово!"
  54. SIZEPNG2=$(find . -type f \( -iname '*.png' -o -iname '*.PNG' \) -printf '%s\n' | awk '{SUM+=$1} END {print SUM}');
  55. SIZEGIF2=$(find . -type f \( -iname '*.gif' -o -iname '*.GIF' \) -printf '%s\n' | awk '{SUM+=$1} END {print SUM}');
  56. SIZEJPG2=$(find . -type f \( -iname '*.JPG' -o -iname '*.jpg' -o -iname '*.jpeg' -o -iname '*.JPEG' \) -printf '%s\n' | awk '{SUM+=$1} END {print SUM}')
  57. SIZE2=$[SIZEPNG2+SIZEGIF2+SIZEJPG2]
  58. if [ $SIZEPNG ]; then
  59.         PERCENTPNG=$[100-SIZEPNG2*100/SIZEPNG]
  60. fi
  61. if [ $SIZEGIF ]; then
  62.         PERCENTGIF=$[100-SIZEGIF2*100/SIZEGIF]
  63. fi
  64. if [ $SIZEJPG ]; then
  65.         PERCENTJPG=$[100-SIZEJPG2*100/SIZEJPG]
  66. fi
  67. if [ $SIZE ]; then
  68.         PERCENT=$[100-SIZE2*100/SIZE]
  69.         echo "Исходный размер всех обрабатываемых файлов был $SIZE байт а после обработки составил $SIZE2 байт. Среднее сжатие на $PERCENT%
  70. Из них:"
  71. fi
  72. if [ $SIZEPNG ]; then
  73.         echo "PNG: было: $SIZEPNG байт, стало $SIZEPNG2 байт, сжалось на $PERCENTPNG%"
  74. fi
  75. if [ $SIZEGIF ]; then
  76.         echo "GIF: было: $SIZEGIF байт, стало $SIZEGIF2 байт, сжалось на $PERCENTGIF%"
  77. fi
  78. if [ $SIZEJPG ]; then
  79.         echo "JPG: было: $SIZEJPG байт, стало $SIZEPJPG байт, сжалось на $PERCENTJPG%"
  80. fi
  81.  
Узнать количество ядер 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.113 секунд. Запросов: 24.