forked from SuperUserek/MyDRMTools
Added readme
This commit is contained in:
parent
7ecbe8f0f2
commit
cebad6aebb
223
AutoKeyboxDecoder/Readme.md
Normal file
223
AutoKeyboxDecoder/Readme.md
Normal file
@ -0,0 +1,223 @@
|
|||||||
|
# 🔐 SuperUserek Auto AES Decrypt Tool
|
||||||
|
|
||||||
|
A Python tool that attempts to decrypt **LG firmware / keybox / encrypted blobs** by automatically testing known AES keys and AES modes.
|
||||||
|
|
||||||
|
The script downloads multiple public key lists and tries them using several AES modes and IV strategies.
|
||||||
|
|
||||||
|
If a valid payload is found, the decrypted payload is extracted and saved.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# ✨ Features
|
||||||
|
|
||||||
|
* 🔑 Automatically downloads known AES keys from multiple sources
|
||||||
|
* 🧠 Supports **AES-128 / AES-192 / AES-256**
|
||||||
|
* 🔍 Tests multiple AES modes automatically
|
||||||
|
* ⚡ Fast key testing
|
||||||
|
* 🧩 Supports **custom user-provided AES keys**
|
||||||
|
* 📦 Extracts valid payload automatically
|
||||||
|
* 📁 Supports custom output directories
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 📦 Key Sources
|
||||||
|
|
||||||
|
By default the script downloads keys from:
|
||||||
|
|
||||||
|
### 1️⃣ openlgtv AES keys
|
||||||
|
|
||||||
|
https://raw.githubusercontent.com/openlgtv/epk2extract/refs/heads/master/keys/AES.key
|
||||||
|
|
||||||
|
### 2️⃣ DRMLAB's KnownKeys ( please contribute and add more working keys to extract keyboxes )
|
||||||
|
|
||||||
|
https://git.drmlab.io/SuperUserek/MyDRMTools/AutoKeyboxDecoder/KnownKeys.txt
|
||||||
|
|
||||||
|
These lists contain AES keys used in various LG firmware and DRM systems.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# ⚙️ Requirements
|
||||||
|
|
||||||
|
Python **3.8+**
|
||||||
|
|
||||||
|
Install dependencies:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
pip install requests pycryptodome
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 🚀 Basic Usage
|
||||||
|
|
||||||
|
Try all known keys from both sources:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
python3 autokeybox_decoder.py keybox_file.dat
|
||||||
|
```
|
||||||
|
|
||||||
|
The script will:
|
||||||
|
|
||||||
|
1. Download key lists
|
||||||
|
2. Parse AES keys
|
||||||
|
3. Try AES modes automatically
|
||||||
|
4. Save the decrypted payload if successful
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 🔑 Custom AES Key
|
||||||
|
|
||||||
|
Try a custom AES key **along with known keys**:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
python3 autokeybox_decoder.py keybox_file.dat --key 00112233445566778899AABBCCDDEEFF
|
||||||
|
```
|
||||||
|
|
||||||
|
Supported key sizes:
|
||||||
|
|
||||||
|
| AES Type | Hex Length |
|
||||||
|
| -------- | ---------- |
|
||||||
|
| AES-128 | 32 |
|
||||||
|
| AES-192 | 48 |
|
||||||
|
| AES-256 | 64 |
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 🔒 Only Use Custom Key
|
||||||
|
|
||||||
|
Skip downloading key lists:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
python3 autokeybox_decoder.py keybox_file.dat \
|
||||||
|
--key 00112233445566778899AABBCCDDEEFF \
|
||||||
|
--only-custom
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 📂 Specify Output Directory
|
||||||
|
|
||||||
|
```bash
|
||||||
|
python3 autokeybox_decoder.py keybox_file.dat --outdir ./output
|
||||||
|
```
|
||||||
|
|
||||||
|
Example output:
|
||||||
|
|
||||||
|
```
|
||||||
|
output/file_decrypted_CBC_IV_PREFIX16_0011223344556677.dat
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 🧪 Save All Matches
|
||||||
|
|
||||||
|
By default the script stops after the **first successful decrypt**.
|
||||||
|
|
||||||
|
To save **all possible matches**:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
python3 autokeybox_decoder.py keybox_file.dat --all-matches
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 🌐 Add Additional Key Lists
|
||||||
|
|
||||||
|
You can add extra key sources:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
python3 autokeybox_decoder.py keybox_file.dat \
|
||||||
|
--keys-url https://example.com/keys.txt
|
||||||
|
```
|
||||||
|
|
||||||
|
Multiple lists are supported:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
python3 autokeybox_decoder.py keybox_file.dat \
|
||||||
|
--keys-url https://example.com/keys1.txt \
|
||||||
|
--keys-url https://example.com/keys2.txt
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 🧰 Full Example
|
||||||
|
|
||||||
|
Use known keys + custom key + save all matches:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
python3 autokeybox_decoder.py keybox.dat \
|
||||||
|
--key BC1197CA30AA0FC84F7FE62E09FD3D9F \
|
||||||
|
--all-matches \
|
||||||
|
--outdir decrypted
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 🔐 AES Modes Tested
|
||||||
|
|
||||||
|
The script automatically tries:
|
||||||
|
|
||||||
|
* AES **ECB**
|
||||||
|
* AES **CBC**
|
||||||
|
* AES **CFB**
|
||||||
|
* AES **OFB**
|
||||||
|
* AES **CTR**
|
||||||
|
|
||||||
|
### IV strategies tested
|
||||||
|
|
||||||
|
* zero IV
|
||||||
|
* first 16 bytes of file
|
||||||
|
* counter derived from prefix
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 🧠 Success Detection
|
||||||
|
|
||||||
|
A decryption is considered valid if the plaintext contains:
|
||||||
|
|
||||||
|
```
|
||||||
|
INNER_MSTAR
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 📄 Output Format
|
||||||
|
|
||||||
|
Successful decryptions are saved as:
|
||||||
|
|
||||||
|
```
|
||||||
|
<original>_decrypted_<mode>_<keyprefix>.dat
|
||||||
|
```
|
||||||
|
|
||||||
|
Example:
|
||||||
|
|
||||||
|
```
|
||||||
|
firmware_decrypted_CBC_IV_PREFIX16_1F1E1D1C1B1A1918.dat
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# 🖥 Example Output
|
||||||
|
|
||||||
|
```
|
||||||
|
[*] Keys ready:
|
||||||
|
AES-128: 72
|
||||||
|
AES-192: 0
|
||||||
|
AES-256: 18
|
||||||
|
Total: 90
|
||||||
|
|
||||||
|
[+] MATCH: key=1F1E1D1C1B1A19180706050403020100 mode=CBC(IV_PREFIX16)
|
||||||
|
Saved: firmware_decrypted_CBC_IV_PREFIX16_1F1E1D1C1B1A1918.dat
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
# ⚠️ Disclaimer
|
||||||
|
|
||||||
|
This tool is intended for:
|
||||||
|
|
||||||
|
* firmware research
|
||||||
|
* security analysis
|
||||||
|
* reverse engineering
|
||||||
|
|
||||||
|
Use responsibly and only on data you are authorized to analyze.
|
||||||
Loading…
Reference in New Issue
Block a user