Compruebe si la contraseña para el documento cifrado de ms office es correcta

0

Estoy escribiendo un programa Python para descifrar un documento cifrado de MS Office. Haciendo referencia a Este repositorio de GitHub como referencia.

Ahora lo que quiero hacer es probar un montón de contraseñas de uso común contra el documento. Una especie de enfoque de fuerza bruta. Pero el problema es cuando introduzco la contraseña, no tengo forma de saber si el contenido descifrado es basura, lo que significa que la contraseña era incorrecta o si el contenido descifrado es el contenido original correcto, lo que significa que la contraseña era correcta.

Sé que dentro de la estructura del documento, esta información generalmente se incluye dentro de EncryptionInfo . Pero no entiendo cómo verifico si la contraseña que estoy usando es correcta o el contenido que se está descifrando es correcto.

He intentado consultar muchas fuentes en línea y una que podría ayudar es Este video de YouTube y < a href="https://www.programcreek.com/java-api-examples/index.php?source_dir=POI-Android-master/ppt/poi/org/apache/poi/poifs/crypt/EncryptionVerifier.java" > Puede ser este código (aunque no lo creo) pero no puedo realizar todo esto en un código de Python porque no entiendo todas las operaciones sugeridas correctamente.

    
pregunta Keyur Golani 02.10.2017 - 23:37
fuente

1 respuesta

3

Los documentos de MS Office se cifran con la contraseña de texto sin formato. Pero usan el hash de la contraseña de texto sin formato para verificar si funcionará primero. Si la contraseña proporcionada por el usuario pasa por el proceso de hash y coincide con el hash almacenado, descifrará el archivo con la contraseña provista.

Además, el hash no es un hash directo de la clave. En Office 2007, la contraseña es hash 50.000 veces, y en Office 2010 la tiene 100.000 veces. Ambos utilizando SHA-1. Esto es para combatir las herramientas que dañan hashes forzados para versiones anteriores. Office 2013 usa la misma estrategia pero usa SHA-512 de manera predeterminada.

Entonces, si conoce el método hash y la versión de Office, puede escribir un script que convierta una contraseña de texto sin formato en un hash compatible para comparar con el hash del documento de MS. Si su script los compara como iguales, entonces puede verificar que es la contraseña correcta.

    
respondido por el Bacon Brad 03.10.2017 - 01:09
fuente

Lea otras preguntas en las etiquetas