Overview
This page documents every CLI flag available in IronBullet, including aliases, data types, default values, and validation rules.Argument Parser
IronBullet uses a custom argument parser implemented incli.rs:30-98. Arguments are parsed from left to right, supporting both long-form (--flag) and short-form (-f) syntax.
Flag Reference
—config
Alias:
-cRequired: YesDescription: Path to the configuration fileSupported Formats:.rfx- IronBullet native binary format.svb- SilverBullet XML format.opk- OpenBullet compressed format.loli- LoliCode script format.json- JSON format
.rfx files, IronBullet loads the native format directly. For all other extensions, the file is read as bytes and the format is auto-detected by the import system.Validation:- File must exist and be readable
- Must be a valid config in one of the supported formats
cli.rs:43-45, cli.rs:119-144Example:—wordlist
Alias:
-wRequired: YesDescription: Path to the wordlist/combo file containing data lines to processFormat: Plain text file with one entry per line. Format depends on config’s data pool settings:- Line mode: Each line is treated as a single value
- CSV mode: Lines are split by delimiter into multiple fields
- File must exist and be readable
- Empty files are allowed but will result in no processing
cli.rs:47-49, cli.rs:172-173Example:—threads
Alias: Error Example:
-tRequired: NoDefault: Uses pipeline.runner_settings.threads from config fileDescription: Number of concurrent worker threadsRange: Typically 1-500. Higher values require more system resources.Validation:- Must be a positive integer
- Value is parsed with
.parse::<u32>() - Invalid values (non-numeric, negative, too large) cause error
cli.rs:153-155Source: cli.rs:51-54Example:—proxies
Alias:
-pRequired: NoDefault: No proxies (direct connection)Description: Path to proxy list fileFormat: Plain text file, one proxy per line. Supports:http://host:porthttps://host:portsocks5://host:portsocks4://host:port- Optional authentication:
protocol://user:pass@host:port
pipeline.proxy_settings.ban_duration_secsValidation:- File must exist and be readable
- Invalid proxy formats are logged as warnings but don’t halt execution
cli.rs:56-58, cli.rs:196-203Example:—outfile
Alias:
-oRequired: NoDefault: results/ (specified in config)Description: Output directory for saving hits and resultsBehavior:- Sets
pipeline.output_settings.output_directoryto the specified path - Automatically enables
pipeline.output_settings.save_to_file = true
cli.rs:60-62, cli.rs:162-165Example:—skip
Alias: NoneRequired: NoDefault: Combined with —take:
0Description: Skip the first N lines from the wordlistUse Case: Resume interrupted runs by skipping already-processed linesBehavior:- Wordlist is loaded fully into memory
- First
skiplines are discarded via.skip(skip)iterator - Remaining lines are processed
- Must be a positive integer
- If skip >= total lines, no processing occurs (empty data pool)
pipeline.runner_settings.skip at cli.rs:156-158Source: cli.rs:64-67, cli.rs:176-190Example:—take
Alias: NoneRequired: NoDefault:
0 (process all lines)Description: Process only N lines from the wordlist (after skip)Use Case: Test configs on a subset of dataBehavior:- Value of
0means process all remaining lines (no limit) - Non-zero value limits processing via
.take(take)iterator - Applied after
--skip
- Must be a non-negative integer
- Value of
0is valid and means “take all”
pipeline.runner_settings.take at cli.rs:159-161Source: cli.rs:69-72, cli.rs:176-190Example:—debug
Alias: Example:
-dRequired: NoDefault: falseDescription: Enable debug mode for verbose outputBehavior:- Each block execution result is printed to stderr
- Proxy information is printed for each hit
- Useful for troubleshooting config issues
cli.rs:74-76, cli.rs:211, cli.rs:257-261Output Format:—help
Alias: Output:
-hRequired: NoDescription: Display help message and exitBehavior:- Prints usage information to stderr via
print_help()atcli.rs:100-116 - Exits with code
0immediately - No other processing occurs
cli.rs:77-80Example:Argument Parsing Rules
Order Independence
Flags can appear in any order:Value Requirements
Flags that require values must have a following argument:Boolean Flags
Boolean flags (--debug, --help) don’t take values:
Unknown Arguments
Any unrecognized flag causes an error:cli.rs:81-83
Data Types
String Arguments
Flags:--config, --wordlist, --proxies, --outfile
- Stored as
Option<String>during parsing - Required flags are unwrapped with
.ok_or("error")atcli.rs:89-90 - No additional validation during parsing (file existence checked later)
Integer Arguments
Flags:--threads, --skip, --take
- Parsed using
.parse::<u32>() - Errors return descriptive message:
format!("invalid {}: {}", flag, val) - Valid range:
0to4,294,967,295(u32 max)
cli.rs:54, cli.rs:67, cli.rs:72
Boolean Flags
Flags:--debug, --help
- Stored as
bool(notOption<bool>) - Default value is
false - Presence of flag sets to
true - No argument value consumed
cli.rs:38, cli.rs:75
CliArgs Structure
All parsed arguments are stored in theCliArgs struct:
cli.rs:19-28
Validation & Error Handling
Argument Parsing Errors
Parsing errors are returned asResult<CliArgs, String> with descriptive messages:
| Error Condition | Error Message | Exit Code |
|---|---|---|
| Missing required flag | "--config is required" | 1 |
| Missing required flag | "--wordlist is required" | 1 |
| Missing value | "--config requires a path" | 1 |
| Invalid number | "invalid thread count: {val}" | 1 |
| Unknown flag | "unknown argument: {arg}" | 1 |
cli.rs:45, cli.rs:49, cli.rs:54, cli.rs:82, main.rs:213-217
Runtime Errors
Runtime errors during config loading or execution:| Error Condition | Error Format | Exit Code |
|---|---|---|
| Config load failure | "failed to load {path}: {error}" | 1 |
| Config read failure | "failed to read {path}: {error}" | 1 |
| Wordlist load failure | "failed to load wordlist: {error}" | 1 |
| Proxy load failure | "failed to load proxies: {error}" | 1 |
cli.rs:122, cli.rs:129, cli.rs:173, cli.rs:198, main.rs:222-225
Import Warnings
When loading non-native config formats (.svb, .opk, .loli), the import system may emit warnings:
cli.rs:132-136
Security Issues
The config import system may detect security issues in imported configs:cli.rs:137-141
Platform Differences
Windows
- Executable:
ironbullet.exe - Console attachment: Automatic via
AttachConsole(ATTACH_PARENT_PROCESS) - Required for CLI output when compiled with
windows_subsystem = "windows"
main.rs:188-195
Linux/macOS
- Executable:
ironbullet - No special console handling required
- Direct stdout/stderr output
main.rs:197-198
See Also
- CLI Commands Reference - Usage examples and workflows
- Pipeline API - Pipeline structure and configuration
- Config Format - .rfx file format specification
- Importing Configs - Supported config formats