如何为字母和字母数字密码创建 Bruteforce 密码破解程序? [英] How to create a Bruteforce password cracker for alphabetical and alphanumerical passwords?

查看:93
本文介绍了如何为字母和字母数字密码创建 Bruteforce 密码破解程序?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要为学校做小程序来暴力破解不同类型的密码;我正在寻找创建一个蛮力 python 代码,它将运行每个可能的字母和字母数字密码组合,并给我密码和破解所需的时间.

I need to make small programs for school to brute force crack different types of passwords; I'm looking to create a brute force python code that will run through every possible combination of alphabetical and alphanumerical passwords and give me the password and the amount of time it took to crack.

我对纯数字密码做了同样的事情,得到了这个:

I did the same with purely numerical passwords and got this:

import datetime as dt

Password4 = 123456

def crack_password():
    start = dt.datetime.now()
    for n in range(1000000):
        password_guess = '{0:04d}'.format(n)
             if password_guess == str(Password4):
                end = dt.datetime.now()
                print("Password found: {} in {}".format(password_guess, end - start))
               break
    guesses = crack_password()

然后我尝试对字母/字母数字密码做一些类似的事情,但无论我尝试过什么都不起作用:

I then tried to do something somewhat similar for alphabet/alphanumerical passwords but did not work whatever I tried:

    import random

    letters = [str(i) for i in range('a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p')]
    s = [''.join([a,b,c,d,e,f,g,h]) for a in letters for b in letters for c   in letters for d in letters for e in letters for f in letters for g in letters  for h in letters]
    random.shuffle(s)
    real_password = 'aaaaaaaa'
    i = 0

    for code in s:
        if code == real_password:
            print()
            print('The password is: ', code)
             break
        else:
            i += 1
            print(i, ' failures', end='\r')

程序包含失败次数或找到密码所需的时间至关重要,这就是为什么我不能简单地制作密码生成器.

It is vital that the program include either number of failures or the time it took to find the password, which is why i can't simply make a password generator.

请注意:我对编码还很陌生,非常感谢您的帮助:)

Please note: I am fairly new to coding and am very grateful for your help :)

推荐答案

这是一个天真的蛮力方法,它会猜测数字 (string.digits) 和小写字母 (string.ascii_lowercase).您可以使用 itertools.product 并将 repeat 设置为猜测的当前密码长度.您可以从 1 个字符密码(或任何您的下限)开始,然后将其设置为最大长度.然后在找到匹配项时return.

Here's a naiive brute force method that will guess numbers (string.digits) and lower case letters (string.ascii_lowercase). You can use itertools.product with repeat set to the current password length guessed. You can start at 1 character passwords (or whatever your lower bound is) then cap it at a maximum length too. Then just return when you find the match.

import itertools
import string

def guess_password(real):
    chars = string.ascii_lowercase + string.digits
    attempts = 0
    for password_length in range(1, 9):
        for guess in itertools.product(chars, repeat=password_length):
            attempts += 1
            guess = ''.join(guess)
            if guess == real:
                return 'password is {}. found in {} guesses.'.format(guess, attempts)
            print(guess, attempts)

print(guess_password('abc'))

输出

a 1
b 2
c 3
d 4
...
aba 1369
abb 1370
password is abc. found in 1371 guesses.

这篇关于如何为字母和字母数字密码创建 Bruteforce 密码破解程序?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆