#!/usr/bin/env bash # The Analyzer - Reconnaissance Engine # Gathers target info for Ollama to make decisions SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" source "$SCRIPT_DIR/../lib/utils.sh" recon_target() { local target="$1" local domain=$(get_domain "$target") local report="$2" echo "" print_info "Gathering intelligence on $target..." separator RECON_DATA="Target: $target\nDomain: $domain\n" # 1. HTTP Status + Headers print_sub "Checking HTTP response..." local status=$(http_check "$target") local headers=$(get_headers "$target") local server=$(echo "$headers" | grep -i '^server:' | sed 's/[Ss]erver: //' | tr -d '\r') local ctype=$(echo "$headers" | grep -i '^content-type:' | sed 's/[Cc]ontent-[Tt]ype: //' | tr -d '\r') local powered=$(echo "$headers" | grep -i '^x-powered-by:' | sed 's/[Xx]-[Pp]owered-[Bb]y: //' | tr -d '\r') local cf_ray=$(echo "$headers" | grep -i '^cf-ray' | head -1) local akamai=$(echo "$headers" | grep -i 'x-akamai' | head -1) RECON_DATA+="Status: $status\n" [ -n "$server" ] && RECON_DATA+="Server: $server\n" && print_info "Server: $server" [ -n "$powered" ] && RECON_DATA+="X-Powered-By: $powered\n" && print_info "Powered by: $powered" [ -n "$cf_ray" ] && RECON_DATA+="Cloudflare: true\n" && print_warn "Cloudflare detected" [ -n "$akamai" ] && RECON_DATA+="Akamai: true\n" && print_warn "Akamai detected" # 2. Title local title=$(get_title "$target") [ -n "$title" ] && RECON_DATA+="Page Title: $title\n" && print_info "Title: $title" # 3. Technologies (basic) print_sub "Detecting technologies..." local techs="" echo "$headers" | grep -qi 'php' && techs+="PHP, " && RECON_DATA+="Tech: PHP\n" echo "$headers" | grep -qi 'asp\.net\|x-aspnet' && techs+="ASP.NET, " && RECON_DATA+="Tech: ASP.NET\n" echo "$headers" | grep -qi 'nginx' && techs+="Nginx, " && RECON_DATA+="Tech: Nginx\n" echo "$headers" | grep -qi 'apache' && techs+="Apache, " && RECON_DATA+="Tech: Apache\n" echo "$headers" | grep -qi 'express' && techs+="Express, " && RECON_DATA+="Tech: Express/Node\n" echo "$headers" | grep -qi 'django\|python' && techs+="Python/Django, " && RECON_DATA+="Tech: Python/Django\n" echo "$headers" | grep -qi 'rails\|ruby' && techs+="Ruby/Rails, " && RECON_DATA+="Tech: Ruby/Rails\n" echo "$headers" | grep -qi 'java\|tomcat\|jboss' && techs+="Java, " && RECON_DATA+="Tech: Java\n" echo "$headers" | grep -qi 'wordpress' && techs+="WordPress, " && RECON_DATA+="Tech: WordPress\n" echo "$headers" | grep -qi 'cloudflare' && techs+="Cloudflare, " echo "$headers" | grep -qi 'set-cookie.*session' && RECON_DATA+="Has Session Cookies: true\n" [ -n "$techs" ] && print_info "Tech: ${techs%, }" # 4. Check for common paths print_sub "Checking common endpoints..." local common_paths=("robots.txt" "sitemap.xml" ".git/HEAD" ".env" "admin" "api" "wp-admin" "login" "graphql") local found_paths="" for path in "${common_paths[@]}"; do local code=$(http_check "$target/$path" 2>/dev/null) if [[ "$code" =~ ^[23] ]]; then found_paths+="$path($code), " RECON_DATA+="Endpoint Found: /$path (HTTP $code)\n" print_find "Found: /$path (HTTP $code)" fi done # 5. Page content samples (first 5KB) print_sub "Sampling page content..." local page_content=$(curl -s --connect-timeout 5 --max-time 10 "$target" 2>/dev/null | head -c 5000) # Detect forms if echo "$page_content" | grep -qi '