4837 Total CVEs
26 Years
GitHub
README.md
Rendering markdown...
POC / illuminate-decryptor.py PY
import base64
import hmac
import hashlib
import json
from Crypto.Cipher import AES
from Crypto.Util.Padding import unpad

encrypted_payload_b64 = """


xxx
"""

# Base64-encoded Laravel APP_KEY (without 'base64:' prefix)
app_key_b64 = "xxx"

# ================================================

def decrypt_laravel_cookie(encrypted_payload_b64: str, key_b64: str) -> bytes:
    """
    Decrypt a Laravel encrypted cookie (AES-256-CBC JSON payload) and return raw bytes.
    """
    key = base64.b64decode(key_b64)
    payload_json = base64.b64decode(encrypted_payload_b64)
    payload = json.loads(payload_json)

    print("Decrypted payload:", payload)
    # Validate MAC
    iv_b64 = payload['iv']
    value_b64 = payload['value']
    mac_data = iv_b64.encode('utf-8') + value_b64.encode('utf-8')
    mac_expected = hmac.new(key, mac_data, hashlib.sha256).hexdigest()
    if not hmac.compare_digest(payload.get('mac', ''), mac_expected):
        raise ValueError("MAC validation failed.")

    # Decrypt
    iv = base64.b64decode(iv_b64)
    ciphertext = base64.b64decode(value_b64)
    cipher = AES.new(key, AES.MODE_CBC, iv)
    return unpad(cipher.decrypt(ciphertext), AES.block_size)

def main():
    # Decrypt and parse cookie
    raw = decrypt_laravel_cookie(encrypted_payload_b64, app_key_b64)
    print(raw)


if __name__ == '__main__':
    main()