PAGES
← all tools
◆ Reverse Engineering

refinery

0.11.3 open-source

High Octane Triage Analysis

Summary

refinery is an open-source collection of Python command-line units, distributed as a pip package, that transform binary data through operations like decompression, decryption, and carving, chained together with the pipe operator into pipelines. It is run from the terminal, one unit per job, and is aimed at malware analysts doing triage work rather than automated pipeline integration. Its README describes it as an attempt to build something like CyberChef for the command line, giving reverse engineers a scriptable equivalent to that browser tool's recipe-based transforms. Typical pipelines decode base64 or XOR-obfuscated payloads, carve embedded PE files, list PE sections with hashes, or extract IOCsIOCsAn indicator of compromise, an observable clue that may point to malicious activity, such as a suspicious file hash or domain. It is evidence to investigate, rather than proof by itself. recursively from a directory of samples. First committed in 2019 and still under heavy development, with 24 contributors and over two thousand commits in the past year.

High Octane Triage Analysis

How refinery helps

What is actually hiding inside this blob of base64 or XOR-obfuscated data?

pipes the sample through decoding and decompression units chained with the pipe operator, peeling one encoding layer per unit until the plaintext or embedded file falls out

Is there a Windows executable buried inside this sample?

carves the payload out by scanning for PE headers and structure, pulling the embedded binary out of the surrounding bytes without needing to know its offset in advance

What sections does this PE file have, and have I seen them before?

lists every section with its computed hash, so sections can be diffed or matched against known-good or known-bad samples

What indicators of compromise are scattered across this pile of samples?

recurses through a directory, running the same extraction pipeline against every file and collecting the indicators it finds along the way

What key or byte was used to obfuscate this payload?

brute-forces single-byte XOR (or tries a supplied key against AES-CBC with a PBKDF2-derived key) and reports which one produces recognizable output, such as a carved PE

Can I reconstruct the exact sequence of transforms that unpacked this sample?

expresses the whole decode as one chained command of single-purpose units, so the pipeline itself becomes the documented, rerunnable record of how the payload was unpacked

all 41 features, with the evidence for each →

Languages

Not documented

Features

41 capabilities · 4 backed by code, an API document or a real run

Built from refinery's releases, docs, README and our own runs. “Seen” marks the month we first spotted a release the vendor didn't date. Group names and tags are our labels.

Compare with peers →

What refinery offers you

  • Command-line interface4
  • Scripting language support2
  • CSV data export1
  • JavaScript scripting support1
  • JSON data export1
All capabilities 41 capabilities
Cryptographic transformations shipped Provides units for various cryptographic operations including XOR, RSA, RNCryptor, HMAC, and multiple cipher algorithms (HC128, RABBIT, Salsa, ChaCha). 23 releases · 3 other sources · first seen Jan 2020

release 23 total

  • Adds the speck cipher unit 0.8.2 · Jan 2025 · source · release history
  • The units xsalsa, xchacha, and chacha20poly1305 were added. The latter only performs the decryption part of the scheme. 0.7.6 · Oct 2024 · source · release history
  • autoxor key scaling method adjusted for larger keys to reduce false positives in scanning results. 0.7.4 · Oct 2024 · source · release history
  • Improves the capabilities of the vbastr unit. 0.6.24 · Nov 2023 · source · release history
  • salsa and chacha units accept a 64-byte key for full initial state matrix initialization 0.6.14 · Oct 2023 · source · release history
  • All stream cipher units now support the --discard option to drop initial keystream bytes. 0.6.8 · May 2023 · source · release history

example

  • Scan an encrypted file using the new speck cipher unit. refinery -u speck cipher.bin 0.8.2 · Jan 2025 · source
  • Scan for NetBIOS names embedded in binary data. refinery --unit netbios <input_file> 0.2.1 · Jun 2020 · source
  • Instantiate an XOR unit using a raw byte string key directly in code xor(B's3cr3t') 0.1.0 · Jan 2020 · source
Binary and archive carving shipped Extracts specific file formats such as ZIP, XML, JSON, and PE sections directly from raw binary buffers or streams. 19 releases · 3 other sources · first seen Feb 2020

release 19 total

  • Adds strarray pattern support in the carve unit for matching arrays of strings 0.9.5 · Oct 2025 · source · release history
  • Adds --stripspace argument support to csb and csd shortcuts for carve. 0.8.14 · Apr 2025 · source · release history
  • Adds the rtfc unit for file carving operations. 0.8.14 · Apr 2025 · source · release history
  • Adds the xtpdf unit for extracting embedded objects from PDF documents. 0.4.7 · Nov 2021 · source · release history
  • Adds an option to xtpyi to unpack but not decompile PYZ contents. 0.4.5 · Oct 2021 · source · release history
  • Adds the xtvba unit to extract Office document macros. 0.4.4 · Aug 2021 · source · release history

example

  • Strip whitespace from the output of a carve operation using the new argument. refinery csb <input> --stripspace 0.8.14 · Apr 2025 · source
  • Process XML data using the new xtxml unit data | xtxml | str 0.3.30 · Jun 2021 · source
  • Extract JSON keys using the new xtjson unit data | xtjson | str 0.3.30 · Jun 2021 · source
Archive and container extraction expansion shipped Adds support for extracting content from additional formats including 7Z, ACE, ISO, CPIO, PyInstaller archives, EVTX logs, and MessagePack. 17 releases · 4 other sources · first seen May 2021

release 17 total

  • The xt7z unit now reports the archive checksum as checksum rather than crc32 — pipelines referencing crc32 from xt7z will break. 0.11.3 · Oct 2026 · source · release history
  • Adds the xtvhd unit to extract files from VHD/VHDX images, available via xt 0.11.2 · Jul 2026 · source · release history
  • Adds the xtrar unit for extracting RAR archives. 0.10.2 · Mar 2026 · source · release history
  • Adds the xtdmg unit for extracting DMG volumes. 0.10.2 · Mar 2026 · source · release history
  • Adds the carve-tar unit for carving TAR files 0.10.0 · Feb 2026 · source · release history
  • Allows xtzip unit to extract archives partially and supports --lenient option. 0.9.0 · Sep 2025 · source · release history

example

  • Unpack a WIM archive and list its contained files for triage. emit payload.wim | xtwim 0.11.3 · Oct 2026 · source
  • Decompress PKWare archives using the new pkw unit. refinery pkw <path_to_pkw_archive> 0.8.21 · Jun 2025 · source
  • Extract archives created by Smart Install Maker using the new unit. refinery xtsim archive.ism 0.8.5 · Feb 2025 · source
  • Get flattened tabular output from ppjson ppjson --tabular input.json 0.3.30 · Jun 2021 · source
Multi-seed fuzzing sweep verified Fuzzes a range of seeds in parallel and reports any divergences found across runs. 15 releases · 3 other sources · first seen Dec 2019

release 15 total

  • Adds the vcall unit to emulate and call a single function inside an input executable 0.11.2 · Jul 2026 · source · release history
  • Switches the speakeasy emulator backend from a fork to speakeasy 2.0 0.11.0 · May 2026 · source · release history
  • Adds qr unit for decoding barcodes (especially QR codes). 0.9.0 · Sep 2025 · source · release history
  • Adds xtxs unit for extracting data from Microsoft Access databases 0.8.19 · Jun 2025 · source · release history
  • Changes standard path formatting in xtxml and xthtml units to simplify filtering elements by tag. 0.8.15 · Apr 2025 · source · release history
  • Adds switches to control fuzzy matching behavior in path extractor units 0.6.0 · Apr 2023 · source · release history

command line

  • sweep — fuzz a range of seeds and report divergences 0.11.2 · Jul 2026 · command-line history
  • --workers — parallel worker processes (default: min(8, CPU count)) 0.11.2 · Jul 2026 · command-line history

example

  • Decode QR codes from an image or video stream using the new qr unit. refinery --input code.png --unit qr --decode 0.9.0 · Sep 2025 · source
Meta variable handling shipped Supports preliminary manipulation of meta variables within pipeline frames. 14 releases · 1 other source · first seen Apr 2020

release 14 total

  • Every unit that reports a start meta variable now also reports the matching end offset. 0.11.3 · Oct 2026 · source · release history
  • The meta variable kind was renamed to type in xtw and xtpdf — pipelines referencing kind from those units will no longer find the value. 0.11.3 · Oct 2026 · source · release history
  • The xtpdf unit metadata paths now end in .json. 0.11.3 · Oct 2026 · source · release history
  • The meta variable offset was renamed to start in carve, rex, xtp, xtw, all carve* units, ngrams, perc, vsect, vsnip, and xtasar — pipelines referencing offset will no longer find the value. 0.11.3 · Oct 2026 · source · release history
  • Adds pefix unit for fixing PE binary issues 0.8.21 · Jun 2025 · source · release history
  • Allows the dedup unit to specify a meta variable for deduplication via a new optional argument 0.7.8 · Nov 2024 · source · release history

example

  • Switch legacy trivia unit references to the new name. refinery cm <input> 0.3.28 · Mar 2021 · source
Specialized binary and executable extraction shipped Adds support for extracting resources from various packed or obfuscated executables including AutoIt, Node.js (pkg/nexe), Nuitka, MSI installers with stream metadata, .NET bundles (xtnode/xtdnsfx), and SIMH tapes. 8 releases · 5 other sources · first seen Mar 2023

release 8 total

  • Adds the xtinno unit for extracting files from InnoSetup installers 0.8.2 · Jan 2025 · source · release history
  • binref command changes default search logic to conjunctive 0.8.0 · Dec 2024 · source · release history
  • Enables xtmsi unit to extract all MSI tables as CSV alongside the JSON blob 0.7.8 · Nov 2024 · source · release history
  • Adds the httprequest unit for parsing HTTP requests. 0.7.7 · Nov 2024 · source · release history
  • The pym unit was added which provides an interface to Python's marshal serialization. 0.7.6 · Oct 2024 · source · release history
  • Adds optional argument to reduce to consume only a limited number of chunks instead of processing all available data 0.6.28 · Feb 2024 · source · release history

example

  • Extract files from an InnoSetup installer using the new xtinno unit. refinery -u xtinno setup.exe 0.8.2 · Jan 2025 · source
  • Extract files from a Nuitka-compiled Python executable to inspect the bundled archive content. refinery xtnuitka compiled_app.exe 0.6.11 · Sep 2023 · source
  • Extract contents of an MSI installer and get its streams as JSON refinery -i app.msi xtmsi 0.6.4 · May 2023 · source
  • Extract files from a Node.js binary packed by pkg or nexe refinery xtnode payload.exe -o output_dir 0.6.3 · Apr 2023 · source
  • Specify the segment size for rc5 or rc6 when using CFB mode. refinery rc5 --segment-size 8 <input_file> 0.5.10 · Mar 2023 · source
PE and ELF section analysis shipped Extracts and parses sections from PE, ELF, and MachO executable formats. 10 releases · 2 other sources · first seen Aug 2020

release 10 total

  • Simplifies modular dependency system with new options: default, extended, and all 0.10.6 · Mar 2026 · source · release history
  • Adds dnopc unit for MSIL disassembly 0.8.19 · Jun 2025 · source · release history
  • Adds dnasm unit for MSIL disassembly 0.8.19 · Jun 2025 · source · release history
  • Adds vmemref and vstack units (experimental) 0.5.2 · Dec 2022 · source · release history
  • vaddr unit added to convert virtual addresses to file offsets 0.5.0 · Nov 2022 · source · release history
  • The pemeta unit now also displays the module name stored in the export directory. 0.4.49 · Nov 2022 · source · release history

example

  • Parse PE CDB debug info using the new pecdb unit. refinery pecdb <path_to_pe_file> 0.8.21 · Jun 2025 · source
  • View PE header data in a tabular format for quick review. refinery pemeta --view table input.exe 0.3.28 · Mar 2021 · source
NET resource extraction shipped Extracts strings and resources from ConfuserEx obfuscated and managed .NET binaries. 7 releases · 4 other sources · first seen Feb 2020

release 7 total

  • The qr unit can no longer parse arbitrary bar codes but is restricted to QR codes. 0.10.2 · Mar 2026 · source · release history
  • Reworks dnfields unit to extract prettier paths based on method, type, and namespace 0.8.6 · Mar 2025 · source · release history
  • Adds a reverse operation to the csv unit to convert simple JSON documents back to CSV format 0.6.4 · May 2023 · source · release history
  • Adds the xlmdeobf unit, wrapping XLMMacroDeobfuscator to extract and deobfuscate Excel V4 macros 0.4.21 · Feb 2022 · source · release history
  • xtpyi unit extracts Python disassembly when decompilation fails. 0.4.13 · Dec 2021 · source · release history
  • dnmr unit was added for unpacking managed .NET resources 0.2.1 · Jun 2020 · source · release history

example

  • Process hard-coded arrays from a .NET binary with the new dnarrays unit. refinery -u dnarrays assembly.dll 0.8.2 · Jan 2025 · source
  • Convert a simple JSON array of objects into CSV format using the reverse csv operation echo '[{"a":1}]' | refinery -i - csv --reverse 0.6.4 · May 2023 · source
  • Run the new deobfuscation pipeline on a suspicious script file. refinery deob-vba -i malware_sample.vbs 0.4.27 · Mar 2022 · source
  • Extract and deobfuscate Excel V4 macros to analyze potential malicious payloads in a suspicious spreadsheet. refinery xlmdeobf <input_file.xlsx> 0.4.21 · Feb 2022 · source
Structural data manipulation and routing shipped Provides units for conditional processing, queuing chunks in frames, looping multibin suffixes, picking specific frame chunks, and utilizing regular expression handlers or switches for control flow. 11 releases · first seen Feb 2024

release 11 total

  • Adds --try as a new global option to forward input when a unit fails to process it 0.10.0 · Feb 2026 · source · release history
  • Adds b2f unit as a shortcut for pick ::-1 0.8.19 · Jun 2025 · source · release history
  • Adds a named date regular expression pattern available inside xtp expressions. 0.8.14 · Apr 2025 · source · release history
  • The ps1str unit has been renamed to escps 0.8.6 · Mar 2025 · source · release history
  • Adds escvb unit to escape and unescape Visual Basic strings 0.8.6 · Mar 2025 · source · release history
  • Adds input forward format character to rex for improved common use case support 0.8.6 · Mar 2025 · source · release history
Enhanced data parsing and conversion shipped Adds support for reading interlaced integers, extracting unparsed remainder data from structures, performing case-insensitive trimming, and converting JSON arrays to CSV formats. 7 releases · 3 other sources · first seen May 2023

Also counts toward: CSV data export

release 7 total

example

  • Deduplicate extracted fields based on a specific meta variable rather than the entire record. refinery --unit dedup --args "--meta_field id" --input logs.txt 0.7.8 · Nov 2024 · source
  • Extract remaining unparsed data after structure matching using the new --more flag. refinery in -u struct:header --more payload.bin 0.6.15 · Oct 2023 · source
  • Convert a simple JSON array of objects into CSV format using the reverse csv operation echo '[{"a":1}]' | refinery -i - csv --reverse 0.6.4 · May 2023 · source
Encoding and hashing utilities shipped Provides units for base85, base32, and various hashing algorithms including SHA256, MD5, MD2, and MD4. 9 releases · 1 other source · first seen Mar 2020

release 9 total

example

  • Calculate RIPEMD-256 hash of a file's contents using the new ripemd160 unit. cat data.bin | ripemd160 0.4.22 · Feb 2022 · source
Structured data parsing shipped Parses structured binary or text formats using the `struct` unit with meta variable support. 8 releases · 1 other source · first seen Mar 2021

release 8 total

  • In struct, the format modifier !0 now reads a bit field and : was added as a prefix option for peeking — existing struct format strings using !0 for other purposes will behave differently. 0.11.3 · Oct 2026 · source · release history
  • The pd and pb path handlers lost their separator argument and now always split on both slash and backslash — any invocation passing a separator argument will break. 0.11.3 · Oct 2026 · source · release history
  • In struct, the format modifier !0 now reads a bit field and : was added as a prefix option for peeking a value. 0.11.3 · Oct 2026 · source · release history
  • Adds the --more option to the struct unit for unparsed rest data 0.6.15 · Oct 2023 · source · release history
  • struct unit gains new syntax for byte alignment handling 0.4.22 · Feb 2022 · source · release history
  • resub now strips whitespace from input by default 0.4.20 · Feb 2022 · source · release history

example

  • Extract remaining unparsed data after structure matching using the new --more flag. refinery in -u struct:header --more payload.bin 0.6.15 · Oct 2023 · source
Advanced cryptographic key management and modes shipped Supports advanced configuration for block ciphers (e.g., xxtea, rc5/rc6 segment sizes), stream cipher keystream discard, big-endian support, and full state matrix initialization for ChaCha/Salsa. 5 releases · 4 other sources · first seen Mar 2023

Also counts toward: Command-line interface

release

  • The units xsalsa, xchacha, and chacha20poly1305 were added. The latter only performs the decryption part of the scheme. 0.7.6 · Oct 2024 · source · release history
  • salsa and chacha units accept a 64-byte key for full initial state matrix initialization 0.6.14 · Oct 2023 · source · release history
  • All stream cipher units now support the --discard option to drop initial keystream bytes. 0.6.8 · May 2023 · source · release history
  • Adds --block-size argument to xxtea unit to enable block cipher mode 0.5.10 · Mar 2023 · source · release history
  • Adds --swap flag to tea and xtea units to switch endianness 0.5.10 · Mar 2023 · source · release history

example

  • Configure xxtea to operate as a block cipher with a specific size (e.g., 128 bits). refinery xxtea --block-size 128 <input_file> 0.5.10 · Mar 2023 · source
  • Specify the segment size for rc5 or rc6 when using CFB mode. refinery rc5 --segment-size 8 <input_file> 0.5.10 · Mar 2023 · source
  • Process tea data with big endian byte order instead of the default little endian. refinery tea --swap <input_file> 0.5.10 · Mar 2023 · source
  • Decrypt AES-CBC with PBKDF2-derived key emit data | aes --mode cbc --iv cut::16 pbkdf2[32,s4lty]:swordfish
Windows registry data extraction shipped Reads Windows registry hives from file paths. 6 releases · 3 other sources · first seen Dec 2019

release

  • ngrams and bruteforce units added for simple brute forcing tasks 0.6.14 · Oct 2023 · source · release history
  • Adds --swap flag to tea and xtea units to switch endianness 0.5.10 · Mar 2023 · source · release history
  • Adds support for extracting data from Windows registry editor exports (.reg files) through the winreg unit 0.4.14 · Dec 2021 · source · release history
  • Adds dexstr unit for string decoding operations. 0.4.13 · Dec 2021 · source · release history
  • Adds brieflz support to the universal decompress unit 0.3.24 · Feb 2021 · source · release history
  • Adds the winreg unit to read Windows registry hives, adding a dependency on python-registry. 0.0.5 · Dec 2019 · source · release history

example

  • Process tea data with big endian byte order instead of the default little endian. refinery tea --swap <input_file> 0.5.10 · Mar 2023 · source
  • Analyze Windows Event Log files using the new evtx unit. refinery run 'evtx' < event.evtx 0.4.6 · Oct 2021 · source
  • Read Windows registry hives from a file path. refinery winreg -i system.hiv 0.0.5 · Dec 2019 · source
Compression and encoding enhancements shipped Adds LZW decompression support and improves base85 resilience against whitespace in decoded streams. 7 releases · 1 other source · first seen Oct 2023

release 7 total

example

  • Base64 decode, zlib decompress, hex decode emit M7EwMzVzBkI3IwNTczM3cyMg2wQA | b64 | zl | hex
Script deobfuscation and analysis shipped Provides parsers, emulators, and specific extraction units for PowerShell, VBA, JavaScript, Batch files, and NSIS scripts. 5 releases · 2 other sources · first seen Apr 2026

Also counts toward: JavaScript scripting support, Scripting language support

release

  • Script deobfuscator commands were renamed: js is now djs, ps1 is now dps1, vba is now dvba, and php is now dphp — any pipeline or script using the old names will break. 0.11.3 · Oct 2026 · source · release history
  • Renames script deobfuscator commands (js becomes djs, ps1 becomes dps1, vba becomes dvba, php becomes dphp) to remove shadowing of real script interpreters, and improves deobfuscation quality and speed in both djs and dps1. 0.11.3 · Oct 2026 · source · release history
  • Adds new capabilities to the script deobfuscation engine 0.11.0 · May 2026 · source · release history
  • The old deobfuscation units (deob-ps1-*, deob-vba-*, deob-js-*) have been replaced by new units (ps1, vba, js, defu) 0.10.11 · Apr 2026 · source · release history
  • Rewrites deobfuscation system with full parsers and emulators: new ps1, vba, js, and universal defu units replace old deob-ps1-*, deob-vba-*, deob-js-* 0.10.11 · Apr 2026 · source · release history

example

  • Deobfuscate a suspicious AutoIt3 script dropped by malware. emit suspicious.au3 | dau3 0.11.3 · Oct 2026 · source
  • Extract and decode largest base64 blob emit file.exe | carve -ds b64
Conditional processing units shipped Provides conditional routing and filtering of data streams using `iff`, `iffs`, `iffx`, and `iifp` units. 6 releases · first seen Jul 2021

release

  • Adds iffc unit for filtering chunks by size constraints 0.8.19 · Jun 2025 · source · release history
  • Adds --iff option to units for format-specific application 0.7.1 · Sep 2024 · source · release history
  • Adds an option to the iff unit to check for the existence of a certain meta variable. 0.4.24 · Mar 2022 · source · release history
  • New comparison operator switches added to the iff unit 0.4.22 · Feb 2022 · source · release history
  • Renames existing conditional units to iff, iffs, iffx, and iifp. 0.3.34 · Jul 2021 · source · release history
  • Existing conditional unit names have been renamed: use iff, iffs, iffx, or iifp instead of the previous names. 0.3.34 · Jul 2021 · source · release history
External tool integration shipped Wraps external command-line tools within the pipeline using a dedicated unit. 5 releases · 1 other source · first seen Mar 2020

release

  • Enables reduce unit to work with multibin suffix 0.7.1 · Sep 2024 · source · release history
  • Allows piping a Chunk object directly to a pipeline 0.7.1 · Sep 2024 · source · release history
  • Adds the ability to instantiate units via string arguments imported from refinery.shell 0.6.15 · Oct 2023 · source · release history
  • Adds the ppjscript unit (wrapper around jsbeautifier) to process JavaScript files. 0.3.17 · Dec 2020 · source · release history
  • Adds the couple unit to wrap any stdin/stdout command line tool as a refinery unit 0.1.5 · Mar 2020 · source · release history

example

  • Wrap an external tool like file into a refinery pipeline using the new couple unit. refinery -u couple,file input.txt 0.1.5 · Mar 2020 · source
Length-prefixed data parsing shipped Parses data structures where the length of the content is specified at the beginning. 6 releases · first seen Sep 2020

release

Source code highlighting shipped Provides syntax highlighting for source code on the terminal with various style flavors. 5 releases · first seen Nov 2025

release

  • Adds -x switch support for exclusion patterns in all path extraction units 0.11.2 · Jul 2026 · source · release history
  • Adds new capabilities to the script deobfuscation engine 0.11.0 · May 2026 · source · release history
  • The old deobfuscation units (deob-ps1-*, deob-vba-*, deob-js-*) have been replaced by new units (ps1, vba, js, defu) 0.10.11 · Apr 2026 · source · release history
  • Rewrites deobfuscation system with full parsers and emulators: new ps1, vba, js, and universal defu units replace old deob-ps1-*, deob-vba-*, deob-js-* 0.10.11 · Apr 2026 · source · release history
  • Adds the hl unit for highlighting source code on the terminal 0.9.9 · Nov 2025 · source · release history
XML pretty-printing shipped Pretty-prints XML data. 3 releases · 2 other sources · first seen Dec 2019

release

  • Adds --block-size argument to xxtea unit to enable block cipher mode 0.5.10 · Mar 2023 · source · release history
  • Adds the --tabular option to ppjson to produce a flattened output 0.3.30 · Jun 2021 · source · release history
  • Adds the ppxml unit to pretty-print XML data. 0.0.5 · Dec 2019 · source · release history

example

  • Configure xxtea to operate as a block cipher with a specific size (e.g., 128 bits). refinery xxtea --block-size 128 <input_file> 0.5.10 · Mar 2023 · source
  • Get flattened tabular output from ppjson ppjson --tabular input.json 0.3.30 · Jun 2021 · source
Execution timeout and parallelism controls verified Lets users set a per-program node timeout and the number of parallel worker processes to control throughput and resource use. 1 release · 3 other sources · first seen Oct 2023

release

command line

  • --timeout — per-program node timeout in seconds (default 5.0) 0.11.2 · Jul 2026 · command-line history
  • --workers — parallel worker processes (default: min(8, CPU count)) 0.11.2 · Jul 2026 · command-line history

example

  • Quickly list all available binary refinery units for documentation or discovery. binref --brief 0.10.3 · Mar 2026 · source
Seed-based program generation verified Generates a deterministic program from an integer seed, allowing users to inspect or reproduce the program under test. 1 release · 3 other sources · first seen Jan 2021

release

  • Adds the global --lenient option to admit partial results as output. 0.3.23 · Jan 2021 · source · release history

command line

example

  • Process binary streams while allowing partial output if an error occurs. refinery --lenient -h accu,input.bin 0.3.23 · Jan 2021 · source
Shellcode execution environment shipped Allows the initialization of virtual stack registers using shell environment variables and the direct execution of shellcode blobs within the pipeline. 3 releases · 1 other source · first seen Oct 2023

release

  • vstack unit now supports three emulator engines: unicorn, speakeasy, and icicle (with unicorn as default) 0.8.0 · Dec 2024 · source · release history
  • vstack unit can now execute shellcode blobs 0.6.14 · Oct 2023 · source · release history
  • vstack registers can be initialized using shell environment variables 0.6.14 · Oct 2023 · source · release history

example

  • Use speakeasy engine for vstack emulation instead of the default unicorn refinery vstack --engine speakeasy <input_file> 0.8.0 · Dec 2024 · source
Advanced executable and resource extraction shipped Adds support for extracting specific parts of AutoIt binaries, SetupFactory archives, and calling individual functions within executables. 3 releases · first seen Mar 2026

release

  • Adds the vcall unit to emulate and call a single function inside an input executable 0.11.2 · Jul 2026 · source · release history
  • Adds the xtsf unit for extracting SetupFactory binaries. 0.10.2 · Mar 2026 · source · release history
  • Adds the a3xs unit for extracting only the script part of an AutoIt3 binary. 0.10.2 · Mar 2026 · source · release history
PE file cleaning and analysis shipped Provides capabilities to remove unwanted overlays from PE files for static analysis and extract detailed metadata, including resource languages. 2 releases · 1 other source · first seen Sep 2023

release

example

  • Clean a PE file by removing unwanted overlays, often used for static analysis or cleanup before further processing. refinery petrim target.exe 0.6.11 · Sep 2023 · source
Java class file disassembly shipped Disassembles Java class files for inspection. 3 releases · first seen Aug 2020

release

  • Extends dnfields unit to extract string fields assigned a unique value. 0.4.27 · Mar 2022 · source · release history
  • Redesigns asm unit using an Angr-based fallback for better disassembly 0.4.6 · Oct 2021 · source · release history
  • Adds jvdasm unit for disassembling Java class files. 0.3.2 · Aug 2020 · source · release history
URL guard support shipped Decodes or processes URLs guarded by third-party services such as ProofPoint and TrendMicro. 3 releases · first seen Jan 2020

release

  • Enables pcap-http unit to extract source URLs from downloaded data 0.4.6 · Oct 2021 · source · release history
  • Adds TrendMicro Clicktime URL guard support in the urlguards unit 0.1.2 · Feb 2020 · source · release history
  • The urlguards unit now supports ProofPoint V3 guarded URLs 0.1.0 · Jan 2020 · source · release history
PE file carving shipped Extracts carved PE files from raw binary input. 2 releases · 1 other source · first seen Dec 2019

Also counts toward: Command-line interface

release

  • Converts the carve-pe unit to a path extractor unit, adding new command-line options. 0.3.21 · Jan 2021 · source · release history
  • Adds the carve-pe unit to extract carved PE files from binary streams. 0.0.5 · Dec 2019 · source · release history

example

  • Extract carved PE files from raw binary input. refinery carve-pe < input.bin 0.0.5 · Dec 2019 · source
Email parsing capabilities shipped Extracts bodies, attachments, and headers from Outlook and MIME email formats. 3 releases · first seen Mar 2020

Also counts toward: JSON data export

release

  • message type attachments in Outlook email formats are now supported by xtmail 0.3.9 · Aug 2020 · source · release history
  • xtmail unit can extract headers in text and json format 0.2.1 · Jun 2020 · source · release history
  • Adds xtmail unit to extract email body and attachments (Outlook/MIME formats) 0.1.4 · Mar 2020 · source · release history
AutoIt3 script deobfuscation shipped Deobfuscates AutoIt3 scripts via the `dau3` unit, enabling analysis of AutoIt3 payloads dropped by malware. 1 release · 1 other source · first seen Oct 2026

Also counts toward: Scripting language support

release

  • Adds dau3 script deobfuscator for AutoIt3 scripts, xtwim unit for unpacking WIM archives, xtiex unit for unpacking IExpress setup files, dns unit for parsing DNS packets from PCAPs (used with the pcap and udp units), huffman unit as a low-level option to directly handle huffman-compressed data, batev… 0.11.3 · Oct 2026 · source · release history

example

  • Deobfuscate a suspicious AutoIt3 script dropped by malware. emit suspicious.au3 | dau3 0.11.3 · Oct 2026 · source
DNS packet parsing from PCAPs shipped Parses DNS packets from PCAP captures to extract queried hostnames, supporting triage of C2 or data-exfiltration domains. 1 release · 1 other source · first seen Oct 2026

release

  • Adds dau3 script deobfuscator for AutoIt3 scripts, xtwim unit for unpacking WIM archives, xtiex unit for unpacking IExpress setup files, dns unit for parsing DNS packets from PCAPs (used with the pcap and udp units), huffman unit as a low-level option to directly handle huffman-compressed data, batev… 0.11.3 · Oct 2026 · source · release history

example

  • Extract DNS hostnames queried in a PCAP to quickly triage C2 or data-exfil domains. emit capture.pcap | pcap | udp | dns 0.11.3 · Oct 2026 · source
Single-seed reproduction and inspection verified Runs one seed end-to-end so users can reproduce and inspect its behaviour in detail. 1 release · 1 other source · first seen Dec 2019

release

  • Adds the winreg unit to read Windows registry hives, adding a dependency on python-registry. 0.0.5 · Dec 2019 · source · release history

command line

Robust pipeline execution control shipped Adds support for forwarding input on unit failure and managing modular dependencies to ensure stable execution. 2 releases · first seen Feb 2026

Also counts toward: Command-line interface

release

  • Simplifies modular dependency system with new options: default, extended, and all 0.10.6 · Mar 2026 · source · release history
  • Adds --try as a new global option to forward input when a unit fails to process it 0.10.0 · Feb 2026 · source · release history
Configuration discovery and management shipped Provides commands to list available units for documentation and manages modular dependencies with simplified options. 1 release · 1 other source · first seen Mar 2026

Also counts toward: Command-line interface

release

  • --brief (-b) flag added to binref command to list all available units for quick reference. 0.10.3 · Mar 2026 · source · release history

example

  • Quickly list all available binary refinery units for documentation or discovery. binref --brief 0.10.3 · Mar 2026 · source
Password management for PDFs shipped Allows adding or removing passwords from PDF documents. 1 release · 1 other source · first seen Sep 2025

release

  • Adds pdfcrypt unit for removing & adding passwords from & to PDF documents. 0.9.0 · Sep 2025 · source · release history

example

  • Brute-force single-byte XOR, carve PE payload emit file.bin | rep 0x100 [| xor v:index | carve-pe -R | peek | dump {name} ]
Brute force and pattern generation shipped Introduces units for generating n-grams and performing simple brute-force tasks on data streams. 1 release · 1 other source · first seen Oct 2023

release

  • ngrams and bruteforce units added for simple brute forcing tasks 0.6.14 · Oct 2023 · source · release history

example

  • Extract indicators from all files recursively ef "**" [| xtp -n6 ipv4 socket url email | dedup ]]
Mach-O binary extraction shipped Enables the extraction of metadata from Mach-O executables (macOS binaries) to identify libraries or build details. 1 release · 1 other source · first seen Sep 2023

release

example

  • Extract metadata from a Mach-O executable (e.g., macOS binary) to identify libraries or build details. refinery machometa target.dylib 0.6.11 · Sep 2023 · source
Steganography support shipped Extracts hidden image data from files, formerly part of binpng. 1 release · 1 other source · first seen Sep 2020

release

  • binpng unit renamed to stego for more flexible image data extraction. 0.3.12 · Sep 2020 · source · release history

example

  • Use the new reduce handler to combine processed segments. refinery -h reduce,processed.bin 0.3.23 · Jan 2021 · source
WIM archive extraction shipped Unpacks WIM archives and lists their contained files via the `xtwim` unit. 1 other source · first seen Oct 2026

example

  • Unpack a WIM archive and list its contained files for triage. emit payload.wim | xtwim 0.11.3 · Oct 2026 · source
Barcode decoding shipped Decodes barcodes, including QR codes, from images or video streams. 1 release · first seen Sep 2025

release

  • Adds qr unit for decoding barcodes (especially QR codes). 0.9.0 · Sep 2025 · source · release history

Lines in monospace are the tool's own words: help text parsed from its source, or an endpoint from its API document. Under release, a line is our summary of a dated release. Under docs, it is quoted from the tool's own documentation or website. Each links back to the source it came from.

Score card

  1. Shipping velocity releases a month, last 12 months
  2. Documentation quality release-notes rubric, 0–100
  3. Breaking-change discipline how rarely a release breaks users, and notice given
  4. Maintenance risk quiet time against its own cadence, maintainers
  5. Innovation & surface new capabilities, API and MCP surface
  6. Community health
  7. Contributor trend distinct committers, this year against last
  8. Maintainer concentration bus factor now against a year ago
  9. Issue backlog trend issues closed per issue opened, 12 months
  10. Responsiveness median time to a maintainer’s first reply

Nine scores for refinery, each built from the releases, notes and API history this site tracks — and, on Researcher and Business, where it stands among every measured tool in its category and how that has moved.

Score cards are part of every paid plan.

See plans →

Each score is 0–100 on a published rubric, derived from data this site already shows. A dimension we cannot measure says so — it is never scored 0 and never enters a rank.

How this is scored
  • Shipping velocity — releases a month over the last 12 months, on a log scale where 16 a month scores 100. Needs 3 releases in the window.
  • Documentation quality — the release-notes rubric published on the analytics page, unchanged.
  • Breaking-change discipline — the share of releases carrying a breaking change (none scores 100, half or more scores 0). Only projects that label breaking changes are measured: a clean record cannot be told from an unlabelled one.
  • Maintenance risk — quiet time measured against the tool's own release cadence (quiet longer than 90 days and three typical gaps scores 0), plus the number of active maintainers and whether contributors are growing, where known. Higher is lower risk.
  • Innovation & surface — new capabilities in the feature ledger this year, API and MCP operations added, and the share of commits that are features: the mean of whichever we hold.
  • Community health (open-source tools only) — each is a direction, not a size: contributors this year against last, the bus factor now against a year ago, and issues closed per issue opened, where steady scores 50, doubled 100 and halved 0; plus the median time to a maintainer's first reply (an hour scores about 100, a month or more 0). A commercial card has no repository and carries none of the four.
  • Documented delivery (commercial tools) — when a vendor's documented new capabilities have slowed against its own baseline, that counts against the overall standing as heavily as two low dimensions. Steady delivery, or too little history to judge, leaves the standing alone; it is never a sixth score.
  • Open-source tools are scored on repository signals; commercial tools on their published changelog. Ranks compare tools within one category and one profile and need at least five measured peers; the overall standing needs three ranked dimensions. Best-in-breed or consolidator is a shape, not a quality, and is never scored.

Release-note detail over time

See how much detail refinery puts in its release notes, quarter by quarter, and compare it with tracked tools in the same category. This history uses up to ten retained, reviewed notes per tool; sparse or blank older quarters may reflect that limit.

Checking release-note history…

Explore the full chart →

Releases

Show

84 entries

  1. October 20261
  2. July 20261
  3. May 20261
  4. April 20261
  5. March 20263
  6. February 20261
  7. November 20252
  8. October 20251
  9. September 20251
  10. June 20252
  11. April 20252
  12. March 20251
  13. February 20252
  14. January 20251
  15. December 20241
  16. November 20242
  17. October 20242
  18. September 20242
  19. February 20241
  20. November 20232
  21. October 20233
  22. September 20231
  23. May 20232
  24. April 20232
  25. March 20231
  26. December 20221
  27. November 20222
  28. October 20221
  29. September 20221
  30. July 20221
  31. June 20221
  32. May 20221
  33. March 20222
  34. February 20223
  35. December 20212
  36. November 20211
  37. October 20212
  38. August 20212
  39. July 20212
  40. June 20211
  41. May 20211
  42. March 20211
  43. February 20211
  44. January 20212
  45. December 20201
  46. November 20201
  47. October 20202
  48. September 20201
  49. August 20203
  50. June 20201
  51. May 20201
  52. April 20202
  53. March 20202
  54. February 20201
  55. January 20201
  56. December 20191
    Show

    84 entries

    Project health

    Issue, contributor and maintainer activity in binref/refinery, 2023-10 – 2026-09, as of 2026-09-25. Twelve-month figures first; the trend lines run the whole window.

    1. Contributors 5 ±0 vs prior 12 months
    2. Maintainers 1 +0 joined · −0 left, last 12 months
    3. Bus factor 1 committers behind half the commits
    4. Community-filed 93% of issues opened, last 12 months
    5. Median time to close 3.9 days first maintainer reply 13 hours
    6. Open backlog 2 of 68 issues ever filed
    1. Issues opened / month 0 · 0 communitymaintainers
    2. Open backlog 2
    3. Contributors / month 1
    4. Commits / month 271
    5. Stars 872
    Issue themes, last 12 months
    • other 100%

    Counts from the project's public repository and git history; no individuals are identified. Maintainers are the committers covering 80% of the last year's commits. how we measure this

    Add the badge to your README

    Maintain this project? The badge links readers straight to this page, so they can follow every release here.

    Tracked by Cyber Toolchain Choose a badge style and copy the code →
    browse all tools → score card for your toolchain →