HTTP Trust Boundary Analyzer — replay requests, mutate headers safely, and quantify response influence (authorized testing only).
mrma helps answer: “Does this target trust proxy/host headers or behave differently based on request metadata?”
It focuses on meaningful diffs (not just status/length), plus profiles that model common trust-boundary behaviors.
pipx install .
mrma --versionpython3 -m venv .venv
source .venv/bin/activate
pip install -e .
mrma --versionNote:If your system CA store is broken or you’re testing lab/self-signed certs, use --insecure.
mrma run --url https://example.com --follow-redirectsmrma impact --url https://example.com --follow-redirects --top-deltas 10mrma diff --url https://example.com --follow-redirects --set-header "X-Test: 1"mrma discover --url https://example.com --follow-redirects --print-minimal-requestmrma isolate-remove --url https://example.com --follow-redirects \
--pack-file remove_headers.txt --preset dynamic --delay 0.2Most tooling stops at: status code, length, or manual diffing.
mrma adds:
- Preset-aware normalization (
default,dynamic,nextjs,api-json) - Noise controls:
--ignore-header,--ignore-body-regex - Stability measurement:
run --repeat(great for dynamic targets) - Trust-boundary profiles:
profile proxy-trust(forwarded/proxy headers)profile host-routing(host-related routing headers)
- One-command reporting:
mrma report→mrma_report.json+mrma_report.mdOperational polish:- rate limiting + retries (
--rps,--retries)
List packs:
mrma pack listProxy trust pack (extended):
mrma impact --url https://example.com --follow-redirects \
--pack proxy --depth extended --ip-set extended --top-deltas 15 --delay 0.2Replay a raw HTTP request file:
mrma run -r req.txt -u https://example.com --follow-redirectsDiscover minimal request from a raw request:
mrma discover -r req.txt -u https://example.com --follow-redirects --print-minimal-requestIgnore volatile headers:
mrma diff --url https://example.com --follow-redirects --set-header "X-Test: 1" \
--ignore-header set-cookie --ignore-header date --ignore-header etagIgnore noisy dynamic content using regex:
mrma diff --url https://example.com --follow-redirects --set-header "X-Test: 1" \
--ignore-body-regex '"nonce"\s*:\s*"[A-Za-z0-9\-_]+"' \
--ignore-body-regex '"requestId"\s*:\s*"[A-Za-z0-9\-_]+"'Generate a compact report:
mrma report --url https://example.com --follow-redirects --top-deltas 10
ls -la mrma_report.*Terminal-friendly Markdown viewing (optional):
sudo apt update && sudo apt install -y glow
glow -p mrma_report.mdMost commands support --json:
mrma impact --url https://example.com --pack proxy --top-deltas 5 --jsonGlobal config:
~/.config/mrma/config.toml
Local (per-project):
./mrma.toml
Show merged config:
mrma config --jsonExample:
[defaults]
preset = "dynamic"
timeout = 15.0
min_similarity = 0.97
max_len_delta_ratio = 0.05
[impact]
delay = 0.2
ip_set = "basic"
ignore_headers = ["set-cookie", "date", "etag"]Tip: disable config for a single run:
mrma impact --url https://example.com --no-config- Use only on targets you are authorized to test.
- These mutations are designed to be low-risk by default, but responsibility is yours.
- author: 0xMRMA
- site: https://0xmrma.com