Skip to content

Convert NQ_Vault to LAVA @artifact_processor (2-way split + media migration)#822

Merged
abrignoni merged 1 commit into
mainfrom
lava-batch-70
Jun 21, 2026
Merged

Convert NQ_Vault to LAVA @artifact_processor (2-way split + media migration)#822
abrignoni merged 1 commit into
mainfrom
lava-batch-70

Conversation

@abrignoni

Copy link
Copy Markdown
Owner

Converts NQ_Vault.py (NQ Vault / com.netqin.ps) to the decorated @artifact_processor pattern, split into two artifacts under Encrypting Media Apps (was Encrypting Media apps — capitalization consolidated):

Function Name
get_NQVault NQ Vault Decrypted PINs
get_NQVault_media NQ Vault Decrypted Media

Changes

  • PIN brute force memoized with functools.lru_cache — the original ran it once; the two-function split would otherwise run it twice, so caching keeps the (potentially very slow) 3–15 digit brute force to a single pass per encoded PIN. Verified: java_string_hashcode('1234') == 1509442.
  • Media migration: XOR-decrypted bytes go to check_in_embedded_media into a ('Media','media') column. This drops ~30 lines of sanitize_output_filename/build_safe_output_path/file-writing — the LAVA media store handles storage and naming, so the path-traversal guards are no longer needed.
  • Timestamp is now an aware UTC datetime (query selects raw epoch ms instead of a SQLite DATETIME() string).
  • XOR decryption (first 128 bytes) rewritten as a single bytes comprehension.

Original dates (2023-05-19) preserved. Third of the encrypting-vault apps (after Playground #820, App Locker #821).

…ration)

Splits the NQ Vault (com.netqin.ps) parser into two decorated artifacts
under 'Encrypting Media Apps' (was 'Encrypting Media apps'): Decrypted PINs
and Decrypted Media. brute_force_pin is now memoized with lru_cache so the
split doesn't run the (potentially slow) PIN brute force twice. The XOR-
decrypted media bytes are registered via check_in_embedded_media into a
('Media','media') column, dropping the ~30 lines of safe-output-path /
file-writing helpers (the media store handles storage). Timestamp is now
an aware UTC datetime (query selects raw epoch ms instead of a SQLite
DATETIME string). XOR decryption rewritten as a single bytes comprehension.
@abrignoni abrignoni merged commit 3a9da80 into main Jun 21, 2026
1 check passed
@abrignoni abrignoni deleted the lava-batch-70 branch June 21, 2026 16:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant