Msgstore Db Crypt Official

| Version | Magic Bytes (hex) | |---------|-------------------| | Crypt8 | 57 48 41 54 53 41 50 50 08 | | Crypt12 | 57 48 41 54 53 41 50 50 0C | | Crypt14 | 57 48 41 54 53 41 50 50 0E |

from Crypto.Cipher import AES import hashlib, hmac def decrypt_wa_crypt14(crypt_file, key_file, output_file): with open(key_file, 'rb') as kf: key = kf.read(32) # 256-bit key msgstore db crypt

with open(crypt_file, 'rb') as cf: cf.read(52) # skip header salt = cf.read(16) nonce = cf.read(12) ciphertext = cf.read()[:-16] # remove auth tag tag = cf.read(16) hmac def decrypt_wa_crypt14(crypt_file

cipher = AES.new(key, AES.MODE_GCM, nonce=nonce) plaintext = cipher.decrypt_and_verify(ciphertext, tag) output_file): with open(key_file