Some Kind
Some Kind
Platform: hackerlab | Category: Forensics | Type: Challenge | Difficulty: Medium | OS: NA | Author: XESXOR | Date: 2026-03-31 | Status: Solved Techniques: aes128_cbc_decryption, chained_byte_transform_reversal, container_mounting, memory_artifact_correlation, password_reuse_cracking, truecrypt_container_identification
Summary
Task: a ZIP archive contained a VM memory dump, an Edge profile, an unknown encrypted blob, and a small data artifact. Solution: correlate browser and RAM traces to identify TrueCrypt, open the hidden volume, recover the AES key and IV from secretiki.txt, then reverse the hinted sub/xor chain before AES-CBC decryption.
Some Kind — HackerLab
Description
The challenge provided some_kind.zip with several mixed forensic artifacts rather than one obvious target file. The goal was to pivot across memory, browser, image, and encrypted-container evidence until the final 32-byte blob could be decoded into the flag.
Brief Challenge Summary
The archive some_kind.zip contained three key starting points:
zip_kakoeto.vmem— a VM memory dumpEdge_Default.zip— an Edge browser profilemoya_prelest— an unlabeled high-entropy blob
Browser traces and memory artifacts pointed to TrueCrypt usage, while recovered images contained explicit hints about a three-step transform chain. After opening the TrueCrypt volume, secretiki.txt revealed the AES key and IV, and the 32-byte payload from maybe_data.txt decrypted to the final flag.
Reconnaissance / Artifact Analysis
The fastest path was to treat the challenge as a correlation problem instead of trying to brute-force a single file in isolation.
1. Archive contents
Initial triage of some_kind.zip showed a classic “many artifacts, one story” layout:
zip_kakoeto.vmemEdge_Default.zipmoya_prelest
The memory dump and browser profile suggested user activity reconstruction, while moya_prelest looked like an encrypted container because it had high entropy and no useful plain-text structure.
2. Browser and memory clues
The Edge profile and memory image both contained evidence of TrueCrypt:
- browser history referenced
truecrypt.org - memory artifacts showed TrueCrypt-related execution
- memory strings referenced
C:\Users\Oleg\Desktop\moya_prelest - memory strings also referenced
E:\secretiki.txt
That combination mattered a lot:
moya_prelestwas likely not random junk, but a mounted or mountable encrypted volumesecretiki.txtlikely existed inside that mounted volume- the challenge was probably designed around recovering a password and opening the container rather than carving raw bytes from RAM alone
3. Image hints
Recovered image artifacts contained the transformation hints needed later:
my_mood.jpg→sub 0x34brain.png→xor 0x99wtf_btw.png→AES
The numbering in the clues gave the intended order:
sub 0x34xor 0x99AES
At this point the likely interpretation was: some payload must be transformed with two byte-wise operations before AES decryption produces the flag.
How TrueCrypt Was Identified and Cracked
moya_prelest became the main target because all surrounding evidence pointed to an encrypted container:
- Edge activity referenced TrueCrypt
- RAM contained TrueCrypt traces
- the blob was high-entropy and unlabeled
- memory referenced a file that looked like content from a mounted volume:
E:\secretiki.txt
Conceptually, the cracking workflow was:
- recognize
moya_prelestas a TrueCrypt volume candidate - test or crack the volume password with TrueCrypt-compatible tooling
- verify the candidate by actually opening the volume
The correct password was:
text read-only • copy allowediloveyou
Once that password worked, the hypothesis was confirmed: moya_prelest was indeed the TrueCrypt volume used in the challenge.
How the Decrypted Volume Was Mounted / Extracted
After obtaining the password, the next step was straightforward in concept:
- open or mount
moya_prelestas a TrueCrypt volume - access the filesystem exposed by the decrypted container
- extract the interesting file from the mounted content
The important recovered file was:
text read-only • copy allowedsecretiki.txt
This file contained two 16-byte hex strings, which turned out to be the AES material:
- key:
3FA39E9C4664ED9FA00D315EEFA2909C - iv:
523C191DDA966C7A1C01BD32F16039DB
Combining secretiki.txt and maybe_data.txt
Another artifact, maybe_data.txt, contained a 32-byte value written as a comma-separated hex list:
text read-only • copy allowed0xa6,0x62,0x54,0xa5,0x3e,0x30,0x82,0xdb,0xa5,0x13,0x75,0xed,0x4a,0xdb,0x3d,0xa4, 0x6e,0xa0,0x31,0x93,0x94,0x71,0xf0,0x45,0x91,0x8b,0x9c,0xd9,0x93,0x08,0x67,0x99
That length is exactly two AES blocks, so it was a natural candidate for ciphertext. The full recovery path was therefore:
- recover AES key and IV from
secretiki.txt - parse the 32 bytes from
maybe_data.txt - apply the ordered byte transforms from the image hints
- decrypt the result with AES-CBC
Exact Transformation and AES Logic
The order was important. Starting from the raw 32 bytes from maybe_data.txt:
- subtract
0x34from each byte modulo 256 - XOR the result with
0x99 - decrypt the transformed bytes with AES-CBC using the recovered key and IV
- remove PKCS#7 padding
In Python terms:
python read-only • copy allowed#!/usr/bin/env python3 from Crypto.Cipher import AES data = bytes([ 0xa6, 0x62, 0x54, 0xa5, 0x3e, 0x30, 0x82, 0xdb, 0xa5, 0x13, 0x75, 0xed, 0x4a, 0xdb, 0x3d, 0xa4, 0x6e, 0xa0, 0x31, 0x93, 0x94, 0x71, 0xf0, 0x45, 0x91, 0x8b, 0x9c, 0xd9, 0x93, 0x08, 0x67, 0x99, ]) key = bytes.fromhex("3FA39E9C4664ED9FA00D315EEFA2909C") iv = bytes.fromhex("523C191DDA966C7A1C01BD32F16039DB") # Step 1: sub 0x34 stage1 = bytes((b - 0x34) & 0xff for b in data) # Step 2: xor 0x99 stage2 = bytes(b ^ 0x99 for b in stage1) # Step 3: AES-CBC decrypt pt = AES.new(key, AES.MODE_CBC, iv).decrypt(stage2) # PKCS#7 unpad pad = pt[-1] flag = pt[:-pad].decode() print(flag)
Output:
text read-only • copy allowedCODEBY{REDACTED}
Solution
The challenge is easiest if solved as a chain of dependent facts:
- triage the archive and identify memory, browser, and encrypted-container artifacts
- use browser history and RAM traces to recognize TrueCrypt activity
- treat
moya_prelestas a TrueCrypt volume and open it with passwordiloveyou - extract
secretiki.txtfrom the decrypted volume - take the key and IV from
secretiki.txt - parse the 32-byte payload from
maybe_data.txt - follow the image-provided order:
sub 0x34→xor 0x99→AES - decrypt and unpad the result to obtain the flag