# base64dump.py # Extract and decode Base64-encoded strings from files # FOR610 Labs: 3.4, 4.5 | Sections: 3, 4 | Author: Didier Stevens # Docs: https://docs.remnux.org/discover-the-tools/examine+static+properties/deobfuscation % base64, decoding, didier-stevens # Basic usage base64dump.py file.txt # Suppress default output base64dump.py file.ps1 -n 10 # Select specific item base64dump.py file.ps1 -s 2 -d # --- Recipes (multi-tool chains) --- # >> Extract Base64 PowerShell from Office Macro # List streams — find macro (M) and data streams oledump.py # Extract VBA source to understand what the macro does oledump.py -s -v # Scan data stream for Base64 strings oledump.py -s -d | base64dump.py -n 10 # Decode the longest Base64 hit to file oledump.py -s -d | base64dump.py -s 1 -d > payload.ps1 # >> Decode Base64 + Gzip Payload # Find Base64 strings in the script base64dump.py -n 10 # Decode Base64 and decompress gzip in one chain base64dump.py -s -d | gunzip > decoded.ps1 # >> Decode Base64 + XOR Shellcode # Find Base64 strings base64dump.py -n 10 # Decode Base64, then XOR with key base64dump.py -s -d | translate.py 'byte ^ ' > shellcode.bin # >> Full Office Macro Decode Chain # Step 1: List streams and extract VBA oledump.py oledump.py -s -v # Step 2: Extract Base64 from data stream oledump.py -s -d | base64dump.py -s 1 -d > stage1.ps1 # Step 3: Decode second Base64 layer + decompress base64dump.py stage1.ps1 -s 3 -d | gunzip > stage2.ps1 # Step 4: XOR decode the shellcode base64dump.py stage2.ps1 -s 2 -d | translate.py 'byte ^ 35' > shellcode.bin # Step 5: Emulate the shellcode scdbgc /f shellcode.bin /s -1