Перебор пароля на Python

Пароль иконка

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

Еще по теме: Взлом WiFi на Python

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

Итак, начнем. Какие модули нам необходимы? Только один — random! Импортируем его.

Далее, надо определиться с переменными. Нам нужны 6.

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

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

Переходим к самому интересному — генерации и перебору паролей.

Сначала создадим цикл for, для генерации пароля. Тут нам и пригодится переменная length.

Теперь напишем код, который будет проверять, генерировала уже программа этот пароль, или нет. Ну и проверять, идентичен ли он правильному.

Вот и все! Все работает!

Надеюсь, кому-то данная статья помогла, кому-то просто была интересна.

Весь код полностью:

Еще по теме: Простой кейлоггер на Python

Ban32

Хакер-самоучка, который может взломать тостер и настроить его на отправку вам утреннего приветствия в коде Морзе.

Добавить комментарий

  1. Remil

    Куди це вводить

    Ответить
  2. lolsecbot

    Опечатка в строке

    password += random.choiCe(chars)

    Ответить
  3. Даниель Стародубцев

    Код конечно отвратительный. Генерить рандомные пароли — самый медленный метод перебора, который только возможно придумать (много времени уйдёт на определение того, выбирали ли мы его раньше). Конкретные недостатки:

    1) Инициализацию переменной length следует делать используя len(correctPassword), чтобы при вводе надо было изменять одну строку, а не две.
    2) Переменная run не выполняет никакой функции, поскольку одновременно с run=False выполняется break. Следует либо убрать оттуда break, либо удалить run и сделать while True.
    3) Переменную wrongPasswords лучше сделать не списком, а множеством, поскольку тогда будет быстрее проверка наличия в нем элемента.
    4) Инициализация переменной password до цикла не требуется.
    5) Поскольку из модуля random используется только одна функция, лучше писать не import random, а from random import choice.

    Был поражен, увидев столько косяков в столь коротком коде…

    Ответить
    1. Сергей

      Мужик, так?

    2. Даниель Стародубцев

      Ну если уж совсем придираться, то в конструкции if-else лучше не использовать в условии отрицание, то есть так:

      Это не принципиально, просто немного лучше воспринимается при чтении кода. В остальном да, так гораздо лучше (алгоритм до сих пор медленный, на длинных паролях последовательный перебор работает куда лучше)

    3. Даниель Стародубцев

      Вообще говоря, у вашего алгоритма даже средняя сложность больше, она равна количеству возможным комбинаций, тем временем как у последовательного перебора она в два раза меньше. Про максимальную сложность вообще молчу, она у вас бесконечна)). А у последовательного перебора макс. сложность равна вашей средней…

      И при этом на практике ваш алгоритм получается не в 2 а примерно в 10 раз дольше… Как то так

    4. Ангел

      Спасибо!

  4. Эдуард

    Ну во первых вероятность сильно ничтожная.

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

    В третьих, как быстро вы переполните оперативу хранением такого длинного массива в памяти.

    В четвертых, с увлечением массива будет замедляться скорость работы кода.

    В пятых, выносите все if по возможности за пределы цикла, для ускорения брута.

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

    Так же для простого числового пароля, проще сделать так же отдельную функцию которая с каждой итерацией будет увеличиваться на +1.
    Скорость взлома пароля 11111 таким методом занимает 8 секунд, что будет гораздо быстрее чем это рандомить.

    Ответить
  5. Артём

    А что делать если не знаешь пароль?

    Ответить
  6. Smalex

    Ответить
  7. wtf

    если я введу пароль 10001 то он у тебя никогда не подберётся

    Ответить
  8. Аноним

    Зачем choice? Есть же sample!

    Ответить
  9. ger

    Строка password += random.choiCe(chars) выдает ошибку, почему?

    Ответить
  10. ger2

    choiCe надо писать так: choice

    Ответить
  11. Quick_silver

    Ответить
  12. Vlad

    p = 0
    x = int(input(‘Допустимо це пароль який ми незнаємо і нам нада його підібрати : ‘))

    while p < x:
    print(p)
    p += 1
    print('пароль : ', f'{p:02}')

    Ответить
  13. Владимир

    У меня вопрос, вот сделана программа для подбора паролей, а как её использовать-то? Ну вот есть у меня пароль на том же телефоне, как мне сделать так чтоб программа именно там проверила пароль, а не просто проверяла все числа?

    Ответить
  14. Ваван

    Я чел проста хочу узнать как получить код чтобы вернуть аккаунт гугл

    Ответить
  15. Гений

    Эмм, а может перебирать просто пароли по возрастанию?

    Ответить