Skip to content

quick_scan.sh

File: htb/scripts/quick_scan.sh

 #!/bin/bash

  if [ -z "$IP" ]; then
      echo "Error: IP variable not set. Run: export IP=<target-ip>"
      exit 1
  fi

  # Check for -Pn flag
  PN_FLAG=""
  if [[ "$@" == *"-Pn"* ]]; then
      PN_FLAG="-Pn"
      echo "[*] Using -Pn (skip ping)"
  fi

  if [ "$1" == "--quick" ]; then
      echo "[*] Running quick scan on $IP"
      nmap -p- --min-rate=1000 -T4 $PN_FLAG $IP -oN quick-$IP.txt
      echo "[+] Quick scan complete: quick-$IP.txt"

  elif [ "$1" == "--details" ]; then
      if [ ! -f "quick-$IP.txt" ]; then
          echo "Error: quick-$IP.txt not found. Run --quick first."
          exit 1
      fi

      echo "[*] Extracting ports from quick-$IP.txt"
      ports=$(grep -E "/(tcp|udp)" quick-$IP.txt | grep -v "closed" | awk '{print $1}' | cut -d'/' -f1 | paste -sd,)

      if [ -z "$ports" ]; then
          echo "Error: No open ports found in quick-$IP.txt"
          exit 1
      fi

      echo "[*] Running detailed scan on ports: $ports"
      nmap -p $ports -sC -sV $PN_FLAG $IP -oN detailed-$IP.txt
      echo "[+] Detailed scan complete: detailed-$IP.txt"

  else
      echo "Usage: $0 [--quick|--details] [-Pn]"
      echo "  --quick    Fast port scan"
      echo "  --details  Detailed scan on found ports"
      echo "  -Pn        Skip ping (optional)"
      exit 1
  fi