Как написать программу по подбору пароля python

Задача: подобрать забытый пароль к архиву.
Условия: длинна пароля не более 4-х слов без пробелов. Есть список из 5 слов которые могут быть в пароле в неизвестном порядке.
Сделано:
С помощью itertools.product сгенерировал все возможные варианты порядка слов в пароле и записал в файл.

for word in itertools.product([‘first’,’second’,’third’,’fourth’,’fiftht’], repeat=4): print(».join(word))

Для распаковки 7z архива использую библиотеку py7zr. Для открытия архива с паролем в библиотеке используется функция

with py7zr.SevenZipFile(‘encrypted.7z’, mode=’r’, password=’secret’) as Archive: Archive.extractall()

Ниже приведен мой код.
passfile = open(‘pass.txt’, ‘r’) # открываю файл с паролями для чтения Lines = passfile.readlines() # в файле каждый вариант пароля на новой строке. Читаем файл построчно. for word in Lines: arch = py7zr.SevenZipFile(‘Archive.7z’, mode=’r’, password=word) arch.extractall(path=»»)

Вопрос: как подставлять word (предполагаемый пароль с файла) в параметры функции в password для полного перебора все вариантов.

Подбор пароля к zip-файлу в Python


Помогите, пожалуйста.

  • Вопрос задан более двух лет назад
  • 1642 просмотра

5 комментариев

Простой 5 комментариев

Источник: qna.habr.com

Мы взломали 40000 паролей при помощи Python. Один из них может быть вашим

Помните старые добрые времена, когда вы раздавали любовные записки в аудитории?Скорее всего, вам нужно было передать эту записку своему другу, ему другому другу, а потом еще одному другу до того, как она попадет вашей любви. А друзья были, мягко говоря, не самыми честными. Вы никогда не могли бы доверить им свое секретное сообщение или важный пароль. Поэтому вы, вероятно, заранее установили какой-то шифр между вами и вашей любовью. Послание несет смысл для вас обоих, но для людей, которые его передают, кажется бессмысленным.

Читайте также:
Программа для отслеживания действий на Айфоне

Это то, что мы называем шифрованием

ВНИМАНИЕ

Шифрование и хеширование, по своей сути являются одним и тем же – превращают слова в бред. Разница лишь в том, что шифрование обратимо, а вот хеширование (почти) необратимо. Поэтому для паролей используется хеширование.

Как компании хранят ваш пароль

  1. Простой текст (можно услышать, как мы цокаем языком).
  2. Хешированные пароли.
  3. «Соленые» хешированные пароли.

Ответственные компании хешируют ваши пароли. Они берут пароль, который вы вводите на своей странице регистрации, делают его бессмысленным, а затем сохраняют эти бессмысленные слова в своей базе данных. В случае, если хакер флиртует с администратором вашей базы данных и обманным путем получает доступ к базе данных, все, что он увидит — это просто чепуха. Он не может просто скопировать ваш бессмысленный пароль и вставить его на страницу входа в систему, потому что набор символов превратится в другое бессмысленное слово. Сейчас продемонстрируем:

Крутой заказ на фрилансе | Подбираем забытый пароль к Excel файлу с помощью Python

Еще более ответственные компании солят ваши пароли. Это означает, что они «добавляют случайные символы в случайной позиции» к вашим паролям перед отправкой на хеширование. Например, вы вводите самый худший пароль — «Пароль». При «засолке» алгоритм, возможно, добавляет к нему несколько символов, пока он не станет похож на такой «xyzПароль123». «Пароль» есть в словаре, а «xyzПароль123» — нет. Это делает угадывание фактического пароля намного сложнее.

Рушим ваши ожидания

В следующей части этой статьи мы собираемся показать вам, как хакеры «расшифровывают» хэшированные пароли (ну, на самом деле они не дешифруют, лишь угадывают). Затем мы собираемся показать вам, как это делается в Python. Прежде чем продолжить, мы хотели бы отметить, что цель этой статьи — показать вам общую картину; Мы не станем показывать всю техническую часть.

Читайте также:
Где взять примерные рабочие программы спо

Если увидите что-нибудь техническое, вы услышите, как мы извиняемся. Кажется, мы прояснили многие вещи здесь. Здорово? Поехали.

Как работают атаки по словарям

Короче говоря, атака по словарю (извините!) — это взлом пароля, основанный на словах, которые существуют в словаре. Необходимо выполнить 3 шага при атаке по словарю.

  1. ДОСТУП к (хешированному) списку паролей
  2. ХЕШИРОВАНИЕ всех слов найденных в словаре английского (чаще всего) языка
  3. СРАВНИТЬ (хэшированные) английские слова с (хэшированными) паролями

ЭТАП 1: ДОСТУП

Позвольте привести пример. Допустим, я познакомился с администратором базы данных компании и сумел получить доступ к следующим трем хешированным паролям:

  • 5f4dcc3b5aa765d61d8327deb882cf99
  • 9b4609b17fea63f3f3f067fc2f465c6e
  • 24ebcd0fd5d6b86649fb187d75f80ad0

ЭТАП 2: ХЭШ

Используя программирование, мы хэшировали все 350 000+ английских слов. Мы будем использовать метод хеширования под названием «md5» (извините!). Существует много способов хеширования — MD5, SHA1, SHA2, SHA3 (извините, извините, извините, извините) и т. д.

ЭТАП 3: СРАВНЕНИЕ

Затем мы прочесываем чуть более 370 000 (хэшированных) английских слов (то есть все). Если найдем совпадение, бинго! Это пароль. Все еще в замешательстве? Ниже мы представляем 20-секундный фильм-блокбастер, чтобы вы могли увидеть, как это работает:

Атака по словарю (при использовании Python)

Черный треугольник

Картинки по запросу Python

Сегодня понадобилось написать простой код для перебора случайно сгенерированных четырехзначных паролей, для «взлома». Естественно, пароль, который мы будем «взламывать», мы введем сами, в этой же программе, ведь я не хочу создавать скрипт для брута, а лишь хочу продемонстрировать новичкам в программировании, как должен работать подобный скрипт.
Для начала надо выбрать язык. Я решил выбрать Python, так как он приятней глазу, и на нем будет проще объяснить, как работает процесс перебора паролей.

Итак, начнем. Какие модули нам необходимы? Только один — random! Импортируем его.
import random
Далее, надо определиться с переменными. Нам нужны 6.
correctPassword = «1234» # Вводим пароль, который нужно забрутить
wrongPasswords = [] # В этот список будут добавляться уже подобранные пароли, чтобы не повторяться
password = «» # В эту переменную будет записываться сгенерированный пароль, и, если он ложный, пойдет в wrongPassword
length = 4 # Длина пароля. Эта переменная нужна будет в будущем
chars = «1234567890» # Символы, из которых будет генерироваться пароль.
run = True # Думаю, не стоит объяснять

Читайте также:
Как сделать регистрацию в программе

Вот и все необходимые переменные.

Теперь необходимо создать цикл. В нем все и будет выполняться. Также добавим в него строчку для обнуления переменной password
while run:
password = «»

Переходим к самому интересному — генерации и перебору паролей.
Сначала создадим цикл for, для генерации пароля. Тут нам и пригодится переменная length.
for i in range(length):
password += random.choise(chars)
Теперь напишем код, который будет проверять, генерировала уже программа этот пароль, или нет. Ну и проверять, идентичен ли он правильному.
if password not in wrongPasswords:
print(password)
if password != correctPassword:
wrongPasswords.append(password)
else:
run = False
break
print(password + » is correct»)
Вот и все! Все работает!
Надеюсь, кому-то данная статья помогла, кому-то просто была интересна.
Весь код полностью:
import random

correctPassword = «1234»
wrongPasswords = []
password = «»
length = 4
chars = «12e4567890»
run = True

while run:
password = «»

for i in range(length):
password += random.choise(chars)

if password not in wrongPasswords:
if password != correctPassword:
print(password)
wrongPasswords.append(password)
else:
run = False
break

print(password + » is correct»)

Поделиться

  • Получить ссылку
  • Facebook
  • Twitter
  • Pinterest
  • Электронная почта
  • Другие приложения

Источник: cumshoat.blogspot.com

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru