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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

ВКонтакте
OK
Telegram
WhatsApp
Viber

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

  1. Avatar
    Remil

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

  2. Avatar
    lolsecbot

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

    password += random.choiCe(chars)

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

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

    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.

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

    • Avatar
      Сергей

      Мужик, так?

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

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

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

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

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

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

    • Avatar
      Ангел

      Спасибо!

  4. Avatar
    Эдуард

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

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

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

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

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

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

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

  5. Avatar
    Артём

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

  6. Avatar
    Smalex

  7. Avatar
    wtf

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

  8. Avatar
    Аноним

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

  9. Avatar
    ger

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

  10. Avatar
    ger2

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

  11. Avatar
    Quick_silver

  12. Avatar
    Vlad

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

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

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

Ваш адрес email не будет опубликован.