¿contraseña olvidada? No existe, enséñele cómo usar el craqueo por fuerza bruta de Python

"  Enseñarte a usar la fuerza bruta "

 

Este artículo es una continuación del número anterior de archivos comprimidos. En este número, discutiremos cómo forzar el crack sin saber la contraseña.

Última revisión: Cómo descifrar archivos comprimidos a través de Python

 

01— Preparar materiales

 

Los materiales de preparación para este número son relativamente pequeños y todos son códigos básicos.

1. Domina el bucle for básico y el juicio if.

2. Domine el uso de la recursividad.

 

02— Principio de implementación

 

¡Discutamos el principio de realización del agrietamiento por fuerza bruta!

Primero, echemos un vistazo a cuántas combinaciones de los dos números 1,2 dígitos debajo de dos dígitos.

Sí, hay 6 tipos: 1, 2, 11, 12, 21, 22.

Si es 123, ¿cuántas combinaciones de dos dígitos hay?

12 tipos, a saber: 1, 2, 3, 11, 12, 13, 21, 22, 23, 31, 32, 33

 

De otra manera:

 

Nuestra contraseña es de 1 dígito, ¡cuántas situaciones hay!

La respuesta es 10 tipos y también 0. Contraseña de 0 a 9

Entonces, si la contraseña que configuramos es de dos dígitos, ¡cuántas situaciones hay!

La respuesta es 100 tipos. Números del 00 al 99.

 

Luego encontramos una regla, para esta simple operación, luego podemos usar un bucle for para resolver.

 

el código se muestra a continuación:

"""纯数字密码破解"""
#这种情况不包含000001的情况。
zip_file = zipfile.ZipFile("zip.zip")
zip_list = zip_file.namelist()  # 得到压缩包里所有文件
for i in range(9999):
    x=str(i)
    y=False
    for f in zip_list:
        try:
            zip_file.extract(f, "zip",x.encode('utf-8'))  # 循环解压文件到指定目录
            print("密码正确,密码是"+x)
            y=True
        except BaseException as e:
            print("密码输入错误"+x)
            break
    if y==True:
        break
zip_file.close()  # 关闭文件,必须有,释放内存

 

 

Lo anterior es un método de craqueo digital puro, implementemos la situación que no es una contraseña pura

 

 

list=[1,2,3]
for i in list:
    print(i)
    for j in list:
        print(i+j)
        for y in list:
            print(i+j+y)

 

Lo anterior es el principio básico, de acuerdo con las necesidades, podemos agregar los dígitos requeridos por nosotros mismos. Lo anterior son todos los casos por debajo de 3 dígitos.

 

Después de leer el código anterior, queremos simplificar la operación, si la contraseña tiene 60 dígitos, ¿no tenemos que escribir 60 para bucles?

 

Entonces echemos un vistazo a la versión mejorada:

"""字符串暴力破解"""
# 包含000001的情况。
# zmb="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890"
zmb = "abcdefg"
list = zmb.replace("", " ").split()
def blpj(list, num=2, x="", a=1, y=[]):
    a += 1
    for j in list:
        y.append(x + j)  # print(x+j)
        if a != num + 1:
            blpj(x=x + j, num=num, a=a, list=list)#内部调用自己,递归处理
    return len(y), y#返回一个密码组合列表。
print(blpj(list, num=4))#调用并打印,list根据自己的想要填下,比如是数字,或者只有字母

 

En este punto, el algoritmo de craqueo por fuerza bruta ha terminado, ¡me gusta que me guste y lo sigo!

 

sugerencia relacionada:

 

Código de confesión de Tanabata

Habilidades de confesión oculta, Python te enseña cómo usar la información exif de imágenes para ocultar la confesión

Ventana emergente de confesión de Tanabata

Confesión del código bidimensional de los pequeños secretos en el código bidimensional

Escanee el código QR a continuación, síganos y aprenda más sobre programación interesante.

 

Supongo que te gusta

Origin blog.csdn.net/qq_39046854/article/details/107825590
Recomendado
Clasificación