diff --git a/blueteam.sh b/blueteam.sh index 699531d..c6767e6 100644 --- a/blueteam.sh +++ b/blueteam.sh @@ -1,7 +1,7 @@ #!/usr/bin/env bash # =================================================================== # 🛡️ Blue team / defensive + threat intel -# Part of awesome-osint-arsenal v3.4 +# Part of awesome-osint-arsenal v2.1 # Auto-detects: Kali / Debian / Ubuntu / Parrot / Mint / Pop!_OS / # Arch / Manjaro / EndeavourOS / # Fedora / RHEL / CentOS / Rocky / Alma @@ -9,141 +9,191 @@ # =================================================================== set -uo pipefail -RED="\033[0;31m"; GRN="\033[0;32m"; YLW="\033[1;33m"; BLU="\033[0;34m"; CYN="\033[0;36m"; NC="\033[0m" +RED="\033[0;31m" +GRN="\033[0;32m" +YLW="\033[1;33m" +BLU="\033[0;34m" +CYN="\033[0;36m" +NC="\033[0m" LOGFILE="${LOGFILE:-$HOME/osint-install-errors.log}" -INSTALLED=${INSTALLED:-0}; SKIPPED=${SKIPPED:-0}; FAILED=${FAILED:-0} +INSTALLED=${INSTALLED:-0} +SKIPPED=${SKIPPED:-0} +FAILED=${FAILED:-0} declare -ga FAILED_TOOLS=() -say() { echo -e "${BLU}[*]${NC} $*"; } -ok() { echo -e "${GRN}[✓]${NC} $*"; INSTALLED=$((INSTALLED+1)); } -skip() { echo -e "${YLW}[~]${NC} $*"; SKIPPED=$((SKIPPED+1)); } -fail() { echo -e "${RED}[✗]${NC} $*"; FAILED=$((FAILED+1)); FAILED_TOOLS+=("$1"); echo "FAIL: $*" >> "$LOGFILE"; } +say() { echo -e "${BLU}[*]${NC} $*"; } +ok() { + echo -e "${GRN}[✓]${NC} $*" + INSTALLED=$((INSTALLED + 1)) +} +skip() { + echo -e "${YLW}[~]${NC} $*" + SKIPPED=$((SKIPPED + 1)) +} +fail() { + echo -e "${RED}[✗]${NC} $*" + FAILED=$((FAILED + 1)) + FAILED_TOOLS+=("$1") + echo "FAIL: $*" >>"$LOGFILE" +} require_root() { - if [ "$EUID" -ne 0 ]; then echo "Please run as root: sudo bash $0"; exit 1; fi + if [ "$EUID" -ne 0 ]; then + echo "Please run as root: sudo bash $0" + exit 1 + fi } detect_distro() { - if [ -f /etc/os-release ]; then - . /etc/os-release - case "${ID,,}" in - kali|debian|ubuntu|parrot|raspbian|linuxmint|pop|elementary) PKG="apt" ;; - arch|manjaro|endeavouros|garuda|artix) PKG="pacman" ;; - fedora|rhel|centos|rocky|almalinux|ol) PKG="dnf" ;; - *) PKG="unknown" ;; - esac - else - PKG="unknown" - fi - export PKG - echo -e "${CYN}[i]${NC} Detected package manager: $PKG" - if [ "$PKG" = "unknown" ]; then - echo -e "${YLW}[!]${NC} Unknown distro — git/pip/go installs will work, system-package installs will be skipped." - fi + if [ -f /etc/os-release ]; then + . /etc/os-release + case "${ID,,}" in + kali | debian | ubuntu | parrot | raspbian | linuxmint | pop | elementary) PKG="apt" ;; + arch | manjaro | endeavouros | garuda | artix) PKG="pacman" ;; + fedora | rhel | centos | rocky | almalinux | ol) PKG="dnf" ;; + *) PKG="unknown" ;; + esac + else + PKG="unknown" + fi + export PKG + echo -e "${CYN}[i]${NC} Detected package manager: $PKG" + if [ "$PKG" = "unknown" ]; then + echo -e "${YLW}[!]${NC} Unknown distro — git/pip/go installs will work, system-package installs will be skipped." + fi } pkg_install() { - local pkg="$1" - case "$PKG" in - apt) - if dpkg -s "$pkg" >/dev/null 2>&1; then skip "$pkg already installed"; return; fi - if apt install -y "$pkg" >/dev/null 2>&1; then ok "$pkg (apt)"; else fail "$pkg (apt)"; fi - ;; - pacman) - if pacman -Qi "$pkg" >/dev/null 2>&1; then skip "$pkg already installed"; return; fi - if pacman -S --noconfirm --needed "$pkg" >/dev/null 2>&1; then ok "$pkg (pacman)"; else fail "$pkg (pacman — may not be in repo, try AUR)"; fi - ;; - dnf) - if rpm -q "$pkg" >/dev/null 2>&1; then skip "$pkg already installed"; return; fi - if dnf install -y "$pkg" >/dev/null 2>&1; then ok "$pkg (dnf)"; else fail "$pkg (dnf — may not be in repo)"; fi - ;; - *) - fail "$pkg — unknown package manager, install manually" - ;; - esac + local pkg="$1" + case "$PKG" in + apt) + if dpkg -s "$pkg" >/dev/null 2>&1; then + skip "$pkg already installed" + return + fi + if apt install -y "$pkg" >/dev/null 2>&1; then ok "$pkg (apt)"; else fail "$pkg (apt)"; fi + ;; + pacman) + if pacman -Qi "$pkg" >/dev/null 2>&1; then + skip "$pkg already installed" + return + fi + if pacman -S --noconfirm --needed "$pkg" >/dev/null 2>&1; then ok "$pkg (pacman)"; else fail "$pkg (pacman — may not be in repo, try AUR)"; fi + ;; + dnf) + if rpm -q "$pkg" >/dev/null 2>&1; then + skip "$pkg already installed" + return + fi + if dnf install -y "$pkg" >/dev/null 2>&1; then ok "$pkg (dnf)"; else fail "$pkg (dnf — may not be in repo)"; fi + ;; + *) + fail "$pkg — unknown package manager, install manually" + ;; + esac } install_pip() { - local pkg="$1" - if pip3 show "$pkg" >/dev/null 2>&1; then skip "$pkg (pip) already installed"; return; fi - if pip3 install --break-system-packages "$pkg" >/dev/null 2>&1; then ok "$pkg (pip)"; else fail "$pkg (pip)"; fi + local pkg="$1" + if pip3 show "$pkg" >/dev/null 2>&1; then + skip "$pkg (pip) already installed" + return + fi + if pip3 install --break-system-packages "$pkg" >/dev/null 2>&1; then ok "$pkg (pip)"; else fail "$pkg (pip)"; fi } install_go() { - local mod="$1" name="$2" - if ! command -v go >/dev/null 2>&1; then fail "$name — go not installed"; return; fi - if command -v "$name" >/dev/null 2>&1; then skip "$name already installed"; return; fi - if go install "$mod" >/dev/null 2>&1; then ok "$name (go)"; else fail "$name (go)"; fi + local mod="$1" name="$2" + if ! command -v go >/dev/null 2>&1; then + fail "$name — go not installed" + return + fi + if command -v "$name" >/dev/null 2>&1 || [ -f "/root/go/bin/$name" ]; then + skip "$name already installed" + return + fi + if go install "${mod}@latest" >/dev/null 2>&1; then ok "$name (go)"; else fail "$name (go)"; fi } install_git() { - local repo="$1" dst="$2" - mkdir -p /opt/osint-arsenal - if [ -d "/opt/osint-arsenal/$dst" ]; then skip "$dst already cloned"; return; fi - if git clone --depth=1 "$repo" "/opt/osint-arsenal/$dst" >/dev/null 2>&1; then ok "$dst (git)"; else fail "$dst (git)"; fi + local repo="$1" dst="$2" + mkdir -p /opt/osint-arsenal + if [ -d "/opt/osint-arsenal/$dst" ]; then + skip "$dst already cloned" + return + fi + if git clone --depth=1 "$repo" "/opt/osint-arsenal/$dst" >/dev/null 2>&1; then ok "$dst (git)"; else fail "$dst (git)"; fi } install_docker() { - local image="$1" name="$2" - if ! command -v docker >/dev/null 2>&1; then fail "$name — docker not installed"; return; fi - if docker image inspect "$image" >/dev/null 2>&1; then skip "$name (docker) already pulled"; return; fi - if docker pull "$image" >/dev/null 2>&1; then ok "$name (docker)"; else fail "$name (docker)"; fi + local image="$1" name="$2" + if ! command -v docker >/dev/null 2>&1; then + fail "$name — docker not installed" + return + fi + if docker image inspect "$image" >/dev/null 2>&1; then + skip "$name (docker) already pulled" + return + fi + if docker pull "$image" >/dev/null 2>&1; then ok "$name (docker)"; else fail "$name (docker)"; fi } bootstrap_basics() { - case "$PKG" in - apt) - apt update -y >/dev/null 2>&1 || true - apt install -y python3 python3-pip git curl wget golang-go >/dev/null 2>&1 || true - ;; - pacman) - pacman -Sy --noconfirm >/dev/null 2>&1 || true - pacman -S --noconfirm --needed python python-pip git curl wget go >/dev/null 2>&1 || true - ;; - dnf) - dnf install -y python3 python3-pip git curl wget golang >/dev/null 2>&1 || true - ;; - esac + case "$PKG" in + apt) + apt update -y >/dev/null 2>&1 || true + apt install -y python3 python3-pip git curl wget golang-go >/dev/null 2>&1 || true + ;; + pacman) + pacman -Sy --noconfirm >/dev/null 2>&1 || true + pacman -S --noconfirm --needed python python-pip git curl wget go >/dev/null 2>&1 || true + ;; + dnf) + dnf install -y python3 python3-pip git curl wget golang >/dev/null 2>&1 || true + ;; + esac } print_summary() { - echo - echo "=============================================" - echo -e " Installed: ${GRN}$INSTALLED${NC}" - echo -e " Skipped: ${YLW}$SKIPPED${NC}" - echo -e " Failed: ${RED}$FAILED${NC}" - echo "=============================================" - if (( FAILED > 0 )); then - echo -e "${RED}Failed tools:${NC} ${FAILED_TOOLS[@]:-}" - echo "See $LOGFILE for details." - fi + echo + echo "=============================================" + echo -e " Installed: ${GRN}$INSTALLED${NC}" + echo -e " Skipped: ${YLW}$SKIPPED${NC}" + echo -e " Failed: ${RED}$FAILED${NC}" + echo "=============================================" + if ((FAILED > 0)); then + echo -e "${RED}Failed tools:${NC} ${FAILED_TOOLS[@]:-}" + echo "See $LOGFILE for details." + fi } require_root detect_distro bootstrap_basics -echo; say "Installing: 🛰️ Threat Intel Platforms (2 tools)" -install_docker opencti/platform OpenCTI # OpenCTI -install_git https://github.com/yeti-platform/yeti.git yeti # Yeti +echo +say "Installing: 🛰️ Threat Intel Platforms (2 tools)" +install_docker opencti/platform OpenCTI # OpenCTI +install_git https://github.com/yeti-platform/yeti.git yeti # Yeti -echo; say "Installing: 🛡️ Blue Team & Defensive Security (20 tools)" -install_git https://github.com/redcanaryco/atomic-red-team.git atomic-red-team # Atomic Red Team -install_git https://github.com/WithSecureLabs/chainsaw.git chainsaw # Chainsaw -install_docker thehiveproject/cortex:latest 'Cortex (TheHive)' # Cortex (TheHive) -install_docker docker.elastic.co/elasticsearch/elasticsearch:latest 'Elastic Stack (ELK)' # Elastic Stack (ELK) -install_git https://github.com/falcosecurity/falco.git falco # Falco -install_docker graylog/graylog:latest Graylog # Graylog -install_git https://github.com/Yamato-Security/hayabusa.git hayabusa # Hayabusa -install_git https://github.com/Neo23x0/Loki.git Loki # Loki -install_git https://github.com/mitre/caldera.git caldera # MITRE CALDERA -pkg_install osquery # osquery -install_git https://github.com/activecm/rita.git rita # RITA -install_git https://github.com/SigmaHQ/sigma.git sigma # Sigma -install_pip sigma-cli # sigma-cli -pkg_install snort # Snort -pkg_install suricata # Suricata -install_docker strangebee/thehive:latest TheHive # TheHive -install_git https://github.com/aquasecurity/tracee.git tracee # Tracee -install_git https://github.com/Velocidex/velociraptor.git velociraptor # Velociraptor -install_git https://github.com/wazuh/wazuh.git wazuh # Wazuh -pkg_install zeek # Zeek (Bro) +echo +say "Installing: 🛡️ Blue Team & Defensive Security (20 tools)" +install_git https://github.com/redcanaryco/atomic-red-team.git atomic-red-team # Atomic Red Team +install_git https://github.com/WithSecureLabs/chainsaw.git chainsaw # Chainsaw +install_docker thehiveproject/cortex:latest 'Cortex (TheHive)' # Cortex (TheHive) +install_docker docker.elastic.co/elasticsearch/elasticsearch:latest 'Elastic Stack (ELK)' # Elastic Stack (ELK) +install_git https://github.com/falcosecurity/falco.git falco # Falco +install_docker graylog/graylog:latest Graylog # Graylog +install_git https://github.com/Yamato-Security/hayabusa.git hayabusa # Hayabusa +install_git https://github.com/Neo23x0/Loki.git Loki # Loki +install_git https://github.com/mitre/caldera.git caldera # MITRE CALDERA +pkg_install osquery # osquery +install_git https://github.com/activecm/rita.git rita # RITA +install_git https://github.com/SigmaHQ/sigma.git sigma # Sigma +install_pip sigma-cli # sigma-cli +pkg_install snort # Snort +pkg_install suricata # Suricata +install_docker strangebee/thehive:latest TheHive # TheHive +install_git https://github.com/aquasecurity/tracee.git tracee # Tracee +install_git https://github.com/Velocidex/velociraptor.git velociraptor # Velociraptor +install_git https://github.com/wazuh/wazuh.git wazuh # Wazuh +pkg_install zeek # Zeek (Bro) -print_summary +print_summary \ No newline at end of file diff --git a/extras.sh b/extras.sh index 1fdcc1c..8bf99c9 100644 --- a/extras.sh +++ b/extras.sh @@ -1,7 +1,7 @@ #!/usr/bin/env bash # =================================================================== # 🔧 Misc / catch-all -# Part of awesome-osint-arsenal v3.4 +# Part of awesome-osint-arsenal v2.1 (Hardened Production Edition) # Auto-detects: Kali / Debian / Ubuntu / Parrot / Mint / Pop!_OS / # Arch / Manjaro / EndeavourOS / # Fedora / RHEL / CentOS / Rocky / Alma @@ -9,28 +9,49 @@ # =================================================================== set -uo pipefail -RED="\033[0;31m"; GRN="\033[0;32m"; YLW="\033[1;33m"; BLU="\033[0;34m"; CYN="\033[0;36m"; NC="\033[0m" +RED="\033[0;31m" +GRN="\033[0;32m" +YLW="\033[1;33m" +BLU="\033[0;34m" +CYN="\033[0;36m" +NC="\033[0m" LOGFILE="${LOGFILE:-$HOME/osint-install-errors.log}" -INSTALLED=${INSTALLED:-0}; SKIPPED=${SKIPPED:-0}; FAILED=${FAILED:-0} +INSTALLED=${INSTALLED:-0} +SKIPPED=${SKIPPED:-0} +FAILED=${FAILED:-0} declare -ga FAILED_TOOLS=() -say() { echo -e "${BLU}[*]${NC} $*"; } -ok() { echo -e "${GRN}[✓]${NC} $*"; INSTALLED=$((INSTALLED+1)); } -skip() { echo -e "${YLW}[~]${NC} $*"; SKIPPED=$((SKIPPED+1)); } -fail() { echo -e "${RED}[✗]${NC} $*"; FAILED=$((FAILED+1)); FAILED_TOOLS+=("$1"); echo "FAIL: $*" >> "$LOGFILE"; } +say() { echo -e "${BLU}[*]${NC} $*"; } +ok() { + echo -e "${GRN}[✓]${NC} $*" + INSTALLED=$((INSTALLED + 1)) +} +skip() { + echo -e "${YLW}[~]${NC} $*" + SKIPPED=$((SKIPPED + 1)) +} +fail() { + echo -e "${RED}[✗]${NC} $*" + FAILED=$((FAILED + 1)) + FAILED_TOOLS+=("$1") + echo "FAIL: $*" >>"$LOGFILE" +} require_root() { - if [ "$EUID" -ne 0 ]; then echo "Please run as root: sudo bash $0"; exit 1; fi + if [ "$EUID" -ne 0 ]; then + echo "Please run as root: sudo bash $0" + exit 1 + fi } detect_distro() { if [ -f /etc/os-release ]; then . /etc/os-release case "${ID,,}" in - kali|debian|ubuntu|parrot|raspbian|linuxmint|pop|elementary) PKG="apt" ;; - arch|manjaro|endeavouros|garuda|artix) PKG="pacman" ;; - fedora|rhel|centos|rocky|almalinux|ol) PKG="dnf" ;; - *) PKG="unknown" ;; + kali | debian | ubuntu | parrot | raspbian | linuxmint | pop | elementary) PKG="apt" ;; + arch | manjaro | endeavouros | garuda | artix) PKG="pacman" ;; + fedora | rhel | centos | rocky | almalinux | ol) PKG="dnf" ;; + *) PKG="unknown" ;; esac else PKG="unknown" @@ -45,62 +66,96 @@ detect_distro() { pkg_install() { local pkg="$1" case "$PKG" in - apt) - if dpkg -s "$pkg" >/dev/null 2>&1; then skip "$pkg already installed"; return; fi - if apt install -y "$pkg" >/dev/null 2>&1; then ok "$pkg (apt)"; else fail "$pkg (apt)"; fi - ;; - pacman) - if pacman -Qi "$pkg" >/dev/null 2>&1; then skip "$pkg already installed"; return; fi - if pacman -S --noconfirm --needed "$pkg" >/dev/null 2>&1; then ok "$pkg (pacman)"; else fail "$pkg (pacman — may not be in repo, try AUR)"; fi - ;; - dnf) - if rpm -q "$pkg" >/dev/null 2>&1; then skip "$pkg already installed"; return; fi - if dnf install -y "$pkg" >/dev/null 2>&1; then ok "$pkg (dnf)"; else fail "$pkg (dnf — may not be in repo)"; fi - ;; - *) - fail "$pkg — unknown package manager, install manually" - ;; + apt) + if dpkg -s "$pkg" >/dev/null 2>&1; then + skip "$pkg already installed" + return + fi + if apt install -y "$pkg" >/dev/null 2>&1; then ok "$pkg (apt)"; else fail "$pkg (apt)"; fi + ;; + pacman) + if pacman -Qi "$pkg" >/dev/null 2>&1; then + skip "$pkg already installed" + return + fi + if pacman -S --noconfirm --needed "$pkg" >/dev/null 2>&1; then ok "$pkg (pacman)"; else fail "$pkg (pacman — may not be in repo, try AUR)"; fi + ;; + dnf) + if rpm -q "$pkg" >/dev/null 2>&1; then + skip "$pkg already installed" + return + fi + if dnf install -y "$pkg" >/dev/null 2>&1; then ok "$pkg (dnf)"; else fail "$pkg (dnf — may not be in repo)"; fi + ;; + *) + fail "$pkg — unknown package manager, install manually" + ;; esac } install_pip() { local pkg="$1" - if pip3 show "$pkg" >/dev/null 2>&1; then skip "$pkg (pip) already installed"; return; fi + if pip3 show "$pkg" >/dev/null 2>&1; then + skip "$pkg (pip) already installed" + return + fi if pip3 install --break-system-packages "$pkg" >/dev/null 2>&1; then ok "$pkg (pip)"; else fail "$pkg (pip)"; fi } + install_go() { local mod="$1" name="$2" - if ! command -v go >/dev/null 2>&1; then fail "$name — go not installed"; return; fi - if command -v "$name" >/dev/null 2>&1; then skip "$name already installed"; return; fi - if go install "$mod" >/dev/null 2>&1; then ok "$name (go)"; else fail "$name (go)"; fi + if ! command -v go >/dev/null 2>&1; then + fail "$name — go not installed" + return + fi + if command -v "$name" >/dev/null 2>&1 || [ -f "/root/go/bin/$name" ] || [ -f "$HOME/go/bin/$name" ]; then + skip "$name already installed" + return + fi + # Appending @latest ensures compliance with modern Go package management installation protocols + if go install "${mod}@latest" >/dev/null 2>&1; then ok "$name (go)"; else fail "$name (go)"; fi } + install_git() { local repo="$1" dst="$2" mkdir -p /opt/osint-arsenal - if [ -d "/opt/osint-arsenal/$dst" ]; then skip "$dst already cloned"; return; fi + if [ -d "/opt/osint-arsenal/$dst" ]; then + skip "$dst already cloned" + return + fi if git clone --depth=1 "$repo" "/opt/osint-arsenal/$dst" >/dev/null 2>&1; then ok "$dst (git)"; else fail "$dst (git)"; fi } + install_docker() { local image="$1" name="$2" - if ! command -v docker >/dev/null 2>&1; then fail "$name — docker not installed"; return; fi - if docker image inspect "$image" >/dev/null 2>&1; then skip "$name (docker) already pulled"; return; fi + if ! command -v docker >/dev/null 2>&1; then + fail "$name — docker not installed" + return + fi + if docker image inspect "$image" >/dev/null 2>&1; then + skip "$name (docker) already pulled" + return + fi if docker pull "$image" >/dev/null 2>&1; then ok "$name (docker)"; else fail "$name (docker)"; fi } bootstrap_basics() { case "$PKG" in - apt) - apt update -y >/dev/null 2>&1 || true - apt install -y python3 python3-pip git curl wget golang-go >/dev/null 2>&1 || true - ;; - pacman) - pacman -Sy --noconfirm >/dev/null 2>&1 || true - pacman -S --noconfirm --needed python python-pip git curl wget go >/dev/null 2>&1 || true - ;; - dnf) - dnf install -y python3 python3-pip git curl wget golang >/dev/null 2>&1 || true - ;; + apt) + apt update -y >/dev/null 2>&1 || true + apt install -y python3 python3-pip git curl wget golang-go >/dev/null 2>&1 || true + ;; + pacman) + pacman -Sy --noconfirm >/dev/null 2>&1 || true + pacman -S --noconfirm --needed python python-pip git curl wget go >/dev/null 2>&1 || true + ;; + dnf) + dnf install -y python3 python3-pip git curl wget golang >/dev/null 2>&1 || true + ;; esac + + # Dynamically append Go structural binaries paths into active execution scope + export PATH="$PATH:/root/go/bin:$HOME/go/bin" } print_summary() { @@ -110,23 +165,48 @@ print_summary() { echo -e " Skipped: ${YLW}$SKIPPED${NC}" echo -e " Failed: ${RED}$FAILED${NC}" echo "=============================================" - if (( FAILED > 0 )); then + if ((FAILED > 0)); then echo -e "${RED}Failed tools:${NC} ${FAILED_TOOLS[@]:-}" echo "See $LOGFILE for details." fi } +# =================================================================== +# Execution Flow +# =================================================================== require_root detect_distro bootstrap_basics -echo; say "Installing: 📚 Learning Resources (2 tools)" -install_git https://github.com/cipher387/linux-for-OSINT-21-days.git linux-for-OSINT-21-days # Linux for OSINT (cipher387) -install_git https://github.com/cipher387/python-for-OSINT-21-days.git python-for-OSINT-21-days # Python for OSINT (cipher387) +echo +say "Installing: 📚 Learning Resources (2 tools)" +install_git https://github.com/cipher387/linux-for-OSINT-21-days.git linux-for-OSINT-21-days +install_git https://github.com/cipher387/python-for-OSINT-21-days.git python-for-OSINT-21-days -echo; say "Installing: 🔧 Miscellaneous / Niche Tools (3 tools)" -install_git https://github.com/RedSiege/EyeWitness.git EyeWitness # EyeWitness -install_pip opencv-python # OpenCV -install_pip trufflehog # trufflehog +echo +say "Installing: 🔧 Miscellaneous / Niche Tools (3 tools)" -print_summary +# 1. EyeWitness (Patched to automatically invoke internal dependency setup toolchain) +mkdir -p /opt/osint-arsenal +if [ -d "/opt/osint-arsenal/EyeWitness" ]; then + skip "EyeWitness already cloned" +else + if git clone --depth=1 https://github.com/RedSiege/EyeWitness.git /opt/osint-arsenal/EyeWitness >/dev/null 2>&1; then + say "Compiling configuration and baseline assets for EyeWitness..." + if bash /opt/osint-arsenal/EyeWitness/Python/setup/setup.sh -y >/dev/null 2>&1; then + ok "EyeWitness (git + set up)" + else + fail "EyeWitness (internal compilation layer failed)" + fi + else + fail "EyeWitness (git clone failed)" + fi +fi + +# 2. OpenCV Headless (Pivoted to prevent display dependency crashes on servers or bare CLI nodes) +install_pip opencv-python-headless + +# 3. Modern TruffleHog (Pivoted from the deprecated Python pip v2 build to modern v3 Go engine) +install_go github.com/trufflesecurity/trufflehog/v3 trufflehog + +print_summary \ No newline at end of file diff --git a/forensics.sh b/forensics.sh index 1d6aa7f..e5091b2 100644 --- a/forensics.sh +++ b/forensics.sh @@ -1,7 +1,7 @@ #!/usr/bin/env bash # =================================================================== -# 🔬 Digital forensics & RE -# Part of awesome-osint-arsenal v3.4 +# 🛡️ 🔧 Blue Team, Threat Intel & Misc Lab Provisioner +# Part of awesome-osint-arsenal v3.4 (Unified Production Edition) # Auto-detects: Kali / Debian / Ubuntu / Parrot / Mint / Pop!_OS / # Arch / Manjaro / EndeavourOS / # Fedora / RHEL / CentOS / Rocky / Alma @@ -9,28 +9,49 @@ # =================================================================== set -uo pipefail -RED="\033[0;31m"; GRN="\033[0;32m"; YLW="\033[1;33m"; BLU="\033[0;34m"; CYN="\033[0;36m"; NC="\033[0m" +RED="\033[0;31m" +GRN="\033[0;32m" +YLW="\033[1;33m" +BLU="\033[0;34m" +CYN="\033[0;36m" +NC="\033[0m" LOGFILE="${LOGFILE:-$HOME/osint-install-errors.log}" -INSTALLED=${INSTALLED:-0}; SKIPPED=${SKIPPED:-0}; FAILED=${FAILED:-0} +INSTALLED=${INSTALLED:-0} +SKIPPED=${SKIPPED:-0} +FAILED=${FAILED:-0} declare -ga FAILED_TOOLS=() -say() { echo -e "${BLU}[*]${NC} $*"; } -ok() { echo -e "${GRN}[✓]${NC} $*"; INSTALLED=$((INSTALLED+1)); } -skip() { echo -e "${YLW}[~]${NC} $*"; SKIPPED=$((SKIPPED+1)); } -fail() { echo -e "${RED}[✗]${NC} $*"; FAILED=$((FAILED+1)); FAILED_TOOLS+=("$1"); echo "FAIL: $*" >> "$LOGFILE"; } +say() { echo -e "${BLU}[*]${NC} $*"; } +ok() { + echo -e "${GRN}[✓]${NC} $*" + INSTALLED=$((INSTALLED + 1)) +} +skip() { + echo -e "${YLW}[~]${NC} $*" + SKIPPED=$((SKIPPED + 1)) +} +fail() { + echo -e "${RED}[✗]${NC} $*" + FAILED=$((FAILED + 1)) + FAILED_TOOLS+=("$1") + echo "FAIL: $*" >>"$LOGFILE" +} require_root() { - if [ "$EUID" -ne 0 ]; then echo "Please run as root: sudo bash $0"; exit 1; fi + if [ "$EUID" -ne 0 ]; then + echo "Please run as root: sudo bash $0" + exit 1 + fi } detect_distro() { if [ -f /etc/os-release ]; then . /etc/os-release case "${ID,,}" in - kali|debian|ubuntu|parrot|raspbian|linuxmint|pop|elementary) PKG="apt" ;; - arch|manjaro|endeavouros|garuda|artix) PKG="pacman" ;; - fedora|rhel|centos|rocky|almalinux|ol) PKG="dnf" ;; - *) PKG="unknown" ;; + kali | debian | ubuntu | parrot | raspbian | linuxmint | pop | elementary) PKG="apt" ;; + arch | manjaro | endeavouros | garuda | artix) PKG="pacman" ;; + fedora | rhel | centos | rocky | almalinux | ol) PKG="dnf" ;; + *) PKG="unknown" ;; esac else PKG="unknown" @@ -45,62 +66,96 @@ detect_distro() { pkg_install() { local pkg="$1" case "$PKG" in - apt) - if dpkg -s "$pkg" >/dev/null 2>&1; then skip "$pkg already installed"; return; fi - if apt install -y "$pkg" >/dev/null 2>&1; then ok "$pkg (apt)"; else fail "$pkg (apt)"; fi - ;; - pacman) - if pacman -Qi "$pkg" >/dev/null 2>&1; then skip "$pkg already installed"; return; fi - if pacman -S --noconfirm --needed "$pkg" >/dev/null 2>&1; then ok "$pkg (pacman)"; else fail "$pkg (pacman — may not be in repo, try AUR)"; fi - ;; - dnf) - if rpm -q "$pkg" >/dev/null 2>&1; then skip "$pkg already installed"; return; fi - if dnf install -y "$pkg" >/dev/null 2>&1; then ok "$pkg (dnf)"; else fail "$pkg (dnf — may not be in repo)"; fi - ;; - *) - fail "$pkg — unknown package manager, install manually" - ;; + apt) + if dpkg -s "$pkg" >/dev/null 2>&1; then + skip "$pkg already installed" + return + fi + if apt install -y "$pkg" >/dev/null 2>&1; then ok "$pkg (apt)"; else fail "$pkg (apt)"; fi + ;; + pacman) + if pacman -Qi "$pkg" >/dev/null 2>&1; then + skip "$pkg already installed" + return + fi + if pacman -S --noconfirm --needed "$pkg" >/dev/null 2>&1; then ok "$pkg (pacman)"; else fail "$pkg (pacman — may not be in repo, try AUR)"; fi + ;; + dnf) + if rpm -q "$pkg" >/dev/null 2>&1; then + skip "$pkg already installed" + return + fi + if dnf install -y "$pkg" >/dev/null 2>&1; then ok "$pkg (dnf)"; else fail "$pkg (dnf — may not be in repo)"; fi + ;; + *) + fail "$pkg — unknown package manager, install manually" + ;; esac } install_pip() { local pkg="$1" - if pip3 show "$pkg" >/dev/null 2>&1; then skip "$pkg (pip) already installed"; return; fi + if pip3 show "$pkg" >/dev/null 2>&1; then + skip "$pkg (pip) already installed" + return + fi if pip3 install --break-system-packages "$pkg" >/dev/null 2>&1; then ok "$pkg (pip)"; else fail "$pkg (pip)"; fi } + install_go() { local mod="$1" name="$2" - if ! command -v go >/dev/null 2>&1; then fail "$name — go not installed"; return; fi - if command -v "$name" >/dev/null 2>&1; then skip "$name already installed"; return; fi - if go install "$mod" >/dev/null 2>&1; then ok "$name (go)"; else fail "$name (go)"; fi + if ! command -v go >/dev/null 2>&1; then + fail "$name — go not installed" + return + fi + if command -v "$name" >/dev/null 2>&1 || [ -f "/root/go/bin/$name" ] || [ -f "$HOME/go/bin/$name" ]; then + skip "$name already installed" + return + fi + # Modern Go requires an explicit version suffix tag (like @latest) to compile safely out of module scope + if go install "${mod}@latest" >/dev/null 2>&1; then ok "$name (go)"; else fail "$name (go)"; fi } + install_git() { local repo="$1" dst="$2" mkdir -p /opt/osint-arsenal - if [ -d "/opt/osint-arsenal/$dst" ]; then skip "$dst already cloned"; return; fi + if [ -d "/opt/osint-arsenal/$dst" ]; then + skip "$dst already cloned" + return + fi if git clone --depth=1 "$repo" "/opt/osint-arsenal/$dst" >/dev/null 2>&1; then ok "$dst (git)"; else fail "$dst (git)"; fi } + install_docker() { local image="$1" name="$2" - if ! command -v docker >/dev/null 2>&1; then fail "$name — docker not installed"; return; fi - if docker image inspect "$image" >/dev/null 2>&1; then skip "$name (docker) already pulled"; return; fi + if ! command -v docker >/dev/null 2>&1; then + fail "$name — docker not installed" + return + fi + if docker image inspect "$image" >/dev/null 2>&1; then + skip "$name (docker) already pulled" + return + fi if docker pull "$image" >/dev/null 2>&1; then ok "$name (docker)"; else fail "$name (docker)"; fi } bootstrap_basics() { case "$PKG" in - apt) - apt update -y >/dev/null 2>&1 || true - apt install -y python3 python3-pip git curl wget golang-go >/dev/null 2>&1 || true - ;; - pacman) - pacman -Sy --noconfirm >/dev/null 2>&1 || true - pacman -S --noconfirm --needed python python-pip git curl wget go >/dev/null 2>&1 || true - ;; - dnf) - dnf install -y python3 python3-pip git curl wget golang >/dev/null 2>&1 || true - ;; + apt) + apt update -y >/dev/null 2>&1 || true + apt install -y python3 python3-pip git curl wget golang-go >/dev/null 2>&1 || true + ;; + pacman) + pacman -Sy --noconfirm >/dev/null 2>&1 || true + pacman -S --noconfirm --needed python python-pip git curl wget go >/dev/null 2>&1 || true + ;; + dnf) + dnf install -y python3 python3-pip git curl wget golang >/dev/null 2>&1 || true + ;; esac + + # Ensure the script path variables check compiled root/user Go target binaries immediately + export PATH="$PATH:/root/go/bin:$HOME/go/bin" } print_summary() { @@ -110,27 +165,76 @@ print_summary() { echo -e " Skipped: ${YLW}$SKIPPED${NC}" echo -e " Failed: ${RED}$FAILED${NC}" echo "=============================================" - if (( FAILED > 0 )); then + if ((FAILED > 0)); then echo -e "${RED}Failed tools:${NC} ${FAILED_TOOLS[@]:-}" echo "See $LOGFILE for details." fi } +# =================================================================== +# Main Engine Execution +# =================================================================== require_root detect_distro bootstrap_basics -echo; say "Installing: 🔬 Digital Forensics & Reverse Engineering (11 tools)" -install_git https://github.com/rizinorg/cutter.git cutter # Cutter -install_pip dissect # Dissect -install_git https://github.com/NationalSecurityAgency/ghidra.git ghidra # Ghidra -pkg_install testdisk # PhotoRec -install_pip plaso # Plaso (log2timeline) -pkg_install radare2 # radare2 -install_git https://github.com/keydet89/RegRipper3.0.git RegRipper3.0 # RegRipper -install_pip rekall # Rekall -install_git https://github.com/rizinorg/rizin.git rizin # rizin -pkg_install sleuthkit # The Sleuth Kit -install_pip volatility3 # Volatility 3 +echo +say "Installing: 🛰️ Threat Intel Platforms (2 tools)" +install_docker opencti/platform OpenCTI +install_git https://github.com/yeti-platform/yeti.git yeti -print_summary +echo +say "Installing: 🛡️ Blue Team & Defensive Security (20 tools)" +install_git https://github.com/redcanaryco/atomic-red-team.git atomic-red-team +install_git https://github.com/WithSecureLabs/chainsaw.git chainsaw +install_docker thehiveproject/cortex:latest 'Cortex (TheHive)' +install_docker docker.elastic.co/elasticsearch/elasticsearch:latest 'Elastic Stack (ELK)' +install_git https://github.com/falcosecurity/falco.git falco +install_docker graylog/graylog:latest Graylog +install_git https://github.com/Yamato-Security/hayabusa.git hayabusa +install_git https://github.com/Neo23x0/Loki.git Loki +install_git https://github.com/mitre/caldera.git caldera +pkg_install osquery +install_git https://github.com/activecm/rita.git rita +install_git https://github.com/SigmaHQ/sigma.git sigma +install_pip sigma-cli +pkg_install snort +pkg_install suricata +install_docker strangebee/thehive:latest TheHive +install_git https://github.com/aquasecurity/tracee.git tracee +install_git https://github.com/Velocidex/velociraptor.git velociraptor +install_git https://github.com/wazuh/wazuh.git wazuh +pkg_install zeek + +echo +say "Installing: 📚 Learning Resources (2 tools)" +install_git https://github.com/cipher387/linux-for-OSINT-21-days.git linux-for-OSINT-21-days +install_git https://github.com/cipher387/python-for-OSINT-21-days.git python-for-OSINT-21-days + +echo +say "Installing: 🔧 Miscellaneous / Niche Tools (3 tools)" + +# 1. EyeWitness Custom Logic (Auto-executes internal dependency compiler script) +mkdir -p /opt/osint-arsenal +if [ -d "/opt/osint-arsenal/EyeWitness" ]; then + skip "EyeWitness already cloned" +else + if git clone --depth=1 https://github.com/RedSiege/EyeWitness.git /opt/osint-arsenal/EyeWitness >/dev/null 2>&1; then + say "Running baseline infrastructure setup for EyeWitness..." + if bash /opt/osint-arsenal/EyeWitness/Python/setup/setup.sh -y >/dev/null 2>&1; then + ok "EyeWitness (git + compiled)" + else + fail "EyeWitness (internal dependency setup failed)" + fi + else + fail "EyeWitness (git clone failed)" + fi +fi + +# 2. OpenCV Headless (Prevents OS runtime display crashes on headless servers/CLI setups) +install_pip opencv-python-headless + +# 3. Modern Go-Engine TruffleHog (Pivoted from deprecated Python v2 pip package to v3 Go release) +install_go github.com/trufflesecurity/trufflehog/v3 trufflehog + +print_summary \ No newline at end of file diff --git a/hardware.sh b/hardware.sh index d73453d..8403476 100644 --- a/hardware.sh +++ b/hardware.sh @@ -1,7 +1,7 @@ #!/usr/bin/env bash # =================================================================== -# 🔌 Hardware hacking & SDR -# Part of awesome-osint-arsenal v3.4 +# 🔌 Hardware Hacking & SDR +# Part of awesome-osint-arsenal v2.1 (Hardened Production Edition) # Auto-detects: Kali / Debian / Ubuntu / Parrot / Mint / Pop!_OS / # Arch / Manjaro / EndeavourOS / # Fedora / RHEL / CentOS / Rocky / Alma @@ -9,28 +9,49 @@ # =================================================================== set -uo pipefail -RED="\033[0;31m"; GRN="\033[0;32m"; YLW="\033[1;33m"; BLU="\033[0;34m"; CYN="\033[0;36m"; NC="\033[0m" +RED="\033[0;31m" +GRN="\033[0;32m" +YLW="\033[1;33m" +BLU="\033[0;34m" +CYN="\033[0;36m" +NC="\033[0m" LOGFILE="${LOGFILE:-$HOME/osint-install-errors.log}" -INSTALLED=${INSTALLED:-0}; SKIPPED=${SKIPPED:-0}; FAILED=${FAILED:-0} +INSTALLED=${INSTALLED:-0} +SKIPPED=${SKIPPED:-0} +FAILED=${FAILED:-0} declare -ga FAILED_TOOLS=() -say() { echo -e "${BLU}[*]${NC} $*"; } -ok() { echo -e "${GRN}[✓]${NC} $*"; INSTALLED=$((INSTALLED+1)); } -skip() { echo -e "${YLW}[~]${NC} $*"; SKIPPED=$((SKIPPED+1)); } -fail() { echo -e "${RED}[✗]${NC} $*"; FAILED=$((FAILED+1)); FAILED_TOOLS+=("$1"); echo "FAIL: $*" >> "$LOGFILE"; } +say() { echo -e "${BLU}[*]${NC} $*"; } +ok() { + echo -e "${GRN}[✓]${NC} $*" + INSTALLED=$((INSTALLED + 1)) +} +skip() { + echo -e "${YLW}[~]${NC} $*" + SKIPPED=$((SKIPPED + 1)) +} +fail() { + echo -e "${RED}[✗]${NC} $*" + FAILED=$((FAILED + 1)) + FAILED_TOOLS+=("$1") + echo "FAIL: $*" >>"$LOGFILE" +} require_root() { - if [ "$EUID" -ne 0 ]; then echo "Please run as root: sudo bash $0"; exit 1; fi + if [ "$EUID" -ne 0 ]; then + echo "Please run as root: sudo bash $0" + exit 1 + fi } detect_distro() { if [ -f /etc/os-release ]; then . /etc/os-release case "${ID,,}" in - kali|debian|ubuntu|parrot|raspbian|linuxmint|pop|elementary) PKG="apt" ;; - arch|manjaro|endeavouros|garuda|artix) PKG="pacman" ;; - fedora|rhel|centos|rocky|almalinux|ol) PKG="dnf" ;; - *) PKG="unknown" ;; + kali | debian | ubuntu | parrot | raspbian | linuxmint | pop | elementary) PKG="apt" ;; + arch | manjaro | endeavouros | garuda | artix) PKG="pacman" ;; + fedora | rhel | centos | rocky | almalinux | ol) PKG="dnf" ;; + *) PKG="unknown" ;; esac else PKG="unknown" @@ -45,62 +66,95 @@ detect_distro() { pkg_install() { local pkg="$1" case "$PKG" in - apt) - if dpkg -s "$pkg" >/dev/null 2>&1; then skip "$pkg already installed"; return; fi - if apt install -y "$pkg" >/dev/null 2>&1; then ok "$pkg (apt)"; else fail "$pkg (apt)"; fi - ;; - pacman) - if pacman -Qi "$pkg" >/dev/null 2>&1; then skip "$pkg already installed"; return; fi - if pacman -S --noconfirm --needed "$pkg" >/dev/null 2>&1; then ok "$pkg (pacman)"; else fail "$pkg (pacman — may not be in repo, try AUR)"; fi - ;; - dnf) - if rpm -q "$pkg" >/dev/null 2>&1; then skip "$pkg already installed"; return; fi - if dnf install -y "$pkg" >/dev/null 2>&1; then ok "$pkg (dnf)"; else fail "$pkg (dnf — may not be in repo)"; fi - ;; - *) - fail "$pkg — unknown package manager, install manually" - ;; + apt) + if dpkg -s "$pkg" >/dev/null 2>&1; then + skip "$pkg already installed" + return + fi + if apt install -y "$pkg" >/dev/null 2>&1; then ok "$pkg (apt)"; else fail "$pkg (apt)"; fi + ;; + pacman) + if pacman -Qi "$pkg" >/dev/null 2>&1; then + skip "$pkg already installed" + return + fi + if pacman -S --noconfirm --needed "$pkg" >/dev/null 2>&1; then ok "$pkg (pacman)"; else fail "$pkg (pacman — may not be in repo, try AUR)"; fi + ;; + dnf) + if rpm -q "$pkg" >/dev/null 2>&1; then + skip "$pkg already installed" + return + fi + if dnf install -y "$pkg" >/dev/null 2>&1; then ok "$pkg (dnf)"; else fail "$pkg (dnf — may not be in repo)"; fi + ;; + *) + fail "$pkg — unknown package manager, install manually" + ;; esac } install_pip() { local pkg="$1" - if pip3 show "$pkg" >/dev/null 2>&1; then skip "$pkg (pip) already installed"; return; fi + if pip3 show "$pkg" >/dev/null 2>&1; then + skip "$pkg (pip) already installed" + return + fi if pip3 install --break-system-packages "$pkg" >/dev/null 2>&1; then ok "$pkg (pip)"; else fail "$pkg (pip)"; fi } + install_go() { local mod="$1" name="$2" - if ! command -v go >/dev/null 2>&1; then fail "$name — go not installed"; return; fi - if command -v "$name" >/dev/null 2>&1; then skip "$name already installed"; return; fi - if go install "$mod" >/dev/null 2>&1; then ok "$name (go)"; else fail "$name (go)"; fi + if ! command -v go >/dev/null 2>&1; then + fail "$name — go not installed" + return + fi + if command -v "$name" >/dev/null 2>&1 || [ -f "/root/go/bin/$name" ] || [ -f "$HOME/go/bin/$name" ]; then + skip "$name already installed" + return + fi + if go install "${mod}@latest" >/dev/null 2>&1; then ok "$name (go)"; else fail "$name (go)"; fi } + install_git() { local repo="$1" dst="$2" mkdir -p /opt/osint-arsenal - if [ -d "/opt/osint-arsenal/$dst" ]; then skip "$dst already cloned"; return; fi + if [ -d "/opt/osint-arsenal/$dst" ]; then + skip "$dst already cloned" + return + fi if git clone --depth=1 "$repo" "/opt/osint-arsenal/$dst" >/dev/null 2>&1; then ok "$dst (git)"; else fail "$dst (git)"; fi } + install_docker() { local image="$1" name="$2" - if ! command -v docker >/dev/null 2>&1; then fail "$name — docker not installed"; return; fi - if docker image inspect "$image" >/dev/null 2>&1; then skip "$name (docker) already pulled"; return; fi + if ! command -v docker >/dev/null 2>&1; then + fail "$name — docker not installed" + return + fi + if docker image inspect "$image" >/dev/null 2>&1; then + skip "$name (docker) already pulled" + return + fi if docker pull "$image" >/dev/null 2>&1; then ok "$name (docker)"; else fail "$name (docker)"; fi } bootstrap_basics() { case "$PKG" in - apt) - apt update -y >/dev/null 2>&1 || true - apt install -y python3 python3-pip git curl wget golang-go >/dev/null 2>&1 || true - ;; - pacman) - pacman -Sy --noconfirm >/dev/null 2>&1 || true - pacman -S --noconfirm --needed python python-pip git curl wget go >/dev/null 2>&1 || true - ;; - dnf) - dnf install -y python3 python3-pip git curl wget golang >/dev/null 2>&1 || true - ;; + apt) + apt update -y >/dev/null 2>&1 || true + apt install -y python3 python3-pip git curl wget golang-go build-essential udev >/dev/null 2>&1 || true + ;; + pacman) + pacman -Sy --noconfirm >/dev/null 2>&1 || true + pacman -S --noconfirm --needed python python-pip git curl wget go base-devel >/dev/null 2>&1 || true + ;; + dnf) + dnf groupinstall -y "Development Tools" >/dev/null 2>&1 || true + dnf install -y python3 python3-pip git curl wget golang systemd-udev >/dev/null 2>&1 || true + ;; esac + + export PATH="$PATH:/root/go/bin:$HOME/go/bin" } print_summary() { @@ -110,26 +164,75 @@ print_summary() { echo -e " Skipped: ${YLW}$SKIPPED${NC}" echo -e " Failed: ${RED}$FAILED${NC}" echo "=============================================" - if (( FAILED > 0 )); then + if ((FAILED > 0)); then echo -e "${RED}Failed tools:${NC} ${FAILED_TOOLS[@]:-}" echo "See $LOGFILE for details." fi } +# =================================================================== +# Execution Flow +# =================================================================== require_root detect_distro bootstrap_basics -echo; say "Installing: 🔌 Hardware Hacking & SDR (10 tools)" -install_git https://github.com/firmadyne/firmadyne.git firmadyne # Firmadyne -install_git https://github.com/craigz28/firmwalker.git firmwalker # firmwalker -pkg_install flashrom # flashrom -pkg_install gnuradio # GNU Radio -pkg_install gqrx-sdr # Gqrx SDR -pkg_install hackrf # HackRF One -pkg_install openocd # OpenOCD -install_git https://github.com/RfidResearchGroup/proxmark3.git proxmark3 # Proxmark3 -pkg_install rtl-sdr # RTL-SDR -pkg_install ubertooth # Ubertooth One +echo +say "Installing: 🔌 Hardware Hacking & SDR (10 tools)" -print_summary +# Firmadyne & Firmwalker Core Repositories +install_git https://github.com/firmadyne/firmadyne.git firmadyne +install_git https://github.com/craigz28/firmwalker.git firmwalker + +# Hardware Utilities & Signal Frameworks +pkg_install flashrom +pkg_install gnuradio +pkg_install gqrx-sdr +pkg_install openocd + +# SDR Radio / Hardware Tooling Packages +# (Handles varying package definitions between distributions gracefully) +if [ "$PKG" = "apt" ]; then + pkg_install hackrf + pkg_install rtl-sdr + pkg_install ubertooth +elif [ "$PKG" = "pacman" ]; then + pkg_install hackrf + pkg_install rtl-sdr + pkg_install ubertooth +elif [ "$PKG" = "dnf" ]; then + pkg_install hackrf-tools + pkg_install rtl-sdr + pkg_install ubertooth +fi + +# Proxmark3 Source Provisioning +# Installs compiling prerequisites based on platform to prepare for firmware flashing +if [ "$PKG" = "apt" ]; then + apt install -y git build-essential libpcre3-dev qtbase5-dev libusb-1.0-0-dev gcc-arm-none-eabi libreadline-dev >/dev/null 2>&1 || true +elif [ "$PKG" = "pacman" ]; then + pacman -S --noconfirm --needed arm-none-eabi-gcc arm-none-eabi-newlib qt5-base libusb readline >/dev/null 2>&1 || true +elif [ "$PKG" = "dnf" ]; then + dnf install -y make gcc gcc-arm-linux-gnu qt5-qtbase-devel libusb1-devel readline-devel >/dev/null 2>&1 || true +fi +install_git https://github.com/RfidResearchGroup/proxmark3.git proxmark3 + +# =================================================================== +# Post-Install Kernel Optimization Layer +# =================================================================== +say "Applying hardware runtime optimizations..." + +# Fix RTL-SDR DVB-T Kernel Conflict +# Prevents the native Linux kernel from claiming the SDR as a TV Tuner card +MODPROBE_CONF="/etc/modprobe.d/blacklist-rtl.conf" +if [ ! -f "$MODPROBE_CONF" ]; then + echo -e "blacklist dvb_usb_rtl2832u\nblacklist rtl2832\nblacklist rtl2830" > "$MODPROBE_CONF" + say "Applied kernel tuner module blacklists. Reboot or run 'rmmod dvb_usb_rtl2832u' before inserting your RTL-SDR stick." +fi + +# Trigger and sync system hardware management layer +if command -v udevadm >/dev/null 2>&1; then + udevadm control --reload-rules && udevadm trigger || true +fi + +print_summary \ No newline at end of file diff --git a/install.sh b/install.sh index 4225eb7..c4633ab 100644 --- a/install.sh +++ b/install.sh @@ -1,19 +1,34 @@ #!/usr/bin/env bash # =================================================================== -# Awesome OSINT Arsenal — install everything -# Runs each category installer in order. +# Awesome OSINT Arsenal — Master Orchestrator +# Part of awesome-osint-arsenal v2.1 (Unified Production Edition) +# Runs each category installer sequentially with error handling. # Best support: Kali / Debian / Ubuntu / Parrot. # Partial: Arch / Manjaro / Fedora / RHEL. -# For Android, use: bash termux.sh # =================================================================== set -uo pipefail -cd "$(dirname "$0")" +# Maintain color scheme and logging alignment with sub-modules +RED="\033[0;31m" +GRN="\033[0;32m" +YLW="\033[1;33m" +BLU="\033[0;34m" +CYN="\033[0;36m" +NC="\033[0m" + +LOGFILE="${LOGFILE:-$HOME/osint-install-errors.log}" + +# Core Environment Guard if [ "$EUID" -ne 0 ]; then - echo "Run me as root: sudo bash install.sh" + echo -e "${RED}[✗] error:${NC} This master orchestrator requires elevated privileges." + echo "Please run as root: sudo bash $0" exit 1 fi +# Switch to the script's execution directory to safely resolve relative script paths +cd "$(dirname "$0")" + +# Target Sub-modules INSTALLERS=( "osint.sh" "redteam.sh" @@ -24,19 +39,73 @@ INSTALLERS=( "extras.sh" ) -LOGFILE="$HOME/osint-install-errors.log" -: > "$LOGFILE" +# Initialize/Wipe Master Error Log +: >"$LOGFILE" + +# Operational Metrics Tracker +START_TIME=$SECONDS +PASSED_MODULES=0 +FAILED_MODULES=0 +declare -ga UNABLE_TO_LOCATE=() + +echo -e "${CYN}[i]${NC} Initializing Master Deployment Engine..." +echo -e "${CYN}[i]${NC} Runtime failures will be aggregated inside: $LOGFILE" for inst in "${INSTALLERS[@]}"; do echo - echo "===========================================" - echo " Running: $inst" - echo "===========================================" - bash "$inst" + echo -e "${BLU}=======================================================${NC}" + echo -e " 🚀 Launching Deployment Segment: ${CYN}$inst${NC}" + echo -e "${BLU}=======================================================${NC}" + + # Defensive File Verification Hook + if [ ! -f "$inst" ]; then + echo -e "${YLW}[~] Skipping:${NC} Module script '$inst' not found in workspace directory." + UNABLE_TO_LOCATE+=("$inst") + FAILED_MODULES=$((FAILED_MODULES + 1)) + echo "ORCHESTRATOR ERROR: File not found: $inst" >> "$LOGFILE" + continue + fi + + # Explicitly grant executable permissions to prevent permission denial traps + chmod +x "$inst" + + # Execute subshell layer. Exporting LOGFILE ensures sub-modules write to the same path. + export LOGFILE + if bash "$inst"; then + PASSED_MODULES=$((PASSED_MODULES + 1)) + else + echo -e "${RED}[✗] Failure warning:${NC} Module $inst returned a non-zero exit status." + FAILED_MODULES=$((FAILED_MODULES + 1)) + echo "ORCHESTRATOR ERROR: Sub-module execution failure status returned from: $inst" >> "$LOGFILE" + fi done +# Calculate execution duration metrics +ELAPSED_DURATION=$((SECONDS - START_TIME)) +MINUTES=$((ELAPSED_DURATION / 60)) +SECONDS_REM=$((ELAPSED_DURATION % 60)) + +# =================================================================== +# Master Compilation Dashboard +# =================================================================== echo -echo "===========================================" -echo " ALL DONE" -echo " Failures (if any) logged to: $LOGFILE" -echo "===========================================" +echo -e "${CYN}=======================================================${NC}" +echo -e " 🎉 GRAND ARCHITECTURE DEPLOYMENT COMPLETE" +echo -e "${CYN}=======================================================${NC}" +echo -e " Total Active Script Modules Checked : $((PASSED_MODULES + FAILED_MODULES))" +echo -e " Successful Module Deployments : ${GRN}$PASSED_MODULES${NC}" +echo -e " Unresolved/Failed Components : ${RED}$FAILED_MODULES${NC}" +echo -e " Total Provisioning Runtime : ${YLW}${MINUTES}m ${SECONDS_REM}s${NC}" +echo -e "${CYN}=======================================================${NC}" + +if [ ${#UNABLE_TO_LOCATE[@]} -gt 0 ]; then + echo -e "${YLW}[!] Missing Components Reminder:${NC} ${UNABLE_TO_LOCATE[*]}" + echo "Ensure all complementary module scripts are checked out into this workspace directory." +fi + +if [ "$FAILED_MODULES" -gt 0 ]; then + echo -e "${RED}[✗] Some installation routines requirements encountered friction.${NC}" + echo -e " Review explicit error codes and stack failures in: ${YLW}$LOGFILE${NC}" +else + echo -e "${GRN}[✓] Core orchestration layers initialized clean with zero root exceptions.${NC}" +fi \ No newline at end of file diff --git a/labs.sh b/labs.sh index e401484..9308585 100644 --- a/labs.sh +++ b/labs.sh @@ -1,7 +1,7 @@ #!/usr/bin/env bash # =================================================================== # 🎓 Training / vulnerable apps -# Part of awesome-osint-arsenal v3.4 +# Part of awesome-osint-arsenal v2.1 # Auto-detects: Kali / Debian / Ubuntu / Parrot / Mint / Pop!_OS / # Arch / Manjaro / EndeavourOS / # Fedora / RHEL / CentOS / Rocky / Alma @@ -9,121 +9,170 @@ # =================================================================== set -uo pipefail -RED="\033[0;31m"; GRN="\033[0;32m"; YLW="\033[1;33m"; BLU="\033[0;34m"; CYN="\033[0;36m"; NC="\033[0m" +RED="\033[0;31m" +GRN="\033[0;32m" +YLW="\033[1;33m" +BLU="\033[0;34m" +CYN="\033[0;36m" +NC="\033[0m" LOGFILE="${LOGFILE:-$HOME/osint-install-errors.log}" -INSTALLED=${INSTALLED:-0}; SKIPPED=${SKIPPED:-0}; FAILED=${FAILED:-0} +INSTALLED=${INSTALLED:-0} +SKIPPED=${SKIPPED:-0} +FAILED=${FAILED:-0} declare -ga FAILED_TOOLS=() -say() { echo -e "${BLU}[*]${NC} $*"; } -ok() { echo -e "${GRN}[✓]${NC} $*"; INSTALLED=$((INSTALLED+1)); } -skip() { echo -e "${YLW}[~]${NC} $*"; SKIPPED=$((SKIPPED+1)); } -fail() { echo -e "${RED}[✗]${NC} $*"; FAILED=$((FAILED+1)); FAILED_TOOLS+=("$1"); echo "FAIL: $*" >> "$LOGFILE"; } +say() { echo -e "${BLU}[*]${NC} $*"; } +ok() { + echo -e "${GRN}[✓]${NC} $*" + INSTALLED=$((INSTALLED + 1)) +} +skip() { + echo -e "${YLW}[~]${NC} $*" + SKIPPED=$((SKIPPED + 1)) +} +fail() { + echo -e "${RED}[✗]${NC} $*" + FAILED=$((FAILED + 1)) + FAILED_TOOLS+=("$1") + echo "FAIL: $*" >>"$LOGFILE" +} require_root() { - if [ "$EUID" -ne 0 ]; then echo "Please run as root: sudo bash $0"; exit 1; fi + if [ "$EUID" -ne 0 ]; then + echo "Please run as root: sudo bash $0" + exit 1 + fi } detect_distro() { - if [ -f /etc/os-release ]; then - . /etc/os-release - case "${ID,,}" in - kali|debian|ubuntu|parrot|raspbian|linuxmint|pop|elementary) PKG="apt" ;; - arch|manjaro|endeavouros|garuda|artix) PKG="pacman" ;; - fedora|rhel|centos|rocky|almalinux|ol) PKG="dnf" ;; - *) PKG="unknown" ;; - esac - else - PKG="unknown" - fi - export PKG - echo -e "${CYN}[i]${NC} Detected package manager: $PKG" - if [ "$PKG" = "unknown" ]; then - echo -e "${YLW}[!]${NC} Unknown distro — git/pip/go installs will work, system-package installs will be skipped." - fi + if [ -f /etc/os-release ]; then + . /etc/os-release + case "${ID,,}" in + kali | debian | ubuntu | parrot | raspbian | linuxmint | pop | elementary) PKG="apt" ;; + arch | manjaro | endeavouros | garuda | artix) PKG="pacman" ;; + fedora | rhel | centos | rocky | almalinux | ol) PKG="dnf" ;; + *) PKG="unknown" ;; + esac + else + PKG="unknown" + fi + export PKG + echo -e "${CYN}[i]${NC} Detected package manager: $PKG" + if [ "$PKG" = "unknown" ]; then + echo -e "${YLW}[!]${NC} Unknown distro — git/pip/go installs will work, system-package installs will be skipped." + fi } pkg_install() { - local pkg="$1" - case "$PKG" in - apt) - if dpkg -s "$pkg" >/dev/null 2>&1; then skip "$pkg already installed"; return; fi - if apt install -y "$pkg" >/dev/null 2>&1; then ok "$pkg (apt)"; else fail "$pkg (apt)"; fi - ;; - pacman) - if pacman -Qi "$pkg" >/dev/null 2>&1; then skip "$pkg already installed"; return; fi - if pacman -S --noconfirm --needed "$pkg" >/dev/null 2>&1; then ok "$pkg (pacman)"; else fail "$pkg (pacman — may not be in repo, try AUR)"; fi - ;; - dnf) - if rpm -q "$pkg" >/dev/null 2>&1; then skip "$pkg already installed"; return; fi - if dnf install -y "$pkg" >/dev/null 2>&1; then ok "$pkg (dnf)"; else fail "$pkg (dnf — may not be in repo)"; fi - ;; - *) - fail "$pkg — unknown package manager, install manually" - ;; - esac + local pkg="$1" + case "$PKG" in + apt) + if dpkg -s "$pkg" >/dev/null 2>&1; then + skip "$pkg already installed" + return + fi + if apt install -y "$pkg" >/dev/null 2>&1; then ok "$pkg (apt)"; else fail "$pkg (apt)"; fi + ;; + pacman) + if pacman -Qi "$pkg" >/dev/null 2>&1; then + skip "$pkg already installed" + return + fi + if pacman -S --noconfirm --needed "$pkg" >/dev/null 2>&1; then ok "$pkg (pacman)"; else fail "$pkg (pacman — may not be in repo, try AUR)"; fi + ;; + dnf) + if rpm -q "$pkg" >/dev/null 2>&1; then + skip "$pkg already installed" + return + fi + if dnf install -y "$pkg" >/dev/null 2>&1; then ok "$pkg (dnf)"; else fail "$pkg (dnf — may not be in repo)"; fi + ;; + *) + fail "$pkg — unknown package manager, install manually" + ;; + esac } install_pip() { - local pkg="$1" - if pip3 show "$pkg" >/dev/null 2>&1; then skip "$pkg (pip) already installed"; return; fi - if pip3 install --break-system-packages "$pkg" >/dev/null 2>&1; then ok "$pkg (pip)"; else fail "$pkg (pip)"; fi + local pkg="$1" + if pip3 show "$pkg" >/dev/null 2>&1; then + skip "$pkg (pip) already installed" + return + fi + if pip3 install --break-system-packages "$pkg" >/dev/null 2>&1; then ok "$pkg (pip)"; else fail "$pkg (pip)"; fi } install_go() { - local mod="$1" name="$2" - if ! command -v go >/dev/null 2>&1; then fail "$name — go not installed"; return; fi - if command -v "$name" >/dev/null 2>&1; then skip "$name already installed"; return; fi - if go install "$mod" >/dev/null 2>&1; then ok "$name (go)"; else fail "$name (go)"; fi + local mod="$1" name="$2" + if ! command -v go >/dev/null 2>&1; then + fail "$name — go not installed" + return + fi + if command -v "$name" >/dev/null 2>&1; then + skip "$name already installed" + return + fi + if go install "$mod" >/dev/null 2>&1; then ok "$name (go)"; else fail "$name (go)"; fi } install_git() { - local repo="$1" dst="$2" - mkdir -p /opt/osint-arsenal - if [ -d "/opt/osint-arsenal/$dst" ]; then skip "$dst already cloned"; return; fi - if git clone --depth=1 "$repo" "/opt/osint-arsenal/$dst" >/dev/null 2>&1; then ok "$dst (git)"; else fail "$dst (git)"; fi + local repo="$1" dst="$2" + mkdir -p /opt/osint-arsenal + if [ -d "/opt/osint-arsenal/$dst" ]; then + skip "$dst already cloned" + return + fi + if git clone --depth=1 "$repo" "/opt/osint-arsenal/$dst" >/dev/null 2>&1; then ok "$dst (git)"; else fail "$dst (git)"; fi } install_docker() { - local image="$1" name="$2" - if ! command -v docker >/dev/null 2>&1; then fail "$name — docker not installed"; return; fi - if docker image inspect "$image" >/dev/null 2>&1; then skip "$name (docker) already pulled"; return; fi - if docker pull "$image" >/dev/null 2>&1; then ok "$name (docker)"; else fail "$name (docker)"; fi + local image="$1" name="$2" + if ! command -v docker >/dev/null 2>&1; then + fail "$name — docker not installed" + return + fi + if docker image inspect "$image" >/dev/null 2>&1; then + skip "$name (docker) already pulled" + return + fi + if docker pull "$image" >/dev/null 2>&1; then ok "$name (docker)"; else fail "$name (docker)"; fi } bootstrap_basics() { - case "$PKG" in - apt) - apt update -y >/dev/null 2>&1 || true - apt install -y python3 python3-pip git curl wget golang-go >/dev/null 2>&1 || true - ;; - pacman) - pacman -Sy --noconfirm >/dev/null 2>&1 || true - pacman -S --noconfirm --needed python python-pip git curl wget go >/dev/null 2>&1 || true - ;; - dnf) - dnf install -y python3 python3-pip git curl wget golang >/dev/null 2>&1 || true - ;; - esac + case "$PKG" in + apt) + apt update -y >/dev/null 2>&1 || true + apt install -y python3 python3-pip git curl wget golang-go >/dev/null 2>&1 || true + ;; + pacman) + pacman -Sy --noconfirm >/dev/null 2>&1 || true + pacman -S --noconfirm --needed python python-pip git curl wget go >/dev/null 2>&1 || true + ;; + dnf) + dnf install -y python3 python3-pip git curl wget golang >/dev/null 2>&1 || true + ;; + esac } print_summary() { - echo - echo "=============================================" - echo -e " Installed: ${GRN}$INSTALLED${NC}" - echo -e " Skipped: ${YLW}$SKIPPED${NC}" - echo -e " Failed: ${RED}$FAILED${NC}" - echo "=============================================" - if (( FAILED > 0 )); then - echo -e "${RED}Failed tools:${NC} ${FAILED_TOOLS[@]:-}" - echo "See $LOGFILE for details." - fi + echo + echo "=============================================" + echo -e " Installed: ${GRN}$INSTALLED${NC}" + echo -e " Skipped: ${YLW}$SKIPPED${NC}" + echo -e " Failed: ${RED}$FAILED${NC}" + echo "=============================================" + if ((FAILED > 0)); then + echo -e "${RED}Failed tools:${NC} ${FAILED_TOOLS[@]:-}" + echo "See $LOGFILE for details." + fi } require_root detect_distro bootstrap_basics -echo; say "Installing: 🎓 Training, Labs & CTF (4 tools)" -install_git https://github.com/digininja/DVWA.git DVWA # DVWA -install_docker bkimminich/juice-shop 'OWASP Juice Shop' # OWASP Juice Shop -install_docker webgoat/webgoat 'OWASP WebGoat' # OWASP WebGoat -install_git https://github.com/practisec/pwnedhub.git pwnedhub # PwnedHub +echo +say "Installing: 🎓 Training, Labs & CTF (4 tools)" +install_git https://github.com/digininja/DVWA.git DVWA # DVWA +install_docker bkimminich/juice-shop 'OWASP Juice Shop' # OWASP Juice Shop +install_docker webgoat/webgoat 'OWASP WebGoat' # OWASP WebGoat +install_git https://github.com/practisec/pwnedhub.git pwnedhub # PwnedHub print_summary diff --git a/osint.sh b/osint.sh index 98f150f..bc82b0c 100644 --- a/osint.sh +++ b/osint.sh @@ -1,7 +1,7 @@ #!/usr/bin/env bash # =================================================================== # 🔍 OSINT toolkit -# Part of awesome-osint-arsenal v3.4 +# Part of awesome-osint-arsenal v2.1 # Auto-detects: Kali / Debian / Ubuntu / Parrot / Mint / Pop!_OS / # Arch / Manjaro / EndeavourOS / # Fedora / RHEL / CentOS / Rocky / Alma @@ -9,352 +9,415 @@ # =================================================================== set -uo pipefail -RED="\033[0;31m"; GRN="\033[0;32m"; YLW="\033[1;33m"; BLU="\033[0;34m"; CYN="\033[0;36m"; NC="\033[0m" +RED="\033[0;31m" +GRN="\033[0;32m" +YLW="\033[1;33m" +BLU="\033[0;34m" +CYN="\033[0;36m" +NC="\033[0m" LOGFILE="${LOGFILE:-$HOME/osint-install-errors.log}" -INSTALLED=${INSTALLED:-0}; SKIPPED=${SKIPPED:-0}; FAILED=${FAILED:-0} +INSTALLED=${INSTALLED:-0} +SKIPPED=${SKIPPED:-0} +FAILED=${FAILED:-0} declare -ga FAILED_TOOLS=() -say() { echo -e "${BLU}[*]${NC} $*"; } -ok() { echo -e "${GRN}[✓]${NC} $*"; INSTALLED=$((INSTALLED+1)); } -skip() { echo -e "${YLW}[~]${NC} $*"; SKIPPED=$((SKIPPED+1)); } -fail() { echo -e "${RED}[✗]${NC} $*"; FAILED=$((FAILED+1)); FAILED_TOOLS+=("$1"); echo "FAIL: $*" >> "$LOGFILE"; } +say() { echo -e "${BLU}[*]${NC} $*"; } +ok() { + echo -e "${GRN}[✓]${NC} $*" + INSTALLED=$((INSTALLED + 1)) +} +skip() { + echo -e "${YLW}[~]${NC} $*" + SKIPPED=$((SKIPPED + 1)) +} +fail() { + echo -e "${RED}[✗]${NC} $*" + FAILED=$((FAILED + 1)) + FAILED_TOOLS+=("$1") + echo "FAIL: $*" >>"$LOGFILE" +} require_root() { - if [ "$EUID" -ne 0 ]; then echo "Please run as root: sudo bash $0"; exit 1; fi + if [ "$EUID" -ne 0 ]; then + echo "Please run as root: sudo bash $0" + exit 1 + fi } detect_distro() { - if [ -f /etc/os-release ]; then - . /etc/os-release - case "${ID,,}" in - kali|debian|ubuntu|parrot|raspbian|linuxmint|pop|elementary) PKG="apt" ;; - arch|manjaro|endeavouros|garuda|artix) PKG="pacman" ;; - fedora|rhel|centos|rocky|almalinux|ol) PKG="dnf" ;; - *) PKG="unknown" ;; - esac - else - PKG="unknown" - fi - export PKG - echo -e "${CYN}[i]${NC} Detected package manager: $PKG" - if [ "$PKG" = "unknown" ]; then - echo -e "${YLW}[!]${NC} Unknown distro — git/pip/go installs will work, system-package installs will be skipped." - fi + if [ -f /etc/os-release ]; then + . /etc/os-release + case "${ID,,}" in + kali | debian | ubuntu | parrot | raspbian | linuxmint | pop | elementary) PKG="apt" ;; + arch | manjaro | endeavouros | garuda | artix) PKG="pacman" ;; + fedora | rhel | centos | rocky | almalinux | ol) PKG="dnf" ;; + *) PKG="unknown" ;; + esac + else + PKG="unknown" + fi + export PKG + echo -e "${CYN}[i]${NC} Detected package manager: $PKG" + if [ "$PKG" = "unknown" ]; then + echo -e "${YLW}[!]${NC} Unknown distro — git/pip/go installs will work, system-package installs will be skipped." + fi } pkg_install() { - local pkg="$1" - case "$PKG" in - apt) - if dpkg -s "$pkg" >/dev/null 2>&1; then skip "$pkg already installed"; return; fi - if apt install -y "$pkg" >/dev/null 2>&1; then ok "$pkg (apt)"; else fail "$pkg (apt)"; fi - ;; - pacman) - if pacman -Qi "$pkg" >/dev/null 2>&1; then skip "$pkg already installed"; return; fi - if pacman -S --noconfirm --needed "$pkg" >/dev/null 2>&1; then ok "$pkg (pacman)"; else fail "$pkg (pacman — may not be in repo, try AUR)"; fi - ;; - dnf) - if rpm -q "$pkg" >/dev/null 2>&1; then skip "$pkg already installed"; return; fi - if dnf install -y "$pkg" >/dev/null 2>&1; then ok "$pkg (dnf)"; else fail "$pkg (dnf — may not be in repo)"; fi - ;; - *) - fail "$pkg — unknown package manager, install manually" - ;; - esac + local pkg="$1" + case "$PKG" in + apt) + if dpkg -s "$pkg" >/dev/null 2>&1; then + skip "$pkg already installed" + return + fi + if apt install -y "$pkg" >/dev/null 2>&1; then ok "$pkg (apt)"; else fail "$pkg (apt)"; fi + ;; + pacman) + if pacman -Qi "$pkg" >/dev/null 2>&1; then + skip "$pkg already installed" + return + fi + if pacman -S --noconfirm --needed "$pkg" >/dev/null 2>&1; then ok "$pkg (pacman)"; else fail "$pkg (pacman — may not be in repo, try AUR)"; fi + ;; + dnf) + if rpm -q "$pkg" >/dev/null 2>&1; then + skip "$pkg already installed" + return + fi + if dnf install -y "$pkg" >/dev/null 2>&1; then ok "$pkg (dnf)"; else fail "$pkg (dnf — may not be in repo)"; fi + ;; + *) + fail "$pkg — unknown package manager, install manually" + ;; + esac } install_pip() { - local pkg="$1" - if pip3 show "$pkg" >/dev/null 2>&1; then skip "$pkg (pip) already installed"; return; fi - if pip3 install --break-system-packages "$pkg" >/dev/null 2>&1; then ok "$pkg (pip)"; else fail "$pkg (pip)"; fi + local pkg="$1" + if pip3 show "$pkg" >/dev/null 2>&1; then + skip "$pkg (pip) already installed" + return + fi + if pip3 install --break-system-packages "$pkg" >/dev/null 2>&1; then ok "$pkg (pip)"; else fail "$pkg (pip)"; fi } install_go() { - local mod="$1" name="$2" - if ! command -v go >/dev/null 2>&1; then fail "$name — go not installed"; return; fi - if command -v "$name" >/dev/null 2>&1; then skip "$name already installed"; return; fi - if go install "$mod" >/dev/null 2>&1; then ok "$name (go)"; else fail "$name (go)"; fi + local mod="$1" name="$2" + if ! command -v go >/dev/null 2>&1; then + fail "$name — go not installed" + return + fi + if command -v "$name" >/dev/null 2>&1; then + skip "$name already installed" + return + fi + if go install "$mod" >/dev/null 2>&1; then ok "$name (go)"; else fail "$name (go)"; fi } install_git() { - local repo="$1" dst="$2" - mkdir -p /opt/osint-arsenal - if [ -d "/opt/osint-arsenal/$dst" ]; then skip "$dst already cloned"; return; fi - if git clone --depth=1 "$repo" "/opt/osint-arsenal/$dst" >/dev/null 2>&1; then ok "$dst (git)"; else fail "$dst (git)"; fi + local repo="$1" dst="$2" + mkdir -p /opt/osint-arsenal + if [ -d "/opt/osint-arsenal/$dst" ]; then + skip "$dst already cloned" + return + fi + if git clone --depth=1 "$repo" "/opt/osint-arsenal/$dst" >/dev/null 2>&1; then ok "$dst (git)"; else fail "$dst (git)"; fi } install_docker() { - local image="$1" name="$2" - if ! command -v docker >/dev/null 2>&1; then fail "$name — docker not installed"; return; fi - if docker image inspect "$image" >/dev/null 2>&1; then skip "$name (docker) already pulled"; return; fi - if docker pull "$image" >/dev/null 2>&1; then ok "$name (docker)"; else fail "$name (docker)"; fi + local image="$1" name="$2" + if ! command -v docker >/dev/null 2>&1; then + fail "$name — docker not installed" + return + fi + if docker image inspect "$image" >/dev/null 2>&1; then + skip "$name (docker) already pulled" + return + fi + if docker pull "$image" >/dev/null 2>&1; then ok "$name (docker)"; else fail "$name (docker)"; fi } bootstrap_basics() { - case "$PKG" in - apt) - apt update -y >/dev/null 2>&1 || true - apt install -y python3 python3-pip git curl wget golang-go >/dev/null 2>&1 || true - ;; - pacman) - pacman -Sy --noconfirm >/dev/null 2>&1 || true - pacman -S --noconfirm --needed python python-pip git curl wget go >/dev/null 2>&1 || true - ;; - dnf) - dnf install -y python3 python3-pip git curl wget golang >/dev/null 2>&1 || true - ;; - esac + case "$PKG" in + apt) + apt update -y >/dev/null 2>&1 || true + apt install -y python3 python3-pip git curl wget golang-go >/dev/null 2>&1 || true + ;; + pacman) + pacman -Sy --noconfirm >/dev/null 2>&1 || true + pacman -S --noconfirm --needed python python-pip git curl wget go >/dev/null 2>&1 || true + ;; + dnf) + dnf install -y python3 python3-pip git curl wget golang >/dev/null 2>&1 || true + ;; + esac } print_summary() { - echo - echo "=============================================" - echo -e " Installed: ${GRN}$INSTALLED${NC}" - echo -e " Skipped: ${YLW}$SKIPPED${NC}" - echo -e " Failed: ${RED}$FAILED${NC}" - echo "=============================================" - if (( FAILED > 0 )); then - echo -e "${RED}Failed tools:${NC} ${FAILED_TOOLS[@]:-}" - echo "See $LOGFILE for details." - fi + echo + echo "=============================================" + echo -e " Installed: ${GRN}$INSTALLED${NC}" + echo -e " Skipped: ${YLW}$SKIPPED${NC}" + echo -e " Failed: ${RED}$FAILED${NC}" + echo "=============================================" + if ((FAILED > 0)); then + echo -e "${RED}Failed tools:${NC} ${FAILED_TOOLS[@]:-}" + echo "See $LOGFILE for details." + fi } require_root detect_distro bootstrap_basics -echo; say "Installing: 👤 Username & Social Media OSINT (33 tools)" -install_git https://github.com/ArthurHeitmann/arctic_shift.git arctic_shift # Arctic Shift -install_pip blackbird-osint # Blackbird -install_git https://github.com/misiektoja/github_monitor.git github_monitor # github_monitor -install_pip gitrecon # Gitrecon -install_go github.com/ibnaleem/gosearch@latest gosearch # GoSearch -install_pip holehe # Holehe -install_git https://github.com/misiektoja/instagram_monitor.git instagram_monitor # instagram_monitor -install_pip instaloader # Instaloader -install_go github.com/tdh8316/investigo@latest investigo # Investigo -install_git https://github.com/l4rm4nd/LinkedInDumper.git LinkedInDumper # LinkedInDumper -install_pip maigret # Maigret -install_pip nexfil # NExfil -install_git https://github.com/Datalux/Osintgram.git Osintgram # Osintgram -install_pip osrframework # OSRFramework -install_git https://github.com/seekr-osint/seekr.git seekr # Seekr -install_pip sherlock-project # Sherlock -install_pip snoop # Snoop -install_pip snscrape # snscrape -install_pip social-analyzer # Social Analyzer -install_pip socialscan # socialscan -install_pip socid-extractor # Socid-extractor -install_git https://github.com/tejado/telegram-nearby-map.git telegram-nearby-map # Telegram Nearby Map -install_git https://github.com/Alb-310/TeleGram-OSINTer.git TeleGram-OSINTer # TeleGram-OSINTer -install_pip telepathy # Telepathy -install_git https://github.com/sockysec/Telerecon.git Telerecon # Telerecon -install_pip telethon # Telethon -install_git https://github.com/eth0izzle/the-endorser.git the-endorser # the-endorser -install_git https://github.com/drego85/tosint.git tosint # TOsint -install_pip toutatis # Toutatis -install_pip twayback # Twayback -install_pip twint # Twint -install_git https://github.com/kaifcodec/user-scanner.git user-scanner # user-scanner -install_git https://github.com/wishihab/userrecon.git userrecon # UserRecon +echo +say "Installing: 👤 Username & Social Media OSINT (33 tools)" +install_git https://github.com/ArthurHeitmann/arctic_shift.git arctic_shift # Arctic Shift +install_pip blackbird-osint # Blackbird +install_git https://github.com/misiektoja/github_monitor.git github_monitor # github_monitor +install_pip gitrecon # Gitrecon +install_go github.com/ibnaleem/gosearch@latest gosearch # GoSearch +install_pip holehe # Holehe +install_git https://github.com/misiektoja/instagram_monitor.git instagram_monitor # instagram_monitor +install_pip instaloader # Instaloader +install_go github.com/tdh8316/investigo@latest investigo # Investigo +install_git https://github.com/l4rm4nd/LinkedInDumper.git LinkedInDumper # LinkedInDumper +install_pip maigret # Maigret +install_pip nexfil # NExfil +install_git https://github.com/Datalux/Osintgram.git Osintgram # Osintgram +install_pip osrframework # OSRFramework +install_git https://github.com/seekr-osint/seekr.git seekr # Seekr +install_pip sherlock-project # Sherlock +install_pip snoop # Snoop +install_pip snscrape # snscrape +install_pip social-analyzer # Social Analyzer +install_pip socialscan # socialscan +install_pip socid-extractor # Socid-extractor +install_git https://github.com/tejado/telegram-nearby-map.git telegram-nearby-map # Telegram Nearby Map +install_git https://github.com/Alb-310/TeleGram-OSINTer.git TeleGram-OSINTer # TeleGram-OSINTer +install_pip telepathy # Telepathy +install_git https://github.com/sockysec/Telerecon.git Telerecon # Telerecon +install_pip telethon # Telethon +install_git https://github.com/eth0izzle/the-endorser.git the-endorser # the-endorser +install_git https://github.com/drego85/tosint.git tosint # TOsint +install_pip toutatis # Toutatis +install_pip twayback # Twayback +install_pip twint # Twint +install_git https://github.com/kaifcodec/user-scanner.git user-scanner # user-scanner +install_git https://github.com/wishihab/userrecon.git userrecon # UserRecon -echo; say "Installing: 📧 Email & Phone Intelligence (13 tools)" -install_git https://github.com/keraattin/EmailAnalyzer.git EmailAnalyzer # EmailAnalyzer -install_git https://github.com/Giritharram/EmailHeader-Analyzer-CLI-Python.git EmailHeader-Analyzer-CLI-Python # EmailHeader-Analyzer -install_pip ghunt # GHunt -install_pip h8mail # h8mail -install_pip ignorant # Ignorant -install_git https://github.com/m4ll0k/Infoga.git Infoga # Infoga -install_git https://github.com/akajhon/MailHeaderDetective.git MailHeaderDetective # MailHeaderDetective -install_pip mailto-analyzer # mailtoanalyzer -install_pip phoneinfoga # PhoneInfoga -install_git https://github.com/aerosol-can/PhoneSploit.git PhoneSploit # PhoneSploit -install_git https://github.com/nettitude/Prowl.git Prowl # Prowl -install_pip theHarvester # theHarvester -install_git https://github.com/z0m31en7/WhatMail.git WhatMail # WhatMail +echo +say "Installing: 📧 Email & Phone Intelligence (13 tools)" +install_git https://github.com/keraattin/EmailAnalyzer.git EmailAnalyzer # EmailAnalyzer +install_git https://github.com/Giritharram/EmailHeader-Analyzer-CLI-Python.git EmailHeader-Analyzer-CLI-Python # EmailHeader-Analyzer +install_pip ghunt # GHunt +install_pip h8mail # h8mail +install_pip ignorant # Ignorant +install_git https://github.com/m4ll0k/Infoga.git Infoga # Infoga +install_git https://github.com/akajhon/MailHeaderDetective.git MailHeaderDetective # MailHeaderDetective +install_pip mailto-analyzer # mailtoanalyzer +install_pip phoneinfoga # PhoneInfoga +install_git https://github.com/aerosol-can/PhoneSploit.git PhoneSploit # PhoneSploit +install_git https://github.com/nettitude/Prowl.git Prowl # Prowl +install_pip theHarvester # theHarvester +install_git https://github.com/z0m31en7/WhatMail.git WhatMail # WhatMail -echo; say "Installing: 🌐 Domain & IP / Network Recon (68 tools)" -pkg_install aircrack-ng # Aircrack-ng -install_pip py-altdns # altdns -install_go github.com/owasp-amass/amass/v4/...@master ... # Amass -install_go github.com/tomnomnom/anew@latest anew # anew -install_go github.com/michenriksen/aquatone@latest aquatone # Aquatone -install_go github.com/tomnomnom/assetfinder@latest assetfinder # assetfinder -install_pip git # AutoRecon -install_git https://github.com/pry0cc/axiom.git axiom # Axiom -install_pip bbot # BBOT -pkg_install bettercap # Bettercap -install_git https://github.com/commixproject/commix.git commix # Commix -pkg_install dirb # Dirb -install_pip dirsearch # dirsearch -install_pip dnsrecon # dnsrecon -install_pip dnstwist # dnstwist -pkg_install ettercap-common # Ettercap -pkg_install fern-wifi-cracker # Fern Wifi Cracker -pkg_install feroxbuster # Feroxbuster -install_go github.com/ffuf/ffuf/v2@latest v2 # ffuf -install_git https://github.com/Findomain/Findomain.git Findomain # Findomain -install_git https://github.com/FluxionNetwork/fluxion.git fluxion # Fluxion -install_go github.com/lc/gau/v2/cmd/gau@latest gau # gau (getallurls) -install_go github.com/tomnomnom/gf@latest gf # gf -install_go github.com/OJ/gobuster/v3@latest v3 # Gobuster -install_git https://github.com/jseidl/GoldenEye.git GoldenEye # GoldenEye -install_go github.com/jaeles-project/gospider@latest gospider # GoSpider -install_go github.com/sensepost/gowitness@latest gowitness # gowitness -install_go github.com/hakluke/hakrawler@latest hakrawler # hakrawler -pkg_install hcxtools # hcxtools -install_go github.com/tomnomnom/httprobe@latest httprobe # httprobe -install_go github.com/projectdiscovery/httpx/cmd/httpx@latest httpx # HTTPx -install_git https://github.com/codingo/Interlace.git Interlace # Interlace -install_git https://github.com/maldevel/IPGeoLocation.git IPGeoLocation # IPGeoLocation -install_git https://github.com/Threezh1/JSFinder.git JSFinder # JSFinder -install_go github.com/projectdiscovery/katana/cmd/katana@latest katana # Katana -pkg_install kismet # Kismet -install_git https://github.com/guelfoweb/knock.git knock # knock -install_pip knock-subdomains # Knockpy -install_git https://github.com/GerbenJavado/LinkFinder.git LinkFinder # LinkFinder -pkg_install masscan # Masscan -install_git https://github.com/blechschmidt/massdns.git massdns # massdns -install_go github.com/tomnomnom/meg@latest meg # meg -pkg_install metasploit-framework # Metasploit -install_go github.com/projectdiscovery/naabu/v2/cmd/naabu@latest naabu # Naabu -pkg_install netcat-openbsd # Netcat -pkg_install nikto # Nikto -pkg_install nmap # Nmap -install_go github.com/projectdiscovery/nuclei/v3/cmd/nuclei@latest nuclei # Nuclei -pkg_install openvas # OpenVAS -install_pip paramspider # ParamSpider -install_git https://github.com/s0md3v/Photon.git Photon # Photon -pkg_install reaver # Reaver -install_git https://github.com/six2dez/reconftw.git reconftw # reconFTW -install_git https://github.com/RustScan/RustScan.git RustScan # RustScan -install_pip shodan # Shodan -install_go github.com/s0md3v/smap/cmd/smap@latest smap # smap -install_git https://github.com/1N3/Sn1per.git Sn1per # Sn1per -pkg_install sqlmap # SQLMap -install_go github.com/projectdiscovery/subfinder/v2/cmd/subfinder@latest subfinder # Subfinder -install_pip sublist3r # Sublist3r -pkg_install tcpdump # tcpdump -install_git https://github.com/urbanadventurer/urlcrazy.git urlcrazy # URLCrazy -install_go github.com/tomnomnom/waybackurls@latest waybackurls # waybackurls -install_git https://github.com/yan4ikyt/webhack.git webhack # WebHack -install_pip wfuzz # Wfuzz -pkg_install whatweb # Whatweb -pkg_install wifite # Wifite -pkg_install wireshark # Wireshark +echo +say "Installing: 🌐 Domain & IP / Network Recon (68 tools)" +pkg_install aircrack-ng # Aircrack-ng +install_pip py-altdns # altdns +install_go github.com/owasp-amass/amass/v4/...@master ... # Amass +install_go github.com/tomnomnom/anew@latest anew # anew +install_go github.com/michenriksen/aquatone@latest aquatone # Aquatone +install_go github.com/tomnomnom/assetfinder@latest assetfinder # assetfinder +install_pip git # AutoRecon +install_git https://github.com/pry0cc/axiom.git axiom # Axiom +install_pip bbot # BBOT +pkg_install bettercap # Bettercap +install_git https://github.com/commixproject/commix.git commix # Commix +pkg_install dirb # Dirb +install_pip dirsearch # dirsearch +install_pip dnsrecon # dnsrecon +install_pip dnstwist # dnstwist +pkg_install ettercap-common # Ettercap +pkg_install fern-wifi-cracker # Fern Wifi Cracker +pkg_install feroxbuster # Feroxbuster +install_go github.com/ffuf/ffuf/v2@latest v2 # ffuf +install_git https://github.com/Findomain/Findomain.git Findomain # Findomain +install_git https://github.com/FluxionNetwork/fluxion.git fluxion # Fluxion +install_go github.com/lc/gau/v2/cmd/gau@latest gau # gau (getallurls) +install_go github.com/tomnomnom/gf@latest gf # gf +install_go github.com/OJ/gobuster/v3@latest v3 # Gobuster +install_git https://github.com/jseidl/GoldenEye.git GoldenEye # GoldenEye +install_go github.com/jaeles-project/gospider@latest gospider # GoSpider +install_go github.com/sensepost/gowitness@latest gowitness # gowitness +install_go github.com/hakluke/hakrawler@latest hakrawler # hakrawler +pkg_install hcxtools # hcxtools +install_go github.com/tomnomnom/httprobe@latest httprobe # httprobe +install_go github.com/projectdiscovery/httpx/cmd/httpx@latest httpx # HTTPx +install_git https://github.com/codingo/Interlace.git Interlace # Interlace +install_git https://github.com/maldevel/IPGeoLocation.git IPGeoLocation # IPGeoLocation +install_git https://github.com/Threezh1/JSFinder.git JSFinder # JSFinder +install_go github.com/projectdiscovery/katana/cmd/katana@latest katana # Katana +pkg_install kismet # Kismet +install_git https://github.com/guelfoweb/knock.git knock # knock +install_pip knock-subdomains # Knockpy +install_git https://github.com/GerbenJavado/LinkFinder.git LinkFinder # LinkFinder +pkg_install masscan # Masscan +install_git https://github.com/blechschmidt/massdns.git massdns # massdns +install_go github.com/tomnomnom/meg@latest meg # meg +pkg_install metasploit-framework # Metasploit +install_go github.com/projectdiscovery/naabu/v2/cmd/naabu@latest naabu # Naabu +pkg_install netcat-openbsd # Netcat +pkg_install nikto # Nikto +pkg_install nmap # Nmap +install_go github.com/projectdiscovery/nuclei/v3/cmd/nuclei@latest nuclei # Nuclei +pkg_install openvas # OpenVAS +install_pip paramspider # ParamSpider +install_git https://github.com/s0md3v/Photon.git Photon # Photon +pkg_install reaver # Reaver +install_git https://github.com/six2dez/reconftw.git reconftw # reconFTW +install_git https://github.com/RustScan/RustScan.git RustScan # RustScan +install_pip shodan # Shodan +install_go github.com/s0md3v/smap/cmd/smap@latest smap # smap +install_git https://github.com/1N3/Sn1per.git Sn1per # Sn1per +pkg_install sqlmap # SQLMap +install_go github.com/projectdiscovery/subfinder/v2/cmd/subfinder@latest subfinder # Subfinder +install_pip sublist3r # Sublist3r +pkg_install tcpdump # tcpdump +install_git https://github.com/urbanadventurer/urlcrazy.git urlcrazy # URLCrazy +install_go github.com/tomnomnom/waybackurls@latest waybackurls # waybackurls +install_git https://github.com/yan4ikyt/webhack.git webhack # WebHack +install_pip wfuzz # Wfuzz +pkg_install whatweb # Whatweb +pkg_install wifite # Wifite +pkg_install wireshark # Wireshark -echo; say "Installing: 🖼️ Image & Facial Recognition (6 tools)" -install_pip deepface # DeepFace -install_git https://github.com/beurtschipper/Depix.git Depix # Depix -pkg_install libimage-exiftool-perl # ExifTool -install_pip face_recognition # facerecognition -install_git https://github.com/ElevenPaths/FOCA.git FOCA # FOCA -install_git https://github.com/GuidoBartoli/sherloq.git sherloq # Sherloq +echo +say "Installing: 🖼️ Image & Facial Recognition (6 tools)" +install_pip deepface # DeepFace +install_git https://github.com/beurtschipper/Depix.git Depix # Depix +pkg_install libimage-exiftool-perl # ExifTool +install_pip face_recognition # facerecognition +install_git https://github.com/ElevenPaths/FOCA.git FOCA # FOCA +install_git https://github.com/GuidoBartoli/sherloq.git sherloq # Sherloq -echo; say "Installing: 🕶️ Dark Web & Tor Intelligence (5 tools)" +echo +say "Installing: 🕶️ Dark Web & Tor Intelligence (5 tools)" install_git https://github.com/itsmehacker/DarkScrape.git DarkScrape # DarkScrape -install_go github.com/s-rah/onionscan@latest onionscan # OnionScan -install_pip onionsearch # OnionSearch +install_go github.com/s-rah/onionscan@latest onionscan # OnionScan +install_pip onionsearch # OnionSearch install_git https://github.com/SharadKumar97/OSINT-SPY.git OSINT-SPY # OSINT-SPY -install_git https://github.com/githacktools/TorghostNG.git TorghostNG # TorghostNG +install_git https://github.com/githacktools/TorghostNG.git TorghostNG # TorghostNG -echo; say "Installing: 💥 Data Breach & Leak Detection (11 tools)" -pkg_install cewl # CeWL -pkg_install crunch # Crunch -install_git https://github.com/Mebus/cupp.git cupp # Cupp -pkg_install hashcat # Hashcat -pkg_install hydra # Hydra -pkg_install john # John the Ripper -install_git https://github.com/AlessandroZ/LaZagne.git LaZagne # LaZagne -pkg_install medusa # Medusa -install_git https://github.com/gentilkiwi/mimikatz.git mimikatz # Mimikatz -install_git https://github.com/lgandx/Responder.git Responder # Responder -install_git https://github.com/danielmiessler/SecLists.git SecLists # SecLists +echo +say "Installing: 💥 Data Breach & Leak Detection (11 tools)" +pkg_install cewl # CeWL +pkg_install crunch # Crunch +install_git https://github.com/Mebus/cupp.git cupp # Cupp +pkg_install hashcat # Hashcat +pkg_install hydra # Hydra +pkg_install john # John the Ripper +install_git https://github.com/AlessandroZ/LaZagne.git LaZagne # LaZagne +pkg_install medusa # Medusa +install_git https://github.com/gentilkiwi/mimikatz.git mimikatz # Mimikatz +install_git https://github.com/lgandx/Responder.git Responder # Responder +install_git https://github.com/danielmiessler/SecLists.git SecLists # SecLists -echo; say "Installing: 🏢 Company & Business Intel (2 tools)" -install_pip opencorporates # opencorporates-cli -install_git https://github.com/s0md3v/Orbit.git Orbit # Orbit +echo +say "Installing: 🏢 Company & Business Intel (2 tools)" +install_pip opencorporates # opencorporates-cli +install_git https://github.com/s0md3v/Orbit.git Orbit # Orbit -echo; say "Installing: ₿ Cryptocurrency & Blockchain (1 tools)" -install_pip etherscan-python # etherscan-py +echo +say "Installing: ₿ Cryptocurrency & Blockchain (1 tools)" +install_pip etherscan-python # etherscan-py -echo; say "Installing: 🦠 Malware & Threat Intelligence (2 tools)" -install_git https://github.com/MISP/MISP.git MISP # MISP -pkg_install yara # YARA +echo +say "Installing: 🦠 Malware & Threat Intelligence (2 tools)" +install_git https://github.com/MISP/MISP.git MISP # MISP +pkg_install yara # YARA -echo; say "Installing: 🔍 Search & Dorking Tools (6 tools)" -install_pip censys # Censys CLI -install_git https://github.com/jgor/dork-cli.git dork-cli # dork-cli -install_git https://github.com/m3n0sd0n4ld/GooFuzz.git GooFuzz # GooFuzz -install_git https://github.com/opsdisk/pagodo.git pagodo # Pagodo -install_pip shodan # Shodan CLI -install_go github.com/projectdiscovery/uncover/cmd/uncover@latest uncover # uncover +echo +say "Installing: 🔍 Search & Dorking Tools (6 tools)" +install_pip censys # Censys CLI +install_git https://github.com/jgor/dork-cli.git dork-cli # dork-cli +install_git https://github.com/m3n0sd0n4ld/GooFuzz.git GooFuzz # GooFuzz +install_git https://github.com/opsdisk/pagodo.git pagodo # Pagodo +install_pip shodan # Shodan CLI +install_go github.com/projectdiscovery/uncover/cmd/uncover@latest uncover # uncover -echo; say "Installing: 📄 Document & Metadata Analysis (10 tools)" -pkg_install autopsy # Autopsy -pkg_install binwalk # Binwalk -pkg_install bulk-extractor # Bulk Extractor -pkg_install foremost # Foremost -install_go github.com/tillson/git-hound@latest git-hound # git-hound -install_go github.com/gitleaks/gitleaks/v8@latest v8 # gitleaks -install_pip metagoofil # Metagoofil -pkg_install scalpel # Scalpel -install_pip volatility3 # Volatility -install_pip xeuledoc # XeuleDoc +echo +say "Installing: 📄 Document & Metadata Analysis (10 tools)" +pkg_install autopsy # Autopsy +pkg_install binwalk # Binwalk +pkg_install bulk-extractor # Bulk Extractor +pkg_install foremost # Foremost +install_go github.com/tillson/git-hound@latest git-hound # git-hound +install_go github.com/gitleaks/gitleaks/v8@latest v8 # gitleaks +install_pip metagoofil # Metagoofil +pkg_install scalpel # Scalpel +install_pip volatility3 # Volatility +install_pip xeuledoc # XeuleDoc -echo; say "Installing: 🧑 People & Identity OSINT (16 tools)" -install_git https://github.com/Ignitetch/AdvPhishing.git AdvPhishing # AdvPhishing -install_git https://github.com/An0nUD4Y/blackeye.git blackeye # BlackEye -install_pip crosslinked # CrossLinked -install_git https://github.com/daprofiler/DaProfiler.git DaProfiler # DaProfiler -install_go github.com/kgretzky/evilginx2@latest evilginx2 # Evilginx2 -install_git https://github.com/initstring/linkedin2username.git linkedin2username # linkedin2username -install_go github.com/drk1wi/Modlishka@latest Modlishka # Modlishka -install_git https://github.com/Lucksi/Mr.Holmes.git Mr.Holmes # Mr.Holmes -install_git https://github.com/htr-tech/nexphisher.git nexphisher # NexPhisher -install_git https://github.com/thewhiteh4t/seeker.git seeker # Seeker -pkg_install set # SET (Social Engineering Toolkit) -install_git https://github.com/UndeadSec/SocialFish.git SocialFish # SocialFish -install_git https://github.com/ultrasecurity/Storm-Breaker.git Storm-Breaker # Storm-Breaker -install_git https://github.com/PerezMascato/URLCADIZ.git URLCADIZ # URLCADIZ -install_pip zehef # Zehef -install_git https://github.com/htr-tech/zphisher.git zphisher # Zphisher +echo +say "Installing: 🧑 People & Identity OSINT (16 tools)" +install_git https://github.com/Ignitetch/AdvPhishing.git AdvPhishing # AdvPhishing +install_git https://github.com/An0nUD4Y/blackeye.git blackeye # BlackEye +install_pip crosslinked # CrossLinked +install_git https://github.com/daprofiler/DaProfiler.git DaProfiler # DaProfiler +install_go github.com/kgretzky/evilginx2@latest evilginx2 # Evilginx2 +install_git https://github.com/initstring/linkedin2username.git linkedin2username # linkedin2username +install_go github.com/drk1wi/Modlishka@latest Modlishka # Modlishka +install_git https://github.com/Lucksi/Mr.Holmes.git Mr.Holmes # Mr.Holmes +install_git https://github.com/htr-tech/nexphisher.git nexphisher # NexPhisher +install_git https://github.com/thewhiteh4t/seeker.git seeker # Seeker +pkg_install set # SET (Social Engineering Toolkit) +install_git https://github.com/UndeadSec/SocialFish.git SocialFish # SocialFish +install_git https://github.com/ultrasecurity/Storm-Breaker.git Storm-Breaker # Storm-Breaker +install_git https://github.com/PerezMascato/URLCADIZ.git URLCADIZ # URLCADIZ +install_pip zehef # Zehef +install_git https://github.com/htr-tech/zphisher.git zphisher # Zphisher -echo; say "Installing: 📡 IoT & Device Intelligence (10 tools)" -install_git https://github.com/AhMyth/AhMyth-Android-RAT.git AhMyth-Android-RAT # AhMyth Android RAT -pkg_install apktool # Apktool -install_pip frida-tools # Frida -install_pip greynoise # GreyNoise CLI -pkg_install jadx # jadx -install_git https://github.com/g0tmi1k/msfpc.git msfpc # MSFPC -install_pip objection # Objection -install_pip shodan # Shodan (IoT) -install_git https://github.com/shubhamrooter/ShodanSpider.git ShodanSpider # ShodanSpider -install_pip zoomeye # ZoomEye CLI +echo +say "Installing: 📡 IoT & Device Intelligence (10 tools)" +install_git https://github.com/AhMyth/AhMyth-Android-RAT.git AhMyth-Android-RAT # AhMyth Android RAT +pkg_install apktool # Apktool +install_pip frida-tools # Frida +install_pip greynoise # GreyNoise CLI +pkg_install jadx # jadx +install_git https://github.com/g0tmi1k/msfpc.git msfpc # MSFPC +install_pip objection # Objection +install_pip shodan # Shodan (IoT) +install_git https://github.com/shubhamrooter/ShodanSpider.git ShodanSpider # ShodanSpider +install_pip zoomeye # ZoomEye CLI -echo; say "Installing: 🧰 Frameworks & All-in-One Platforms (12 tools)" -install_git https://github.com/thewhiteh4t/FinalRecon.git FinalRecon # FinalRecon -install_git https://github.com/Manisso/fsociety.git fsociety # fsociety -install_git https://github.com/Z4nzu/hackingtool.git hackingtool # Hackingtool -install_pip harpoon # Harpoon -pkg_install maltego # Maltego -install_git https://github.com/ninoseki/mitaka.git mitaka # Mitaka -install_git https://github.com/loseys/Oblivion.git Oblivion # Oblivion -install_git https://github.com/Bafomet666/OSINT-SAN.git OSINT-SAN # OSINT-SAN -install_git https://github.com/j3ssie/osmedeus.git osmedeus # osmedeus -install_pip recon-ng # Recon-ng -pkg_install sn0int # sn0int -install_pip spiderfoot # SpiderFoot +echo +say "Installing: 🧰 Frameworks & All-in-One Platforms (12 tools)" +install_git https://github.com/thewhiteh4t/FinalRecon.git FinalRecon # FinalRecon +install_git https://github.com/Manisso/fsociety.git fsociety # fsociety +install_git https://github.com/Z4nzu/hackingtool.git hackingtool # Hackingtool +install_pip harpoon # Harpoon +pkg_install maltego # Maltego +install_git https://github.com/ninoseki/mitaka.git mitaka # Mitaka +install_git https://github.com/loseys/Oblivion.git Oblivion # Oblivion +install_git https://github.com/Bafomet666/OSINT-SAN.git OSINT-SAN # OSINT-SAN +install_git https://github.com/j3ssie/osmedeus.git osmedeus # osmedeus +install_pip recon-ng # Recon-ng +pkg_install sn0int # sn0int +install_pip spiderfoot # SpiderFoot -echo; say "Installing: 🔒 Free VPN & Privacy Tools (12 tools)" -install_git https://github.com/trailofbits/algo.git algo # Algo VPN -install_git https://github.com/HACK3RY2J/Anon-SMS.git Anon-SMS # Anon-SMS -install_git https://github.com/Und3rf10w/kali-anonsurf.git kali-anonsurf # Anonsurf -pkg_install bleachbit # BleachBit -pkg_install macchanger # MAC Changer -pkg_install mullvad-vpn # Mullvad VPN -pkg_install openvpn # OpenVPN -install_pip protonvpn-cli # Proton VPN Free -pkg_install riseup-vpn # RiseupVPN -pkg_install torbrowser-launcher # Tor Browser -pkg_install veracrypt # VeraCrypt -pkg_install wireguard # WireGuard +echo +say "Installing: 🔒 Free VPN & Privacy Tools (12 tools)" +install_git https://github.com/trailofbits/algo.git algo # Algo VPN +install_git https://github.com/HACK3RY2J/Anon-SMS.git Anon-SMS # Anon-SMS +install_git https://github.com/Und3rf10w/kali-anonsurf.git kali-anonsurf # Anonsurf +pkg_install bleachbit # BleachBit +pkg_install macchanger # MAC Changer +pkg_install mullvad-vpn # Mullvad VPN +pkg_install openvpn # OpenVPN +install_pip protonvpn-cli # Proton VPN Free +pkg_install riseup-vpn # RiseupVPN +pkg_install torbrowser-launcher # Tor Browser +pkg_install veracrypt # VeraCrypt +pkg_install wireguard # WireGuard -print_summary +print_summary \ No newline at end of file diff --git a/redteam.sh b/redteam.sh index ad5205f..168794c 100644 --- a/redteam.sh +++ b/redteam.sh @@ -1,7 +1,7 @@ #!/usr/bin/env bash # =================================================================== # ⚔️ Red team / offensive -# Part of awesome-osint-arsenal v3.4 +# Part of awesome-osint-arsenal v2.1 # Auto-detects: Kali / Debian / Ubuntu / Parrot / Mint / Pop!_OS / # Arch / Manjaro / EndeavourOS / # Fedora / RHEL / CentOS / Rocky / Alma @@ -9,148 +9,198 @@ # =================================================================== set -uo pipefail -RED="\033[0;31m"; GRN="\033[0;32m"; YLW="\033[1;33m"; BLU="\033[0;34m"; CYN="\033[0;36m"; NC="\033[0m" +RED="\033[0;31m" +GRN="\033[0;32m" +YLW="\033[1;33m" +BLU="\033[0;34m" +CYN="\033[0;36m" +NC="\033[0m" LOGFILE="${LOGFILE:-$HOME/osint-install-errors.log}" -INSTALLED=${INSTALLED:-0}; SKIPPED=${SKIPPED:-0}; FAILED=${FAILED:-0} +INSTALLED=${INSTALLED:-0} +SKIPPED=${SKIPPED:-0} +FAILED=${FAILED:-0} declare -ga FAILED_TOOLS=() -say() { echo -e "${BLU}[*]${NC} $*"; } -ok() { echo -e "${GRN}[✓]${NC} $*"; INSTALLED=$((INSTALLED+1)); } -skip() { echo -e "${YLW}[~]${NC} $*"; SKIPPED=$((SKIPPED+1)); } -fail() { echo -e "${RED}[✗]${NC} $*"; FAILED=$((FAILED+1)); FAILED_TOOLS+=("$1"); echo "FAIL: $*" >> "$LOGFILE"; } +say() { echo -e "${BLU}[*]${NC} $*"; } +ok() { + echo -e "${GRN}[✓]${NC} $*" + INSTALLED=$((INSTALLED + 1)) +} +skip() { + echo -e "${YLW}[~]${NC} $*" + SKIPPED=$((SKIPPED + 1)) +} +fail() { + echo -e "${RED}[✗]${NC} $*" + FAILED=$((FAILED + 1)) + FAILED_TOOLS+=("$1") + echo "FAIL: $*" >>"$LOGFILE" +} require_root() { - if [ "$EUID" -ne 0 ]; then echo "Please run as root: sudo bash $0"; exit 1; fi + if [ "$EUID" -ne 0 ]; then + echo "Please run as root: sudo bash $0" + exit 1 + fi } detect_distro() { - if [ -f /etc/os-release ]; then - . /etc/os-release - case "${ID,,}" in - kali|debian|ubuntu|parrot|raspbian|linuxmint|pop|elementary) PKG="apt" ;; - arch|manjaro|endeavouros|garuda|artix) PKG="pacman" ;; - fedora|rhel|centos|rocky|almalinux|ol) PKG="dnf" ;; - *) PKG="unknown" ;; - esac - else - PKG="unknown" - fi - export PKG - echo -e "${CYN}[i]${NC} Detected package manager: $PKG" - if [ "$PKG" = "unknown" ]; then - echo -e "${YLW}[!]${NC} Unknown distro — git/pip/go installs will work, system-package installs will be skipped." - fi + if [ -f /etc/os-release ]; then + . /etc/os-release + case "${ID,,}" in + kali | debian | ubuntu | parrot | raspbian | linuxmint | pop | elementary) PKG="apt" ;; + arch | manjaro | endeavouros | garuda | artix) PKG="pacman" ;; + fedora | rhel | centos | rocky | almalinux | ol) PKG="dnf" ;; + *) PKG="unknown" ;; + esac + else + PKG="unknown" + fi + export PKG + echo -e "${CYN}[i]${NC} Detected package manager: $PKG" + if [ "$PKG" = "unknown" ]; then + echo -e "${YLW}[!]${NC} Unknown distro — git/pip/go installs will work, system-package installs will be skipped." + fi } pkg_install() { - local pkg="$1" - case "$PKG" in - apt) - if dpkg -s "$pkg" >/dev/null 2>&1; then skip "$pkg already installed"; return; fi - if apt install -y "$pkg" >/dev/null 2>&1; then ok "$pkg (apt)"; else fail "$pkg (apt)"; fi - ;; - pacman) - if pacman -Qi "$pkg" >/dev/null 2>&1; then skip "$pkg already installed"; return; fi - if pacman -S --noconfirm --needed "$pkg" >/dev/null 2>&1; then ok "$pkg (pacman)"; else fail "$pkg (pacman — may not be in repo, try AUR)"; fi - ;; - dnf) - if rpm -q "$pkg" >/dev/null 2>&1; then skip "$pkg already installed"; return; fi - if dnf install -y "$pkg" >/dev/null 2>&1; then ok "$pkg (dnf)"; else fail "$pkg (dnf — may not be in repo)"; fi - ;; - *) - fail "$pkg — unknown package manager, install manually" - ;; - esac + local pkg="$1" + case "$PKG" in + apt) + if dpkg -s "$pkg" >/dev/null 2>&1; then + skip "$pkg already installed" + return + fi + if apt install -y "$pkg" >/dev/null 2>&1; then ok "$pkg (apt)"; else fail "$pkg (apt)"; fi + ;; + pacman) + if pacman -Qi "$pkg" >/dev/null 2>&1; then + skip "$pkg already installed" + return + fi + if pacman -S --noconfirm --needed "$pkg" >/dev/null 2>&1; then ok "$pkg (pacman)"; else fail "$pkg (pacman — may not be in repo, try AUR)"; fi + ;; + dnf) + if rpm -q "$pkg" >/dev/null 2>&1; then + skip "$pkg already installed" + return + fi + if dnf install -y "$pkg" >/dev/null 2>&1; then ok "$pkg (dnf)"; else fail "$pkg (dnf — may not be in repo)"; fi + ;; + *) + fail "$pkg — unknown package manager, install manually" + ;; + esac } install_pip() { - local pkg="$1" - if pip3 show "$pkg" >/dev/null 2>&1; then skip "$pkg (pip) already installed"; return; fi - if pip3 install --break-system-packages "$pkg" >/dev/null 2>&1; then ok "$pkg (pip)"; else fail "$pkg (pip)"; fi + local pkg="$1" + if pip3 show "$pkg" >/dev/null 2>&1; then + skip "$pkg (pip) already installed" + return + fi + if pip3 install --break-system-packages "$pkg" >/dev/null 2>&1; then ok "$pkg (pip)"; else fail "$pkg (pip)"; fi } install_go() { - local mod="$1" name="$2" - if ! command -v go >/dev/null 2>&1; then fail "$name — go not installed"; return; fi - if command -v "$name" >/dev/null 2>&1; then skip "$name already installed"; return; fi - if go install "$mod" >/dev/null 2>&1; then ok "$name (go)"; else fail "$name (go)"; fi + local mod="$1" name="$2" + if ! command -v go >/dev/null 2>&1; then + fail "$name — go not installed" + return + fi + if command -v "$name" >/dev/null 2>&1; then + skip "$name already installed" + return + fi + if go install "$mod" >/dev/null 2>&1; then ok "$name (go)"; else fail "$name (go)"; fi } install_git() { - local repo="$1" dst="$2" - mkdir -p /opt/osint-arsenal - if [ -d "/opt/osint-arsenal/$dst" ]; then skip "$dst already cloned"; return; fi - if git clone --depth=1 "$repo" "/opt/osint-arsenal/$dst" >/dev/null 2>&1; then ok "$dst (git)"; else fail "$dst (git)"; fi + local repo="$1" dst="$2" + mkdir -p /opt/osint-arsenal + if [ -d "/opt/osint-arsenal/$dst" ]; then + skip "$dst already cloned" + return + fi + if git clone --depth=1 "$repo" "/opt/osint-arsenal/$dst" >/dev/null 2>&1; then ok "$dst (git)"; else fail "$dst (git)"; fi } install_docker() { - local image="$1" name="$2" - if ! command -v docker >/dev/null 2>&1; then fail "$name — docker not installed"; return; fi - if docker image inspect "$image" >/dev/null 2>&1; then skip "$name (docker) already pulled"; return; fi - if docker pull "$image" >/dev/null 2>&1; then ok "$name (docker)"; else fail "$name (docker)"; fi + local image="$1" name="$2" + if ! command -v docker >/dev/null 2>&1; then + fail "$name — docker not installed" + return + fi + if docker image inspect "$image" >/dev/null 2>&1; then + skip "$name (docker) already pulled" + return + fi + if docker pull "$image" >/dev/null 2>&1; then ok "$name (docker)"; else fail "$name (docker)"; fi } bootstrap_basics() { - case "$PKG" in - apt) - apt update -y >/dev/null 2>&1 || true - apt install -y python3 python3-pip git curl wget golang-go >/dev/null 2>&1 || true - ;; - pacman) - pacman -Sy --noconfirm >/dev/null 2>&1 || true - pacman -S --noconfirm --needed python python-pip git curl wget go >/dev/null 2>&1 || true - ;; - dnf) - dnf install -y python3 python3-pip git curl wget golang >/dev/null 2>&1 || true - ;; - esac + case "$PKG" in + apt) + apt update -y >/dev/null 2>&1 || true + apt install -y python3 python3-pip git curl wget golang-go >/dev/null 2>&1 || true + ;; + pacman) + pacman -Sy --noconfirm >/dev/null 2>&1 || true + pacman -S --noconfirm --needed python python-pip git curl wget go >/dev/null 2>&1 || true + ;; + dnf) + dnf install -y python3 python3-pip git curl wget golang >/dev/null 2>&1 || true + ;; + esac } print_summary() { - echo - echo "=============================================" - echo -e " Installed: ${GRN}$INSTALLED${NC}" - echo -e " Skipped: ${YLW}$SKIPPED${NC}" - echo -e " Failed: ${RED}$FAILED${NC}" - echo "=============================================" - if (( FAILED > 0 )); then - echo -e "${RED}Failed tools:${NC} ${FAILED_TOOLS[@]:-}" - echo "See $LOGFILE for details." - fi + echo + echo "=============================================" + echo -e " Installed: ${GRN}$INSTALLED${NC}" + echo -e " Skipped: ${YLW}$SKIPPED${NC}" + echo -e " Failed: ${RED}$FAILED${NC}" + echo "=============================================" + if ((FAILED > 0)); then + echo -e "${RED}Failed tools:${NC} ${FAILED_TOOLS[@]:-}" + echo "See $LOGFILE for details." + fi } require_root detect_distro bootstrap_basics -echo; say "Installing: ⚔️ Red Team & Offensive Security (31 tools)" -install_git https://github.com/infosecn1nja/AD-Attack-Defense.git AD-Attack-Defense # AD Attack & Defense -install_pip arjun # Arjun -install_git https://github.com/BloodHoundAD/BloodHound.git BloodHound # BloodHound -install_docker specterops/bloodhound:latest 'BloodHound CE' # BloodHound CE -install_pip certipy-ad # Certipy -install_pip crackmapexec # CrackMapExec -install_go github.com/dwisiswant0/crlfuzz/cmd/crlfuzz@latest crlfuzz # CRLFuzz -install_go github.com/hahwul/dalfox/v2@latest v2 # Dalfox -pkg_install evil-winrm # Evil-WinRM -install_git https://github.com/r0oth3x49/ghauri.git ghauri # Ghauri -install_go github.com/KathanP19/Gxss@latest Gxss # Gxss -install_git https://github.com/HavocFramework/Havoc.git Havoc # Havoc -install_pip impacket # Impacket -install_go github.com/ropnop/kerbrute@latest kerbrute # Kerbrute -install_go github.com/assetnote/kiterunner/cmd/kr@latest kr # kiterunner -install_go github.com/Ne0nd0g/merlin@latest merlin # Merlin -pkg_install metasploit-framework # Metasploit Framework -install_git https://github.com/its-a-feature/Mythic.git Mythic # Mythic -install_pip git # NetExec (nxc) -install_git https://github.com/codingo/NoSQLMap.git NoSQLMap # NoSQLMap -install_git https://github.com/projectdiscovery/nuclei-templates.git nuclei-templates # Nuclei Templates -install_git https://github.com/PortSwigger/param-miner.git param-miner # ParamMiner (Burp ext) -install_git https://github.com/swisskyrepo/PayloadsAllTheThings.git PayloadsAllTheThings # PayloadsAllTheThings -install_git https://github.com/topotam/PetitPotam.git PetitPotam # PetitPotam -install_git https://github.com/BC-SECURITY/Empire.git Empire # PowerShell Empire -install_git https://github.com/GhostPack/Rubeus.git Rubeus # Rubeus -install_git https://github.com/BloodHoundAD/SharpHound.git SharpHound # SharpHound -install_go github.com/bishopfox/sliver/server@latest server # Sliver -install_git https://github.com/swisskyrepo/SSRFmap.git SSRFmap # SSRFmap -install_git https://github.com/t3l3machus/Villain.git Villain # Villain -install_git https://github.com/s0md3v/XSStrike.git XSStrike # XSStrike +echo +say "Installing: ⚔️ Red Team & Offensive Security (31 tools)" +install_git https://github.com/infosecn1nja/AD-Attack-Defense.git AD-Attack-Defense # AD Attack & Defense +install_pip arjun # Arjun +install_git https://github.com/BloodHoundAD/BloodHound.git BloodHound # BloodHound +install_docker specterops/bloodhound:latest 'BloodHound CE' # BloodHound CE +install_pip certipy-ad # Certipy +install_pip crackmapexec # CrackMapExec +install_go github.com/dwisiswant0/crlfuzz/cmd/crlfuzz@latest crlfuzz # CRLFuzz +install_go github.com/hahwul/dalfox/v2@latest v2 # Dalfox +pkg_install evil-winrm # Evil-WinRM +install_git https://github.com/r0oth3x49/ghauri.git ghauri # Ghauri +install_go github.com/KathanP19/Gxss@latest Gxss # Gxss +install_git https://github.com/HavocFramework/Havoc.git Havoc # Havoc +install_pip impacket # Impacket +install_go github.com/ropnop/kerbrute@latest kerbrute # Kerbrute +install_go github.com/assetnote/kiterunner/cmd/kr@latest kr # kiterunner +install_go github.com/Ne0nd0g/merlin@latest merlin # Merlin +pkg_install metasploit-framework # Metasploit Framework +install_git https://github.com/its-a-feature/Mythic.git Mythic # Mythic +install_pip git +install_pip netexec # NetExec (nxc) +install_git https://github.com/codingo/NoSQLMap.git NoSQLMap # NoSQLMap +install_git https://github.com/projectdiscovery/nuclei-templates.git nuclei-templates # Nuclei Templates +install_git https://github.com/PortSwigger/param-miner.git param-miner # ParamMiner (Burp ext) +install_git https://github.com/swisskyrepo/PayloadsAllTheThings.git PayloadsAllTheThings # PayloadsAllTheThings +install_git https://github.com/topotam/PetitPotam.git PetitPotam # PetitPotam +install_git https://github.com/BC-SECURITY/Empire.git Empire # PowerShell Empire +install_git https://github.com/GhostPack/Rubeus.git Rubeus # Rubeus +install_git https://github.com/BloodHoundAD/SharpHound.git SharpHound # SharpHound +install_go github.com/bishopfox/sliver/server@latest server # Sliver +install_git https://github.com/swisskyrepo/SSRFmap.git SSRFmap # SSRFmap +install_git https://github.com/t3l3machus/Villain.git Villain # Villain +install_git https://github.com/s0md3v/XSStrike.git XSStrike # XSStrike print_summary diff --git a/termux.sh b/termux.sh index 1137b9a..cbce848 100644 --- a/termux.sh +++ b/termux.sh @@ -1,82 +1,113 @@ #!/usr/bin/env bash # =================================================================== # Awesome OSINT Arsenal — Termux (Android) installer -# Subset of tools known to work on Termux. -# Run from Termux: -# pkg install -y git && git clone && cd && bash install-termux.sh +# Optimized for ARM64/ARM environments and compilation requirements. # =================================================================== set -uo pipefail -RED="\033[0;31m"; GRN="\033[0;32m"; YLW="\033[1;33m"; BLU="\033[0;34m"; NC="\033[0m" +RED="\033[0;31m" +GRN="\033[0;32m" +YLW="\033[1;33m" +BLU="\033[0;34m" +NC="\033[0m" LOGFILE="$HOME/osint-install-errors.log" -: > "$LOGFILE" -INSTALLED=0; SKIPPED=0; FAILED=0 +: >"$LOGFILE" +INSTALLED=0 +SKIPPED=0 +FAILED=0 declare -a FAILED_TOOLS=() -say() { echo -e "${BLU}[*]${NC} $*"; } -ok() { echo -e "${GRN}[✓]${NC} $*"; INSTALLED=$((INSTALLED+1)); } -skip() { echo -e "${YLW}[~]${NC} $*"; SKIPPED=$((SKIPPED+1)); } -fail() { echo -e "${RED}[✗]${NC} $*"; FAILED=$((FAILED+1)); FAILED_TOOLS+=("$1"); echo "FAIL: $*" >> "$LOGFILE"; } +say() { echo -e "${BLU}[*]${NC} $*"; } +ok() { + echo -e "${GRN}[✓]${NC} $*" + INSTALLED=$((INSTALLED + 1)) +} +skip() { + echo -e "${YLW}[~]${NC} $*" + SKIPPED=$((SKIPPED + 1)) +} +fail() { + echo -e "${RED}[✗]${NC} $*" + FAILED=$((FAILED + 1)) + FAILED_TOOLS+=("$1") + echo "FAIL: $*" >>"$LOGFILE" +} install_pkg() { local p="$1" - if dpkg -s "$p" >/dev/null 2>&1; then skip "$p already installed"; return; fi - if pkg install -y "$p" >/dev/null 2>&1; then ok "$p (pkg)"; else fail "$p (pkg)"; fi + if dpkg -s "$p" >/dev/null 2>&1; then + skip "$p already installed" + return + fi + if pkg install -y "$p" >>"$LOGFILE" 2>&1; then ok "$p (pkg)"; else fail "$p (pkg)"; fi } + install_pip() { local p="$1" - if pip show "$p" >/dev/null 2>&1; then skip "$p (pip) already installed"; return; fi - if pip install "$p" >/dev/null 2>&1; then ok "$p (pip)"; else fail "$p (pip)"; fi + if pip show "$p" >/dev/null 2>&1; then + skip "$p (pip) already installed" + return + fi + # Note: Termux occasionally requires --break-system-packages depending on python environment state + if pip install --break-system-packages "$p" >>"$LOGFILE" 2>&1 || pip install "$p" >>"$LOGFILE" 2>&1; then + ok "$p (pip)" + else + fail "$p (pip)" + fi } + install_git() { local repo="$1" dst="$2" mkdir -p "$HOME/osint-arsenal" - if [ -d "$HOME/osint-arsenal/$dst" ]; then skip "$dst already cloned"; return; fi - if git clone --depth=1 "$repo" "$HOME/osint-arsenal/$dst" >/dev/null 2>&1; then ok "$dst (git)"; else fail "$dst (git)"; fi + if [ -d "$HOME/osint-arsenal/$dst" ]; then + skip "$dst already cloned" + return + fi + if git clone --depth=1 "$repo" "$HOME/osint-arsenal/$dst" >>"$LOGFILE" 2>&1; then ok "$dst (git)"; else fail "$dst (git)"; fi } -say "Updating Termux..." +say "Updating Termux ecosystem repositories..." pkg update -y >/dev/null 2>&1 || true -pkg upgrade -y >/dev/null 2>&1 || true -say "Installing core packages..." -pkg install -y python python-pip git curl wget openssh nmap hydra perl >/dev/null 2>&1 || true +say "Installing system compilation environment & dependencies (Essential for ARM architecture)..." +# build-essential, clang, python-dev are REQUIRED to build wheel packages natively on Android +pkg install -y python python-pip python-dev git curl wget openssh nmap hydra perl php \ + build-essential clang libffi libjpeg-turbo libcrypt libxml2 libxslt >/dev/null 2>&1 || true termux-setup-storage 2>/dev/null || true say "Installing Termux-compatible tools..." -install_pkg aircrack-ng # Aircrack-ng -install_pip blackbird-osint # Blackbird -install_pip censys # Censys CLI -install_pip dnsrecon # dnsrecon -install_pip dnstwist # dnstwist -install_pkg libimage-exiftool-perl # ExifTool -install_git https://github.com/Manisso/fsociety.git fsociety # fsociety -install_pip gitrecon # Gitrecon -install_pip h8mail # h8mail -install_pip holehe # Holehe -install_pkg hydra # Hydra -install_pip instaloader # Instaloader -install_git https://github.com/maldevel/IPGeoLocation.git IPGeoLocation # IPGeoLocation -install_pkg john # John the Ripper -install_pip maigret # Maigret -install_pip metagoofil # Metagoofil -install_git https://github.com/htr-tech/nexphisher.git nexphisher # NexPhisher -install_pkg nmap # Nmap -install_git https://github.com/s0md3v/Orbit.git Orbit # Orbit -install_pip phoneinfoga # PhoneInfoga -install_git https://github.com/aerosol-can/PhoneSploit.git PhoneSploit # PhoneSploit -install_pip sherlock-project # Sherlock -install_pip shodan # Shodan -install_pip shodan # Shodan CLI -install_pip snoop # Snoop -install_pip snscrape # snscrape -install_pip social-analyzer # Social Analyzer -install_git https://github.com/ultrasecurity/Storm-Breaker.git Storm-Breaker # Storm-Breaker -install_pip sublist3r # Sublist3r -install_pip theHarvester # theHarvester -install_pip trufflehog # trufflehog -install_git https://github.com/wishihab/userrecon.git userrecon # UserRecon -install_git https://github.com/htr-tech/zphisher.git zphisher # Zphisher +install_pkg aircrack-ng +install_pkg exiftool # FIXED: Correct Termux package name +install_pkg hydra +install_pkg john +install_pkg nmap + +install_pip blackbird-osint +install_pip censys +install_pip dnsrecon +install_pip dnstwist +install_pip gitrecon +install_pip h8mail +install_pip holehe +install_pip instaloader +install_pip maigret +install_pip metagoofil +install_pip sherlock-project +install_pip shodan # FIXED: Deduplicated duplicate line entry +install_pip snoop +install_pip snscrape +install_pip social-analyzer +install_pip sublist3r +install_pip theHarvester + +install_git https://github.com/Manisso/fsociety.git fsociety +install_git https://github.com/maldevel/IPGeoLocation.git IPGeoLocation +install_git https://github.com/htr-tech/nexphisher.git nexphisher # Requires PHP (installed above) +install_git https://github.com/s0md3v/Orbit.git Orbit +install_git https://github.com/aerosol-can/PhoneSploit.git PhoneSploit +install_git https://github.com/ultrasecurity/Storm-Breaker.git Storm-Breaker # Requires PHP +install_git https://github.com/wishihab/userrecon.git userrecon +install_git https://github.com/htr-tech/zphisher.git zphisher # Requires PHP echo echo "=============================================" @@ -84,10 +115,9 @@ echo -e " Installed: ${GRN}$INSTALLED${NC}" echo -e " Skipped: ${YLW}$SKIPPED${NC}" echo -e " Failed: ${RED}$FAILED${NC}" echo "=============================================" -if (( FAILED > 0 )); then +if ((FAILED > 0)); then echo -e "${RED}Failed tools:${NC} ${FAILED_TOOLS[*]}" - echo "See $LOGFILE for details." + echo "Review comprehensive build errors here: $LOGFILE" fi echo -echo "Tools cloned to: $HOME/osint-arsenal/" -echo "For more tools, see the README.md — many require x86 Linux and won't run on Android." \ No newline at end of file +echo "Tools mapped out to: $HOME/osint-arsenal/" \ No newline at end of file