A scripting language for network reconnaissance and OSINT. Write expressive scripts, compile them into standalone executables, and extend with community libraries.
Every builtin, every keyword — purpose-built for network reconnaissance and threat analysis. No boilerplate.
.frt script into a self-contained binary. Ship it — no runtime needed on the target machine.Security-focused keywords. Every construct maps to something you'd actually do in a recon workflow.
// Ask for target, run full recon capture("Target domain: ") -> target let dns = resolve(target) let cert = certinfo(target) let geo = geolocate(dns.ips[0]) compute("IP : " -> dns.ips[0]) compute("Country : " -> geo.country) compute("TLS : " -> str(cert.days_left) -> " days") each mx in dns.mx { compute("MX: " -> mx) }
# Run directly $ fortress run recon.frt # Compile to standalone exe $ fortress build scanner.exe recon.frt # Ship it — no install needed $ ./scanner.exe
let domains = [ "example.com", "api.example.com", "admin.example.com" ] let critDays = 14 each domain in domains { let cert = certinfo(domain) if cert.days_left < critDays { compute("[!] EXPIRING: " -> domain) } else { compute("[+] OK — " -> domain) } } report "certs" as "json" { checked_at: now(), total: len(domains) }
let risky = { "3306": "MySQL", "6379": "Redis", "27017": "MongoDB", "9200": "ES" } capture("Target: ") -> host let scan = portscan(host) each p in scan.ports { if p.state != "open" { continue } if haskey(risky, str(p.port)) { compute("[!] " -> p.port -> " exposed") } }
Fortress has a built-in package manager. Install libraries others have built, or publish your own — anyone can create and share a .frtpkg library.
.frtpkg file and install it with one command..frtpkg and share it with anyone.Zero dependencies. No Go required. Pick your platform and run.