Intelligence Brief: At a Glance


    _         _                       _
   / \  _   _| |_ ___  _ __ ___   ___| | ___
  / _ \| | | | __/ _ \| '_ ` _ \ / _ \ |/ _ \
 / ___ \ |_| | || (_) | | | | | |  __/ |  __/
/_/   \_\__,_|\__\___/|_| |_| |_|\___|_|\___|
  / __|___  _ __   __ _ _ __ ___   ___ _ __
 | |  / _ \| '_ \ / _` | '_ ` _ \ / _ \ '__|
 | |__| (_) | | | | (_| | | | | | |  __/ |
  \____\___/|_| |_|\__,_|_| |_| |_|\___|_|

Core Function: AutoRecon is a multi-threaded network reconnaissance framework that automates the process of port scanning and service enumeration across multiple targets.

Primary Use-Cases:

Penetration Testing Phase: Reconnaissance & Enumeration

Brief History: AutoRecon was created by cybersecurity professional Tib3rius to streamline the often tedious and time-consuming reconnaissance phase of penetration testing. It was designed to automate best-practice enumeration techniques, wrapping popular tools like Nmap, Gobuster, and Enum4linux-ng into a cohesive, pattern-based scanning engine. Its development is geared towards efficiency, particularly in exam environments and CTFs where speed is critical.


Initial Engagement: Installation & Verification


Before deployment, an operative must confirm the tool is present and functional. The following commands ensure AutoRecon is installed via the Advanced Package Tool (APT) on Debian-based systems like Kali Linux and verify its operational parameters.

Objective: Check if AutoRecon is Installed

Bash

which autorecon
/usr/bin/autorecon

Objective: Install AutoRecon

Bash

sudo apt update && sudo apt install autorecon -y
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following NEW packages will be installed:
  autorecon
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 145 kB of archives.
After this operation, 1,234 kB of additional disk space will be used.
Get:1 http://kali.download/kali kali-rolling/main amd64 autorecon all 0.0~git20250405.ee0d0a3 [145 kB]
Fetched 145 kB in 1s (289 kB/s)
Selecting previously unselected package autorecon.
(Reading database ... 312543 files and directories currently installed.)
Preparing to unpack .../autorecon_0.0~git20250405.ee0d0a3_all.deb ...
Unpacking autorecon (0.0~git20250405.ee0d0a3) ...
Setting up autorecon (0.0~git20250405.ee0d0a3) ...
Processing triggers for man-db (2.11.2-2) ...

Objective: View the Help Menu

Bash

autorecon -h
usage: autorecon [-t TARGET_FILE] [-p PORTS] [-m MAX_SCANS]
                 [-mp MAX_PORT_SCANS] [-c CONFIG_FILE] [-g GLOBAL_FILE]
                 [--tags TAGS] [--exclude-tags TAGS] [--port-scans PLUGINS]
                 [--service-scans PLUGINS] [--reports PLUGINS]
                 [--plugins-dir PLUGINS_DIR] [--add-plugins-dir PLUGINS_DIR]
                 [-l [TYPE]] [-o OUTPUT] [--single-target] [--only-scans-dir]
                 [--no-port-dirs] [--heartbeat HEARTBEAT] [--timeout TIMEOUT]
                 [--target-timeout TARGET_TIMEOUT] [--nmap NMAP |
                 --nmap-append NMAP_APPEND] [--proxychains]
                 [--disable-sanity-checks] [--disable-keyboard-control]
                 [--ignore-plugin-checks]
                 [--force-services SERVICE [SERVICE ...]]
                 [-mpti PLUGIN:NUMBER [PLUGIN:NUMBER ...]]
                 [-mpgi PLUGIN:NUMBER [PLUGIN:NUMBER ...]] [--accessible] [-v]
                 [--version] [--curl.path VALUE]
                 [--dirbuster.tool {feroxbuster,gobuster,dirsearch,ffuf,dirb}]
                 [--dirbuster.wordlist VALUE [VALUE ...]]
                 [--dirbuster.threads VALUE] [--dirbuster.ext VALUE]
                 [--dirbuster.recursive] [--dirbuster.extras VALUE]
                 [--enum4linux.tool {enum4linux-ng,enum4linux}]
                 [--onesixtyone.community-strings VALUE]
                 [--subdomain-enum.domain VALUE]
                 [--subdomain-enum.wordlist VALUE [VALUE ...]]
                 [--subdomain-enum.threads VALUE]
                 [--vhost-enum.hostname VALUE]
                 [--vhost-enum.wordlist VALUE [VALUE ...]]
                 [--vhost-enum.threads VALUE] [--wpscan.api-token VALUE]
                 [--global.username-wordlist VALUE]
                 [--global.password-wordlist VALUE] [--global.domain VALUE]
                 [-h]
                 [targets ...]

Network reconnaissance tool to port scan and automatically enumerate services
found on multiple targets.

... (abbreviated for brevity) ...


Tactical Operations: Core Commands & Use-Cases


This section details the operational use of AutoRecon, from basic single-target scans to complex, multi-faceted reconnaissance campaigns. Each example is presented within an ethical framework, assuming all activities are conducted on networks where you have explicit, documented authorization.


Basic Targeting


Objective: Scan a Single Target IP Address

Bash

autorecon 10.10.11.150
[+] Starting AutoRecon scan...
[+] Creating output directory: results
[+] Creating directory for target: 10.10.11.150
[+] Added 1 target(s) to the queue.
[+] Starting scan against 1 target(s)...
[+] [10.10.11.150] [Status] Queued...
[+] [10.10.11.150] [PortScan] [nmap-quick] Starting scan...
[+] [10.10.11.150] [PortScan] [nmap-top-1000] Starting scan...
...

Objective: Scan a Single Target by Hostname

Bash

autorecon target-machine.local
[+] Starting AutoRecon scan...
[+] Creating output directory: results
[+] Creating directory for target: target-machine.local
[+] Added 1 target(s) to the queue.
[+] Starting scan against 1 target(s)...
[+] [target-machine.local] [Status] Queued...
...

Objective: Scan Multiple Targets Simultaneously

Bash

autorecon 10.10.11.150 10.10.11.151 10.10.11.152
[+] Starting AutoRecon scan...
[+] Creating output directory: results
[+] Creating directory for target: 10.10.11.150
[+] Creating directory for target: 10.10.11.151
[+] Creating directory for target: 10.10.11.152
[+] Added 3 target(s) to the queue.
[+] Starting scan against 3 target(s)...
[+] [10.10.11.150] [Status] Queued...
[+] [10.10.11.151] [Status] Queued...
[+] [10.10.11.152] [Status] Queued...
...

Objective: Scan a Subnet Using CIDR Notation

Bash

autorecon 192.168.1.0/24
[+] Starting AutoRecon scan...
[+] Creating output directory: results
[+] Added 254 target(s) to the queue.
[+] Starting scan against 254 target(s)...
...

Objective: Scan Targets from a File

Bash

autorecon -t targets.txt
[+] Starting AutoRecon scan...
[+] Reading targets from: targets.txt
[+] Creating output directory: results
[+] Added 15 target(s) to the queue.
[+] Starting scan against 15 target(s)...
...


Output Management


Objective: Specify a Custom Output Directory

Bash

autorecon 10.10.11.150 -o ENGAGEMENT_101
[+] Starting AutoRecon scan...
[+] Creating output directory: ENGAGEMENT_101
[+] Creating directory for target: 10.10.11.150
...

Objective: Scan a Single Target without a Nested Directory

Bash

autorecon 10.10.11.150 --single-target
[+] Starting AutoRecon scan...
[+] Creating output directory: results
[+] Single target mode enabled. Not creating target directory.
[+] Added 1 target(s) to the queue.
...

Objective: Suppress Port-Specific Directory Creation

Bash

autorecon 10.10.11.150 --no-port-dirs
[+] Starting AutoRecon scan...
[+] Not creating port-specific directories.
...
[+] [10.10.11.150] [ServiceScan] [tcp] [80] [http] [nmap-http-generic] Starting scan...
[+] [10.10.11.150] [ServiceScan] [tcp] [80] [http] [nmap-http-generic] Scan complete! Output saved to: results/10.10.11.150/scans/nmap-http-generic-tcp80.txt

Objective: Create Only the 'scans' Directory

Bash

autorecon 10.10.11.150 --only-scans-dir
[+] Starting AutoRecon scan...
[+] Creating output directory: results
[+] Creating directory for target: 10.10.11.150
[+] Creating scans directory: results/10.10.11.150/scans
[+] Only creating scans directory.
...


Performance and Scan Control


Objective: Increase Concurrent Scans for a Faster Assessment

Bash

autorecon 10.10.20.0/24 -m 100
[+] Starting AutoRecon scan...
[+] Max concurrent scans set to: 100
[+] Max concurrent port scans set to: 20 (20% of max-scans)
...

Objective: Control Port Scan and Service Scan Concurrency Independently

Bash

autorecon 10.10.20.0/24 -m 75 -mp 5
[+] Starting AutoRecon scan...
[+] Max concurrent scans set to: 75
[+] Max concurrent port scans set to: 5
...

Objective: Set a Total Scan Timeout

Bash

autorecon 10.10.20.0/24 --timeout 120
[+] Starting AutoRecon scan...
[+] Scan will automatically terminate in 120 minutes.
...

Objective: Set a Timeout for Each Individual Target

Bash

autorecon -t targets.txt --target-timeout 30
[+] Starting AutoRecon scan...
[+] Each target will be abandoned if scanning takes longer than 30 minutes.
...

Objective: Change Scan Status Update Frequency

Bash

autorecon 10.10.11.150 --heartbeat 15
[+] Starting AutoRecon scan...
[+] Scan status will be updated every 15 seconds.
...
(15 seconds later)
[+] [10.10.11.150] [Status] Port Scanning... (2/5 Complete)
...


Port and Service Specification


Objective: Scan Only for Specific TCP Ports

Bash

autorecon 10.10.11.150 -p T:21,22,80,443
[+] Starting AutoRecon scan...
[+] Custom ports specified: T:21,22,80,443
[+] [10.10.11.150] [PortScan] [custom-tcp-ports] Starting scan...
...

Objective: Scan Only for Specific UDP Ports

Bash

autorecon 10.10.11.150 -p U:53,161,123
[+] Starting AutoRecon scan...
[+] Custom ports specified: U:53,161,123
[+] [10.10.11.150] [PortScan] [custom-udp-ports] Starting scan...
...

Objective: Scan for a Mix of TCP and UDP Ports

Bash

autorecon 10.10.11.150 -p T:22,80,443,U:53,161,B:123
[+] Starting AutoRecon scan...
[+] Custom ports specified: T:22,80,443,U:53,161,B:123
[+] [10.10.11.150] [PortScan] [custom-tcp-ports] Starting scan...
[+] [10.10.11.150] [PortScan] [custom-udp-ports] Starting scan...
...

Objective: Manually Force Service Enumeration on a Port

Bash

autorecon 10.10.11.150 --force-services "tcp/8080/http"
[+] Starting AutoRecon scan...
[+] Forcing services: tcp/8080/http
...
[+] [10.10.11.150] [PortScan] [nmap-quick] Scan complete! Found 1 open port(s): 8080/tcp.
[+] [10.10.11.150] [ServiceScan] [tcp] [8080] [http] [nmap-http-generic] Starting scan (Forced)...
[+] [10.10.11.150] [ServiceScan] [tcp] [8080] [http] [curl-http-headers] Starting scan (Forced)...


Plugin and Profile Management


Objective: List All Available Plugins

Bash

autorecon -l
[+] Listing all available plugins...

PortScan Plugins:
- nmap-quick (Tags: default)
- nmap-full (Tags: default,full)
- nmap-udp (Tags: default)
- nmap-top-1000 (Tags: default)
...

ServiceScan Plugins:
- nmap-http-generic (Services: http, https; Tags: default)
- dirbuster (Services: http, https; Tags: default,web)
- enum4linux-ng (Services: smb; Tags: default,smb)
...

Report Plugins:
- Smeagol (Tags: default)
...

Objective: List Only ServiceScan Plugins

Bash

autorecon --list service
[+] Listing all available service plugins...

ServiceScan Plugins:
- nmap-http-generic (Services: http, https; Tags: default)
- dirbuster (Services: http, https; Tags: a,web)
- enum4linux-ng (Services: smb; Tags: default,smb)
- nmap-smb-generic (Services: smb; Tags: default,smb)
- nmap-ssh-generic (Services: ssh; Tags: default,ssh)
...

Objective: Run Only Plugins with a Specific Tag

Bash

autorecon 10.10.11.150 --tags web
[+] Starting AutoRecon scan...
[+] Including plugins with tags: web
...
[+] [10.10.11.150] [ServiceScan] [tcp] [80] [http] [dirbuster] Queued (Tags: default,web)
[+] [10.10.11.150] [ServiceScan] [tcp] [443] [https] [nikto] Queued (Tags: web)
[!] [10.10.11.150] [ServiceScan] [tcp] [22] [ssh] [nmap-ssh-generic] Skipping (Tags: default,ssh - does not match)

Objective: Exclude Plugins with a Specific Tag

Bash

autorecon 10.10.11.150 --exclude-tags noisy
[+] Starting AutoRecon scan...
[+] Excluding plugins with tags: noisy
...
[!] [10.10.11.150] [ServiceScan] [tcp] [80] [http] [nikto] Skipping (Tags: web,noisy - excluded)

Objective: Manually Specify Which Service Scans to Run

Bash

autorecon 10.10.11.150 --service-scans "nmap-http-generic,dirbuster"
[+] Starting AutoRecon scan...
[+] Overriding tags for service scans. Only running: nmap-http-generic, dirbuster
...
[+] [10.10.11.150] [ServiceScan] [tcp] [80] [http] [nmap-http-generic] Queued (Manual Override)
[+] [10.10.11.150] [ServiceScan] [tcp] [80] [http] [dirbuster] Queued (Manual Override)
[!] [10.10.11.150] [ServiceScan] [tcp] [22] [ssh] [nmap-ssh-generic] Skipping (Not in override list)


Nmap Customization


Objective: Append Custom Flags to Nmap Scans

Bash

autorecon 10.10.11.150 --nmap-append "-sV --version-intensity 9"
[+] Starting AutoRecon scan...
[+] Appending to nmap commands: -sV --version-intensity 9
[+] [10.10.11.150] [PortScan] [nmap-quick] Executing: nmap -vv --reason -Pn -T4 -sV --version-intensity 9 -p- --open -oN ...
...

Objective: Completely Override the Default Nmap Flags

Bash

autorecon 10.10.11.150 --nmap "-T2 -A -sC"
[+] Starting AutoRecon scan...
[+] Overriding nmap commands with: -T2 -A -sC
[+] [10.10.11.150] [PortScan] [nmap-quick] Executing: nmap -T2 -A -sC -p- --open -oN ...
...


Plugin-Specific Arguments


This is where AutoRecon's true power as a framework shines, allowing you to control the parameters of the tools it automates.

Objective: Specify a Different Tool for Directory Busting

Bash

autorecon 10.10.11.150 --dirbuster.tool gobuster
[+] Starting AutoRecon scan...
...
[+] [10.10.11.150] [ServiceScan] [tcp] [80] [http] [dirbuster] Starting scan...
[+] [10.10.11.150] [ServiceScan] [tcp] [80] [http] [dirbuster] Executing: gobuster dir -u http://10.10.11.150:80/ -w ...

Objective: Provide a Custom Wordlist for Directory Busting

Bash

autorecon 10.10.11.150 --dirbuster.wordlist /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt
[+] Starting AutoRecon scan...
...
[+] [10.10.11.150] [ServiceScan] [tcp] [80] [http] [dirbuster] Starting scan...
[+] [10.10.11.150] [ServiceScan] [tcp] [80] [http] [dirbuster] Executing: feroxbuster -u http://10.10.11.150:80/ -w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt ...

Objective: Specify File Extensions for Web Fuzzing

Bash

autorecon 10.10.11.150 --dirbuster.ext "php,bak,config,old"
[+] Starting AutoRecon scan...
...
[+] [10.10.11.150] [ServiceScan] [tcp] [80] [http] [dirbuster] Starting scan...
[+] [10.10.11.150] [ServiceScan] [tcp] [80] [http] [dirbuster] Executing: feroxbuster -u http://10.10.11.150:80/ -w ... -x php,bak,config,old ...

Objective: Enable Recursive Directory Busting

Bash

autorecon 10.10.11.150 --dirbuster.recursive
[+] Starting AutoRecon scan...
...
[+] [10.10.11.150] [ServiceScan] [tcp] [80] [http] [dirbuster] Starting scan...
[+] [10.10.11.150] [ServiceScan] [tcp] [80] [http] [dirbuster] Executing: feroxbuster -u http://10.10.11.150:80/ -w ... -d 1 ...

Objective: Pass Extra, Unspecified Arguments to the Directory Buster

Bash

autorecon 10.10.11.150 --dirbuster.extras='--filter-status 404,403'
[+] Starting AutoRecon scan...
...
[+] [10.10.11.150] [ServiceScan] [tcp] [80] [http] [dirbuster] Starting scan...
[+] [10.10.11.150] [ServiceScan] [tcp] [80] [http] [dirbuster] Executing: feroxbuster -u http://10.10.11.150:80/ -w ... --filter-status 404,403 ...

Objective: Enumerate Subdomains for a Given Domain

Bash

autorecon 10.10.11.150 --subdomain-enum.domain example.corp
[+] Starting AutoRecon scan...
...
[+] [10.10.11.150] [ServiceScan] [tcp] [80] [http] [subdomain-enum] Starting scan...
[+] [10.10.11.150] [ServiceScan] [tcp] [80] [http] [subdomain-enum] Executing: ffuf -w ... -u http://10.10.11.150 -H "Host: FUZZ.example.corp" ...

Objective: Provide a WPScan API Token for Deeper WordPress Scans

Bash

autorecon 10.10.11.150 --wpscan.api-token YOUR_API_TOKEN_HERE
[+] Starting AutoRecon scan...
...
[+] [10.10.11.150] [ServiceScan] [tcp] [80] [http] [wpscan] Starting scan...
[+] [10.10.11.150] [ServiceScan] [tcp] [80] [http] [wpscan] Executing: wpscan --url http://10.10.11.150:80/ --api-token YOUR_API_TOKEN_HERE ...

Objective: Use a Global Username and Password Wordlist for Brute-Forcing

Bash

autorecon 10.10.11.150 --global.username-wordlist custom_users.txt --global.password-wordlist custom_pass.txt
[+] Starting AutoRecon scan...
[+] Global username wordlist set to: custom_users.txt
[+] Global password wordlist set to: custom_pass.txt
...
[+] [10.10.11.150] [ServiceScan] [tcp] [22] [ssh] [hydra-ssh] Starting scan...
[+] [10.10.11.150] [ServiceScan] [tcp] [22] [ssh] [hydra-ssh] Executing: hydra -L custom_users.txt -P custom_pass.txt ...


Strategic Campaigns: Advanced Command Chains


AutoRecon's output is well-structured, making it ideal for integration with other command-line tools. This allows for powerful on-the-fly analysis and data extraction from completed scans. All commands assume you are in the top-level output directory (e.g., results/).

Objective: Extract All Discovered HTTP/HTTPS URLs from a Completed Scan

Bash

grep -r "Starting scan" . | grep "http" | awk -F' ' '{print $11}'
http://10.10.11.150:80/
https://10.10.11.150:443/
http://10.10.11.152:8080/
http://10.10.11.153:80/

Objective: Find All Hosts with SMB (Port 445) Open

Bash

find . -name "nmap-quick-tcp-*.txt" -exec grep -l "445/tcp" {} + | awk -F'/' '{print $2}'
10.10.11.150
10.10.11.155
10.10.11.162

Objective: Create a List of All Unique Open Ports Across All Scanned Hosts

Bash

cat */scans/nmap-quick-*.xml | grep 'portid=' | sed -e 's/.*portid="\([0-9]*\)".*/\1/' | sort -n | uniq
21
22
53
80
135
139
443
445
3306
8080


AI Augmentation: Integrating with Artificial Intelligence


Leveraging AI and data analysis techniques can transform AutoRecon's raw text output into actionable intelligence, revealing patterns and priorities that are not immediately obvious. The following examples use Python with the Pandas library to parse and analyze scan results.

Objective: Analyze and Visualize Port Distribution Across All Targets

Python

import os
import pandas as pd
import matplotlib.pyplot as plt
import re

def parse_summary(file_path):
    """Parses an AutoRecon _summary.txt file to extract open ports."""
    ports = []
    try:
        with open(file_path, 'r') as f:
            content = f.read()
            # Regex to find lines like '80/tcp' or '53/udp'
            found_ports = re.findall(r'(\d+/(?:tcp|udp))', content)
            ports.extend(found_ports)
    except FileNotFoundError:
        pass  # Ignore targets with no summary file
    return ports

def main():
    """Main function to find summaries, analyze, and plot data."""
    results_dir = 'results'
    all_ports = []

    # Walk through the results directory to find all summary files
    for root, dirs, files in os.walk(results_dir):
        for file in files:
            if file == '_summary.txt':
                summary_path = os.path.join(root, file)
                all_ports.extend(parse_summary(summary_path))

    if not all_ports:
        print("No open ports found in any summary files. Exiting.")
        return

    # Use Pandas to count port occurrences
    port_series = pd.Series(all_ports)
    port_counts = port_series.value_counts()

    print("--- Port Analysis Report ---")
    print("Top 10 Most Common Open Ports:")
    print(port_counts.head(10))

    # Plotting the data
    plt.figure(figsize=(12, 8))
    port_counts.head(15).sort_values().plot(kind='barh')
    plt.title('Top 15 Most Common Services Across Scope')
    plt.xlabel('Number of Hosts')
    plt.ylabel('Port/Protocol')
    plt.tight_layout()
    plt.savefig('port_distribution.png')
    print("\n[+] Analysis complete. Chart saved to port_distribution.png")

if __name__ == '__main__':
    main()
--- Port Analysis Report ---
Top 10 Most Common Open Ports:
445/tcp     25
80/tcp      22
139/tcp     21
3389/tcp    18
135/tcp     15
443/tcp     12
22/tcp      10
53/udp       8
21/tcp       5
8080/tcp     4
Name: count, dtype: int64

[+] Analysis complete. Chart saved to port_distribution.png

[VISUAL OUTPUT: A horizontal bar chart titled "Top 15 Most Common Services Across Scope". The Y-axis lists ports like '445/tcp', '80/tcp', and '3389/tcp'. The X-axis, labeled "Number of Hosts", shows corresponding bars indicating that port 445/tcp was found on 25 hosts, 80/tcp on 22, and so on.]

Objective: Generate a CSV Report of Web Servers with Discovered Directories

Python

import os
import pandas as pd

def find_web_servers_and_dirs(results_dir):
    """Finds web servers and their discovered directories from feroxbuster/gobuster logs."""
    web_assets = []
    
    for root, dirs, files in os.walk(results_dir):
        # Look for the directory busting tool's output file
        for file in files:
            if file.startswith(('feroxbuster', 'gobuster', 'dirbuster')):
                try:
                    target_ip = root.split(os.sep)[1] # Assumes 'results/IP/scans' structure
                    port_info = os.path.basename(root) # e.g., 'tcp80' or 'tcp443'
                    protocol = 'https' if '443' in port_info or '8443' in port_info else 'http'
                    url_base = f"{protocol}://{target_ip}:{port_info.replace('tcp', '')}"
                    
                    with open(os.path.join(root, file), 'r') as f:
                        for line in f:
                            # Simple parsing, can be improved with regex for specific tools
                            if line.startswith("200 ") or line.startswith("301 ") or line.startswith("302 "):
                                parts = line.split()
                                if len(parts) > 2 and parts[2].startswith('/'):
                                    path = parts[2]
                                    full_url = url_base + path
                                    web_assets.append({
                                        "Target": target_ip,
                                        "URL": full_url,
                                        "StatusCode": parts[0]
                                    })
                except Exception as e:
                    print(f"Error parsing file in {root}: {e}")

    return web_assets

def main():
    """Main function to generate the web assets report."""
    results_dir = 'results'
    assets = find_web_servers_and_dirs(results_dir)
    
    if not assets:
        print("No web directories discovered.")
        return
        
    df = pd.DataFrame(assets)
    # Remove duplicates
    df.drop_duplicates(inplace=True)
    
    output_file = 'web_findings_report.csv'
    df.to_csv(output_file, index=False)
    
    print(f"--- Web Findings Report ---")
    print(f"Found {len(df)} unique web paths.")
    print(f"Report saved to {output_file}")
    print("\nSample of findings:")
    print(df.head())

if __name__ == '__main__':
    main()
--- Web Findings Report ---
Found 127 unique web paths.
Report saved to web_findings_report.csv

Sample of findings:
         Target                                URL StatusCode
0  10.10.11.150          http://10.10.11.150:80/admin        302
1  10.10.11.150     http://10.10.11.150:80/login.php        200
2  10.10.11.150  http://10.10.11.150:80/assets        301
3  10.10.11.152      http://10.10.11.152:8080/dashboard        200
4  10.10.11.152    http://10.10.11.152:8080/robots.txt        200


Legal & Ethical Disclaimer


The information, tools, and techniques detailed in this article are provided for educational purposes only. The use of AutoRecon and other penetration testing tools should be confined strictly to environments and systems for which you have been granted explicit, written, and verifiable legal authorization. The application of these techniques against any system, network, or application without prior consent is illegal in most jurisdictions and constitutes a criminal offense.

The author, instructor, course, and hosting platform bear no responsibility or liability for any direct or indirect damage, loss, or legal action resulting from the misuse of the information presented herein. By using this tool or applying these techniques, you acknowledge that you are solely responsible for your actions and for complying with all applicable local, state, federal, and international laws. Ethical hacking requires a foundation of trust and integrity; unauthorized scanning is a violation of that principle. Always act professionally, ethically, and legally.