FinalRecon is a free, open source data extraction & web scraping project written in Python and released under MIT. It has 3,042 GitHub stars, 520 forks and 10 open issues, and was last pushed 3 days ago. On this registry it ranks #61 of 149 tracked projects in Data Extraction & Web Scraping, with 5 head-to-head comparisons available. It gained 36 stars over the last 30 tracked days.

What is FinalRecon?

FinalRecon is an all-in-one automatic web reconnaissance tool written in Python that gives pentesters a fast overview of a web target while keeping its dependency footprint small and simple.

What it is

FinalRecon is an automatic web reconnaissance tool written in Python and released under the MIT licence. It lives in the offensive security and pentesting ecosystem, where it is distributed as a packaged tool by Kali Linux, BlackArch Linux and SecBSD, and where it has accumulated roughly 2,981 stars and 516 forks on GitHub. Its stated goal is to provide an overview of a target in a short amount of time while maintaining the accuracy of the results.

The concrete problem it solves is tool sprawl. Rather than executing several separate reconnaissance utilities one after another, a pentester runs FinalRecon once and receives comparable output from a single codebase with few dependencies. It bundles header analysis, Whois lookup, SSL certificate inspection, crawling, DNS enumeration, subdomain enumeration, directory enumeration, Wayback Machine harvesting and port scanning behind one interface, which means less time spent installing, chaining and reconciling the output of half a dozen unrelated programs.

Key capabilities

  • Header inspection that separates general headers from security headers, flags missing security headers, and breaks down cookie attributes including Secure, HttpOnly and SameSite.
  • Whois lookup with domain expiry countdown and DNSSEC status.
  • SSL certificate information, with the port configurable through ssl_cert.ssl_port in the JSON config.
  • Crawling of HTML, CSS, JavaScript, internal links, external links, images, robots and sitemaps, plus links extracted from inside JavaScript files and links pulled from the Wayback Machine for the last year.
  • DNS enumeration covering over 40 record types, grouped by category, with security records highlighted and DMARC records included.
  • Subdomain enumeration from 15 reliable data sources with real-time error reporting per source; optional API keys are read from environment variables such as FR_SHODAN_KEY, FR_VT_KEY and FR_CHAOS_KEY, or saved to $HOME/.config/finalrecon/keys.json using python3 finalrecon.py -k 'shodan@kl32lcdqwcdfv'. Unset keys cause the module to be skipped rather than fail.
  • Directory enumeration with Phantom URL probing to reduce false positives and smart real-time soft-404 filtering based on content length and redirect clustering, with support for file extensions.
  • Wayback Machine harvesting of 50,000 URLs, triaged into JavaScript files, API endpoints, juicy parameters and sensitive extensions.
  • Fast port scan across the top 1000 ports, plus export in txt format as configured under export.format.

Who uses it and how

  • Penetration testers running Linux distributions, which is the only supported environment; Windows and Termux are explicitly not supported.
  • Kali Linux users who install it from the distribution repository with sudo apt install finalrecon and then run it as part of a standard recon phase.
  • BlackArch Linux users installing with sudo pacman -S finalrecon, and SecBSD users installing with doas pkg_add finalrecon.
  • Testers on other Linux distributions who clone the repository and run python3 finalrecon.py directly.
  • Operators tuning behaviour through ~/.config/finalrecon/config.json, adjusting common.timeout, the common.dns_servers list, port_scan.threads and dir_enum.threads to suit their network conditions.

Getting started

On Kali Linux, install with sudo apt install finalrecon; on BlackArch use sudo pacman -S finalrecon, and on SecBSD use doas pkg_add finalrecon. Other Linux users clone the repository and run python3 finalrecon.py.

How it compares

The available facts do not name any paid products that FinalRecon replaces, nor do they name comparable tools. It therefore stands alone in this registry, with no documented peer set to contrast it against.

When to use it — and when not to

A self-hoster must operate a Linux environment and maintain a configuration directory containing keys.json and config.json, and should expect reduced subdomain results if the optional third-party API keys are not supplied. Anyone on Windows, macOS or Termux should not choose it, because those platforms are not supported and the tool is designed for Linux-based systems. The licence is clear and permissive, but the project is a command-line tool with no hosted option, so teams that need a managed service rather than a locally installed script will find no fit here.

project readme (upstream, from github) — read inline

Twitter - Telegram - thewhiteh4t's Blog

FinalRecon is an all in one automatic web reconnaissance tool written in python. Goal of FinalRecon is to provide an overview of the target in a short amount of time while maintaining the accuracy of results. Instead of executing several tools one after another it can provide similar results keeping dependencies small and simple.

Available In

kali linux finalrecon blackarch finalrecon secbsd finalrecon

Featured On

Python For OSINT

NullByte

Hakin9

Features

FinalRecon provides detailed information such as :

  • Header Information
    • General vs Security header categorization
    • Missing security headers flagged
    • Cookie attribute breakdown (Secure, HttpOnly, SameSite)
  • Whois
    • Domain expiry countdown
    • DNSSEC status
  • SSL Certificate Information
  • Crawler
    • html
      • CSS
      • Javascripts
      • Internal Links
      • External Links
      • Images
    • robots
    • sitemaps
    • Links inside Javascripts
    • Links from Wayback Machine from Last 1 Year
  • DNS Enumeration
    • Over 40 types of Records queried and grouped by category
    • Security records highlighted
    • DMARC Records
  • Subdomain Enumeration
    • 15 reliable data sources
    • Real-time error reporting per source
  • Directory Enumeration
    • Phantom URL probing to reduce false positives
    • Smart real-time soft-404 filtering based on content length and redirect clustering
    • Support for File Extensions
  • Wayback Machine
    • 50,000 URLs are fetched
    • URLs are triaged into :
      • JS files
      • API endpoints
      • juicy parameters
      • sensitive extensions
  • Port Scan
    • Fast
    • Top 1000 Ports
  • Export
    • Formats
      • txt

Configuration

API Keys

Some Modules Use API Keys to fetch data from different resources, these are optional, if you are not using an API key, they will be simply skipped.

Environment Variables

Keys are read from environment variables if they are set otherwise they are loaded from the config directory

FR_BEVIGIL_KEY, FR_HUNTER_KEY, FR_NETLAS_KEY,
FR_SHODAN_KEY, FR_VT_KEY, FR_ZOOMEYE_KEY,
FR_CHAOS_KEY, FR_GITHUB_KEY, FR_LEAKIX_KEY

# Example :

export FR_SHODAN_KEY="kl32lcdqwcdfv"
Saved Keys

You can use -k to add the keys which will be saved in config directory automatically

# Usage
python3 finalrecon.py -k '<API NAME>@<API KEY>'

Valid Keys : 'bevigil', 'chaos', 'github', 'hunter', 'leakix', 'netlas', 'shodan', 'virustotal', 'zoomeye'

# Example :
python3 finalrecon.py -k 'shodan@kl32lcdqwcdfv'

Path = $HOME/.config/finalrecon/keys.json

Source Module Link
VirusTotal Sub Domain Enum https://www.virustotal.com/gui/my-apikey
Shodan Sub Domain Enum https://developer.shodan.io/api/requirements
BeVigil Sub Domain Enum https://bevigil.com/osint-api
Chaos Sub Domain Enum https://cloud.projectdiscovery.io
LeakIX Sub Domain Enum https://leakix.net
GitHub Sub Domain Enum https://github.com/settings/tokens
Netlas Sub Domain Enum https://docs.netlas.io/getting_started/
ZoomEye Sub Domain Enum https://www.zoomeye.ai/
Hunter Sub Domain Enum https://hunter.how/search-api

JSON Config File

Default config file is available at ~/.config/finalrecon/config.json

{
  "common": {
    "timeout": 30,
    "dns_servers": "8.8.8.8, 8.8.4.4, 1.1.1.1, 1.0.0.1"
  },
  "ssl_cert": {
    "ssl_port": 443
  },
  "port_scan": {
    "threads": 50
  },
  "dir_enum": {
    "threads": 50,
    "redirect": false,
    "verify_ssl": false,
    "extension": ""
  },
  "export": {
    "format": "txt"
  }
}

Tested on

  • Kali Linux
  • BlackArch Linux

FinalRecon is a tool for Pentesters and it's designed for Linux based Operating Systems, other platforms like Windows and Termux are NOT supported.

Installation

Kali Linux

sudo apt install finalrecon

BlackArch Linux

sudo pacman -S finalrecon

SecBSD

doas pkg_add finalrecon

Other Linux

git clone https://github.com/thewhiteh4t/FinalRecon.git
cd FinalRecon
pip3 install -r requirements.txt

Docker

docker pull thewhiteh4t/finalrecon
docker run -it --entrypoint /bin/sh thewhiteh4t/finalrecon

Also docker user can use this alias to run the finalrecon as the normal CLI user.

alias finalrecon="docker run -it --rm --name finalrecon  --entrypoint 'python3' thewhiteh4t/finalrecon finalrecon.py"

And then use finalrecon to start your scan.

remark

If you have any api keys you can easily commit that image in your local machine.

This docker usage needs root to run docker command.

Usage

FinalRecon - All in One Web Recon | v1.1.6

options:
  -h, --help  show this help message and exit
  --url URL   Target URL
  --headers   Header Information
  --sslinfo   SSL Certificate Information
  --whois     Whois Lookup
  --crawl     Crawl Target
  --dns       DNS Enumeration
  --sub       Sub-Domain Enumeration
  --dir       Directory Search
  --wayback   Wayback URLs
  --ps        Fast Port Scan
  --full      Full Recon

Extra Options:
  -nb         Hide Banner
  -dt DT      Number of threads for directory enum [ Default : 30 ]
  -pt PT      Number of threads for port scan [ Default : 50 ]
  -T T        Request Timeout [ Default : 30.0 ]
  -w W        Path to Wordlist [ Default : wordlists/dirb_common.txt
              ]
  -r          Allow Redirect [ Default : False ]
  -s          Toggle SSL Verification [ Default : True ]
  -sp SP      Specify SSL Port [ Default : 443 ]
  -d D        Custom DNS Servers [ Default : 1.1.1.1 ]
  -e E        File Extensions [ Example : txt, xml, php ]
  -o O        Export Format [ Default : txt ]
  -cd CD      Change export directory [ Default :
              ~/.local/share/finalrecon ]
  -k K        Add API key [ Example : shodan@key ]
# Check headers

python3 finalrecon.py --headers --url https://example.com

# Check ssl Certificate

python3 finalrecon.py --sslinfo --url https://example.com

# Check whois Information

python3 finalrecon.py --whois --url https://example.com

# Crawl Target

python3 finalrecon.py --crawl --url https://example.com

# Directory Searching

python3 finalrecon.py --dir --url https://example.com -e txt,php -w /path/to/wordlist

# full scan

python3 finalrecon.py --full --url https://example.com

Demo

Odysee

Created by Lohitya Pushkar (thewhiteh4t)

Frequently asked questions

Is FinalRecon free to use?

FinalRecon is open source under the MIT licence. There is no licence fee and no seat count — you can self-host it or, where the project offers one, pay a vendor for a managed version instead.

What does FinalRecon do?

All In One Web Recon

What is FinalRecon written in?

FinalRecon is primarily written in Python. Its source is publicly available at https://github.com/thewhiteh4t/FinalRecon, and it has 3,042 GitHub stars.