binary-analysis
Binary analysis: strings, binwalk, hexdump, xxd, file, objdump. Use when identifying unknown files, extracting strings, hunting credentials, or entropy analysis.
What this skill does
# Binary Analysis Tools for exploring and reverse engineering binary files, firmware, and unknown data. ## When to Use This Skill | Use this skill when... | Use rg-code-search instead when... | |---|---| | Identifying unknown or non-text file types (`file`, `xxd`) | Searching tracked source files for a regex | | Extracting strings or symbols from compiled binaries / firmware | Auditing a repo's text-encoded files for hardcoded patterns | | Inspecting raw hex layout of an ELF, Mach-O, or `.bin` blob | The input is human-readable code or markdown | | Use this skill when... | Use jq-json-processing instead when... | |---|---| | Reverse-engineering an opaque binary format | The data is already structured JSON awaiting transformation | | Hunting embedded files with `binwalk -e` | A field needs extraction from a parsed JSON payload | ## Quick Reference | Tool | Purpose | Install | |------|---------|---------| | `strings` | Extract printable text from binaries | Built-in (binutils) | | `binwalk` | Firmware analysis, file extraction | `pip install binwalk` or `cargo install binwalk` | | `hexdump` | Hex/ASCII dump | Built-in | | `xxd` | Hex dump with reverse capability | Built-in (vim) | | `file` | Identify file type | Built-in | ## strings - Extract Text from Binaries Find human-readable strings embedded in binary files. ```bash # Basic usage - find all printable strings (min 4 chars) strings binary_file # Set minimum string length strings -n 10 binary_file # Only strings >= 10 chars # Show file offset of each string strings -t x binary_file # Hex offset strings -t d binary_file # Decimal offset # Search for specific patterns strings binary_file | grep -i password strings binary_file | grep -E 'https?://' strings binary_file | grep -i api_key # Wide character strings (UTF-16) strings -e l binary_file # Little-endian 16-bit strings -e b binary_file # Big-endian 16-bit strings -e L binary_file # Little-endian 32-bit # Scan entire file (not just initialized data sections) strings -a binary_file ``` **Common discoveries with strings:** - Hardcoded credentials, API keys - URLs and endpoints - Error messages (hints at functionality) - Library versions - Debug symbols and function names - Configuration paths ## binwalk - Firmware Analysis Identify and extract embedded files, analyze entropy, find hidden data. ```bash # Signature scan - identify embedded files/data binwalk firmware.bin # Extract all identified files binwalk -e firmware.bin # Extract to _firmware.bin.extracted/ binwalk --extract firmware.bin # Same as -e # Recursive extraction (extract files within extracted files) binwalk -Me firmware.bin # Entropy analysis - find compressed/encrypted regions binwalk -E firmware.bin # Generate entropy graph binwalk --entropy firmware.bin # Opcode analysis - identify CPU architecture binwalk -A firmware.bin binwalk --opcodes firmware.bin # Raw byte extraction at offset binwalk --dd='type:extension' firmware.bin # Specific signature types binwalk --signature firmware.bin # File signatures only binwalk --raw='\\x1f\\x8b' firmware.bin # Search for gzip magic bytes ``` **binwalk output interpretation:** ``` DECIMAL HEXADECIMAL DESCRIPTION -------------------------------------------------------------------------------- 0 0x0 TRX firmware header 28 0x1C LZMA compressed data 1835008 0x1C0000 Squashfs filesystem, little endian ``` ## hexdump / xxd - Raw Hex Analysis ```bash # Hex + ASCII dump hexdump -C binary_file xxd binary_file # Dump specific byte range xxd -s 0x100 -l 256 binary_file # 256 bytes starting at offset 0x100 # Just hex, no ASCII hexdump -v -e '/1 "%02x "' binary_file # Create hex dump that can be reversed xxd binary_file > hex.txt xxd -r hex.txt > reconstructed_binary # Find specific bytes xxd binary_file | grep "504b" # Look for PK (ZIP signature) ``` ## file - Identify File Types ```bash # Basic identification file unknown_file file -i unknown_file # MIME type # Check multiple files file * # Follow symlinks file -L symlink ``` ## Common Analysis Workflows ### Unknown Binary Exploration ```bash # 1. Identify file type file mystery_file # 2. Check for embedded files binwalk mystery_file # 3. Extract strings strings -n 8 mystery_file | head -100 # 4. Look at hex header xxd mystery_file | head -20 # 5. Check entropy (compressed/encrypted?) binwalk -E mystery_file ``` ### Firmware Analysis ```bash # 1. Initial scan binwalk firmware.bin # 2. Extract everything binwalk -Me firmware.bin # 3. Explore extracted filesystem find _firmware.bin.extracted -type f -name "*.conf" find _firmware.bin.extracted -type f -name "passwd" # 4. Search for secrets grep -r "password" _firmware.bin.extracted/ strings -n 10 firmware.bin | grep -i -E "(pass|key|secret|token)" ``` ### Finding Hidden Data ```bash # Check for data after end of file binwalk -E file.jpg # Entropy spike at end = appended data # Look for embedded archives binwalk file.jpg | grep -E "(Zip|RAR|7z|gzip)" # Extract with offset dd if=file.jpg of=hidden.zip bs=1 skip=12345 ``` ## File Signatures (Magic Bytes) | Signature | Hex | File Type | |-----------|-----|-----------| | `PK` | `50 4B 03 04` | ZIP archive | | `Rar!` | `52 61 72 21` | RAR archive | | `7z` | `37 7A BC AF` | 7-Zip | | `ELF` | `7F 45 4C 46` | Linux executable | | `MZ` | `4D 5A` | Windows executable | | `PNG` | `89 50 4E 47` | PNG image | | `JFIF` | `FF D8 FF E0` | JPEG image | | `sqsh` | `73 71 73 68` | SquashFS | | `hsqs` | `68 73 71 73` | SquashFS (LE) | ## Tips - **Start with entropy**: High entropy = compressed or encrypted - **Look for strings first**: Often reveals purpose quickly - **Check file headers**: First 16 bytes often identify format - **Use recursive extraction**: Firmware often has nested archives - **Save offsets**: Note interesting locations for targeted extraction
Related in General
modeling-omnistudio-epc-catalog
IncludedSalesforce Industries CME EPC product-modeling skill for Product2-based catalog creation. Use when creating EPC products, configuring product attributes, building offer bundles with Product Child Items, or reviewing EPC DataPack JSON metadata for product catalog changes. TRIGGER when: user creates or updates Product2 EPC records, AttributeAssignment payloads, AttributeMetadata/AttributeDefaultValues, Offer bundles, or ProductChildItem relationships. DO NOT TRIGGER when: designing OmniScripts/FlexCards/Integration Procedures (use building-omnistudio-omniscript, building-omnistudio-flexcard, or building-omnistudio-integration-procedure), implementing Apex business logic (use generating-apex), or troubleshooting deployment pipelines (use deploying-metadata).
relationship-science-coach
IncludedUse this skill for direct, practical adult relationship coaching: couples conflict, repair, trust, marriage, dating, flirting, attachment patterns, emotional connection, sex, desire differences, eroticism, kink negotiation, affection, love languages, breakups, and long-term passion. Draw on Gottman, EFT and Hold Me Tight, attachment science, modern sex research, Perel, Nagoski, Kerner, Schnarch, Love and Stosny, and flexible love-language tools. Be concrete and low-hedge. Redirect only for imminent danger, abuse, coercive control, minors, non-consent, self-harm, stalking, or medical/legal/psychiatric decisions.
building-sf-integrations
IncludedSalesforce integration architecture and runtime plumbing with 120-point scoring. Use this skill to set up Named Credentials, External Credentials, External Services, REST/SOAP callout patterns, Platform Events, and Change Data Capture. TRIGGER when: user sets up Named Credentials, External Services, REST/SOAP callouts, Platform Events, CDC, or touches .namedCredential-meta.xml files. DO NOT TRIGGER when: Connected App/OAuth config (use configuring-connected-apps), Apex-only logic (use generating-apex), or data import/export (use handling-sf-data).
venue-templates
IncludedAccess comprehensive LaTeX templates, formatting requirements, and submission guidelines for major scientific publication venues (Nature, Science, PLOS, IEEE, ACM), academic conferences (NeurIPS, ICML, CVPR, CHI), research posters, and grant proposals (NSF, NIH, DOE, DARPA). This skill should be used when preparing manuscripts for journal submission, conference papers, research posters, or grant proposals and need venue-specific formatting requirements and templates.
let-fate-decide
IncludedDraws the 12 Houses of the Zodiac Tarot spread to inject entropy into planning when prompts are vague, ambiguous, or casually delegated. Interprets the spread to guide next steps. Use when the user says 'let fate decide', 'YOLO', 'whatever', 'idk', or other nonchalant phrases, makes Yu-Gi-Oh references, or when you are about to arbitrarily pick between multiple reasonable approaches. Prefer over ask-questions-if-underspecified when the user's tone is casual or playful rather than precision-seeking.
net-ops
IncludedCross-platform network troubleshooting (Windows, macOS, Linux) via local or remote shell. Use for: DNS broken, can't resolve hostnames, nslookup/dig works but apps fail, NRPT, WFP, scutil, /etc/resolver, systemd-resolved, /etc/resolv.conf, NetworkManager, VPN DNS leak residue (ProtonVPN/Mullvad/WireGuard/AnyConnect), AV/firewall blocking DNS or DoH, Tailscale DNS interaction, intermittent connectivity, remote diagnostics over SSH.