gitextract_jz02_bs8/ ├── .coveragerc ├── .devcontainer/ │ └── devcontainer.json ├── .github/ │ ├── FUNDING.yml │ ├── ISSUE_TEMPLATE/ │ │ └── can-t-decrypt.md │ ├── PULL_REQUEST_TEMPLATE.md │ ├── copilot-instructions.md │ ├── dependabot.yml │ └── workflows/ │ ├── codeql-analysis.yml │ ├── lint-test-coverage.yml │ └── pypi.yml ├── .gitignore ├── CHANGELOG.md ├── CITATION.cff ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── LICENSE ├── README.md ├── SECURITY.md ├── git-hooks/ │ └── pre-commit ├── notebook.ipynb ├── proto/ │ ├── C14_cipher.proto │ ├── C15_IV.proto │ ├── backup_expiry.proto │ ├── backup_prefix.proto │ └── key_type.proto ├── pyproject.toml ├── requirements.txt ├── src/ │ └── wa_crypt_tools/ │ ├── __init__.py │ ├── lib/ │ │ ├── constants.py │ │ ├── db/ │ │ │ ├── db.py │ │ │ ├── db12.py │ │ │ ├── db14.py │ │ │ ├── db15.py │ │ │ └── dbfactory.py │ │ ├── key/ │ │ │ ├── key.py │ │ │ ├── key14.py │ │ │ ├── key15.py │ │ │ └── keyfactory.py │ │ ├── logformat.py │ │ ├── props.py │ │ └── utils.py │ ├── proto/ │ │ ├── C14_cipher_pb2.py │ │ ├── C15_IV_pb2.py │ │ ├── __init__.py │ │ ├── backup_expiry_pb2.py │ │ ├── backup_prefix_pb2.py │ │ └── key_type_pb2.py │ ├── wacreatekey.py │ ├── wadecrypt.py │ ├── waencrypt.py │ ├── waguess.py │ └── wainfo.py ├── tests/ │ ├── __init__.py │ ├── lib/ │ │ ├── __init__.py │ │ ├── db/ │ │ │ ├── __init__.py │ │ │ └── test_db.py │ │ ├── test_constants.py │ │ └── test_utils.py │ ├── res/ │ │ ├── empty-db.sql │ │ ├── empty-db.zlib1 │ │ ├── encrypted_backup.key │ │ ├── key │ │ ├── msgstore-noexpiry.db.crypt14 │ │ ├── msgstore.db.crypt12 │ │ ├── msgstore.db.crypt14 │ │ ├── msgstore.db.crypt15 │ │ └── test.json │ ├── test_createkey.py │ ├── test_decrypt.py │ ├── test_encrypt.py │ ├── tools-invocation/ │ │ └── test_wacreatekey.py │ └── utils/ │ ├── __init__.py │ └── utils.py └── utils/ ├── WA_HMACSHA256_Loop.java ├── password_data_key_to_hashcat.py └── protobuf_bruteforce.py