update
This commit is contained in:
parent
63abebdc14
commit
e8009b1b8b
260
blueteam.sh
260
blueteam.sh
|
|
@ -1,7 +1,7 @@
|
||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
# ===================================================================
|
# ===================================================================
|
||||||
# 🛡️ Blue team / defensive + threat intel
|
# 🛡️ 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 /
|
# Auto-detects: Kali / Debian / Ubuntu / Parrot / Mint / Pop!_OS /
|
||||||
# Arch / Manjaro / EndeavourOS /
|
# Arch / Manjaro / EndeavourOS /
|
||||||
# Fedora / RHEL / CentOS / Rocky / Alma
|
# Fedora / RHEL / CentOS / Rocky / Alma
|
||||||
|
|
@ -9,141 +9,191 @@
|
||||||
# ===================================================================
|
# ===================================================================
|
||||||
set -uo pipefail
|
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}"
|
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=()
|
declare -ga FAILED_TOOLS=()
|
||||||
|
|
||||||
say() { echo -e "${BLU}[*]${NC} $*"; }
|
say() { echo -e "${BLU}[*]${NC} $*"; }
|
||||||
ok() { echo -e "${GRN}[✓]${NC} $*"; INSTALLED=$((INSTALLED+1)); }
|
ok() {
|
||||||
skip() { echo -e "${YLW}[~]${NC} $*"; SKIPPED=$((SKIPPED+1)); }
|
echo -e "${GRN}[✓]${NC} $*"
|
||||||
fail() { echo -e "${RED}[✗]${NC} $*"; FAILED=$((FAILED+1)); FAILED_TOOLS+=("$1"); echo "FAIL: $*" >> "$LOGFILE"; }
|
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() {
|
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() {
|
detect_distro() {
|
||||||
if [ -f /etc/os-release ]; then
|
if [ -f /etc/os-release ]; then
|
||||||
. /etc/os-release
|
. /etc/os-release
|
||||||
case "${ID,,}" in
|
case "${ID,,}" in
|
||||||
kali|debian|ubuntu|parrot|raspbian|linuxmint|pop|elementary) PKG="apt" ;;
|
kali | debian | ubuntu | parrot | raspbian | linuxmint | pop | elementary) PKG="apt" ;;
|
||||||
arch|manjaro|endeavouros|garuda|artix) PKG="pacman" ;;
|
arch | manjaro | endeavouros | garuda | artix) PKG="pacman" ;;
|
||||||
fedora|rhel|centos|rocky|almalinux|ol) PKG="dnf" ;;
|
fedora | rhel | centos | rocky | almalinux | ol) PKG="dnf" ;;
|
||||||
*) PKG="unknown" ;;
|
*) PKG="unknown" ;;
|
||||||
esac
|
esac
|
||||||
else
|
else
|
||||||
PKG="unknown"
|
PKG="unknown"
|
||||||
fi
|
fi
|
||||||
export PKG
|
export PKG
|
||||||
echo -e "${CYN}[i]${NC} Detected package manager: $PKG"
|
echo -e "${CYN}[i]${NC} Detected package manager: $PKG"
|
||||||
if [ "$PKG" = "unknown" ]; then
|
if [ "$PKG" = "unknown" ]; then
|
||||||
echo -e "${YLW}[!]${NC} Unknown distro — git/pip/go installs will work, system-package installs will be skipped."
|
echo -e "${YLW}[!]${NC} Unknown distro — git/pip/go installs will work, system-package installs will be skipped."
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
pkg_install() {
|
pkg_install() {
|
||||||
local pkg="$1"
|
local pkg="$1"
|
||||||
case "$PKG" in
|
case "$PKG" in
|
||||||
apt)
|
apt)
|
||||||
if dpkg -s "$pkg" >/dev/null 2>&1; then skip "$pkg already installed"; return; fi
|
if dpkg -s "$pkg" >/dev/null 2>&1; then
|
||||||
if apt install -y "$pkg" >/dev/null 2>&1; then ok "$pkg (apt)"; else fail "$pkg (apt)"; fi
|
skip "$pkg already installed"
|
||||||
;;
|
return
|
||||||
pacman)
|
fi
|
||||||
if pacman -Qi "$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
|
||||||
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
|
;;
|
||||||
;;
|
pacman)
|
||||||
dnf)
|
if pacman -Qi "$pkg" >/dev/null 2>&1; then
|
||||||
if rpm -q "$pkg" >/dev/null 2>&1; then skip "$pkg already installed"; return; fi
|
skip "$pkg already installed"
|
||||||
if dnf install -y "$pkg" >/dev/null 2>&1; then ok "$pkg (dnf)"; else fail "$pkg (dnf — may not be in repo)"; fi
|
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
|
||||||
fail "$pkg — unknown package manager, install manually"
|
;;
|
||||||
;;
|
dnf)
|
||||||
esac
|
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() {
|
install_pip() {
|
||||||
local pkg="$1"
|
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
|
||||||
if pip3 install --break-system-packages "$pkg" >/dev/null 2>&1; then ok "$pkg (pip)"; else fail "$pkg (pip)"; fi
|
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() {
|
install_go() {
|
||||||
local mod="$1" name="$2"
|
local mod="$1" name="$2"
|
||||||
if ! command -v go >/dev/null 2>&1; then fail "$name — go not installed"; return; fi
|
if ! command -v go >/dev/null 2>&1; then
|
||||||
if command -v "$name" >/dev/null 2>&1; then skip "$name already installed"; return; fi
|
fail "$name — go not installed"
|
||||||
if go install "$mod" >/dev/null 2>&1; then ok "$name (go)"; else fail "$name (go)"; fi
|
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() {
|
install_git() {
|
||||||
local repo="$1" dst="$2"
|
local repo="$1" dst="$2"
|
||||||
mkdir -p /opt/osint-arsenal
|
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
|
||||||
if git clone --depth=1 "$repo" "/opt/osint-arsenal/$dst" >/dev/null 2>&1; then ok "$dst (git)"; else fail "$dst (git)"; fi
|
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() {
|
install_docker() {
|
||||||
local image="$1" name="$2"
|
local image="$1" name="$2"
|
||||||
if ! command -v docker >/dev/null 2>&1; then fail "$name — docker not installed"; return; fi
|
if ! command -v docker >/dev/null 2>&1; then
|
||||||
if docker image inspect "$image" >/dev/null 2>&1; then skip "$name (docker) already pulled"; return; fi
|
fail "$name — docker not installed"
|
||||||
if docker pull "$image" >/dev/null 2>&1; then ok "$name (docker)"; else fail "$name (docker)"; fi
|
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() {
|
bootstrap_basics() {
|
||||||
case "$PKG" in
|
case "$PKG" in
|
||||||
apt)
|
apt)
|
||||||
apt update -y >/dev/null 2>&1 || true
|
apt update -y >/dev/null 2>&1 || true
|
||||||
apt install -y python3 python3-pip git curl wget golang-go >/dev/null 2>&1 || true
|
apt install -y python3 python3-pip git curl wget golang-go >/dev/null 2>&1 || true
|
||||||
;;
|
;;
|
||||||
pacman)
|
pacman)
|
||||||
pacman -Sy --noconfirm >/dev/null 2>&1 || true
|
pacman -Sy --noconfirm >/dev/null 2>&1 || true
|
||||||
pacman -S --noconfirm --needed python python-pip git curl wget go >/dev/null 2>&1 || true
|
pacman -S --noconfirm --needed python python-pip git curl wget go >/dev/null 2>&1 || true
|
||||||
;;
|
;;
|
||||||
dnf)
|
dnf)
|
||||||
dnf install -y python3 python3-pip git curl wget golang >/dev/null 2>&1 || true
|
dnf install -y python3 python3-pip git curl wget golang >/dev/null 2>&1 || true
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
}
|
}
|
||||||
|
|
||||||
print_summary() {
|
print_summary() {
|
||||||
echo
|
echo
|
||||||
echo "============================================="
|
echo "============================================="
|
||||||
echo -e " Installed: ${GRN}$INSTALLED${NC}"
|
echo -e " Installed: ${GRN}$INSTALLED${NC}"
|
||||||
echo -e " Skipped: ${YLW}$SKIPPED${NC}"
|
echo -e " Skipped: ${YLW}$SKIPPED${NC}"
|
||||||
echo -e " Failed: ${RED}$FAILED${NC}"
|
echo -e " Failed: ${RED}$FAILED${NC}"
|
||||||
echo "============================================="
|
echo "============================================="
|
||||||
if (( FAILED > 0 )); then
|
if ((FAILED > 0)); then
|
||||||
echo -e "${RED}Failed tools:${NC} ${FAILED_TOOLS[@]:-}"
|
echo -e "${RED}Failed tools:${NC} ${FAILED_TOOLS[@]:-}"
|
||||||
echo "See $LOGFILE for details."
|
echo "See $LOGFILE for details."
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
require_root
|
require_root
|
||||||
detect_distro
|
detect_distro
|
||||||
bootstrap_basics
|
bootstrap_basics
|
||||||
|
|
||||||
echo; say "Installing: 🛰️ Threat Intel Platforms (2 tools)"
|
echo
|
||||||
install_docker opencti/platform OpenCTI # OpenCTI
|
say "Installing: 🛰️ Threat Intel Platforms (2 tools)"
|
||||||
install_git https://github.com/yeti-platform/yeti.git yeti # Yeti
|
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)"
|
echo
|
||||||
install_git https://github.com/redcanaryco/atomic-red-team.git atomic-red-team # Atomic Red Team
|
say "Installing: 🛡️ Blue Team & Defensive Security (20 tools)"
|
||||||
install_git https://github.com/WithSecureLabs/chainsaw.git chainsaw # Chainsaw
|
install_git https://github.com/redcanaryco/atomic-red-team.git atomic-red-team # Atomic Red Team
|
||||||
install_docker thehiveproject/cortex:latest 'Cortex (TheHive)' # Cortex (TheHive)
|
install_git https://github.com/WithSecureLabs/chainsaw.git chainsaw # Chainsaw
|
||||||
install_docker docker.elastic.co/elasticsearch/elasticsearch:latest 'Elastic Stack (ELK)' # Elastic Stack (ELK)
|
install_docker thehiveproject/cortex:latest 'Cortex (TheHive)' # Cortex (TheHive)
|
||||||
install_git https://github.com/falcosecurity/falco.git falco # Falco
|
install_docker docker.elastic.co/elasticsearch/elasticsearch:latest 'Elastic Stack (ELK)' # Elastic Stack (ELK)
|
||||||
install_docker graylog/graylog:latest Graylog # Graylog
|
install_git https://github.com/falcosecurity/falco.git falco # Falco
|
||||||
install_git https://github.com/Yamato-Security/hayabusa.git hayabusa # Hayabusa
|
install_docker graylog/graylog:latest Graylog # Graylog
|
||||||
install_git https://github.com/Neo23x0/Loki.git Loki # Loki
|
install_git https://github.com/Yamato-Security/hayabusa.git hayabusa # Hayabusa
|
||||||
install_git https://github.com/mitre/caldera.git caldera # MITRE CALDERA
|
install_git https://github.com/Neo23x0/Loki.git Loki # Loki
|
||||||
pkg_install osquery # osquery
|
install_git https://github.com/mitre/caldera.git caldera # MITRE CALDERA
|
||||||
install_git https://github.com/activecm/rita.git rita # RITA
|
pkg_install osquery # osquery
|
||||||
install_git https://github.com/SigmaHQ/sigma.git sigma # Sigma
|
install_git https://github.com/activecm/rita.git rita # RITA
|
||||||
install_pip sigma-cli # sigma-cli
|
install_git https://github.com/SigmaHQ/sigma.git sigma # Sigma
|
||||||
pkg_install snort # Snort
|
install_pip sigma-cli # sigma-cli
|
||||||
pkg_install suricata # Suricata
|
pkg_install snort # Snort
|
||||||
install_docker strangebee/thehive:latest TheHive # TheHive
|
pkg_install suricata # Suricata
|
||||||
install_git https://github.com/aquasecurity/tracee.git tracee # Tracee
|
install_docker strangebee/thehive:latest TheHive # TheHive
|
||||||
install_git https://github.com/Velocidex/velociraptor.git velociraptor # Velociraptor
|
install_git https://github.com/aquasecurity/tracee.git tracee # Tracee
|
||||||
install_git https://github.com/wazuh/wazuh.git wazuh # Wazuh
|
install_git https://github.com/Velocidex/velociraptor.git velociraptor # Velociraptor
|
||||||
pkg_install zeek # Zeek (Bro)
|
install_git https://github.com/wazuh/wazuh.git wazuh # Wazuh
|
||||||
|
pkg_install zeek # Zeek (Bro)
|
||||||
|
|
||||||
print_summary
|
print_summary
|
||||||
188
extras.sh
188
extras.sh
|
|
@ -1,7 +1,7 @@
|
||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
# ===================================================================
|
# ===================================================================
|
||||||
# 🔧 Misc / catch-all
|
# 🔧 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 /
|
# Auto-detects: Kali / Debian / Ubuntu / Parrot / Mint / Pop!_OS /
|
||||||
# Arch / Manjaro / EndeavourOS /
|
# Arch / Manjaro / EndeavourOS /
|
||||||
# Fedora / RHEL / CentOS / Rocky / Alma
|
# Fedora / RHEL / CentOS / Rocky / Alma
|
||||||
|
|
@ -9,28 +9,49 @@
|
||||||
# ===================================================================
|
# ===================================================================
|
||||||
set -uo pipefail
|
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}"
|
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=()
|
declare -ga FAILED_TOOLS=()
|
||||||
|
|
||||||
say() { echo -e "${BLU}[*]${NC} $*"; }
|
say() { echo -e "${BLU}[*]${NC} $*"; }
|
||||||
ok() { echo -e "${GRN}[✓]${NC} $*"; INSTALLED=$((INSTALLED+1)); }
|
ok() {
|
||||||
skip() { echo -e "${YLW}[~]${NC} $*"; SKIPPED=$((SKIPPED+1)); }
|
echo -e "${GRN}[✓]${NC} $*"
|
||||||
fail() { echo -e "${RED}[✗]${NC} $*"; FAILED=$((FAILED+1)); FAILED_TOOLS+=("$1"); echo "FAIL: $*" >> "$LOGFILE"; }
|
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() {
|
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() {
|
detect_distro() {
|
||||||
if [ -f /etc/os-release ]; then
|
if [ -f /etc/os-release ]; then
|
||||||
. /etc/os-release
|
. /etc/os-release
|
||||||
case "${ID,,}" in
|
case "${ID,,}" in
|
||||||
kali|debian|ubuntu|parrot|raspbian|linuxmint|pop|elementary) PKG="apt" ;;
|
kali | debian | ubuntu | parrot | raspbian | linuxmint | pop | elementary) PKG="apt" ;;
|
||||||
arch|manjaro|endeavouros|garuda|artix) PKG="pacman" ;;
|
arch | manjaro | endeavouros | garuda | artix) PKG="pacman" ;;
|
||||||
fedora|rhel|centos|rocky|almalinux|ol) PKG="dnf" ;;
|
fedora | rhel | centos | rocky | almalinux | ol) PKG="dnf" ;;
|
||||||
*) PKG="unknown" ;;
|
*) PKG="unknown" ;;
|
||||||
esac
|
esac
|
||||||
else
|
else
|
||||||
PKG="unknown"
|
PKG="unknown"
|
||||||
|
|
@ -45,62 +66,96 @@ detect_distro() {
|
||||||
pkg_install() {
|
pkg_install() {
|
||||||
local pkg="$1"
|
local pkg="$1"
|
||||||
case "$PKG" in
|
case "$PKG" in
|
||||||
apt)
|
apt)
|
||||||
if dpkg -s "$pkg" >/dev/null 2>&1; then skip "$pkg already installed"; return; fi
|
if dpkg -s "$pkg" >/dev/null 2>&1; then
|
||||||
if apt install -y "$pkg" >/dev/null 2>&1; then ok "$pkg (apt)"; else fail "$pkg (apt)"; fi
|
skip "$pkg already installed"
|
||||||
;;
|
return
|
||||||
pacman)
|
fi
|
||||||
if pacman -Qi "$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
|
||||||
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
|
;;
|
||||||
;;
|
pacman)
|
||||||
dnf)
|
if pacman -Qi "$pkg" >/dev/null 2>&1; then
|
||||||
if rpm -q "$pkg" >/dev/null 2>&1; then skip "$pkg already installed"; return; fi
|
skip "$pkg already installed"
|
||||||
if dnf install -y "$pkg" >/dev/null 2>&1; then ok "$pkg (dnf)"; else fail "$pkg (dnf — may not be in repo)"; fi
|
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
|
||||||
fail "$pkg — unknown package manager, install manually"
|
;;
|
||||||
;;
|
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
|
esac
|
||||||
}
|
}
|
||||||
|
|
||||||
install_pip() {
|
install_pip() {
|
||||||
local pkg="$1"
|
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
|
if pip3 install --break-system-packages "$pkg" >/dev/null 2>&1; then ok "$pkg (pip)"; else fail "$pkg (pip)"; fi
|
||||||
}
|
}
|
||||||
|
|
||||||
install_go() {
|
install_go() {
|
||||||
local mod="$1" name="$2"
|
local mod="$1" name="$2"
|
||||||
if ! command -v go >/dev/null 2>&1; then fail "$name — go not installed"; return; fi
|
if ! command -v go >/dev/null 2>&1; then
|
||||||
if command -v "$name" >/dev/null 2>&1; then skip "$name already installed"; return; fi
|
fail "$name — go not installed"
|
||||||
if go install "$mod" >/dev/null 2>&1; then ok "$name (go)"; else fail "$name (go)"; fi
|
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() {
|
install_git() {
|
||||||
local repo="$1" dst="$2"
|
local repo="$1" dst="$2"
|
||||||
mkdir -p /opt/osint-arsenal
|
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
|
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() {
|
install_docker() {
|
||||||
local image="$1" name="$2"
|
local image="$1" name="$2"
|
||||||
if ! command -v docker >/dev/null 2>&1; then fail "$name — docker not installed"; return; fi
|
if ! command -v docker >/dev/null 2>&1; then
|
||||||
if docker image inspect "$image" >/dev/null 2>&1; then skip "$name (docker) already pulled"; return; fi
|
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
|
if docker pull "$image" >/dev/null 2>&1; then ok "$name (docker)"; else fail "$name (docker)"; fi
|
||||||
}
|
}
|
||||||
|
|
||||||
bootstrap_basics() {
|
bootstrap_basics() {
|
||||||
case "$PKG" in
|
case "$PKG" in
|
||||||
apt)
|
apt)
|
||||||
apt update -y >/dev/null 2>&1 || true
|
apt update -y >/dev/null 2>&1 || true
|
||||||
apt install -y python3 python3-pip git curl wget golang-go >/dev/null 2>&1 || true
|
apt install -y python3 python3-pip git curl wget golang-go >/dev/null 2>&1 || true
|
||||||
;;
|
;;
|
||||||
pacman)
|
pacman)
|
||||||
pacman -Sy --noconfirm >/dev/null 2>&1 || true
|
pacman -Sy --noconfirm >/dev/null 2>&1 || true
|
||||||
pacman -S --noconfirm --needed python python-pip git curl wget go >/dev/null 2>&1 || true
|
pacman -S --noconfirm --needed python python-pip git curl wget go >/dev/null 2>&1 || true
|
||||||
;;
|
;;
|
||||||
dnf)
|
dnf)
|
||||||
dnf install -y python3 python3-pip git curl wget golang >/dev/null 2>&1 || true
|
dnf install -y python3 python3-pip git curl wget golang >/dev/null 2>&1 || true
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
|
# Dynamically append Go structural binaries paths into active execution scope
|
||||||
|
export PATH="$PATH:/root/go/bin:$HOME/go/bin"
|
||||||
}
|
}
|
||||||
|
|
||||||
print_summary() {
|
print_summary() {
|
||||||
|
|
@ -110,23 +165,48 @@ print_summary() {
|
||||||
echo -e " Skipped: ${YLW}$SKIPPED${NC}"
|
echo -e " Skipped: ${YLW}$SKIPPED${NC}"
|
||||||
echo -e " Failed: ${RED}$FAILED${NC}"
|
echo -e " Failed: ${RED}$FAILED${NC}"
|
||||||
echo "============================================="
|
echo "============================================="
|
||||||
if (( FAILED > 0 )); then
|
if ((FAILED > 0)); then
|
||||||
echo -e "${RED}Failed tools:${NC} ${FAILED_TOOLS[@]:-}"
|
echo -e "${RED}Failed tools:${NC} ${FAILED_TOOLS[@]:-}"
|
||||||
echo "See $LOGFILE for details."
|
echo "See $LOGFILE for details."
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# ===================================================================
|
||||||
|
# Execution Flow
|
||||||
|
# ===================================================================
|
||||||
require_root
|
require_root
|
||||||
detect_distro
|
detect_distro
|
||||||
bootstrap_basics
|
bootstrap_basics
|
||||||
|
|
||||||
echo; say "Installing: 📚 Learning Resources (2 tools)"
|
echo
|
||||||
install_git https://github.com/cipher387/linux-for-OSINT-21-days.git linux-for-OSINT-21-days # Linux for OSINT (cipher387)
|
say "Installing: 📚 Learning Resources (2 tools)"
|
||||||
install_git https://github.com/cipher387/python-for-OSINT-21-days.git python-for-OSINT-21-days # Python for OSINT (cipher387)
|
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)"
|
echo
|
||||||
install_git https://github.com/RedSiege/EyeWitness.git EyeWitness # EyeWitness
|
say "Installing: 🔧 Miscellaneous / Niche Tools (3 tools)"
|
||||||
install_pip opencv-python # OpenCV
|
|
||||||
install_pip trufflehog # trufflehog
|
|
||||||
|
|
||||||
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
|
||||||
224
forensics.sh
224
forensics.sh
|
|
@ -1,7 +1,7 @@
|
||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
# ===================================================================
|
# ===================================================================
|
||||||
# 🔬 Digital forensics & RE
|
# 🛡️ 🔧 Blue Team, Threat Intel & Misc Lab Provisioner
|
||||||
# Part of awesome-osint-arsenal v3.4
|
# Part of awesome-osint-arsenal v3.4 (Unified Production Edition)
|
||||||
# Auto-detects: Kali / Debian / Ubuntu / Parrot / Mint / Pop!_OS /
|
# Auto-detects: Kali / Debian / Ubuntu / Parrot / Mint / Pop!_OS /
|
||||||
# Arch / Manjaro / EndeavourOS /
|
# Arch / Manjaro / EndeavourOS /
|
||||||
# Fedora / RHEL / CentOS / Rocky / Alma
|
# Fedora / RHEL / CentOS / Rocky / Alma
|
||||||
|
|
@ -9,28 +9,49 @@
|
||||||
# ===================================================================
|
# ===================================================================
|
||||||
set -uo pipefail
|
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}"
|
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=()
|
declare -ga FAILED_TOOLS=()
|
||||||
|
|
||||||
say() { echo -e "${BLU}[*]${NC} $*"; }
|
say() { echo -e "${BLU}[*]${NC} $*"; }
|
||||||
ok() { echo -e "${GRN}[✓]${NC} $*"; INSTALLED=$((INSTALLED+1)); }
|
ok() {
|
||||||
skip() { echo -e "${YLW}[~]${NC} $*"; SKIPPED=$((SKIPPED+1)); }
|
echo -e "${GRN}[✓]${NC} $*"
|
||||||
fail() { echo -e "${RED}[✗]${NC} $*"; FAILED=$((FAILED+1)); FAILED_TOOLS+=("$1"); echo "FAIL: $*" >> "$LOGFILE"; }
|
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() {
|
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() {
|
detect_distro() {
|
||||||
if [ -f /etc/os-release ]; then
|
if [ -f /etc/os-release ]; then
|
||||||
. /etc/os-release
|
. /etc/os-release
|
||||||
case "${ID,,}" in
|
case "${ID,,}" in
|
||||||
kali|debian|ubuntu|parrot|raspbian|linuxmint|pop|elementary) PKG="apt" ;;
|
kali | debian | ubuntu | parrot | raspbian | linuxmint | pop | elementary) PKG="apt" ;;
|
||||||
arch|manjaro|endeavouros|garuda|artix) PKG="pacman" ;;
|
arch | manjaro | endeavouros | garuda | artix) PKG="pacman" ;;
|
||||||
fedora|rhel|centos|rocky|almalinux|ol) PKG="dnf" ;;
|
fedora | rhel | centos | rocky | almalinux | ol) PKG="dnf" ;;
|
||||||
*) PKG="unknown" ;;
|
*) PKG="unknown" ;;
|
||||||
esac
|
esac
|
||||||
else
|
else
|
||||||
PKG="unknown"
|
PKG="unknown"
|
||||||
|
|
@ -45,62 +66,96 @@ detect_distro() {
|
||||||
pkg_install() {
|
pkg_install() {
|
||||||
local pkg="$1"
|
local pkg="$1"
|
||||||
case "$PKG" in
|
case "$PKG" in
|
||||||
apt)
|
apt)
|
||||||
if dpkg -s "$pkg" >/dev/null 2>&1; then skip "$pkg already installed"; return; fi
|
if dpkg -s "$pkg" >/dev/null 2>&1; then
|
||||||
if apt install -y "$pkg" >/dev/null 2>&1; then ok "$pkg (apt)"; else fail "$pkg (apt)"; fi
|
skip "$pkg already installed"
|
||||||
;;
|
return
|
||||||
pacman)
|
fi
|
||||||
if pacman -Qi "$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
|
||||||
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
|
;;
|
||||||
;;
|
pacman)
|
||||||
dnf)
|
if pacman -Qi "$pkg" >/dev/null 2>&1; then
|
||||||
if rpm -q "$pkg" >/dev/null 2>&1; then skip "$pkg already installed"; return; fi
|
skip "$pkg already installed"
|
||||||
if dnf install -y "$pkg" >/dev/null 2>&1; then ok "$pkg (dnf)"; else fail "$pkg (dnf — may not be in repo)"; fi
|
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
|
||||||
fail "$pkg — unknown package manager, install manually"
|
;;
|
||||||
;;
|
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
|
esac
|
||||||
}
|
}
|
||||||
|
|
||||||
install_pip() {
|
install_pip() {
|
||||||
local pkg="$1"
|
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
|
if pip3 install --break-system-packages "$pkg" >/dev/null 2>&1; then ok "$pkg (pip)"; else fail "$pkg (pip)"; fi
|
||||||
}
|
}
|
||||||
|
|
||||||
install_go() {
|
install_go() {
|
||||||
local mod="$1" name="$2"
|
local mod="$1" name="$2"
|
||||||
if ! command -v go >/dev/null 2>&1; then fail "$name — go not installed"; return; fi
|
if ! command -v go >/dev/null 2>&1; then
|
||||||
if command -v "$name" >/dev/null 2>&1; then skip "$name already installed"; return; fi
|
fail "$name — go not installed"
|
||||||
if go install "$mod" >/dev/null 2>&1; then ok "$name (go)"; else fail "$name (go)"; fi
|
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() {
|
install_git() {
|
||||||
local repo="$1" dst="$2"
|
local repo="$1" dst="$2"
|
||||||
mkdir -p /opt/osint-arsenal
|
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
|
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() {
|
install_docker() {
|
||||||
local image="$1" name="$2"
|
local image="$1" name="$2"
|
||||||
if ! command -v docker >/dev/null 2>&1; then fail "$name — docker not installed"; return; fi
|
if ! command -v docker >/dev/null 2>&1; then
|
||||||
if docker image inspect "$image" >/dev/null 2>&1; then skip "$name (docker) already pulled"; return; fi
|
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
|
if docker pull "$image" >/dev/null 2>&1; then ok "$name (docker)"; else fail "$name (docker)"; fi
|
||||||
}
|
}
|
||||||
|
|
||||||
bootstrap_basics() {
|
bootstrap_basics() {
|
||||||
case "$PKG" in
|
case "$PKG" in
|
||||||
apt)
|
apt)
|
||||||
apt update -y >/dev/null 2>&1 || true
|
apt update -y >/dev/null 2>&1 || true
|
||||||
apt install -y python3 python3-pip git curl wget golang-go >/dev/null 2>&1 || true
|
apt install -y python3 python3-pip git curl wget golang-go >/dev/null 2>&1 || true
|
||||||
;;
|
;;
|
||||||
pacman)
|
pacman)
|
||||||
pacman -Sy --noconfirm >/dev/null 2>&1 || true
|
pacman -Sy --noconfirm >/dev/null 2>&1 || true
|
||||||
pacman -S --noconfirm --needed python python-pip git curl wget go >/dev/null 2>&1 || true
|
pacman -S --noconfirm --needed python python-pip git curl wget go >/dev/null 2>&1 || true
|
||||||
;;
|
;;
|
||||||
dnf)
|
dnf)
|
||||||
dnf install -y python3 python3-pip git curl wget golang >/dev/null 2>&1 || true
|
dnf install -y python3 python3-pip git curl wget golang >/dev/null 2>&1 || true
|
||||||
;;
|
;;
|
||||||
esac
|
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() {
|
print_summary() {
|
||||||
|
|
@ -110,27 +165,76 @@ print_summary() {
|
||||||
echo -e " Skipped: ${YLW}$SKIPPED${NC}"
|
echo -e " Skipped: ${YLW}$SKIPPED${NC}"
|
||||||
echo -e " Failed: ${RED}$FAILED${NC}"
|
echo -e " Failed: ${RED}$FAILED${NC}"
|
||||||
echo "============================================="
|
echo "============================================="
|
||||||
if (( FAILED > 0 )); then
|
if ((FAILED > 0)); then
|
||||||
echo -e "${RED}Failed tools:${NC} ${FAILED_TOOLS[@]:-}"
|
echo -e "${RED}Failed tools:${NC} ${FAILED_TOOLS[@]:-}"
|
||||||
echo "See $LOGFILE for details."
|
echo "See $LOGFILE for details."
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# ===================================================================
|
||||||
|
# Main Engine Execution
|
||||||
|
# ===================================================================
|
||||||
require_root
|
require_root
|
||||||
detect_distro
|
detect_distro
|
||||||
bootstrap_basics
|
bootstrap_basics
|
||||||
|
|
||||||
echo; say "Installing: 🔬 Digital Forensics & Reverse Engineering (11 tools)"
|
echo
|
||||||
install_git https://github.com/rizinorg/cutter.git cutter # Cutter
|
say "Installing: 🛰️ Threat Intel Platforms (2 tools)"
|
||||||
install_pip dissect # Dissect
|
install_docker opencti/platform OpenCTI
|
||||||
install_git https://github.com/NationalSecurityAgency/ghidra.git ghidra # Ghidra
|
install_git https://github.com/yeti-platform/yeti.git yeti
|
||||||
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
|
|
||||||
|
|
||||||
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
|
||||||
221
hardware.sh
221
hardware.sh
|
|
@ -1,7 +1,7 @@
|
||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
# ===================================================================
|
# ===================================================================
|
||||||
# 🔌 Hardware hacking & SDR
|
# 🔌 Hardware Hacking & SDR
|
||||||
# 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 /
|
# Auto-detects: Kali / Debian / Ubuntu / Parrot / Mint / Pop!_OS /
|
||||||
# Arch / Manjaro / EndeavourOS /
|
# Arch / Manjaro / EndeavourOS /
|
||||||
# Fedora / RHEL / CentOS / Rocky / Alma
|
# Fedora / RHEL / CentOS / Rocky / Alma
|
||||||
|
|
@ -9,28 +9,49 @@
|
||||||
# ===================================================================
|
# ===================================================================
|
||||||
set -uo pipefail
|
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}"
|
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=()
|
declare -ga FAILED_TOOLS=()
|
||||||
|
|
||||||
say() { echo -e "${BLU}[*]${NC} $*"; }
|
say() { echo -e "${BLU}[*]${NC} $*"; }
|
||||||
ok() { echo -e "${GRN}[✓]${NC} $*"; INSTALLED=$((INSTALLED+1)); }
|
ok() {
|
||||||
skip() { echo -e "${YLW}[~]${NC} $*"; SKIPPED=$((SKIPPED+1)); }
|
echo -e "${GRN}[✓]${NC} $*"
|
||||||
fail() { echo -e "${RED}[✗]${NC} $*"; FAILED=$((FAILED+1)); FAILED_TOOLS+=("$1"); echo "FAIL: $*" >> "$LOGFILE"; }
|
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() {
|
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() {
|
detect_distro() {
|
||||||
if [ -f /etc/os-release ]; then
|
if [ -f /etc/os-release ]; then
|
||||||
. /etc/os-release
|
. /etc/os-release
|
||||||
case "${ID,,}" in
|
case "${ID,,}" in
|
||||||
kali|debian|ubuntu|parrot|raspbian|linuxmint|pop|elementary) PKG="apt" ;;
|
kali | debian | ubuntu | parrot | raspbian | linuxmint | pop | elementary) PKG="apt" ;;
|
||||||
arch|manjaro|endeavouros|garuda|artix) PKG="pacman" ;;
|
arch | manjaro | endeavouros | garuda | artix) PKG="pacman" ;;
|
||||||
fedora|rhel|centos|rocky|almalinux|ol) PKG="dnf" ;;
|
fedora | rhel | centos | rocky | almalinux | ol) PKG="dnf" ;;
|
||||||
*) PKG="unknown" ;;
|
*) PKG="unknown" ;;
|
||||||
esac
|
esac
|
||||||
else
|
else
|
||||||
PKG="unknown"
|
PKG="unknown"
|
||||||
|
|
@ -45,62 +66,95 @@ detect_distro() {
|
||||||
pkg_install() {
|
pkg_install() {
|
||||||
local pkg="$1"
|
local pkg="$1"
|
||||||
case "$PKG" in
|
case "$PKG" in
|
||||||
apt)
|
apt)
|
||||||
if dpkg -s "$pkg" >/dev/null 2>&1; then skip "$pkg already installed"; return; fi
|
if dpkg -s "$pkg" >/dev/null 2>&1; then
|
||||||
if apt install -y "$pkg" >/dev/null 2>&1; then ok "$pkg (apt)"; else fail "$pkg (apt)"; fi
|
skip "$pkg already installed"
|
||||||
;;
|
return
|
||||||
pacman)
|
fi
|
||||||
if pacman -Qi "$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
|
||||||
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
|
;;
|
||||||
;;
|
pacman)
|
||||||
dnf)
|
if pacman -Qi "$pkg" >/dev/null 2>&1; then
|
||||||
if rpm -q "$pkg" >/dev/null 2>&1; then skip "$pkg already installed"; return; fi
|
skip "$pkg already installed"
|
||||||
if dnf install -y "$pkg" >/dev/null 2>&1; then ok "$pkg (dnf)"; else fail "$pkg (dnf — may not be in repo)"; fi
|
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
|
||||||
fail "$pkg — unknown package manager, install manually"
|
;;
|
||||||
;;
|
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
|
esac
|
||||||
}
|
}
|
||||||
|
|
||||||
install_pip() {
|
install_pip() {
|
||||||
local pkg="$1"
|
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
|
if pip3 install --break-system-packages "$pkg" >/dev/null 2>&1; then ok "$pkg (pip)"; else fail "$pkg (pip)"; fi
|
||||||
}
|
}
|
||||||
|
|
||||||
install_go() {
|
install_go() {
|
||||||
local mod="$1" name="$2"
|
local mod="$1" name="$2"
|
||||||
if ! command -v go >/dev/null 2>&1; then fail "$name — go not installed"; return; fi
|
if ! command -v go >/dev/null 2>&1; then
|
||||||
if command -v "$name" >/dev/null 2>&1; then skip "$name already installed"; return; fi
|
fail "$name — go not installed"
|
||||||
if go install "$mod" >/dev/null 2>&1; then ok "$name (go)"; else fail "$name (go)"; fi
|
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() {
|
install_git() {
|
||||||
local repo="$1" dst="$2"
|
local repo="$1" dst="$2"
|
||||||
mkdir -p /opt/osint-arsenal
|
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
|
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() {
|
install_docker() {
|
||||||
local image="$1" name="$2"
|
local image="$1" name="$2"
|
||||||
if ! command -v docker >/dev/null 2>&1; then fail "$name — docker not installed"; return; fi
|
if ! command -v docker >/dev/null 2>&1; then
|
||||||
if docker image inspect "$image" >/dev/null 2>&1; then skip "$name (docker) already pulled"; return; fi
|
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
|
if docker pull "$image" >/dev/null 2>&1; then ok "$name (docker)"; else fail "$name (docker)"; fi
|
||||||
}
|
}
|
||||||
|
|
||||||
bootstrap_basics() {
|
bootstrap_basics() {
|
||||||
case "$PKG" in
|
case "$PKG" in
|
||||||
apt)
|
apt)
|
||||||
apt update -y >/dev/null 2>&1 || true
|
apt update -y >/dev/null 2>&1 || true
|
||||||
apt install -y python3 python3-pip git curl wget golang-go >/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)
|
||||||
pacman -Sy --noconfirm >/dev/null 2>&1 || true
|
pacman -Sy --noconfirm >/dev/null 2>&1 || true
|
||||||
pacman -S --noconfirm --needed python python-pip git curl wget go >/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)
|
||||||
dnf install -y python3 python3-pip git curl wget golang >/dev/null 2>&1 || true
|
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
|
esac
|
||||||
|
|
||||||
|
export PATH="$PATH:/root/go/bin:$HOME/go/bin"
|
||||||
}
|
}
|
||||||
|
|
||||||
print_summary() {
|
print_summary() {
|
||||||
|
|
@ -110,26 +164,75 @@ print_summary() {
|
||||||
echo -e " Skipped: ${YLW}$SKIPPED${NC}"
|
echo -e " Skipped: ${YLW}$SKIPPED${NC}"
|
||||||
echo -e " Failed: ${RED}$FAILED${NC}"
|
echo -e " Failed: ${RED}$FAILED${NC}"
|
||||||
echo "============================================="
|
echo "============================================="
|
||||||
if (( FAILED > 0 )); then
|
if ((FAILED > 0)); then
|
||||||
echo -e "${RED}Failed tools:${NC} ${FAILED_TOOLS[@]:-}"
|
echo -e "${RED}Failed tools:${NC} ${FAILED_TOOLS[@]:-}"
|
||||||
echo "See $LOGFILE for details."
|
echo "See $LOGFILE for details."
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
# ===================================================================
|
||||||
|
# Execution Flow
|
||||||
|
# ===================================================================
|
||||||
require_root
|
require_root
|
||||||
detect_distro
|
detect_distro
|
||||||
bootstrap_basics
|
bootstrap_basics
|
||||||
|
|
||||||
echo; say "Installing: 🔌 Hardware Hacking & SDR (10 tools)"
|
echo
|
||||||
install_git https://github.com/firmadyne/firmadyne.git firmadyne # Firmadyne
|
say "Installing: 🔌 Hardware Hacking & SDR (10 tools)"
|
||||||
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
|
|
||||||
|
|
||||||
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
|
||||||
99
install.sh
99
install.sh
|
|
@ -1,19 +1,34 @@
|
||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
# ===================================================================
|
# ===================================================================
|
||||||
# Awesome OSINT Arsenal — install everything
|
# Awesome OSINT Arsenal — Master Orchestrator
|
||||||
# Runs each category installer in order.
|
# Part of awesome-osint-arsenal v2.1 (Unified Production Edition)
|
||||||
|
# Runs each category installer sequentially with error handling.
|
||||||
# Best support: Kali / Debian / Ubuntu / Parrot.
|
# Best support: Kali / Debian / Ubuntu / Parrot.
|
||||||
# Partial: Arch / Manjaro / Fedora / RHEL.
|
# Partial: Arch / Manjaro / Fedora / RHEL.
|
||||||
# For Android, use: bash termux.sh
|
|
||||||
# ===================================================================
|
# ===================================================================
|
||||||
set -uo pipefail
|
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
|
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
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# Switch to the script's execution directory to safely resolve relative script paths
|
||||||
|
cd "$(dirname "$0")"
|
||||||
|
|
||||||
|
# Target Sub-modules
|
||||||
INSTALLERS=(
|
INSTALLERS=(
|
||||||
"osint.sh"
|
"osint.sh"
|
||||||
"redteam.sh"
|
"redteam.sh"
|
||||||
|
|
@ -24,19 +39,73 @@ INSTALLERS=(
|
||||||
"extras.sh"
|
"extras.sh"
|
||||||
)
|
)
|
||||||
|
|
||||||
LOGFILE="$HOME/osint-install-errors.log"
|
# Initialize/Wipe Master Error Log
|
||||||
: > "$LOGFILE"
|
: >"$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
|
for inst in "${INSTALLERS[@]}"; do
|
||||||
echo
|
echo
|
||||||
echo "==========================================="
|
echo -e "${BLU}=======================================================${NC}"
|
||||||
echo " Running: $inst"
|
echo -e " 🚀 Launching Deployment Segment: ${CYN}$inst${NC}"
|
||||||
echo "==========================================="
|
echo -e "${BLU}=======================================================${NC}"
|
||||||
bash "$inst"
|
|
||||||
|
# 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
|
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 "==========================================="
|
echo -e "${CYN}=======================================================${NC}"
|
||||||
echo " ALL DONE"
|
echo -e " 🎉 GRAND ARCHITECTURE DEPLOYMENT COMPLETE"
|
||||||
echo " Failures (if any) logged to: $LOGFILE"
|
echo -e "${CYN}=======================================================${NC}"
|
||||||
echo "==========================================="
|
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
|
||||||
219
labs.sh
219
labs.sh
|
|
@ -1,7 +1,7 @@
|
||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
# ===================================================================
|
# ===================================================================
|
||||||
# 🎓 Training / vulnerable apps
|
# 🎓 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 /
|
# Auto-detects: Kali / Debian / Ubuntu / Parrot / Mint / Pop!_OS /
|
||||||
# Arch / Manjaro / EndeavourOS /
|
# Arch / Manjaro / EndeavourOS /
|
||||||
# Fedora / RHEL / CentOS / Rocky / Alma
|
# Fedora / RHEL / CentOS / Rocky / Alma
|
||||||
|
|
@ -9,121 +9,170 @@
|
||||||
# ===================================================================
|
# ===================================================================
|
||||||
set -uo pipefail
|
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}"
|
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=()
|
declare -ga FAILED_TOOLS=()
|
||||||
|
|
||||||
say() { echo -e "${BLU}[*]${NC} $*"; }
|
say() { echo -e "${BLU}[*]${NC} $*"; }
|
||||||
ok() { echo -e "${GRN}[✓]${NC} $*"; INSTALLED=$((INSTALLED+1)); }
|
ok() {
|
||||||
skip() { echo -e "${YLW}[~]${NC} $*"; SKIPPED=$((SKIPPED+1)); }
|
echo -e "${GRN}[✓]${NC} $*"
|
||||||
fail() { echo -e "${RED}[✗]${NC} $*"; FAILED=$((FAILED+1)); FAILED_TOOLS+=("$1"); echo "FAIL: $*" >> "$LOGFILE"; }
|
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() {
|
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() {
|
detect_distro() {
|
||||||
if [ -f /etc/os-release ]; then
|
if [ -f /etc/os-release ]; then
|
||||||
. /etc/os-release
|
. /etc/os-release
|
||||||
case "${ID,,}" in
|
case "${ID,,}" in
|
||||||
kali|debian|ubuntu|parrot|raspbian|linuxmint|pop|elementary) PKG="apt" ;;
|
kali | debian | ubuntu | parrot | raspbian | linuxmint | pop | elementary) PKG="apt" ;;
|
||||||
arch|manjaro|endeavouros|garuda|artix) PKG="pacman" ;;
|
arch | manjaro | endeavouros | garuda | artix) PKG="pacman" ;;
|
||||||
fedora|rhel|centos|rocky|almalinux|ol) PKG="dnf" ;;
|
fedora | rhel | centos | rocky | almalinux | ol) PKG="dnf" ;;
|
||||||
*) PKG="unknown" ;;
|
*) PKG="unknown" ;;
|
||||||
esac
|
esac
|
||||||
else
|
else
|
||||||
PKG="unknown"
|
PKG="unknown"
|
||||||
fi
|
fi
|
||||||
export PKG
|
export PKG
|
||||||
echo -e "${CYN}[i]${NC} Detected package manager: $PKG"
|
echo -e "${CYN}[i]${NC} Detected package manager: $PKG"
|
||||||
if [ "$PKG" = "unknown" ]; then
|
if [ "$PKG" = "unknown" ]; then
|
||||||
echo -e "${YLW}[!]${NC} Unknown distro — git/pip/go installs will work, system-package installs will be skipped."
|
echo -e "${YLW}[!]${NC} Unknown distro — git/pip/go installs will work, system-package installs will be skipped."
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
pkg_install() {
|
pkg_install() {
|
||||||
local pkg="$1"
|
local pkg="$1"
|
||||||
case "$PKG" in
|
case "$PKG" in
|
||||||
apt)
|
apt)
|
||||||
if dpkg -s "$pkg" >/dev/null 2>&1; then skip "$pkg already installed"; return; fi
|
if dpkg -s "$pkg" >/dev/null 2>&1; then
|
||||||
if apt install -y "$pkg" >/dev/null 2>&1; then ok "$pkg (apt)"; else fail "$pkg (apt)"; fi
|
skip "$pkg already installed"
|
||||||
;;
|
return
|
||||||
pacman)
|
fi
|
||||||
if pacman -Qi "$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
|
||||||
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
|
;;
|
||||||
;;
|
pacman)
|
||||||
dnf)
|
if pacman -Qi "$pkg" >/dev/null 2>&1; then
|
||||||
if rpm -q "$pkg" >/dev/null 2>&1; then skip "$pkg already installed"; return; fi
|
skip "$pkg already installed"
|
||||||
if dnf install -y "$pkg" >/dev/null 2>&1; then ok "$pkg (dnf)"; else fail "$pkg (dnf — may not be in repo)"; fi
|
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
|
||||||
fail "$pkg — unknown package manager, install manually"
|
;;
|
||||||
;;
|
dnf)
|
||||||
esac
|
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() {
|
install_pip() {
|
||||||
local pkg="$1"
|
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
|
||||||
if pip3 install --break-system-packages "$pkg" >/dev/null 2>&1; then ok "$pkg (pip)"; else fail "$pkg (pip)"; fi
|
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() {
|
install_go() {
|
||||||
local mod="$1" name="$2"
|
local mod="$1" name="$2"
|
||||||
if ! command -v go >/dev/null 2>&1; then fail "$name — go not installed"; return; fi
|
if ! command -v go >/dev/null 2>&1; then
|
||||||
if command -v "$name" >/dev/null 2>&1; then skip "$name already installed"; return; fi
|
fail "$name — go not installed"
|
||||||
if go install "$mod" >/dev/null 2>&1; then ok "$name (go)"; else fail "$name (go)"; fi
|
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() {
|
install_git() {
|
||||||
local repo="$1" dst="$2"
|
local repo="$1" dst="$2"
|
||||||
mkdir -p /opt/osint-arsenal
|
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
|
||||||
if git clone --depth=1 "$repo" "/opt/osint-arsenal/$dst" >/dev/null 2>&1; then ok "$dst (git)"; else fail "$dst (git)"; fi
|
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() {
|
install_docker() {
|
||||||
local image="$1" name="$2"
|
local image="$1" name="$2"
|
||||||
if ! command -v docker >/dev/null 2>&1; then fail "$name — docker not installed"; return; fi
|
if ! command -v docker >/dev/null 2>&1; then
|
||||||
if docker image inspect "$image" >/dev/null 2>&1; then skip "$name (docker) already pulled"; return; fi
|
fail "$name — docker not installed"
|
||||||
if docker pull "$image" >/dev/null 2>&1; then ok "$name (docker)"; else fail "$name (docker)"; fi
|
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() {
|
bootstrap_basics() {
|
||||||
case "$PKG" in
|
case "$PKG" in
|
||||||
apt)
|
apt)
|
||||||
apt update -y >/dev/null 2>&1 || true
|
apt update -y >/dev/null 2>&1 || true
|
||||||
apt install -y python3 python3-pip git curl wget golang-go >/dev/null 2>&1 || true
|
apt install -y python3 python3-pip git curl wget golang-go >/dev/null 2>&1 || true
|
||||||
;;
|
;;
|
||||||
pacman)
|
pacman)
|
||||||
pacman -Sy --noconfirm >/dev/null 2>&1 || true
|
pacman -Sy --noconfirm >/dev/null 2>&1 || true
|
||||||
pacman -S --noconfirm --needed python python-pip git curl wget go >/dev/null 2>&1 || true
|
pacman -S --noconfirm --needed python python-pip git curl wget go >/dev/null 2>&1 || true
|
||||||
;;
|
;;
|
||||||
dnf)
|
dnf)
|
||||||
dnf install -y python3 python3-pip git curl wget golang >/dev/null 2>&1 || true
|
dnf install -y python3 python3-pip git curl wget golang >/dev/null 2>&1 || true
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
}
|
}
|
||||||
|
|
||||||
print_summary() {
|
print_summary() {
|
||||||
echo
|
echo
|
||||||
echo "============================================="
|
echo "============================================="
|
||||||
echo -e " Installed: ${GRN}$INSTALLED${NC}"
|
echo -e " Installed: ${GRN}$INSTALLED${NC}"
|
||||||
echo -e " Skipped: ${YLW}$SKIPPED${NC}"
|
echo -e " Skipped: ${YLW}$SKIPPED${NC}"
|
||||||
echo -e " Failed: ${RED}$FAILED${NC}"
|
echo -e " Failed: ${RED}$FAILED${NC}"
|
||||||
echo "============================================="
|
echo "============================================="
|
||||||
if (( FAILED > 0 )); then
|
if ((FAILED > 0)); then
|
||||||
echo -e "${RED}Failed tools:${NC} ${FAILED_TOOLS[@]:-}"
|
echo -e "${RED}Failed tools:${NC} ${FAILED_TOOLS[@]:-}"
|
||||||
echo "See $LOGFILE for details."
|
echo "See $LOGFILE for details."
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
require_root
|
require_root
|
||||||
detect_distro
|
detect_distro
|
||||||
bootstrap_basics
|
bootstrap_basics
|
||||||
|
|
||||||
echo; say "Installing: 🎓 Training, Labs & CTF (4 tools)"
|
echo
|
||||||
install_git https://github.com/digininja/DVWA.git DVWA # DVWA
|
say "Installing: 🎓 Training, Labs & CTF (4 tools)"
|
||||||
install_docker bkimminich/juice-shop 'OWASP Juice Shop' # OWASP Juice Shop
|
install_git https://github.com/digininja/DVWA.git DVWA # DVWA
|
||||||
install_docker webgoat/webgoat 'OWASP WebGoat' # OWASP WebGoat
|
install_docker bkimminich/juice-shop 'OWASP Juice Shop' # OWASP Juice Shop
|
||||||
install_git https://github.com/practisec/pwnedhub.git pwnedhub # PwnedHub
|
install_docker webgoat/webgoat 'OWASP WebGoat' # OWASP WebGoat
|
||||||
|
install_git https://github.com/practisec/pwnedhub.git pwnedhub # PwnedHub
|
||||||
|
|
||||||
print_summary
|
print_summary
|
||||||
|
|
|
||||||
665
osint.sh
665
osint.sh
|
|
@ -1,7 +1,7 @@
|
||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
# ===================================================================
|
# ===================================================================
|
||||||
# 🔍 OSINT toolkit
|
# 🔍 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 /
|
# Auto-detects: Kali / Debian / Ubuntu / Parrot / Mint / Pop!_OS /
|
||||||
# Arch / Manjaro / EndeavourOS /
|
# Arch / Manjaro / EndeavourOS /
|
||||||
# Fedora / RHEL / CentOS / Rocky / Alma
|
# Fedora / RHEL / CentOS / Rocky / Alma
|
||||||
|
|
@ -9,352 +9,415 @@
|
||||||
# ===================================================================
|
# ===================================================================
|
||||||
set -uo pipefail
|
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}"
|
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=()
|
declare -ga FAILED_TOOLS=()
|
||||||
|
|
||||||
say() { echo -e "${BLU}[*]${NC} $*"; }
|
say() { echo -e "${BLU}[*]${NC} $*"; }
|
||||||
ok() { echo -e "${GRN}[✓]${NC} $*"; INSTALLED=$((INSTALLED+1)); }
|
ok() {
|
||||||
skip() { echo -e "${YLW}[~]${NC} $*"; SKIPPED=$((SKIPPED+1)); }
|
echo -e "${GRN}[✓]${NC} $*"
|
||||||
fail() { echo -e "${RED}[✗]${NC} $*"; FAILED=$((FAILED+1)); FAILED_TOOLS+=("$1"); echo "FAIL: $*" >> "$LOGFILE"; }
|
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() {
|
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() {
|
detect_distro() {
|
||||||
if [ -f /etc/os-release ]; then
|
if [ -f /etc/os-release ]; then
|
||||||
. /etc/os-release
|
. /etc/os-release
|
||||||
case "${ID,,}" in
|
case "${ID,,}" in
|
||||||
kali|debian|ubuntu|parrot|raspbian|linuxmint|pop|elementary) PKG="apt" ;;
|
kali | debian | ubuntu | parrot | raspbian | linuxmint | pop | elementary) PKG="apt" ;;
|
||||||
arch|manjaro|endeavouros|garuda|artix) PKG="pacman" ;;
|
arch | manjaro | endeavouros | garuda | artix) PKG="pacman" ;;
|
||||||
fedora|rhel|centos|rocky|almalinux|ol) PKG="dnf" ;;
|
fedora | rhel | centos | rocky | almalinux | ol) PKG="dnf" ;;
|
||||||
*) PKG="unknown" ;;
|
*) PKG="unknown" ;;
|
||||||
esac
|
esac
|
||||||
else
|
else
|
||||||
PKG="unknown"
|
PKG="unknown"
|
||||||
fi
|
fi
|
||||||
export PKG
|
export PKG
|
||||||
echo -e "${CYN}[i]${NC} Detected package manager: $PKG"
|
echo -e "${CYN}[i]${NC} Detected package manager: $PKG"
|
||||||
if [ "$PKG" = "unknown" ]; then
|
if [ "$PKG" = "unknown" ]; then
|
||||||
echo -e "${YLW}[!]${NC} Unknown distro — git/pip/go installs will work, system-package installs will be skipped."
|
echo -e "${YLW}[!]${NC} Unknown distro — git/pip/go installs will work, system-package installs will be skipped."
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
pkg_install() {
|
pkg_install() {
|
||||||
local pkg="$1"
|
local pkg="$1"
|
||||||
case "$PKG" in
|
case "$PKG" in
|
||||||
apt)
|
apt)
|
||||||
if dpkg -s "$pkg" >/dev/null 2>&1; then skip "$pkg already installed"; return; fi
|
if dpkg -s "$pkg" >/dev/null 2>&1; then
|
||||||
if apt install -y "$pkg" >/dev/null 2>&1; then ok "$pkg (apt)"; else fail "$pkg (apt)"; fi
|
skip "$pkg already installed"
|
||||||
;;
|
return
|
||||||
pacman)
|
fi
|
||||||
if pacman -Qi "$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
|
||||||
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
|
;;
|
||||||
;;
|
pacman)
|
||||||
dnf)
|
if pacman -Qi "$pkg" >/dev/null 2>&1; then
|
||||||
if rpm -q "$pkg" >/dev/null 2>&1; then skip "$pkg already installed"; return; fi
|
skip "$pkg already installed"
|
||||||
if dnf install -y "$pkg" >/dev/null 2>&1; then ok "$pkg (dnf)"; else fail "$pkg (dnf — may not be in repo)"; fi
|
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
|
||||||
fail "$pkg — unknown package manager, install manually"
|
;;
|
||||||
;;
|
dnf)
|
||||||
esac
|
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() {
|
install_pip() {
|
||||||
local pkg="$1"
|
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
|
||||||
if pip3 install --break-system-packages "$pkg" >/dev/null 2>&1; then ok "$pkg (pip)"; else fail "$pkg (pip)"; fi
|
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() {
|
install_go() {
|
||||||
local mod="$1" name="$2"
|
local mod="$1" name="$2"
|
||||||
if ! command -v go >/dev/null 2>&1; then fail "$name — go not installed"; return; fi
|
if ! command -v go >/dev/null 2>&1; then
|
||||||
if command -v "$name" >/dev/null 2>&1; then skip "$name already installed"; return; fi
|
fail "$name — go not installed"
|
||||||
if go install "$mod" >/dev/null 2>&1; then ok "$name (go)"; else fail "$name (go)"; fi
|
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() {
|
install_git() {
|
||||||
local repo="$1" dst="$2"
|
local repo="$1" dst="$2"
|
||||||
mkdir -p /opt/osint-arsenal
|
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
|
||||||
if git clone --depth=1 "$repo" "/opt/osint-arsenal/$dst" >/dev/null 2>&1; then ok "$dst (git)"; else fail "$dst (git)"; fi
|
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() {
|
install_docker() {
|
||||||
local image="$1" name="$2"
|
local image="$1" name="$2"
|
||||||
if ! command -v docker >/dev/null 2>&1; then fail "$name — docker not installed"; return; fi
|
if ! command -v docker >/dev/null 2>&1; then
|
||||||
if docker image inspect "$image" >/dev/null 2>&1; then skip "$name (docker) already pulled"; return; fi
|
fail "$name — docker not installed"
|
||||||
if docker pull "$image" >/dev/null 2>&1; then ok "$name (docker)"; else fail "$name (docker)"; fi
|
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() {
|
bootstrap_basics() {
|
||||||
case "$PKG" in
|
case "$PKG" in
|
||||||
apt)
|
apt)
|
||||||
apt update -y >/dev/null 2>&1 || true
|
apt update -y >/dev/null 2>&1 || true
|
||||||
apt install -y python3 python3-pip git curl wget golang-go >/dev/null 2>&1 || true
|
apt install -y python3 python3-pip git curl wget golang-go >/dev/null 2>&1 || true
|
||||||
;;
|
;;
|
||||||
pacman)
|
pacman)
|
||||||
pacman -Sy --noconfirm >/dev/null 2>&1 || true
|
pacman -Sy --noconfirm >/dev/null 2>&1 || true
|
||||||
pacman -S --noconfirm --needed python python-pip git curl wget go >/dev/null 2>&1 || true
|
pacman -S --noconfirm --needed python python-pip git curl wget go >/dev/null 2>&1 || true
|
||||||
;;
|
;;
|
||||||
dnf)
|
dnf)
|
||||||
dnf install -y python3 python3-pip git curl wget golang >/dev/null 2>&1 || true
|
dnf install -y python3 python3-pip git curl wget golang >/dev/null 2>&1 || true
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
}
|
}
|
||||||
|
|
||||||
print_summary() {
|
print_summary() {
|
||||||
echo
|
echo
|
||||||
echo "============================================="
|
echo "============================================="
|
||||||
echo -e " Installed: ${GRN}$INSTALLED${NC}"
|
echo -e " Installed: ${GRN}$INSTALLED${NC}"
|
||||||
echo -e " Skipped: ${YLW}$SKIPPED${NC}"
|
echo -e " Skipped: ${YLW}$SKIPPED${NC}"
|
||||||
echo -e " Failed: ${RED}$FAILED${NC}"
|
echo -e " Failed: ${RED}$FAILED${NC}"
|
||||||
echo "============================================="
|
echo "============================================="
|
||||||
if (( FAILED > 0 )); then
|
if ((FAILED > 0)); then
|
||||||
echo -e "${RED}Failed tools:${NC} ${FAILED_TOOLS[@]:-}"
|
echo -e "${RED}Failed tools:${NC} ${FAILED_TOOLS[@]:-}"
|
||||||
echo "See $LOGFILE for details."
|
echo "See $LOGFILE for details."
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
require_root
|
require_root
|
||||||
detect_distro
|
detect_distro
|
||||||
bootstrap_basics
|
bootstrap_basics
|
||||||
|
|
||||||
echo; say "Installing: 👤 Username & Social Media OSINT (33 tools)"
|
echo
|
||||||
install_git https://github.com/ArthurHeitmann/arctic_shift.git arctic_shift # Arctic Shift
|
say "Installing: 👤 Username & Social Media OSINT (33 tools)"
|
||||||
install_pip blackbird-osint # Blackbird
|
install_git https://github.com/ArthurHeitmann/arctic_shift.git arctic_shift # Arctic Shift
|
||||||
install_git https://github.com/misiektoja/github_monitor.git github_monitor # github_monitor
|
install_pip blackbird-osint # Blackbird
|
||||||
install_pip gitrecon # Gitrecon
|
install_git https://github.com/misiektoja/github_monitor.git github_monitor # github_monitor
|
||||||
install_go github.com/ibnaleem/gosearch@latest gosearch # GoSearch
|
install_pip gitrecon # Gitrecon
|
||||||
install_pip holehe # Holehe
|
install_go github.com/ibnaleem/gosearch@latest gosearch # GoSearch
|
||||||
install_git https://github.com/misiektoja/instagram_monitor.git instagram_monitor # instagram_monitor
|
install_pip holehe # Holehe
|
||||||
install_pip instaloader # Instaloader
|
install_git https://github.com/misiektoja/instagram_monitor.git instagram_monitor # instagram_monitor
|
||||||
install_go github.com/tdh8316/investigo@latest investigo # Investigo
|
install_pip instaloader # Instaloader
|
||||||
install_git https://github.com/l4rm4nd/LinkedInDumper.git LinkedInDumper # LinkedInDumper
|
install_go github.com/tdh8316/investigo@latest investigo # Investigo
|
||||||
install_pip maigret # Maigret
|
install_git https://github.com/l4rm4nd/LinkedInDumper.git LinkedInDumper # LinkedInDumper
|
||||||
install_pip nexfil # NExfil
|
install_pip maigret # Maigret
|
||||||
install_git https://github.com/Datalux/Osintgram.git Osintgram # Osintgram
|
install_pip nexfil # NExfil
|
||||||
install_pip osrframework # OSRFramework
|
install_git https://github.com/Datalux/Osintgram.git Osintgram # Osintgram
|
||||||
install_git https://github.com/seekr-osint/seekr.git seekr # Seekr
|
install_pip osrframework # OSRFramework
|
||||||
install_pip sherlock-project # Sherlock
|
install_git https://github.com/seekr-osint/seekr.git seekr # Seekr
|
||||||
install_pip snoop # Snoop
|
install_pip sherlock-project # Sherlock
|
||||||
install_pip snscrape # snscrape
|
install_pip snoop # Snoop
|
||||||
install_pip social-analyzer # Social Analyzer
|
install_pip snscrape # snscrape
|
||||||
install_pip socialscan # socialscan
|
install_pip social-analyzer # Social Analyzer
|
||||||
install_pip socid-extractor # Socid-extractor
|
install_pip socialscan # socialscan
|
||||||
install_git https://github.com/tejado/telegram-nearby-map.git telegram-nearby-map # Telegram Nearby Map
|
install_pip socid-extractor # Socid-extractor
|
||||||
install_git https://github.com/Alb-310/TeleGram-OSINTer.git TeleGram-OSINTer # TeleGram-OSINTer
|
install_git https://github.com/tejado/telegram-nearby-map.git telegram-nearby-map # Telegram Nearby Map
|
||||||
install_pip telepathy # Telepathy
|
install_git https://github.com/Alb-310/TeleGram-OSINTer.git TeleGram-OSINTer # TeleGram-OSINTer
|
||||||
install_git https://github.com/sockysec/Telerecon.git Telerecon # Telerecon
|
install_pip telepathy # Telepathy
|
||||||
install_pip telethon # Telethon
|
install_git https://github.com/sockysec/Telerecon.git Telerecon # Telerecon
|
||||||
install_git https://github.com/eth0izzle/the-endorser.git the-endorser # the-endorser
|
install_pip telethon # Telethon
|
||||||
install_git https://github.com/drego85/tosint.git tosint # TOsint
|
install_git https://github.com/eth0izzle/the-endorser.git the-endorser # the-endorser
|
||||||
install_pip toutatis # Toutatis
|
install_git https://github.com/drego85/tosint.git tosint # TOsint
|
||||||
install_pip twayback # Twayback
|
install_pip toutatis # Toutatis
|
||||||
install_pip twint # Twint
|
install_pip twayback # Twayback
|
||||||
install_git https://github.com/kaifcodec/user-scanner.git user-scanner # user-scanner
|
install_pip twint # Twint
|
||||||
install_git https://github.com/wishihab/userrecon.git userrecon # UserRecon
|
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)"
|
echo
|
||||||
install_git https://github.com/keraattin/EmailAnalyzer.git EmailAnalyzer # EmailAnalyzer
|
say "Installing: 📧 Email & Phone Intelligence (13 tools)"
|
||||||
install_git https://github.com/Giritharram/EmailHeader-Analyzer-CLI-Python.git EmailHeader-Analyzer-CLI-Python # EmailHeader-Analyzer
|
install_git https://github.com/keraattin/EmailAnalyzer.git EmailAnalyzer # EmailAnalyzer
|
||||||
install_pip ghunt # GHunt
|
install_git https://github.com/Giritharram/EmailHeader-Analyzer-CLI-Python.git EmailHeader-Analyzer-CLI-Python # EmailHeader-Analyzer
|
||||||
install_pip h8mail # h8mail
|
install_pip ghunt # GHunt
|
||||||
install_pip ignorant # Ignorant
|
install_pip h8mail # h8mail
|
||||||
install_git https://github.com/m4ll0k/Infoga.git Infoga # Infoga
|
install_pip ignorant # Ignorant
|
||||||
install_git https://github.com/akajhon/MailHeaderDetective.git MailHeaderDetective # MailHeaderDetective
|
install_git https://github.com/m4ll0k/Infoga.git Infoga # Infoga
|
||||||
install_pip mailto-analyzer # mailtoanalyzer
|
install_git https://github.com/akajhon/MailHeaderDetective.git MailHeaderDetective # MailHeaderDetective
|
||||||
install_pip phoneinfoga # PhoneInfoga
|
install_pip mailto-analyzer # mailtoanalyzer
|
||||||
install_git https://github.com/aerosol-can/PhoneSploit.git PhoneSploit # PhoneSploit
|
install_pip phoneinfoga # PhoneInfoga
|
||||||
install_git https://github.com/nettitude/Prowl.git Prowl # Prowl
|
install_git https://github.com/aerosol-can/PhoneSploit.git PhoneSploit # PhoneSploit
|
||||||
install_pip theHarvester # theHarvester
|
install_git https://github.com/nettitude/Prowl.git Prowl # Prowl
|
||||||
install_git https://github.com/z0m31en7/WhatMail.git WhatMail # WhatMail
|
install_pip theHarvester # theHarvester
|
||||||
|
install_git https://github.com/z0m31en7/WhatMail.git WhatMail # WhatMail
|
||||||
|
|
||||||
echo; say "Installing: 🌐 Domain & IP / Network Recon (68 tools)"
|
echo
|
||||||
pkg_install aircrack-ng # Aircrack-ng
|
say "Installing: 🌐 Domain & IP / Network Recon (68 tools)"
|
||||||
install_pip py-altdns # altdns
|
pkg_install aircrack-ng # Aircrack-ng
|
||||||
install_go github.com/owasp-amass/amass/v4/...@master ... # Amass
|
install_pip py-altdns # altdns
|
||||||
install_go github.com/tomnomnom/anew@latest anew # anew
|
install_go github.com/owasp-amass/amass/v4/...@master ... # Amass
|
||||||
install_go github.com/michenriksen/aquatone@latest aquatone # Aquatone
|
install_go github.com/tomnomnom/anew@latest anew # anew
|
||||||
install_go github.com/tomnomnom/assetfinder@latest assetfinder # assetfinder
|
install_go github.com/michenriksen/aquatone@latest aquatone # Aquatone
|
||||||
install_pip git # AutoRecon
|
install_go github.com/tomnomnom/assetfinder@latest assetfinder # assetfinder
|
||||||
install_git https://github.com/pry0cc/axiom.git axiom # Axiom
|
install_pip git # AutoRecon
|
||||||
install_pip bbot # BBOT
|
install_git https://github.com/pry0cc/axiom.git axiom # Axiom
|
||||||
pkg_install bettercap # Bettercap
|
install_pip bbot # BBOT
|
||||||
install_git https://github.com/commixproject/commix.git commix # Commix
|
pkg_install bettercap # Bettercap
|
||||||
pkg_install dirb # Dirb
|
install_git https://github.com/commixproject/commix.git commix # Commix
|
||||||
install_pip dirsearch # dirsearch
|
pkg_install dirb # Dirb
|
||||||
install_pip dnsrecon # dnsrecon
|
install_pip dirsearch # dirsearch
|
||||||
install_pip dnstwist # dnstwist
|
install_pip dnsrecon # dnsrecon
|
||||||
pkg_install ettercap-common # Ettercap
|
install_pip dnstwist # dnstwist
|
||||||
pkg_install fern-wifi-cracker # Fern Wifi Cracker
|
pkg_install ettercap-common # Ettercap
|
||||||
pkg_install feroxbuster # Feroxbuster
|
pkg_install fern-wifi-cracker # Fern Wifi Cracker
|
||||||
install_go github.com/ffuf/ffuf/v2@latest v2 # ffuf
|
pkg_install feroxbuster # Feroxbuster
|
||||||
install_git https://github.com/Findomain/Findomain.git Findomain # Findomain
|
install_go github.com/ffuf/ffuf/v2@latest v2 # ffuf
|
||||||
install_git https://github.com/FluxionNetwork/fluxion.git fluxion # Fluxion
|
install_git https://github.com/Findomain/Findomain.git Findomain # Findomain
|
||||||
install_go github.com/lc/gau/v2/cmd/gau@latest gau # gau (getallurls)
|
install_git https://github.com/FluxionNetwork/fluxion.git fluxion # Fluxion
|
||||||
install_go github.com/tomnomnom/gf@latest gf # gf
|
install_go github.com/lc/gau/v2/cmd/gau@latest gau # gau (getallurls)
|
||||||
install_go github.com/OJ/gobuster/v3@latest v3 # Gobuster
|
install_go github.com/tomnomnom/gf@latest gf # gf
|
||||||
install_git https://github.com/jseidl/GoldenEye.git GoldenEye # GoldenEye
|
install_go github.com/OJ/gobuster/v3@latest v3 # Gobuster
|
||||||
install_go github.com/jaeles-project/gospider@latest gospider # GoSpider
|
install_git https://github.com/jseidl/GoldenEye.git GoldenEye # GoldenEye
|
||||||
install_go github.com/sensepost/gowitness@latest gowitness # gowitness
|
install_go github.com/jaeles-project/gospider@latest gospider # GoSpider
|
||||||
install_go github.com/hakluke/hakrawler@latest hakrawler # hakrawler
|
install_go github.com/sensepost/gowitness@latest gowitness # gowitness
|
||||||
pkg_install hcxtools # hcxtools
|
install_go github.com/hakluke/hakrawler@latest hakrawler # hakrawler
|
||||||
install_go github.com/tomnomnom/httprobe@latest httprobe # httprobe
|
pkg_install hcxtools # hcxtools
|
||||||
install_go github.com/projectdiscovery/httpx/cmd/httpx@latest httpx # HTTPx
|
install_go github.com/tomnomnom/httprobe@latest httprobe # httprobe
|
||||||
install_git https://github.com/codingo/Interlace.git Interlace # Interlace
|
install_go github.com/projectdiscovery/httpx/cmd/httpx@latest httpx # HTTPx
|
||||||
install_git https://github.com/maldevel/IPGeoLocation.git IPGeoLocation # IPGeoLocation
|
install_git https://github.com/codingo/Interlace.git Interlace # Interlace
|
||||||
install_git https://github.com/Threezh1/JSFinder.git JSFinder # JSFinder
|
install_git https://github.com/maldevel/IPGeoLocation.git IPGeoLocation # IPGeoLocation
|
||||||
install_go github.com/projectdiscovery/katana/cmd/katana@latest katana # Katana
|
install_git https://github.com/Threezh1/JSFinder.git JSFinder # JSFinder
|
||||||
pkg_install kismet # Kismet
|
install_go github.com/projectdiscovery/katana/cmd/katana@latest katana # Katana
|
||||||
install_git https://github.com/guelfoweb/knock.git knock # knock
|
pkg_install kismet # Kismet
|
||||||
install_pip knock-subdomains # Knockpy
|
install_git https://github.com/guelfoweb/knock.git knock # knock
|
||||||
install_git https://github.com/GerbenJavado/LinkFinder.git LinkFinder # LinkFinder
|
install_pip knock-subdomains # Knockpy
|
||||||
pkg_install masscan # Masscan
|
install_git https://github.com/GerbenJavado/LinkFinder.git LinkFinder # LinkFinder
|
||||||
install_git https://github.com/blechschmidt/massdns.git massdns # massdns
|
pkg_install masscan # Masscan
|
||||||
install_go github.com/tomnomnom/meg@latest meg # meg
|
install_git https://github.com/blechschmidt/massdns.git massdns # massdns
|
||||||
pkg_install metasploit-framework # Metasploit
|
install_go github.com/tomnomnom/meg@latest meg # meg
|
||||||
install_go github.com/projectdiscovery/naabu/v2/cmd/naabu@latest naabu # Naabu
|
pkg_install metasploit-framework # Metasploit
|
||||||
pkg_install netcat-openbsd # Netcat
|
install_go github.com/projectdiscovery/naabu/v2/cmd/naabu@latest naabu # Naabu
|
||||||
pkg_install nikto # Nikto
|
pkg_install netcat-openbsd # Netcat
|
||||||
pkg_install nmap # Nmap
|
pkg_install nikto # Nikto
|
||||||
install_go github.com/projectdiscovery/nuclei/v3/cmd/nuclei@latest nuclei # Nuclei
|
pkg_install nmap # Nmap
|
||||||
pkg_install openvas # OpenVAS
|
install_go github.com/projectdiscovery/nuclei/v3/cmd/nuclei@latest nuclei # Nuclei
|
||||||
install_pip paramspider # ParamSpider
|
pkg_install openvas # OpenVAS
|
||||||
install_git https://github.com/s0md3v/Photon.git Photon # Photon
|
install_pip paramspider # ParamSpider
|
||||||
pkg_install reaver # Reaver
|
install_git https://github.com/s0md3v/Photon.git Photon # Photon
|
||||||
install_git https://github.com/six2dez/reconftw.git reconftw # reconFTW
|
pkg_install reaver # Reaver
|
||||||
install_git https://github.com/RustScan/RustScan.git RustScan # RustScan
|
install_git https://github.com/six2dez/reconftw.git reconftw # reconFTW
|
||||||
install_pip shodan # Shodan
|
install_git https://github.com/RustScan/RustScan.git RustScan # RustScan
|
||||||
install_go github.com/s0md3v/smap/cmd/smap@latest smap # smap
|
install_pip shodan # Shodan
|
||||||
install_git https://github.com/1N3/Sn1per.git Sn1per # Sn1per
|
install_go github.com/s0md3v/smap/cmd/smap@latest smap # smap
|
||||||
pkg_install sqlmap # SQLMap
|
install_git https://github.com/1N3/Sn1per.git Sn1per # Sn1per
|
||||||
install_go github.com/projectdiscovery/subfinder/v2/cmd/subfinder@latest subfinder # Subfinder
|
pkg_install sqlmap # SQLMap
|
||||||
install_pip sublist3r # Sublist3r
|
install_go github.com/projectdiscovery/subfinder/v2/cmd/subfinder@latest subfinder # Subfinder
|
||||||
pkg_install tcpdump # tcpdump
|
install_pip sublist3r # Sublist3r
|
||||||
install_git https://github.com/urbanadventurer/urlcrazy.git urlcrazy # URLCrazy
|
pkg_install tcpdump # tcpdump
|
||||||
install_go github.com/tomnomnom/waybackurls@latest waybackurls # waybackurls
|
install_git https://github.com/urbanadventurer/urlcrazy.git urlcrazy # URLCrazy
|
||||||
install_git https://github.com/yan4ikyt/webhack.git webhack # WebHack
|
install_go github.com/tomnomnom/waybackurls@latest waybackurls # waybackurls
|
||||||
install_pip wfuzz # Wfuzz
|
install_git https://github.com/yan4ikyt/webhack.git webhack # WebHack
|
||||||
pkg_install whatweb # Whatweb
|
install_pip wfuzz # Wfuzz
|
||||||
pkg_install wifite # Wifite
|
pkg_install whatweb # Whatweb
|
||||||
pkg_install wireshark # Wireshark
|
pkg_install wifite # Wifite
|
||||||
|
pkg_install wireshark # Wireshark
|
||||||
|
|
||||||
echo; say "Installing: 🖼️ Image & Facial Recognition (6 tools)"
|
echo
|
||||||
install_pip deepface # DeepFace
|
say "Installing: 🖼️ Image & Facial Recognition (6 tools)"
|
||||||
install_git https://github.com/beurtschipper/Depix.git Depix # Depix
|
install_pip deepface # DeepFace
|
||||||
pkg_install libimage-exiftool-perl # ExifTool
|
install_git https://github.com/beurtschipper/Depix.git Depix # Depix
|
||||||
install_pip face_recognition # facerecognition
|
pkg_install libimage-exiftool-perl # ExifTool
|
||||||
install_git https://github.com/ElevenPaths/FOCA.git FOCA # FOCA
|
install_pip face_recognition # facerecognition
|
||||||
install_git https://github.com/GuidoBartoli/sherloq.git sherloq # Sherloq
|
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_git https://github.com/itsmehacker/DarkScrape.git DarkScrape # DarkScrape
|
||||||
install_go github.com/s-rah/onionscan@latest onionscan # OnionScan
|
install_go github.com/s-rah/onionscan@latest onionscan # OnionScan
|
||||||
install_pip onionsearch # OnionSearch
|
install_pip onionsearch # OnionSearch
|
||||||
install_git https://github.com/SharadKumar97/OSINT-SPY.git OSINT-SPY # OSINT-SPY
|
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)"
|
echo
|
||||||
pkg_install cewl # CeWL
|
say "Installing: 💥 Data Breach & Leak Detection (11 tools)"
|
||||||
pkg_install crunch # Crunch
|
pkg_install cewl # CeWL
|
||||||
install_git https://github.com/Mebus/cupp.git cupp # Cupp
|
pkg_install crunch # Crunch
|
||||||
pkg_install hashcat # Hashcat
|
install_git https://github.com/Mebus/cupp.git cupp # Cupp
|
||||||
pkg_install hydra # Hydra
|
pkg_install hashcat # Hashcat
|
||||||
pkg_install john # John the Ripper
|
pkg_install hydra # Hydra
|
||||||
install_git https://github.com/AlessandroZ/LaZagne.git LaZagne # LaZagne
|
pkg_install john # John the Ripper
|
||||||
pkg_install medusa # Medusa
|
install_git https://github.com/AlessandroZ/LaZagne.git LaZagne # LaZagne
|
||||||
install_git https://github.com/gentilkiwi/mimikatz.git mimikatz # Mimikatz
|
pkg_install medusa # Medusa
|
||||||
install_git https://github.com/lgandx/Responder.git Responder # Responder
|
install_git https://github.com/gentilkiwi/mimikatz.git mimikatz # Mimikatz
|
||||||
install_git https://github.com/danielmiessler/SecLists.git SecLists # SecLists
|
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)"
|
echo
|
||||||
install_pip opencorporates # opencorporates-cli
|
say "Installing: 🏢 Company & Business Intel (2 tools)"
|
||||||
install_git https://github.com/s0md3v/Orbit.git Orbit # Orbit
|
install_pip opencorporates # opencorporates-cli
|
||||||
|
install_git https://github.com/s0md3v/Orbit.git Orbit # Orbit
|
||||||
|
|
||||||
echo; say "Installing: ₿ Cryptocurrency & Blockchain (1 tools)"
|
echo
|
||||||
install_pip etherscan-python # etherscan-py
|
say "Installing: ₿ Cryptocurrency & Blockchain (1 tools)"
|
||||||
|
install_pip etherscan-python # etherscan-py
|
||||||
|
|
||||||
echo; say "Installing: 🦠 Malware & Threat Intelligence (2 tools)"
|
echo
|
||||||
install_git https://github.com/MISP/MISP.git MISP # MISP
|
say "Installing: 🦠 Malware & Threat Intelligence (2 tools)"
|
||||||
pkg_install yara # YARA
|
install_git https://github.com/MISP/MISP.git MISP # MISP
|
||||||
|
pkg_install yara # YARA
|
||||||
|
|
||||||
echo; say "Installing: 🔍 Search & Dorking Tools (6 tools)"
|
echo
|
||||||
install_pip censys # Censys CLI
|
say "Installing: 🔍 Search & Dorking Tools (6 tools)"
|
||||||
install_git https://github.com/jgor/dork-cli.git dork-cli # dork-cli
|
install_pip censys # Censys CLI
|
||||||
install_git https://github.com/m3n0sd0n4ld/GooFuzz.git GooFuzz # GooFuzz
|
install_git https://github.com/jgor/dork-cli.git dork-cli # dork-cli
|
||||||
install_git https://github.com/opsdisk/pagodo.git pagodo # Pagodo
|
install_git https://github.com/m3n0sd0n4ld/GooFuzz.git GooFuzz # GooFuzz
|
||||||
install_pip shodan # Shodan CLI
|
install_git https://github.com/opsdisk/pagodo.git pagodo # Pagodo
|
||||||
install_go github.com/projectdiscovery/uncover/cmd/uncover@latest uncover # uncover
|
install_pip shodan # Shodan CLI
|
||||||
|
install_go github.com/projectdiscovery/uncover/cmd/uncover@latest uncover # uncover
|
||||||
|
|
||||||
echo; say "Installing: 📄 Document & Metadata Analysis (10 tools)"
|
echo
|
||||||
pkg_install autopsy # Autopsy
|
say "Installing: 📄 Document & Metadata Analysis (10 tools)"
|
||||||
pkg_install binwalk # Binwalk
|
pkg_install autopsy # Autopsy
|
||||||
pkg_install bulk-extractor # Bulk Extractor
|
pkg_install binwalk # Binwalk
|
||||||
pkg_install foremost # Foremost
|
pkg_install bulk-extractor # Bulk Extractor
|
||||||
install_go github.com/tillson/git-hound@latest git-hound # git-hound
|
pkg_install foremost # Foremost
|
||||||
install_go github.com/gitleaks/gitleaks/v8@latest v8 # gitleaks
|
install_go github.com/tillson/git-hound@latest git-hound # git-hound
|
||||||
install_pip metagoofil # Metagoofil
|
install_go github.com/gitleaks/gitleaks/v8@latest v8 # gitleaks
|
||||||
pkg_install scalpel # Scalpel
|
install_pip metagoofil # Metagoofil
|
||||||
install_pip volatility3 # Volatility
|
pkg_install scalpel # Scalpel
|
||||||
install_pip xeuledoc # XeuleDoc
|
install_pip volatility3 # Volatility
|
||||||
|
install_pip xeuledoc # XeuleDoc
|
||||||
|
|
||||||
echo; say "Installing: 🧑 People & Identity OSINT (16 tools)"
|
echo
|
||||||
install_git https://github.com/Ignitetch/AdvPhishing.git AdvPhishing # AdvPhishing
|
say "Installing: 🧑 People & Identity OSINT (16 tools)"
|
||||||
install_git https://github.com/An0nUD4Y/blackeye.git blackeye # BlackEye
|
install_git https://github.com/Ignitetch/AdvPhishing.git AdvPhishing # AdvPhishing
|
||||||
install_pip crosslinked # CrossLinked
|
install_git https://github.com/An0nUD4Y/blackeye.git blackeye # BlackEye
|
||||||
install_git https://github.com/daprofiler/DaProfiler.git DaProfiler # DaProfiler
|
install_pip crosslinked # CrossLinked
|
||||||
install_go github.com/kgretzky/evilginx2@latest evilginx2 # Evilginx2
|
install_git https://github.com/daprofiler/DaProfiler.git DaProfiler # DaProfiler
|
||||||
install_git https://github.com/initstring/linkedin2username.git linkedin2username # linkedin2username
|
install_go github.com/kgretzky/evilginx2@latest evilginx2 # Evilginx2
|
||||||
install_go github.com/drk1wi/Modlishka@latest Modlishka # Modlishka
|
install_git https://github.com/initstring/linkedin2username.git linkedin2username # linkedin2username
|
||||||
install_git https://github.com/Lucksi/Mr.Holmes.git Mr.Holmes # Mr.Holmes
|
install_go github.com/drk1wi/Modlishka@latest Modlishka # Modlishka
|
||||||
install_git https://github.com/htr-tech/nexphisher.git nexphisher # NexPhisher
|
install_git https://github.com/Lucksi/Mr.Holmes.git Mr.Holmes # Mr.Holmes
|
||||||
install_git https://github.com/thewhiteh4t/seeker.git seeker # Seeker
|
install_git https://github.com/htr-tech/nexphisher.git nexphisher # NexPhisher
|
||||||
pkg_install set # SET (Social Engineering Toolkit)
|
install_git https://github.com/thewhiteh4t/seeker.git seeker # Seeker
|
||||||
install_git https://github.com/UndeadSec/SocialFish.git SocialFish # SocialFish
|
pkg_install set # SET (Social Engineering Toolkit)
|
||||||
install_git https://github.com/ultrasecurity/Storm-Breaker.git Storm-Breaker # Storm-Breaker
|
install_git https://github.com/UndeadSec/SocialFish.git SocialFish # SocialFish
|
||||||
install_git https://github.com/PerezMascato/URLCADIZ.git URLCADIZ # URLCADIZ
|
install_git https://github.com/ultrasecurity/Storm-Breaker.git Storm-Breaker # Storm-Breaker
|
||||||
install_pip zehef # Zehef
|
install_git https://github.com/PerezMascato/URLCADIZ.git URLCADIZ # URLCADIZ
|
||||||
install_git https://github.com/htr-tech/zphisher.git zphisher # Zphisher
|
install_pip zehef # Zehef
|
||||||
|
install_git https://github.com/htr-tech/zphisher.git zphisher # Zphisher
|
||||||
|
|
||||||
echo; say "Installing: 📡 IoT & Device Intelligence (10 tools)"
|
echo
|
||||||
install_git https://github.com/AhMyth/AhMyth-Android-RAT.git AhMyth-Android-RAT # AhMyth Android RAT
|
say "Installing: 📡 IoT & Device Intelligence (10 tools)"
|
||||||
pkg_install apktool # Apktool
|
install_git https://github.com/AhMyth/AhMyth-Android-RAT.git AhMyth-Android-RAT # AhMyth Android RAT
|
||||||
install_pip frida-tools # Frida
|
pkg_install apktool # Apktool
|
||||||
install_pip greynoise # GreyNoise CLI
|
install_pip frida-tools # Frida
|
||||||
pkg_install jadx # jadx
|
install_pip greynoise # GreyNoise CLI
|
||||||
install_git https://github.com/g0tmi1k/msfpc.git msfpc # MSFPC
|
pkg_install jadx # jadx
|
||||||
install_pip objection # Objection
|
install_git https://github.com/g0tmi1k/msfpc.git msfpc # MSFPC
|
||||||
install_pip shodan # Shodan (IoT)
|
install_pip objection # Objection
|
||||||
install_git https://github.com/shubhamrooter/ShodanSpider.git ShodanSpider # ShodanSpider
|
install_pip shodan # Shodan (IoT)
|
||||||
install_pip zoomeye # ZoomEye CLI
|
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)"
|
echo
|
||||||
install_git https://github.com/thewhiteh4t/FinalRecon.git FinalRecon # FinalRecon
|
say "Installing: 🧰 Frameworks & All-in-One Platforms (12 tools)"
|
||||||
install_git https://github.com/Manisso/fsociety.git fsociety # fsociety
|
install_git https://github.com/thewhiteh4t/FinalRecon.git FinalRecon # FinalRecon
|
||||||
install_git https://github.com/Z4nzu/hackingtool.git hackingtool # Hackingtool
|
install_git https://github.com/Manisso/fsociety.git fsociety # fsociety
|
||||||
install_pip harpoon # Harpoon
|
install_git https://github.com/Z4nzu/hackingtool.git hackingtool # Hackingtool
|
||||||
pkg_install maltego # Maltego
|
install_pip harpoon # Harpoon
|
||||||
install_git https://github.com/ninoseki/mitaka.git mitaka # Mitaka
|
pkg_install maltego # Maltego
|
||||||
install_git https://github.com/loseys/Oblivion.git Oblivion # Oblivion
|
install_git https://github.com/ninoseki/mitaka.git mitaka # Mitaka
|
||||||
install_git https://github.com/Bafomet666/OSINT-SAN.git OSINT-SAN # OSINT-SAN
|
install_git https://github.com/loseys/Oblivion.git Oblivion # Oblivion
|
||||||
install_git https://github.com/j3ssie/osmedeus.git osmedeus # osmedeus
|
install_git https://github.com/Bafomet666/OSINT-SAN.git OSINT-SAN # OSINT-SAN
|
||||||
install_pip recon-ng # Recon-ng
|
install_git https://github.com/j3ssie/osmedeus.git osmedeus # osmedeus
|
||||||
pkg_install sn0int # sn0int
|
install_pip recon-ng # Recon-ng
|
||||||
install_pip spiderfoot # SpiderFoot
|
pkg_install sn0int # sn0int
|
||||||
|
install_pip spiderfoot # SpiderFoot
|
||||||
|
|
||||||
echo; say "Installing: 🔒 Free VPN & Privacy Tools (12 tools)"
|
echo
|
||||||
install_git https://github.com/trailofbits/algo.git algo # Algo VPN
|
say "Installing: 🔒 Free VPN & Privacy Tools (12 tools)"
|
||||||
install_git https://github.com/HACK3RY2J/Anon-SMS.git Anon-SMS # Anon-SMS
|
install_git https://github.com/trailofbits/algo.git algo # Algo VPN
|
||||||
install_git https://github.com/Und3rf10w/kali-anonsurf.git kali-anonsurf # Anonsurf
|
install_git https://github.com/HACK3RY2J/Anon-SMS.git Anon-SMS # Anon-SMS
|
||||||
pkg_install bleachbit # BleachBit
|
install_git https://github.com/Und3rf10w/kali-anonsurf.git kali-anonsurf # Anonsurf
|
||||||
pkg_install macchanger # MAC Changer
|
pkg_install bleachbit # BleachBit
|
||||||
pkg_install mullvad-vpn # Mullvad VPN
|
pkg_install macchanger # MAC Changer
|
||||||
pkg_install openvpn # OpenVPN
|
pkg_install mullvad-vpn # Mullvad VPN
|
||||||
install_pip protonvpn-cli # Proton VPN Free
|
pkg_install openvpn # OpenVPN
|
||||||
pkg_install riseup-vpn # RiseupVPN
|
install_pip protonvpn-cli # Proton VPN Free
|
||||||
pkg_install torbrowser-launcher # Tor Browser
|
pkg_install riseup-vpn # RiseupVPN
|
||||||
pkg_install veracrypt # VeraCrypt
|
pkg_install torbrowser-launcher # Tor Browser
|
||||||
pkg_install wireguard # WireGuard
|
pkg_install veracrypt # VeraCrypt
|
||||||
|
pkg_install wireguard # WireGuard
|
||||||
|
|
||||||
print_summary
|
print_summary
|
||||||
274
redteam.sh
274
redteam.sh
|
|
@ -1,7 +1,7 @@
|
||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
# ===================================================================
|
# ===================================================================
|
||||||
# ⚔️ Red team / offensive
|
# ⚔️ 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 /
|
# Auto-detects: Kali / Debian / Ubuntu / Parrot / Mint / Pop!_OS /
|
||||||
# Arch / Manjaro / EndeavourOS /
|
# Arch / Manjaro / EndeavourOS /
|
||||||
# Fedora / RHEL / CentOS / Rocky / Alma
|
# Fedora / RHEL / CentOS / Rocky / Alma
|
||||||
|
|
@ -9,148 +9,198 @@
|
||||||
# ===================================================================
|
# ===================================================================
|
||||||
set -uo pipefail
|
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}"
|
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=()
|
declare -ga FAILED_TOOLS=()
|
||||||
|
|
||||||
say() { echo -e "${BLU}[*]${NC} $*"; }
|
say() { echo -e "${BLU}[*]${NC} $*"; }
|
||||||
ok() { echo -e "${GRN}[✓]${NC} $*"; INSTALLED=$((INSTALLED+1)); }
|
ok() {
|
||||||
skip() { echo -e "${YLW}[~]${NC} $*"; SKIPPED=$((SKIPPED+1)); }
|
echo -e "${GRN}[✓]${NC} $*"
|
||||||
fail() { echo -e "${RED}[✗]${NC} $*"; FAILED=$((FAILED+1)); FAILED_TOOLS+=("$1"); echo "FAIL: $*" >> "$LOGFILE"; }
|
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() {
|
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() {
|
detect_distro() {
|
||||||
if [ -f /etc/os-release ]; then
|
if [ -f /etc/os-release ]; then
|
||||||
. /etc/os-release
|
. /etc/os-release
|
||||||
case "${ID,,}" in
|
case "${ID,,}" in
|
||||||
kali|debian|ubuntu|parrot|raspbian|linuxmint|pop|elementary) PKG="apt" ;;
|
kali | debian | ubuntu | parrot | raspbian | linuxmint | pop | elementary) PKG="apt" ;;
|
||||||
arch|manjaro|endeavouros|garuda|artix) PKG="pacman" ;;
|
arch | manjaro | endeavouros | garuda | artix) PKG="pacman" ;;
|
||||||
fedora|rhel|centos|rocky|almalinux|ol) PKG="dnf" ;;
|
fedora | rhel | centos | rocky | almalinux | ol) PKG="dnf" ;;
|
||||||
*) PKG="unknown" ;;
|
*) PKG="unknown" ;;
|
||||||
esac
|
esac
|
||||||
else
|
else
|
||||||
PKG="unknown"
|
PKG="unknown"
|
||||||
fi
|
fi
|
||||||
export PKG
|
export PKG
|
||||||
echo -e "${CYN}[i]${NC} Detected package manager: $PKG"
|
echo -e "${CYN}[i]${NC} Detected package manager: $PKG"
|
||||||
if [ "$PKG" = "unknown" ]; then
|
if [ "$PKG" = "unknown" ]; then
|
||||||
echo -e "${YLW}[!]${NC} Unknown distro — git/pip/go installs will work, system-package installs will be skipped."
|
echo -e "${YLW}[!]${NC} Unknown distro — git/pip/go installs will work, system-package installs will be skipped."
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
pkg_install() {
|
pkg_install() {
|
||||||
local pkg="$1"
|
local pkg="$1"
|
||||||
case "$PKG" in
|
case "$PKG" in
|
||||||
apt)
|
apt)
|
||||||
if dpkg -s "$pkg" >/dev/null 2>&1; then skip "$pkg already installed"; return; fi
|
if dpkg -s "$pkg" >/dev/null 2>&1; then
|
||||||
if apt install -y "$pkg" >/dev/null 2>&1; then ok "$pkg (apt)"; else fail "$pkg (apt)"; fi
|
skip "$pkg already installed"
|
||||||
;;
|
return
|
||||||
pacman)
|
fi
|
||||||
if pacman -Qi "$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
|
||||||
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
|
;;
|
||||||
;;
|
pacman)
|
||||||
dnf)
|
if pacman -Qi "$pkg" >/dev/null 2>&1; then
|
||||||
if rpm -q "$pkg" >/dev/null 2>&1; then skip "$pkg already installed"; return; fi
|
skip "$pkg already installed"
|
||||||
if dnf install -y "$pkg" >/dev/null 2>&1; then ok "$pkg (dnf)"; else fail "$pkg (dnf — may not be in repo)"; fi
|
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
|
||||||
fail "$pkg — unknown package manager, install manually"
|
;;
|
||||||
;;
|
dnf)
|
||||||
esac
|
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() {
|
install_pip() {
|
||||||
local pkg="$1"
|
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
|
||||||
if pip3 install --break-system-packages "$pkg" >/dev/null 2>&1; then ok "$pkg (pip)"; else fail "$pkg (pip)"; fi
|
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() {
|
install_go() {
|
||||||
local mod="$1" name="$2"
|
local mod="$1" name="$2"
|
||||||
if ! command -v go >/dev/null 2>&1; then fail "$name — go not installed"; return; fi
|
if ! command -v go >/dev/null 2>&1; then
|
||||||
if command -v "$name" >/dev/null 2>&1; then skip "$name already installed"; return; fi
|
fail "$name — go not installed"
|
||||||
if go install "$mod" >/dev/null 2>&1; then ok "$name (go)"; else fail "$name (go)"; fi
|
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() {
|
install_git() {
|
||||||
local repo="$1" dst="$2"
|
local repo="$1" dst="$2"
|
||||||
mkdir -p /opt/osint-arsenal
|
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
|
||||||
if git clone --depth=1 "$repo" "/opt/osint-arsenal/$dst" >/dev/null 2>&1; then ok "$dst (git)"; else fail "$dst (git)"; fi
|
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() {
|
install_docker() {
|
||||||
local image="$1" name="$2"
|
local image="$1" name="$2"
|
||||||
if ! command -v docker >/dev/null 2>&1; then fail "$name — docker not installed"; return; fi
|
if ! command -v docker >/dev/null 2>&1; then
|
||||||
if docker image inspect "$image" >/dev/null 2>&1; then skip "$name (docker) already pulled"; return; fi
|
fail "$name — docker not installed"
|
||||||
if docker pull "$image" >/dev/null 2>&1; then ok "$name (docker)"; else fail "$name (docker)"; fi
|
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() {
|
bootstrap_basics() {
|
||||||
case "$PKG" in
|
case "$PKG" in
|
||||||
apt)
|
apt)
|
||||||
apt update -y >/dev/null 2>&1 || true
|
apt update -y >/dev/null 2>&1 || true
|
||||||
apt install -y python3 python3-pip git curl wget golang-go >/dev/null 2>&1 || true
|
apt install -y python3 python3-pip git curl wget golang-go >/dev/null 2>&1 || true
|
||||||
;;
|
;;
|
||||||
pacman)
|
pacman)
|
||||||
pacman -Sy --noconfirm >/dev/null 2>&1 || true
|
pacman -Sy --noconfirm >/dev/null 2>&1 || true
|
||||||
pacman -S --noconfirm --needed python python-pip git curl wget go >/dev/null 2>&1 || true
|
pacman -S --noconfirm --needed python python-pip git curl wget go >/dev/null 2>&1 || true
|
||||||
;;
|
;;
|
||||||
dnf)
|
dnf)
|
||||||
dnf install -y python3 python3-pip git curl wget golang >/dev/null 2>&1 || true
|
dnf install -y python3 python3-pip git curl wget golang >/dev/null 2>&1 || true
|
||||||
;;
|
;;
|
||||||
esac
|
esac
|
||||||
}
|
}
|
||||||
|
|
||||||
print_summary() {
|
print_summary() {
|
||||||
echo
|
echo
|
||||||
echo "============================================="
|
echo "============================================="
|
||||||
echo -e " Installed: ${GRN}$INSTALLED${NC}"
|
echo -e " Installed: ${GRN}$INSTALLED${NC}"
|
||||||
echo -e " Skipped: ${YLW}$SKIPPED${NC}"
|
echo -e " Skipped: ${YLW}$SKIPPED${NC}"
|
||||||
echo -e " Failed: ${RED}$FAILED${NC}"
|
echo -e " Failed: ${RED}$FAILED${NC}"
|
||||||
echo "============================================="
|
echo "============================================="
|
||||||
if (( FAILED > 0 )); then
|
if ((FAILED > 0)); then
|
||||||
echo -e "${RED}Failed tools:${NC} ${FAILED_TOOLS[@]:-}"
|
echo -e "${RED}Failed tools:${NC} ${FAILED_TOOLS[@]:-}"
|
||||||
echo "See $LOGFILE for details."
|
echo "See $LOGFILE for details."
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
require_root
|
require_root
|
||||||
detect_distro
|
detect_distro
|
||||||
bootstrap_basics
|
bootstrap_basics
|
||||||
|
|
||||||
echo; say "Installing: ⚔️ Red Team & Offensive Security (31 tools)"
|
echo
|
||||||
install_git https://github.com/infosecn1nja/AD-Attack-Defense.git AD-Attack-Defense # AD Attack & Defense
|
say "Installing: ⚔️ Red Team & Offensive Security (31 tools)"
|
||||||
install_pip arjun # Arjun
|
install_git https://github.com/infosecn1nja/AD-Attack-Defense.git AD-Attack-Defense # AD Attack & Defense
|
||||||
install_git https://github.com/BloodHoundAD/BloodHound.git BloodHound # BloodHound
|
install_pip arjun # Arjun
|
||||||
install_docker specterops/bloodhound:latest 'BloodHound CE' # BloodHound CE
|
install_git https://github.com/BloodHoundAD/BloodHound.git BloodHound # BloodHound
|
||||||
install_pip certipy-ad # Certipy
|
install_docker specterops/bloodhound:latest 'BloodHound CE' # BloodHound CE
|
||||||
install_pip crackmapexec # CrackMapExec
|
install_pip certipy-ad # Certipy
|
||||||
install_go github.com/dwisiswant0/crlfuzz/cmd/crlfuzz@latest crlfuzz # CRLFuzz
|
install_pip crackmapexec # CrackMapExec
|
||||||
install_go github.com/hahwul/dalfox/v2@latest v2 # Dalfox
|
install_go github.com/dwisiswant0/crlfuzz/cmd/crlfuzz@latest crlfuzz # CRLFuzz
|
||||||
pkg_install evil-winrm # Evil-WinRM
|
install_go github.com/hahwul/dalfox/v2@latest v2 # Dalfox
|
||||||
install_git https://github.com/r0oth3x49/ghauri.git ghauri # Ghauri
|
pkg_install evil-winrm # Evil-WinRM
|
||||||
install_go github.com/KathanP19/Gxss@latest Gxss # Gxss
|
install_git https://github.com/r0oth3x49/ghauri.git ghauri # Ghauri
|
||||||
install_git https://github.com/HavocFramework/Havoc.git Havoc # Havoc
|
install_go github.com/KathanP19/Gxss@latest Gxss # Gxss
|
||||||
install_pip impacket # Impacket
|
install_git https://github.com/HavocFramework/Havoc.git Havoc # Havoc
|
||||||
install_go github.com/ropnop/kerbrute@latest kerbrute # Kerbrute
|
install_pip impacket # Impacket
|
||||||
install_go github.com/assetnote/kiterunner/cmd/kr@latest kr # kiterunner
|
install_go github.com/ropnop/kerbrute@latest kerbrute # Kerbrute
|
||||||
install_go github.com/Ne0nd0g/merlin@latest merlin # Merlin
|
install_go github.com/assetnote/kiterunner/cmd/kr@latest kr # kiterunner
|
||||||
pkg_install metasploit-framework # Metasploit Framework
|
install_go github.com/Ne0nd0g/merlin@latest merlin # Merlin
|
||||||
install_git https://github.com/its-a-feature/Mythic.git Mythic # Mythic
|
pkg_install metasploit-framework # Metasploit Framework
|
||||||
install_pip git # NetExec (nxc)
|
install_git https://github.com/its-a-feature/Mythic.git Mythic # Mythic
|
||||||
install_git https://github.com/codingo/NoSQLMap.git NoSQLMap # NoSQLMap
|
install_pip git
|
||||||
install_git https://github.com/projectdiscovery/nuclei-templates.git nuclei-templates # Nuclei Templates
|
install_pip netexec # NetExec (nxc)
|
||||||
install_git https://github.com/PortSwigger/param-miner.git param-miner # ParamMiner (Burp ext)
|
install_git https://github.com/codingo/NoSQLMap.git NoSQLMap # NoSQLMap
|
||||||
install_git https://github.com/swisskyrepo/PayloadsAllTheThings.git PayloadsAllTheThings # PayloadsAllTheThings
|
install_git https://github.com/projectdiscovery/nuclei-templates.git nuclei-templates # Nuclei Templates
|
||||||
install_git https://github.com/topotam/PetitPotam.git PetitPotam # PetitPotam
|
install_git https://github.com/PortSwigger/param-miner.git param-miner # ParamMiner (Burp ext)
|
||||||
install_git https://github.com/BC-SECURITY/Empire.git Empire # PowerShell Empire
|
install_git https://github.com/swisskyrepo/PayloadsAllTheThings.git PayloadsAllTheThings # PayloadsAllTheThings
|
||||||
install_git https://github.com/GhostPack/Rubeus.git Rubeus # Rubeus
|
install_git https://github.com/topotam/PetitPotam.git PetitPotam # PetitPotam
|
||||||
install_git https://github.com/BloodHoundAD/SharpHound.git SharpHound # SharpHound
|
install_git https://github.com/BC-SECURITY/Empire.git Empire # PowerShell Empire
|
||||||
install_go github.com/bishopfox/sliver/server@latest server # Sliver
|
install_git https://github.com/GhostPack/Rubeus.git Rubeus # Rubeus
|
||||||
install_git https://github.com/swisskyrepo/SSRFmap.git SSRFmap # SSRFmap
|
install_git https://github.com/BloodHoundAD/SharpHound.git SharpHound # SharpHound
|
||||||
install_git https://github.com/t3l3machus/Villain.git Villain # Villain
|
install_go github.com/bishopfox/sliver/server@latest server # Sliver
|
||||||
install_git https://github.com/s0md3v/XSStrike.git XSStrike # XSStrike
|
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
|
print_summary
|
||||||
|
|
|
||||||
144
termux.sh
144
termux.sh
|
|
@ -1,82 +1,113 @@
|
||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
# ===================================================================
|
# ===================================================================
|
||||||
# Awesome OSINT Arsenal — Termux (Android) installer
|
# Awesome OSINT Arsenal — Termux (Android) installer
|
||||||
# Subset of tools known to work on Termux.
|
# Optimized for ARM64/ARM environments and compilation requirements.
|
||||||
# Run from Termux:
|
|
||||||
# pkg install -y git && git clone <repo> && cd <repo> && bash install-termux.sh
|
|
||||||
# ===================================================================
|
# ===================================================================
|
||||||
set -uo pipefail
|
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="$HOME/osint-install-errors.log"
|
||||||
: > "$LOGFILE"
|
: >"$LOGFILE"
|
||||||
INSTALLED=0; SKIPPED=0; FAILED=0
|
INSTALLED=0
|
||||||
|
SKIPPED=0
|
||||||
|
FAILED=0
|
||||||
declare -a FAILED_TOOLS=()
|
declare -a FAILED_TOOLS=()
|
||||||
|
|
||||||
say() { echo -e "${BLU}[*]${NC} $*"; }
|
say() { echo -e "${BLU}[*]${NC} $*"; }
|
||||||
ok() { echo -e "${GRN}[✓]${NC} $*"; INSTALLED=$((INSTALLED+1)); }
|
ok() {
|
||||||
skip() { echo -e "${YLW}[~]${NC} $*"; SKIPPED=$((SKIPPED+1)); }
|
echo -e "${GRN}[✓]${NC} $*"
|
||||||
fail() { echo -e "${RED}[✗]${NC} $*"; FAILED=$((FAILED+1)); FAILED_TOOLS+=("$1"); echo "FAIL: $*" >> "$LOGFILE"; }
|
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() {
|
install_pkg() {
|
||||||
local p="$1"
|
local p="$1"
|
||||||
if dpkg -s "$p" >/dev/null 2>&1; then skip "$p already installed"; return; fi
|
if dpkg -s "$p" >/dev/null 2>&1; then
|
||||||
if pkg install -y "$p" >/dev/null 2>&1; then ok "$p (pkg)"; else fail "$p (pkg)"; fi
|
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() {
|
install_pip() {
|
||||||
local p="$1"
|
local p="$1"
|
||||||
if pip show "$p" >/dev/null 2>&1; then skip "$p (pip) already installed"; return; fi
|
if pip show "$p" >/dev/null 2>&1; then
|
||||||
if pip install "$p" >/dev/null 2>&1; then ok "$p (pip)"; else fail "$p (pip)"; fi
|
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() {
|
install_git() {
|
||||||
local repo="$1" dst="$2"
|
local repo="$1" dst="$2"
|
||||||
mkdir -p "$HOME/osint-arsenal"
|
mkdir -p "$HOME/osint-arsenal"
|
||||||
if [ -d "$HOME/osint-arsenal/$dst" ]; then skip "$dst already cloned"; return; fi
|
if [ -d "$HOME/osint-arsenal/$dst" ]; then
|
||||||
if git clone --depth=1 "$repo" "$HOME/osint-arsenal/$dst" >/dev/null 2>&1; then ok "$dst (git)"; else fail "$dst (git)"; fi
|
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 update -y >/dev/null 2>&1 || true
|
||||||
pkg upgrade -y >/dev/null 2>&1 || true
|
|
||||||
|
|
||||||
say "Installing core packages..."
|
say "Installing system compilation environment & dependencies (Essential for ARM architecture)..."
|
||||||
pkg install -y python python-pip git curl wget openssh nmap hydra perl >/dev/null 2>&1 || true
|
# 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
|
termux-setup-storage 2>/dev/null || true
|
||||||
|
|
||||||
say "Installing Termux-compatible tools..."
|
say "Installing Termux-compatible tools..."
|
||||||
install_pkg aircrack-ng # Aircrack-ng
|
install_pkg aircrack-ng
|
||||||
install_pip blackbird-osint # Blackbird
|
install_pkg exiftool # FIXED: Correct Termux package name
|
||||||
install_pip censys # Censys CLI
|
install_pkg hydra
|
||||||
install_pip dnsrecon # dnsrecon
|
install_pkg john
|
||||||
install_pip dnstwist # dnstwist
|
install_pkg nmap
|
||||||
install_pkg libimage-exiftool-perl # ExifTool
|
|
||||||
install_git https://github.com/Manisso/fsociety.git fsociety # fsociety
|
install_pip blackbird-osint
|
||||||
install_pip gitrecon # Gitrecon
|
install_pip censys
|
||||||
install_pip h8mail # h8mail
|
install_pip dnsrecon
|
||||||
install_pip holehe # Holehe
|
install_pip dnstwist
|
||||||
install_pkg hydra # Hydra
|
install_pip gitrecon
|
||||||
install_pip instaloader # Instaloader
|
install_pip h8mail
|
||||||
install_git https://github.com/maldevel/IPGeoLocation.git IPGeoLocation # IPGeoLocation
|
install_pip holehe
|
||||||
install_pkg john # John the Ripper
|
install_pip instaloader
|
||||||
install_pip maigret # Maigret
|
install_pip maigret
|
||||||
install_pip metagoofil # Metagoofil
|
install_pip metagoofil
|
||||||
install_git https://github.com/htr-tech/nexphisher.git nexphisher # NexPhisher
|
install_pip sherlock-project
|
||||||
install_pkg nmap # Nmap
|
install_pip shodan # FIXED: Deduplicated duplicate line entry
|
||||||
install_git https://github.com/s0md3v/Orbit.git Orbit # Orbit
|
install_pip snoop
|
||||||
install_pip phoneinfoga # PhoneInfoga
|
install_pip snscrape
|
||||||
install_git https://github.com/aerosol-can/PhoneSploit.git PhoneSploit # PhoneSploit
|
install_pip social-analyzer
|
||||||
install_pip sherlock-project # Sherlock
|
install_pip sublist3r
|
||||||
install_pip shodan # Shodan
|
install_pip theHarvester
|
||||||
install_pip shodan # Shodan CLI
|
|
||||||
install_pip snoop # Snoop
|
install_git https://github.com/Manisso/fsociety.git fsociety
|
||||||
install_pip snscrape # snscrape
|
install_git https://github.com/maldevel/IPGeoLocation.git IPGeoLocation
|
||||||
install_pip social-analyzer # Social Analyzer
|
install_git https://github.com/htr-tech/nexphisher.git nexphisher # Requires PHP (installed above)
|
||||||
install_git https://github.com/ultrasecurity/Storm-Breaker.git Storm-Breaker # Storm-Breaker
|
install_git https://github.com/s0md3v/Orbit.git Orbit
|
||||||
install_pip sublist3r # Sublist3r
|
install_git https://github.com/aerosol-can/PhoneSploit.git PhoneSploit
|
||||||
install_pip theHarvester # theHarvester
|
install_git https://github.com/ultrasecurity/Storm-Breaker.git Storm-Breaker # Requires PHP
|
||||||
install_pip trufflehog # trufflehog
|
install_git https://github.com/wishihab/userrecon.git userrecon
|
||||||
install_git https://github.com/wishihab/userrecon.git userrecon # UserRecon
|
install_git https://github.com/htr-tech/zphisher.git zphisher # Requires PHP
|
||||||
install_git https://github.com/htr-tech/zphisher.git zphisher # Zphisher
|
|
||||||
|
|
||||||
echo
|
echo
|
||||||
echo "============================================="
|
echo "============================================="
|
||||||
|
|
@ -84,10 +115,9 @@ echo -e " Installed: ${GRN}$INSTALLED${NC}"
|
||||||
echo -e " Skipped: ${YLW}$SKIPPED${NC}"
|
echo -e " Skipped: ${YLW}$SKIPPED${NC}"
|
||||||
echo -e " Failed: ${RED}$FAILED${NC}"
|
echo -e " Failed: ${RED}$FAILED${NC}"
|
||||||
echo "============================================="
|
echo "============================================="
|
||||||
if (( FAILED > 0 )); then
|
if ((FAILED > 0)); then
|
||||||
echo -e "${RED}Failed tools:${NC} ${FAILED_TOOLS[*]}"
|
echo -e "${RED}Failed tools:${NC} ${FAILED_TOOLS[*]}"
|
||||||
echo "See $LOGFILE for details."
|
echo "Review comprehensive build errors here: $LOGFILE"
|
||||||
fi
|
fi
|
||||||
echo
|
echo
|
||||||
echo "Tools cloned to: $HOME/osint-arsenal/"
|
echo "Tools mapped out to: $HOME/osint-arsenal/"
|
||||||
echo "For more tools, see the README.md — many require x86 Linux and won't run on Android."
|
|
||||||
Loading…
Reference in New Issue