update
This commit is contained in:
parent
63abebdc14
commit
e8009b1b8b
96
blueteam.sh
96
blueteam.sh
|
|
@ -1,7 +1,7 @@
|
|||
#!/usr/bin/env bash
|
||||
# ===================================================================
|
||||
# 🛡️ Blue team / defensive + threat intel
|
||||
# Part of awesome-osint-arsenal v3.4
|
||||
# Part of awesome-osint-arsenal v2.1
|
||||
# Auto-detects: Kali / Debian / Ubuntu / Parrot / Mint / Pop!_OS /
|
||||
# Arch / Manjaro / EndeavourOS /
|
||||
# Fedora / RHEL / CentOS / Rocky / Alma
|
||||
|
|
@ -9,27 +9,48 @@
|
|||
# ===================================================================
|
||||
set -uo pipefail
|
||||
|
||||
RED="\033[0;31m"; GRN="\033[0;32m"; YLW="\033[1;33m"; BLU="\033[0;34m"; CYN="\033[0;36m"; NC="\033[0m"
|
||||
RED="\033[0;31m"
|
||||
GRN="\033[0;32m"
|
||||
YLW="\033[1;33m"
|
||||
BLU="\033[0;34m"
|
||||
CYN="\033[0;36m"
|
||||
NC="\033[0m"
|
||||
LOGFILE="${LOGFILE:-$HOME/osint-install-errors.log}"
|
||||
INSTALLED=${INSTALLED:-0}; SKIPPED=${SKIPPED:-0}; FAILED=${FAILED:-0}
|
||||
INSTALLED=${INSTALLED:-0}
|
||||
SKIPPED=${SKIPPED:-0}
|
||||
FAILED=${FAILED:-0}
|
||||
declare -ga FAILED_TOOLS=()
|
||||
|
||||
say() { echo -e "${BLU}[*]${NC} $*"; }
|
||||
ok() { echo -e "${GRN}[✓]${NC} $*"; INSTALLED=$((INSTALLED+1)); }
|
||||
skip() { echo -e "${YLW}[~]${NC} $*"; SKIPPED=$((SKIPPED+1)); }
|
||||
fail() { echo -e "${RED}[✗]${NC} $*"; FAILED=$((FAILED+1)); FAILED_TOOLS+=("$1"); echo "FAIL: $*" >> "$LOGFILE"; }
|
||||
ok() {
|
||||
echo -e "${GRN}[✓]${NC} $*"
|
||||
INSTALLED=$((INSTALLED + 1))
|
||||
}
|
||||
skip() {
|
||||
echo -e "${YLW}[~]${NC} $*"
|
||||
SKIPPED=$((SKIPPED + 1))
|
||||
}
|
||||
fail() {
|
||||
echo -e "${RED}[✗]${NC} $*"
|
||||
FAILED=$((FAILED + 1))
|
||||
FAILED_TOOLS+=("$1")
|
||||
echo "FAIL: $*" >>"$LOGFILE"
|
||||
}
|
||||
|
||||
require_root() {
|
||||
if [ "$EUID" -ne 0 ]; then echo "Please run as root: sudo bash $0"; exit 1; fi
|
||||
if [ "$EUID" -ne 0 ]; then
|
||||
echo "Please run as root: sudo bash $0"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
detect_distro() {
|
||||
if [ -f /etc/os-release ]; then
|
||||
. /etc/os-release
|
||||
case "${ID,,}" in
|
||||
kali|debian|ubuntu|parrot|raspbian|linuxmint|pop|elementary) PKG="apt" ;;
|
||||
arch|manjaro|endeavouros|garuda|artix) PKG="pacman" ;;
|
||||
fedora|rhel|centos|rocky|almalinux|ol) PKG="dnf" ;;
|
||||
kali | debian | ubuntu | parrot | raspbian | linuxmint | pop | elementary) PKG="apt" ;;
|
||||
arch | manjaro | endeavouros | garuda | artix) PKG="pacman" ;;
|
||||
fedora | rhel | centos | rocky | almalinux | ol) PKG="dnf" ;;
|
||||
*) PKG="unknown" ;;
|
||||
esac
|
||||
else
|
||||
|
|
@ -46,15 +67,24 @@ pkg_install() {
|
|||
local pkg="$1"
|
||||
case "$PKG" in
|
||||
apt)
|
||||
if dpkg -s "$pkg" >/dev/null 2>&1; then skip "$pkg already installed"; return; fi
|
||||
if dpkg -s "$pkg" >/dev/null 2>&1; then
|
||||
skip "$pkg already installed"
|
||||
return
|
||||
fi
|
||||
if apt install -y "$pkg" >/dev/null 2>&1; then ok "$pkg (apt)"; else fail "$pkg (apt)"; fi
|
||||
;;
|
||||
pacman)
|
||||
if pacman -Qi "$pkg" >/dev/null 2>&1; then skip "$pkg already installed"; return; fi
|
||||
if pacman -Qi "$pkg" >/dev/null 2>&1; then
|
||||
skip "$pkg already installed"
|
||||
return
|
||||
fi
|
||||
if pacman -S --noconfirm --needed "$pkg" >/dev/null 2>&1; then ok "$pkg (pacman)"; else fail "$pkg (pacman — may not be in repo, try AUR)"; fi
|
||||
;;
|
||||
dnf)
|
||||
if rpm -q "$pkg" >/dev/null 2>&1; then skip "$pkg already installed"; return; fi
|
||||
if 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
|
||||
;;
|
||||
*)
|
||||
|
|
@ -65,25 +95,43 @@ pkg_install() {
|
|||
|
||||
install_pip() {
|
||||
local pkg="$1"
|
||||
if pip3 show "$pkg" >/dev/null 2>&1; then skip "$pkg (pip) already installed"; return; fi
|
||||
if pip3 show "$pkg" >/dev/null 2>&1; then
|
||||
skip "$pkg (pip) already installed"
|
||||
return
|
||||
fi
|
||||
if pip3 install --break-system-packages "$pkg" >/dev/null 2>&1; then ok "$pkg (pip)"; else fail "$pkg (pip)"; fi
|
||||
}
|
||||
install_go() {
|
||||
local mod="$1" name="$2"
|
||||
if ! command -v go >/dev/null 2>&1; then fail "$name — go not installed"; return; fi
|
||||
if command -v "$name" >/dev/null 2>&1; then skip "$name already installed"; return; fi
|
||||
if go install "$mod" >/dev/null 2>&1; then ok "$name (go)"; else fail "$name (go)"; fi
|
||||
if ! command -v go >/dev/null 2>&1; then
|
||||
fail "$name — go not installed"
|
||||
return
|
||||
fi
|
||||
if command -v "$name" >/dev/null 2>&1 || [ -f "/root/go/bin/$name" ]; then
|
||||
skip "$name already installed"
|
||||
return
|
||||
fi
|
||||
if go install "${mod}@latest" >/dev/null 2>&1; then ok "$name (go)"; else fail "$name (go)"; fi
|
||||
}
|
||||
install_git() {
|
||||
local repo="$1" dst="$2"
|
||||
mkdir -p /opt/osint-arsenal
|
||||
if [ -d "/opt/osint-arsenal/$dst" ]; then skip "$dst already cloned"; return; fi
|
||||
if [ -d "/opt/osint-arsenal/$dst" ]; then
|
||||
skip "$dst already cloned"
|
||||
return
|
||||
fi
|
||||
if git clone --depth=1 "$repo" "/opt/osint-arsenal/$dst" >/dev/null 2>&1; then ok "$dst (git)"; else fail "$dst (git)"; fi
|
||||
}
|
||||
install_docker() {
|
||||
local image="$1" name="$2"
|
||||
if ! command -v docker >/dev/null 2>&1; then fail "$name — docker not installed"; return; fi
|
||||
if docker image inspect "$image" >/dev/null 2>&1; then skip "$name (docker) already pulled"; return; fi
|
||||
if ! command -v docker >/dev/null 2>&1; then
|
||||
fail "$name — docker not installed"
|
||||
return
|
||||
fi
|
||||
if docker image inspect "$image" >/dev/null 2>&1; then
|
||||
skip "$name (docker) already pulled"
|
||||
return
|
||||
fi
|
||||
if docker pull "$image" >/dev/null 2>&1; then ok "$name (docker)"; else fail "$name (docker)"; fi
|
||||
}
|
||||
|
||||
|
|
@ -110,7 +158,7 @@ print_summary() {
|
|||
echo -e " Skipped: ${YLW}$SKIPPED${NC}"
|
||||
echo -e " Failed: ${RED}$FAILED${NC}"
|
||||
echo "============================================="
|
||||
if (( FAILED > 0 )); then
|
||||
if ((FAILED > 0)); then
|
||||
echo -e "${RED}Failed tools:${NC} ${FAILED_TOOLS[@]:-}"
|
||||
echo "See $LOGFILE for details."
|
||||
fi
|
||||
|
|
@ -120,11 +168,13 @@ require_root
|
|||
detect_distro
|
||||
bootstrap_basics
|
||||
|
||||
echo; say "Installing: 🛰️ Threat Intel Platforms (2 tools)"
|
||||
echo
|
||||
say "Installing: 🛰️ Threat Intel Platforms (2 tools)"
|
||||
install_docker opencti/platform OpenCTI # OpenCTI
|
||||
install_git https://github.com/yeti-platform/yeti.git yeti # Yeti
|
||||
|
||||
echo; say "Installing: 🛡️ Blue Team & Defensive Security (20 tools)"
|
||||
echo
|
||||
say "Installing: 🛡️ Blue Team & Defensive Security (20 tools)"
|
||||
install_git https://github.com/redcanaryco/atomic-red-team.git atomic-red-team # Atomic Red Team
|
||||
install_git https://github.com/WithSecureLabs/chainsaw.git chainsaw # Chainsaw
|
||||
install_docker thehiveproject/cortex:latest 'Cortex (TheHive)' # Cortex (TheHive)
|
||||
|
|
|
|||
136
extras.sh
136
extras.sh
|
|
@ -1,7 +1,7 @@
|
|||
#!/usr/bin/env bash
|
||||
# ===================================================================
|
||||
# 🔧 Misc / catch-all
|
||||
# Part of awesome-osint-arsenal v3.4
|
||||
# Part of awesome-osint-arsenal v2.1 (Hardened Production Edition)
|
||||
# Auto-detects: Kali / Debian / Ubuntu / Parrot / Mint / Pop!_OS /
|
||||
# Arch / Manjaro / EndeavourOS /
|
||||
# Fedora / RHEL / CentOS / Rocky / Alma
|
||||
|
|
@ -9,27 +9,48 @@
|
|||
# ===================================================================
|
||||
set -uo pipefail
|
||||
|
||||
RED="\033[0;31m"; GRN="\033[0;32m"; YLW="\033[1;33m"; BLU="\033[0;34m"; CYN="\033[0;36m"; NC="\033[0m"
|
||||
RED="\033[0;31m"
|
||||
GRN="\033[0;32m"
|
||||
YLW="\033[1;33m"
|
||||
BLU="\033[0;34m"
|
||||
CYN="\033[0;36m"
|
||||
NC="\033[0m"
|
||||
LOGFILE="${LOGFILE:-$HOME/osint-install-errors.log}"
|
||||
INSTALLED=${INSTALLED:-0}; SKIPPED=${SKIPPED:-0}; FAILED=${FAILED:-0}
|
||||
INSTALLED=${INSTALLED:-0}
|
||||
SKIPPED=${SKIPPED:-0}
|
||||
FAILED=${FAILED:-0}
|
||||
declare -ga FAILED_TOOLS=()
|
||||
|
||||
say() { echo -e "${BLU}[*]${NC} $*"; }
|
||||
ok() { echo -e "${GRN}[✓]${NC} $*"; INSTALLED=$((INSTALLED+1)); }
|
||||
skip() { echo -e "${YLW}[~]${NC} $*"; SKIPPED=$((SKIPPED+1)); }
|
||||
fail() { echo -e "${RED}[✗]${NC} $*"; FAILED=$((FAILED+1)); FAILED_TOOLS+=("$1"); echo "FAIL: $*" >> "$LOGFILE"; }
|
||||
ok() {
|
||||
echo -e "${GRN}[✓]${NC} $*"
|
||||
INSTALLED=$((INSTALLED + 1))
|
||||
}
|
||||
skip() {
|
||||
echo -e "${YLW}[~]${NC} $*"
|
||||
SKIPPED=$((SKIPPED + 1))
|
||||
}
|
||||
fail() {
|
||||
echo -e "${RED}[✗]${NC} $*"
|
||||
FAILED=$((FAILED + 1))
|
||||
FAILED_TOOLS+=("$1")
|
||||
echo "FAIL: $*" >>"$LOGFILE"
|
||||
}
|
||||
|
||||
require_root() {
|
||||
if [ "$EUID" -ne 0 ]; then echo "Please run as root: sudo bash $0"; exit 1; fi
|
||||
if [ "$EUID" -ne 0 ]; then
|
||||
echo "Please run as root: sudo bash $0"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
detect_distro() {
|
||||
if [ -f /etc/os-release ]; then
|
||||
. /etc/os-release
|
||||
case "${ID,,}" in
|
||||
kali|debian|ubuntu|parrot|raspbian|linuxmint|pop|elementary) PKG="apt" ;;
|
||||
arch|manjaro|endeavouros|garuda|artix) PKG="pacman" ;;
|
||||
fedora|rhel|centos|rocky|almalinux|ol) PKG="dnf" ;;
|
||||
kali | debian | ubuntu | parrot | raspbian | linuxmint | pop | elementary) PKG="apt" ;;
|
||||
arch | manjaro | endeavouros | garuda | artix) PKG="pacman" ;;
|
||||
fedora | rhel | centos | rocky | almalinux | ol) PKG="dnf" ;;
|
||||
*) PKG="unknown" ;;
|
||||
esac
|
||||
else
|
||||
|
|
@ -46,15 +67,24 @@ pkg_install() {
|
|||
local pkg="$1"
|
||||
case "$PKG" in
|
||||
apt)
|
||||
if dpkg -s "$pkg" >/dev/null 2>&1; then skip "$pkg already installed"; return; fi
|
||||
if dpkg -s "$pkg" >/dev/null 2>&1; then
|
||||
skip "$pkg already installed"
|
||||
return
|
||||
fi
|
||||
if apt install -y "$pkg" >/dev/null 2>&1; then ok "$pkg (apt)"; else fail "$pkg (apt)"; fi
|
||||
;;
|
||||
pacman)
|
||||
if pacman -Qi "$pkg" >/dev/null 2>&1; then skip "$pkg already installed"; return; fi
|
||||
if pacman -Qi "$pkg" >/dev/null 2>&1; then
|
||||
skip "$pkg already installed"
|
||||
return
|
||||
fi
|
||||
if pacman -S --noconfirm --needed "$pkg" >/dev/null 2>&1; then ok "$pkg (pacman)"; else fail "$pkg (pacman — may not be in repo, try AUR)"; fi
|
||||
;;
|
||||
dnf)
|
||||
if rpm -q "$pkg" >/dev/null 2>&1; then skip "$pkg already installed"; return; fi
|
||||
if 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
|
||||
;;
|
||||
*)
|
||||
|
|
@ -65,25 +95,47 @@ pkg_install() {
|
|||
|
||||
install_pip() {
|
||||
local pkg="$1"
|
||||
if pip3 show "$pkg" >/dev/null 2>&1; then skip "$pkg (pip) already installed"; return; fi
|
||||
if pip3 show "$pkg" >/dev/null 2>&1; then
|
||||
skip "$pkg (pip) already installed"
|
||||
return
|
||||
fi
|
||||
if pip3 install --break-system-packages "$pkg" >/dev/null 2>&1; then ok "$pkg (pip)"; else fail "$pkg (pip)"; fi
|
||||
}
|
||||
|
||||
install_go() {
|
||||
local mod="$1" name="$2"
|
||||
if ! command -v go >/dev/null 2>&1; then fail "$name — go not installed"; return; fi
|
||||
if command -v "$name" >/dev/null 2>&1; then skip "$name already installed"; return; fi
|
||||
if go install "$mod" >/dev/null 2>&1; then ok "$name (go)"; else fail "$name (go)"; fi
|
||||
if ! command -v go >/dev/null 2>&1; then
|
||||
fail "$name — go not installed"
|
||||
return
|
||||
fi
|
||||
if command -v "$name" >/dev/null 2>&1 || [ -f "/root/go/bin/$name" ] || [ -f "$HOME/go/bin/$name" ]; then
|
||||
skip "$name already installed"
|
||||
return
|
||||
fi
|
||||
# Appending @latest ensures compliance with modern Go package management installation protocols
|
||||
if go install "${mod}@latest" >/dev/null 2>&1; then ok "$name (go)"; else fail "$name (go)"; fi
|
||||
}
|
||||
|
||||
install_git() {
|
||||
local repo="$1" dst="$2"
|
||||
mkdir -p /opt/osint-arsenal
|
||||
if [ -d "/opt/osint-arsenal/$dst" ]; then skip "$dst already cloned"; return; fi
|
||||
if [ -d "/opt/osint-arsenal/$dst" ]; then
|
||||
skip "$dst already cloned"
|
||||
return
|
||||
fi
|
||||
if git clone --depth=1 "$repo" "/opt/osint-arsenal/$dst" >/dev/null 2>&1; then ok "$dst (git)"; else fail "$dst (git)"; fi
|
||||
}
|
||||
|
||||
install_docker() {
|
||||
local image="$1" name="$2"
|
||||
if ! command -v docker >/dev/null 2>&1; then fail "$name — docker not installed"; return; fi
|
||||
if docker image inspect "$image" >/dev/null 2>&1; then skip "$name (docker) already pulled"; return; fi
|
||||
if ! command -v docker >/dev/null 2>&1; then
|
||||
fail "$name — docker not installed"
|
||||
return
|
||||
fi
|
||||
if docker image inspect "$image" >/dev/null 2>&1; then
|
||||
skip "$name (docker) already pulled"
|
||||
return
|
||||
fi
|
||||
if docker pull "$image" >/dev/null 2>&1; then ok "$name (docker)"; else fail "$name (docker)"; fi
|
||||
}
|
||||
|
||||
|
|
@ -101,6 +153,9 @@ bootstrap_basics() {
|
|||
dnf install -y python3 python3-pip git curl wget golang >/dev/null 2>&1 || true
|
||||
;;
|
||||
esac
|
||||
|
||||
# Dynamically append Go structural binaries paths into active execution scope
|
||||
export PATH="$PATH:/root/go/bin:$HOME/go/bin"
|
||||
}
|
||||
|
||||
print_summary() {
|
||||
|
|
@ -110,23 +165,48 @@ print_summary() {
|
|||
echo -e " Skipped: ${YLW}$SKIPPED${NC}"
|
||||
echo -e " Failed: ${RED}$FAILED${NC}"
|
||||
echo "============================================="
|
||||
if (( FAILED > 0 )); then
|
||||
if ((FAILED > 0)); then
|
||||
echo -e "${RED}Failed tools:${NC} ${FAILED_TOOLS[@]:-}"
|
||||
echo "See $LOGFILE for details."
|
||||
fi
|
||||
}
|
||||
|
||||
# ===================================================================
|
||||
# Execution Flow
|
||||
# ===================================================================
|
||||
require_root
|
||||
detect_distro
|
||||
bootstrap_basics
|
||||
|
||||
echo; say "Installing: 📚 Learning Resources (2 tools)"
|
||||
install_git https://github.com/cipher387/linux-for-OSINT-21-days.git linux-for-OSINT-21-days # Linux for OSINT (cipher387)
|
||||
install_git https://github.com/cipher387/python-for-OSINT-21-days.git python-for-OSINT-21-days # Python for OSINT (cipher387)
|
||||
echo
|
||||
say "Installing: 📚 Learning Resources (2 tools)"
|
||||
install_git https://github.com/cipher387/linux-for-OSINT-21-days.git linux-for-OSINT-21-days
|
||||
install_git https://github.com/cipher387/python-for-OSINT-21-days.git python-for-OSINT-21-days
|
||||
|
||||
echo; say "Installing: 🔧 Miscellaneous / Niche Tools (3 tools)"
|
||||
install_git https://github.com/RedSiege/EyeWitness.git EyeWitness # EyeWitness
|
||||
install_pip opencv-python # OpenCV
|
||||
install_pip trufflehog # trufflehog
|
||||
echo
|
||||
say "Installing: 🔧 Miscellaneous / Niche Tools (3 tools)"
|
||||
|
||||
# 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
|
||||
172
forensics.sh
172
forensics.sh
|
|
@ -1,7 +1,7 @@
|
|||
#!/usr/bin/env bash
|
||||
# ===================================================================
|
||||
# 🔬 Digital forensics & RE
|
||||
# Part of awesome-osint-arsenal v3.4
|
||||
# 🛡️ 🔧 Blue Team, Threat Intel & Misc Lab Provisioner
|
||||
# Part of awesome-osint-arsenal v3.4 (Unified Production Edition)
|
||||
# Auto-detects: Kali / Debian / Ubuntu / Parrot / Mint / Pop!_OS /
|
||||
# Arch / Manjaro / EndeavourOS /
|
||||
# Fedora / RHEL / CentOS / Rocky / Alma
|
||||
|
|
@ -9,27 +9,48 @@
|
|||
# ===================================================================
|
||||
set -uo pipefail
|
||||
|
||||
RED="\033[0;31m"; GRN="\033[0;32m"; YLW="\033[1;33m"; BLU="\033[0;34m"; CYN="\033[0;36m"; NC="\033[0m"
|
||||
RED="\033[0;31m"
|
||||
GRN="\033[0;32m"
|
||||
YLW="\033[1;33m"
|
||||
BLU="\033[0;34m"
|
||||
CYN="\033[0;36m"
|
||||
NC="\033[0m"
|
||||
LOGFILE="${LOGFILE:-$HOME/osint-install-errors.log}"
|
||||
INSTALLED=${INSTALLED:-0}; SKIPPED=${SKIPPED:-0}; FAILED=${FAILED:-0}
|
||||
INSTALLED=${INSTALLED:-0}
|
||||
SKIPPED=${SKIPPED:-0}
|
||||
FAILED=${FAILED:-0}
|
||||
declare -ga FAILED_TOOLS=()
|
||||
|
||||
say() { echo -e "${BLU}[*]${NC} $*"; }
|
||||
ok() { echo -e "${GRN}[✓]${NC} $*"; INSTALLED=$((INSTALLED+1)); }
|
||||
skip() { echo -e "${YLW}[~]${NC} $*"; SKIPPED=$((SKIPPED+1)); }
|
||||
fail() { echo -e "${RED}[✗]${NC} $*"; FAILED=$((FAILED+1)); FAILED_TOOLS+=("$1"); echo "FAIL: $*" >> "$LOGFILE"; }
|
||||
ok() {
|
||||
echo -e "${GRN}[✓]${NC} $*"
|
||||
INSTALLED=$((INSTALLED + 1))
|
||||
}
|
||||
skip() {
|
||||
echo -e "${YLW}[~]${NC} $*"
|
||||
SKIPPED=$((SKIPPED + 1))
|
||||
}
|
||||
fail() {
|
||||
echo -e "${RED}[✗]${NC} $*"
|
||||
FAILED=$((FAILED + 1))
|
||||
FAILED_TOOLS+=("$1")
|
||||
echo "FAIL: $*" >>"$LOGFILE"
|
||||
}
|
||||
|
||||
require_root() {
|
||||
if [ "$EUID" -ne 0 ]; then echo "Please run as root: sudo bash $0"; exit 1; fi
|
||||
if [ "$EUID" -ne 0 ]; then
|
||||
echo "Please run as root: sudo bash $0"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
detect_distro() {
|
||||
if [ -f /etc/os-release ]; then
|
||||
. /etc/os-release
|
||||
case "${ID,,}" in
|
||||
kali|debian|ubuntu|parrot|raspbian|linuxmint|pop|elementary) PKG="apt" ;;
|
||||
arch|manjaro|endeavouros|garuda|artix) PKG="pacman" ;;
|
||||
fedora|rhel|centos|rocky|almalinux|ol) PKG="dnf" ;;
|
||||
kali | debian | ubuntu | parrot | raspbian | linuxmint | pop | elementary) PKG="apt" ;;
|
||||
arch | manjaro | endeavouros | garuda | artix) PKG="pacman" ;;
|
||||
fedora | rhel | centos | rocky | almalinux | ol) PKG="dnf" ;;
|
||||
*) PKG="unknown" ;;
|
||||
esac
|
||||
else
|
||||
|
|
@ -46,15 +67,24 @@ pkg_install() {
|
|||
local pkg="$1"
|
||||
case "$PKG" in
|
||||
apt)
|
||||
if dpkg -s "$pkg" >/dev/null 2>&1; then skip "$pkg already installed"; return; fi
|
||||
if dpkg -s "$pkg" >/dev/null 2>&1; then
|
||||
skip "$pkg already installed"
|
||||
return
|
||||
fi
|
||||
if apt install -y "$pkg" >/dev/null 2>&1; then ok "$pkg (apt)"; else fail "$pkg (apt)"; fi
|
||||
;;
|
||||
pacman)
|
||||
if pacman -Qi "$pkg" >/dev/null 2>&1; then skip "$pkg already installed"; return; fi
|
||||
if pacman -Qi "$pkg" >/dev/null 2>&1; then
|
||||
skip "$pkg already installed"
|
||||
return
|
||||
fi
|
||||
if pacman -S --noconfirm --needed "$pkg" >/dev/null 2>&1; then ok "$pkg (pacman)"; else fail "$pkg (pacman — may not be in repo, try AUR)"; fi
|
||||
;;
|
||||
dnf)
|
||||
if rpm -q "$pkg" >/dev/null 2>&1; then skip "$pkg already installed"; return; fi
|
||||
if 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
|
||||
;;
|
||||
*)
|
||||
|
|
@ -65,25 +95,47 @@ pkg_install() {
|
|||
|
||||
install_pip() {
|
||||
local pkg="$1"
|
||||
if pip3 show "$pkg" >/dev/null 2>&1; then skip "$pkg (pip) already installed"; return; fi
|
||||
if pip3 show "$pkg" >/dev/null 2>&1; then
|
||||
skip "$pkg (pip) already installed"
|
||||
return
|
||||
fi
|
||||
if pip3 install --break-system-packages "$pkg" >/dev/null 2>&1; then ok "$pkg (pip)"; else fail "$pkg (pip)"; fi
|
||||
}
|
||||
|
||||
install_go() {
|
||||
local mod="$1" name="$2"
|
||||
if ! command -v go >/dev/null 2>&1; then fail "$name — go not installed"; return; fi
|
||||
if command -v "$name" >/dev/null 2>&1; then skip "$name already installed"; return; fi
|
||||
if go install "$mod" >/dev/null 2>&1; then ok "$name (go)"; else fail "$name (go)"; fi
|
||||
if ! command -v go >/dev/null 2>&1; then
|
||||
fail "$name — go not installed"
|
||||
return
|
||||
fi
|
||||
if command -v "$name" >/dev/null 2>&1 || [ -f "/root/go/bin/$name" ] || [ -f "$HOME/go/bin/$name" ]; then
|
||||
skip "$name already installed"
|
||||
return
|
||||
fi
|
||||
# Modern Go requires an explicit version suffix tag (like @latest) to compile safely out of module scope
|
||||
if go install "${mod}@latest" >/dev/null 2>&1; then ok "$name (go)"; else fail "$name (go)"; fi
|
||||
}
|
||||
|
||||
install_git() {
|
||||
local repo="$1" dst="$2"
|
||||
mkdir -p /opt/osint-arsenal
|
||||
if [ -d "/opt/osint-arsenal/$dst" ]; then skip "$dst already cloned"; return; fi
|
||||
if [ -d "/opt/osint-arsenal/$dst" ]; then
|
||||
skip "$dst already cloned"
|
||||
return
|
||||
fi
|
||||
if git clone --depth=1 "$repo" "/opt/osint-arsenal/$dst" >/dev/null 2>&1; then ok "$dst (git)"; else fail "$dst (git)"; fi
|
||||
}
|
||||
|
||||
install_docker() {
|
||||
local image="$1" name="$2"
|
||||
if ! command -v docker >/dev/null 2>&1; then fail "$name — docker not installed"; return; fi
|
||||
if docker image inspect "$image" >/dev/null 2>&1; then skip "$name (docker) already pulled"; return; fi
|
||||
if ! command -v docker >/dev/null 2>&1; then
|
||||
fail "$name — docker not installed"
|
||||
return
|
||||
fi
|
||||
if docker image inspect "$image" >/dev/null 2>&1; then
|
||||
skip "$name (docker) already pulled"
|
||||
return
|
||||
fi
|
||||
if docker pull "$image" >/dev/null 2>&1; then ok "$name (docker)"; else fail "$name (docker)"; fi
|
||||
}
|
||||
|
||||
|
|
@ -101,6 +153,9 @@ bootstrap_basics() {
|
|||
dnf install -y python3 python3-pip git curl wget golang >/dev/null 2>&1 || true
|
||||
;;
|
||||
esac
|
||||
|
||||
# Ensure the script path variables check compiled root/user Go target binaries immediately
|
||||
export PATH="$PATH:/root/go/bin:$HOME/go/bin"
|
||||
}
|
||||
|
||||
print_summary() {
|
||||
|
|
@ -110,27 +165,76 @@ print_summary() {
|
|||
echo -e " Skipped: ${YLW}$SKIPPED${NC}"
|
||||
echo -e " Failed: ${RED}$FAILED${NC}"
|
||||
echo "============================================="
|
||||
if (( FAILED > 0 )); then
|
||||
if ((FAILED > 0)); then
|
||||
echo -e "${RED}Failed tools:${NC} ${FAILED_TOOLS[@]:-}"
|
||||
echo "See $LOGFILE for details."
|
||||
fi
|
||||
}
|
||||
|
||||
# ===================================================================
|
||||
# Main Engine Execution
|
||||
# ===================================================================
|
||||
require_root
|
||||
detect_distro
|
||||
bootstrap_basics
|
||||
|
||||
echo; say "Installing: 🔬 Digital Forensics & Reverse Engineering (11 tools)"
|
||||
install_git https://github.com/rizinorg/cutter.git cutter # Cutter
|
||||
install_pip dissect # Dissect
|
||||
install_git https://github.com/NationalSecurityAgency/ghidra.git ghidra # Ghidra
|
||||
pkg_install testdisk # PhotoRec
|
||||
install_pip plaso # Plaso (log2timeline)
|
||||
pkg_install radare2 # radare2
|
||||
install_git https://github.com/keydet89/RegRipper3.0.git RegRipper3.0 # RegRipper
|
||||
install_pip rekall # Rekall
|
||||
install_git https://github.com/rizinorg/rizin.git rizin # rizin
|
||||
pkg_install sleuthkit # The Sleuth Kit
|
||||
install_pip volatility3 # Volatility 3
|
||||
echo
|
||||
say "Installing: 🛰️ Threat Intel Platforms (2 tools)"
|
||||
install_docker opencti/platform OpenCTI
|
||||
install_git https://github.com/yeti-platform/yeti.git yeti
|
||||
|
||||
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
|
||||
175
hardware.sh
175
hardware.sh
|
|
@ -1,7 +1,7 @@
|
|||
#!/usr/bin/env bash
|
||||
# ===================================================================
|
||||
# 🔌 Hardware hacking & SDR
|
||||
# Part of awesome-osint-arsenal v3.4
|
||||
# 🔌 Hardware Hacking & SDR
|
||||
# Part of awesome-osint-arsenal v2.1 (Hardened Production Edition)
|
||||
# Auto-detects: Kali / Debian / Ubuntu / Parrot / Mint / Pop!_OS /
|
||||
# Arch / Manjaro / EndeavourOS /
|
||||
# Fedora / RHEL / CentOS / Rocky / Alma
|
||||
|
|
@ -9,27 +9,48 @@
|
|||
# ===================================================================
|
||||
set -uo pipefail
|
||||
|
||||
RED="\033[0;31m"; GRN="\033[0;32m"; YLW="\033[1;33m"; BLU="\033[0;34m"; CYN="\033[0;36m"; NC="\033[0m"
|
||||
RED="\033[0;31m"
|
||||
GRN="\033[0;32m"
|
||||
YLW="\033[1;33m"
|
||||
BLU="\033[0;34m"
|
||||
CYN="\033[0;36m"
|
||||
NC="\033[0m"
|
||||
LOGFILE="${LOGFILE:-$HOME/osint-install-errors.log}"
|
||||
INSTALLED=${INSTALLED:-0}; SKIPPED=${SKIPPED:-0}; FAILED=${FAILED:-0}
|
||||
INSTALLED=${INSTALLED:-0}
|
||||
SKIPPED=${SKIPPED:-0}
|
||||
FAILED=${FAILED:-0}
|
||||
declare -ga FAILED_TOOLS=()
|
||||
|
||||
say() { echo -e "${BLU}[*]${NC} $*"; }
|
||||
ok() { echo -e "${GRN}[✓]${NC} $*"; INSTALLED=$((INSTALLED+1)); }
|
||||
skip() { echo -e "${YLW}[~]${NC} $*"; SKIPPED=$((SKIPPED+1)); }
|
||||
fail() { echo -e "${RED}[✗]${NC} $*"; FAILED=$((FAILED+1)); FAILED_TOOLS+=("$1"); echo "FAIL: $*" >> "$LOGFILE"; }
|
||||
ok() {
|
||||
echo -e "${GRN}[✓]${NC} $*"
|
||||
INSTALLED=$((INSTALLED + 1))
|
||||
}
|
||||
skip() {
|
||||
echo -e "${YLW}[~]${NC} $*"
|
||||
SKIPPED=$((SKIPPED + 1))
|
||||
}
|
||||
fail() {
|
||||
echo -e "${RED}[✗]${NC} $*"
|
||||
FAILED=$((FAILED + 1))
|
||||
FAILED_TOOLS+=("$1")
|
||||
echo "FAIL: $*" >>"$LOGFILE"
|
||||
}
|
||||
|
||||
require_root() {
|
||||
if [ "$EUID" -ne 0 ]; then echo "Please run as root: sudo bash $0"; exit 1; fi
|
||||
if [ "$EUID" -ne 0 ]; then
|
||||
echo "Please run as root: sudo bash $0"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
detect_distro() {
|
||||
if [ -f /etc/os-release ]; then
|
||||
. /etc/os-release
|
||||
case "${ID,,}" in
|
||||
kali|debian|ubuntu|parrot|raspbian|linuxmint|pop|elementary) PKG="apt" ;;
|
||||
arch|manjaro|endeavouros|garuda|artix) PKG="pacman" ;;
|
||||
fedora|rhel|centos|rocky|almalinux|ol) PKG="dnf" ;;
|
||||
kali | debian | ubuntu | parrot | raspbian | linuxmint | pop | elementary) PKG="apt" ;;
|
||||
arch | manjaro | endeavouros | garuda | artix) PKG="pacman" ;;
|
||||
fedora | rhel | centos | rocky | almalinux | ol) PKG="dnf" ;;
|
||||
*) PKG="unknown" ;;
|
||||
esac
|
||||
else
|
||||
|
|
@ -46,15 +67,24 @@ pkg_install() {
|
|||
local pkg="$1"
|
||||
case "$PKG" in
|
||||
apt)
|
||||
if dpkg -s "$pkg" >/dev/null 2>&1; then skip "$pkg already installed"; return; fi
|
||||
if dpkg -s "$pkg" >/dev/null 2>&1; then
|
||||
skip "$pkg already installed"
|
||||
return
|
||||
fi
|
||||
if apt install -y "$pkg" >/dev/null 2>&1; then ok "$pkg (apt)"; else fail "$pkg (apt)"; fi
|
||||
;;
|
||||
pacman)
|
||||
if pacman -Qi "$pkg" >/dev/null 2>&1; then skip "$pkg already installed"; return; fi
|
||||
if pacman -Qi "$pkg" >/dev/null 2>&1; then
|
||||
skip "$pkg already installed"
|
||||
return
|
||||
fi
|
||||
if pacman -S --noconfirm --needed "$pkg" >/dev/null 2>&1; then ok "$pkg (pacman)"; else fail "$pkg (pacman — may not be in repo, try AUR)"; fi
|
||||
;;
|
||||
dnf)
|
||||
if rpm -q "$pkg" >/dev/null 2>&1; then skip "$pkg already installed"; return; fi
|
||||
if 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
|
||||
;;
|
||||
*)
|
||||
|
|
@ -65,25 +95,46 @@ pkg_install() {
|
|||
|
||||
install_pip() {
|
||||
local pkg="$1"
|
||||
if pip3 show "$pkg" >/dev/null 2>&1; then skip "$pkg (pip) already installed"; return; fi
|
||||
if pip3 show "$pkg" >/dev/null 2>&1; then
|
||||
skip "$pkg (pip) already installed"
|
||||
return
|
||||
fi
|
||||
if pip3 install --break-system-packages "$pkg" >/dev/null 2>&1; then ok "$pkg (pip)"; else fail "$pkg (pip)"; fi
|
||||
}
|
||||
|
||||
install_go() {
|
||||
local mod="$1" name="$2"
|
||||
if ! command -v go >/dev/null 2>&1; then fail "$name — go not installed"; return; fi
|
||||
if command -v "$name" >/dev/null 2>&1; then skip "$name already installed"; return; fi
|
||||
if go install "$mod" >/dev/null 2>&1; then ok "$name (go)"; else fail "$name (go)"; fi
|
||||
if ! command -v go >/dev/null 2>&1; then
|
||||
fail "$name — go not installed"
|
||||
return
|
||||
fi
|
||||
if command -v "$name" >/dev/null 2>&1 || [ -f "/root/go/bin/$name" ] || [ -f "$HOME/go/bin/$name" ]; then
|
||||
skip "$name already installed"
|
||||
return
|
||||
fi
|
||||
if go install "${mod}@latest" >/dev/null 2>&1; then ok "$name (go)"; else fail "$name (go)"; fi
|
||||
}
|
||||
|
||||
install_git() {
|
||||
local repo="$1" dst="$2"
|
||||
mkdir -p /opt/osint-arsenal
|
||||
if [ -d "/opt/osint-arsenal/$dst" ]; then skip "$dst already cloned"; return; fi
|
||||
if [ -d "/opt/osint-arsenal/$dst" ]; then
|
||||
skip "$dst already cloned"
|
||||
return
|
||||
fi
|
||||
if git clone --depth=1 "$repo" "/opt/osint-arsenal/$dst" >/dev/null 2>&1; then ok "$dst (git)"; else fail "$dst (git)"; fi
|
||||
}
|
||||
|
||||
install_docker() {
|
||||
local image="$1" name="$2"
|
||||
if ! command -v docker >/dev/null 2>&1; then fail "$name — docker not installed"; return; fi
|
||||
if docker image inspect "$image" >/dev/null 2>&1; then skip "$name (docker) already pulled"; return; fi
|
||||
if ! command -v docker >/dev/null 2>&1; then
|
||||
fail "$name — docker not installed"
|
||||
return
|
||||
fi
|
||||
if docker image inspect "$image" >/dev/null 2>&1; then
|
||||
skip "$name (docker) already pulled"
|
||||
return
|
||||
fi
|
||||
if docker pull "$image" >/dev/null 2>&1; then ok "$name (docker)"; else fail "$name (docker)"; fi
|
||||
}
|
||||
|
||||
|
|
@ -91,16 +142,19 @@ bootstrap_basics() {
|
|||
case "$PKG" in
|
||||
apt)
|
||||
apt update -y >/dev/null 2>&1 || true
|
||||
apt install -y python3 python3-pip git curl wget golang-go >/dev/null 2>&1 || true
|
||||
apt install -y python3 python3-pip git curl wget golang-go build-essential udev >/dev/null 2>&1 || true
|
||||
;;
|
||||
pacman)
|
||||
pacman -Sy --noconfirm >/dev/null 2>&1 || true
|
||||
pacman -S --noconfirm --needed python python-pip git curl wget go >/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 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
|
||||
|
||||
export PATH="$PATH:/root/go/bin:$HOME/go/bin"
|
||||
}
|
||||
|
||||
print_summary() {
|
||||
|
|
@ -110,26 +164,75 @@ print_summary() {
|
|||
echo -e " Skipped: ${YLW}$SKIPPED${NC}"
|
||||
echo -e " Failed: ${RED}$FAILED${NC}"
|
||||
echo "============================================="
|
||||
if (( FAILED > 0 )); then
|
||||
if ((FAILED > 0)); then
|
||||
echo -e "${RED}Failed tools:${NC} ${FAILED_TOOLS[@]:-}"
|
||||
echo "See $LOGFILE for details."
|
||||
fi
|
||||
}
|
||||
|
||||
# ===================================================================
|
||||
# Execution Flow
|
||||
# ===================================================================
|
||||
require_root
|
||||
detect_distro
|
||||
bootstrap_basics
|
||||
|
||||
echo; say "Installing: 🔌 Hardware Hacking & SDR (10 tools)"
|
||||
install_git https://github.com/firmadyne/firmadyne.git firmadyne # Firmadyne
|
||||
install_git https://github.com/craigz28/firmwalker.git firmwalker # firmwalker
|
||||
pkg_install flashrom # flashrom
|
||||
pkg_install gnuradio # GNU Radio
|
||||
pkg_install gqrx-sdr # Gqrx SDR
|
||||
pkg_install hackrf # HackRF One
|
||||
pkg_install openocd # OpenOCD
|
||||
install_git https://github.com/RfidResearchGroup/proxmark3.git proxmark3 # Proxmark3
|
||||
pkg_install rtl-sdr # RTL-SDR
|
||||
pkg_install ubertooth # Ubertooth One
|
||||
echo
|
||||
say "Installing: 🔌 Hardware Hacking & SDR (10 tools)"
|
||||
|
||||
# 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
|
||||
# ===================================================================
|
||||
# Awesome OSINT Arsenal — install everything
|
||||
# Runs each category installer in order.
|
||||
# Awesome OSINT Arsenal — Master Orchestrator
|
||||
# Part of awesome-osint-arsenal v2.1 (Unified Production Edition)
|
||||
# Runs each category installer sequentially with error handling.
|
||||
# Best support: Kali / Debian / Ubuntu / Parrot.
|
||||
# Partial: Arch / Manjaro / Fedora / RHEL.
|
||||
# For Android, use: bash termux.sh
|
||||
# ===================================================================
|
||||
set -uo pipefail
|
||||
cd "$(dirname "$0")"
|
||||
|
||||
# Maintain color scheme and logging alignment with sub-modules
|
||||
RED="\033[0;31m"
|
||||
GRN="\033[0;32m"
|
||||
YLW="\033[1;33m"
|
||||
BLU="\033[0;34m"
|
||||
CYN="\033[0;36m"
|
||||
NC="\033[0m"
|
||||
|
||||
LOGFILE="${LOGFILE:-$HOME/osint-install-errors.log}"
|
||||
|
||||
# Core Environment Guard
|
||||
if [ "$EUID" -ne 0 ]; then
|
||||
echo "Run me as root: sudo bash install.sh"
|
||||
echo -e "${RED}[✗] error:${NC} This master orchestrator requires elevated privileges."
|
||||
echo "Please run as root: sudo bash $0"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Switch to the script's execution directory to safely resolve relative script paths
|
||||
cd "$(dirname "$0")"
|
||||
|
||||
# Target Sub-modules
|
||||
INSTALLERS=(
|
||||
"osint.sh"
|
||||
"redteam.sh"
|
||||
|
|
@ -24,19 +39,73 @@ INSTALLERS=(
|
|||
"extras.sh"
|
||||
)
|
||||
|
||||
LOGFILE="$HOME/osint-install-errors.log"
|
||||
: > "$LOGFILE"
|
||||
# Initialize/Wipe Master Error Log
|
||||
: >"$LOGFILE"
|
||||
|
||||
# Operational Metrics Tracker
|
||||
START_TIME=$SECONDS
|
||||
PASSED_MODULES=0
|
||||
FAILED_MODULES=0
|
||||
declare -ga UNABLE_TO_LOCATE=()
|
||||
|
||||
echo -e "${CYN}[i]${NC} Initializing Master Deployment Engine..."
|
||||
echo -e "${CYN}[i]${NC} Runtime failures will be aggregated inside: $LOGFILE"
|
||||
|
||||
for inst in "${INSTALLERS[@]}"; do
|
||||
echo
|
||||
echo "==========================================="
|
||||
echo " Running: $inst"
|
||||
echo "==========================================="
|
||||
bash "$inst"
|
||||
echo -e "${BLU}=======================================================${NC}"
|
||||
echo -e " 🚀 Launching Deployment Segment: ${CYN}$inst${NC}"
|
||||
echo -e "${BLU}=======================================================${NC}"
|
||||
|
||||
# Defensive File Verification Hook
|
||||
if [ ! -f "$inst" ]; then
|
||||
echo -e "${YLW}[~] Skipping:${NC} Module script '$inst' not found in workspace directory."
|
||||
UNABLE_TO_LOCATE+=("$inst")
|
||||
FAILED_MODULES=$((FAILED_MODULES + 1))
|
||||
echo "ORCHESTRATOR ERROR: File not found: $inst" >> "$LOGFILE"
|
||||
continue
|
||||
fi
|
||||
|
||||
# Explicitly grant executable permissions to prevent permission denial traps
|
||||
chmod +x "$inst"
|
||||
|
||||
# Execute subshell layer. Exporting LOGFILE ensures sub-modules write to the same path.
|
||||
export LOGFILE
|
||||
if bash "$inst"; then
|
||||
PASSED_MODULES=$((PASSED_MODULES + 1))
|
||||
else
|
||||
echo -e "${RED}[✗] Failure warning:${NC} Module $inst returned a non-zero exit status."
|
||||
FAILED_MODULES=$((FAILED_MODULES + 1))
|
||||
echo "ORCHESTRATOR ERROR: Sub-module execution failure status returned from: $inst" >> "$LOGFILE"
|
||||
fi
|
||||
done
|
||||
|
||||
# Calculate execution duration metrics
|
||||
ELAPSED_DURATION=$((SECONDS - START_TIME))
|
||||
MINUTES=$((ELAPSED_DURATION / 60))
|
||||
SECONDS_REM=$((ELAPSED_DURATION % 60))
|
||||
|
||||
# ===================================================================
|
||||
# Master Compilation Dashboard
|
||||
# ===================================================================
|
||||
echo
|
||||
echo "==========================================="
|
||||
echo " ALL DONE"
|
||||
echo " Failures (if any) logged to: $LOGFILE"
|
||||
echo "==========================================="
|
||||
echo -e "${CYN}=======================================================${NC}"
|
||||
echo -e " 🎉 GRAND ARCHITECTURE DEPLOYMENT COMPLETE"
|
||||
echo -e "${CYN}=======================================================${NC}"
|
||||
echo -e " Total Active Script Modules Checked : $((PASSED_MODULES + FAILED_MODULES))"
|
||||
echo -e " Successful Module Deployments : ${GRN}$PASSED_MODULES${NC}"
|
||||
echo -e " Unresolved/Failed Components : ${RED}$FAILED_MODULES${NC}"
|
||||
echo -e " Total Provisioning Runtime : ${YLW}${MINUTES}m ${SECONDS_REM}s${NC}"
|
||||
echo -e "${CYN}=======================================================${NC}"
|
||||
|
||||
if [ ${#UNABLE_TO_LOCATE[@]} -gt 0 ]; then
|
||||
echo -e "${YLW}[!] Missing Components Reminder:${NC} ${UNABLE_TO_LOCATE[*]}"
|
||||
echo "Ensure all complementary module scripts are checked out into this workspace directory."
|
||||
fi
|
||||
|
||||
if [ "$FAILED_MODULES" -gt 0 ]; then
|
||||
echo -e "${RED}[✗] Some installation routines requirements encountered friction.${NC}"
|
||||
echo -e " Review explicit error codes and stack failures in: ${YLW}$LOGFILE${NC}"
|
||||
else
|
||||
echo -e "${GRN}[✓] Core orchestration layers initialized clean with zero root exceptions.${NC}"
|
||||
fi
|
||||
91
labs.sh
91
labs.sh
|
|
@ -1,7 +1,7 @@
|
|||
#!/usr/bin/env bash
|
||||
# ===================================================================
|
||||
# 🎓 Training / vulnerable apps
|
||||
# Part of awesome-osint-arsenal v3.4
|
||||
# Part of awesome-osint-arsenal v2.1
|
||||
# Auto-detects: Kali / Debian / Ubuntu / Parrot / Mint / Pop!_OS /
|
||||
# Arch / Manjaro / EndeavourOS /
|
||||
# Fedora / RHEL / CentOS / Rocky / Alma
|
||||
|
|
@ -9,27 +9,48 @@
|
|||
# ===================================================================
|
||||
set -uo pipefail
|
||||
|
||||
RED="\033[0;31m"; GRN="\033[0;32m"; YLW="\033[1;33m"; BLU="\033[0;34m"; CYN="\033[0;36m"; NC="\033[0m"
|
||||
RED="\033[0;31m"
|
||||
GRN="\033[0;32m"
|
||||
YLW="\033[1;33m"
|
||||
BLU="\033[0;34m"
|
||||
CYN="\033[0;36m"
|
||||
NC="\033[0m"
|
||||
LOGFILE="${LOGFILE:-$HOME/osint-install-errors.log}"
|
||||
INSTALLED=${INSTALLED:-0}; SKIPPED=${SKIPPED:-0}; FAILED=${FAILED:-0}
|
||||
INSTALLED=${INSTALLED:-0}
|
||||
SKIPPED=${SKIPPED:-0}
|
||||
FAILED=${FAILED:-0}
|
||||
declare -ga FAILED_TOOLS=()
|
||||
|
||||
say() { echo -e "${BLU}[*]${NC} $*"; }
|
||||
ok() { echo -e "${GRN}[✓]${NC} $*"; INSTALLED=$((INSTALLED+1)); }
|
||||
skip() { echo -e "${YLW}[~]${NC} $*"; SKIPPED=$((SKIPPED+1)); }
|
||||
fail() { echo -e "${RED}[✗]${NC} $*"; FAILED=$((FAILED+1)); FAILED_TOOLS+=("$1"); echo "FAIL: $*" >> "$LOGFILE"; }
|
||||
ok() {
|
||||
echo -e "${GRN}[✓]${NC} $*"
|
||||
INSTALLED=$((INSTALLED + 1))
|
||||
}
|
||||
skip() {
|
||||
echo -e "${YLW}[~]${NC} $*"
|
||||
SKIPPED=$((SKIPPED + 1))
|
||||
}
|
||||
fail() {
|
||||
echo -e "${RED}[✗]${NC} $*"
|
||||
FAILED=$((FAILED + 1))
|
||||
FAILED_TOOLS+=("$1")
|
||||
echo "FAIL: $*" >>"$LOGFILE"
|
||||
}
|
||||
|
||||
require_root() {
|
||||
if [ "$EUID" -ne 0 ]; then echo "Please run as root: sudo bash $0"; exit 1; fi
|
||||
if [ "$EUID" -ne 0 ]; then
|
||||
echo "Please run as root: sudo bash $0"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
detect_distro() {
|
||||
if [ -f /etc/os-release ]; then
|
||||
. /etc/os-release
|
||||
case "${ID,,}" in
|
||||
kali|debian|ubuntu|parrot|raspbian|linuxmint|pop|elementary) PKG="apt" ;;
|
||||
arch|manjaro|endeavouros|garuda|artix) PKG="pacman" ;;
|
||||
fedora|rhel|centos|rocky|almalinux|ol) PKG="dnf" ;;
|
||||
kali | debian | ubuntu | parrot | raspbian | linuxmint | pop | elementary) PKG="apt" ;;
|
||||
arch | manjaro | endeavouros | garuda | artix) PKG="pacman" ;;
|
||||
fedora | rhel | centos | rocky | almalinux | ol) PKG="dnf" ;;
|
||||
*) PKG="unknown" ;;
|
||||
esac
|
||||
else
|
||||
|
|
@ -46,15 +67,24 @@ pkg_install() {
|
|||
local pkg="$1"
|
||||
case "$PKG" in
|
||||
apt)
|
||||
if dpkg -s "$pkg" >/dev/null 2>&1; then skip "$pkg already installed"; return; fi
|
||||
if dpkg -s "$pkg" >/dev/null 2>&1; then
|
||||
skip "$pkg already installed"
|
||||
return
|
||||
fi
|
||||
if apt install -y "$pkg" >/dev/null 2>&1; then ok "$pkg (apt)"; else fail "$pkg (apt)"; fi
|
||||
;;
|
||||
pacman)
|
||||
if pacman -Qi "$pkg" >/dev/null 2>&1; then skip "$pkg already installed"; return; fi
|
||||
if pacman -Qi "$pkg" >/dev/null 2>&1; then
|
||||
skip "$pkg already installed"
|
||||
return
|
||||
fi
|
||||
if pacman -S --noconfirm --needed "$pkg" >/dev/null 2>&1; then ok "$pkg (pacman)"; else fail "$pkg (pacman — may not be in repo, try AUR)"; fi
|
||||
;;
|
||||
dnf)
|
||||
if rpm -q "$pkg" >/dev/null 2>&1; then skip "$pkg already installed"; return; fi
|
||||
if 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
|
||||
;;
|
||||
*)
|
||||
|
|
@ -65,25 +95,43 @@ pkg_install() {
|
|||
|
||||
install_pip() {
|
||||
local pkg="$1"
|
||||
if pip3 show "$pkg" >/dev/null 2>&1; then skip "$pkg (pip) already installed"; return; fi
|
||||
if pip3 show "$pkg" >/dev/null 2>&1; then
|
||||
skip "$pkg (pip) already installed"
|
||||
return
|
||||
fi
|
||||
if pip3 install --break-system-packages "$pkg" >/dev/null 2>&1; then ok "$pkg (pip)"; else fail "$pkg (pip)"; fi
|
||||
}
|
||||
install_go() {
|
||||
local mod="$1" name="$2"
|
||||
if ! command -v go >/dev/null 2>&1; then fail "$name — go not installed"; return; fi
|
||||
if command -v "$name" >/dev/null 2>&1; then skip "$name already installed"; return; fi
|
||||
if ! command -v go >/dev/null 2>&1; then
|
||||
fail "$name — go not installed"
|
||||
return
|
||||
fi
|
||||
if command -v "$name" >/dev/null 2>&1; then
|
||||
skip "$name already installed"
|
||||
return
|
||||
fi
|
||||
if go install "$mod" >/dev/null 2>&1; then ok "$name (go)"; else fail "$name (go)"; fi
|
||||
}
|
||||
install_git() {
|
||||
local repo="$1" dst="$2"
|
||||
mkdir -p /opt/osint-arsenal
|
||||
if [ -d "/opt/osint-arsenal/$dst" ]; then skip "$dst already cloned"; return; fi
|
||||
if [ -d "/opt/osint-arsenal/$dst" ]; then
|
||||
skip "$dst already cloned"
|
||||
return
|
||||
fi
|
||||
if git clone --depth=1 "$repo" "/opt/osint-arsenal/$dst" >/dev/null 2>&1; then ok "$dst (git)"; else fail "$dst (git)"; fi
|
||||
}
|
||||
install_docker() {
|
||||
local image="$1" name="$2"
|
||||
if ! command -v docker >/dev/null 2>&1; then fail "$name — docker not installed"; return; fi
|
||||
if docker image inspect "$image" >/dev/null 2>&1; then skip "$name (docker) already pulled"; return; fi
|
||||
if ! command -v docker >/dev/null 2>&1; then
|
||||
fail "$name — docker not installed"
|
||||
return
|
||||
fi
|
||||
if docker image inspect "$image" >/dev/null 2>&1; then
|
||||
skip "$name (docker) already pulled"
|
||||
return
|
||||
fi
|
||||
if docker pull "$image" >/dev/null 2>&1; then ok "$name (docker)"; else fail "$name (docker)"; fi
|
||||
}
|
||||
|
||||
|
|
@ -110,7 +158,7 @@ print_summary() {
|
|||
echo -e " Skipped: ${YLW}$SKIPPED${NC}"
|
||||
echo -e " Failed: ${RED}$FAILED${NC}"
|
||||
echo "============================================="
|
||||
if (( FAILED > 0 )); then
|
||||
if ((FAILED > 0)); then
|
||||
echo -e "${RED}Failed tools:${NC} ${FAILED_TOOLS[@]:-}"
|
||||
echo "See $LOGFILE for details."
|
||||
fi
|
||||
|
|
@ -120,7 +168,8 @@ require_root
|
|||
detect_distro
|
||||
bootstrap_basics
|
||||
|
||||
echo; say "Installing: 🎓 Training, Labs & CTF (4 tools)"
|
||||
echo
|
||||
say "Installing: 🎓 Training, Labs & CTF (4 tools)"
|
||||
install_git https://github.com/digininja/DVWA.git DVWA # DVWA
|
||||
install_docker bkimminich/juice-shop 'OWASP Juice Shop' # OWASP Juice Shop
|
||||
install_docker webgoat/webgoat 'OWASP WebGoat' # OWASP WebGoat
|
||||
|
|
|
|||
133
osint.sh
133
osint.sh
|
|
@ -1,7 +1,7 @@
|
|||
#!/usr/bin/env bash
|
||||
# ===================================================================
|
||||
# 🔍 OSINT toolkit
|
||||
# Part of awesome-osint-arsenal v3.4
|
||||
# Part of awesome-osint-arsenal v2.1
|
||||
# Auto-detects: Kali / Debian / Ubuntu / Parrot / Mint / Pop!_OS /
|
||||
# Arch / Manjaro / EndeavourOS /
|
||||
# Fedora / RHEL / CentOS / Rocky / Alma
|
||||
|
|
@ -9,27 +9,48 @@
|
|||
# ===================================================================
|
||||
set -uo pipefail
|
||||
|
||||
RED="\033[0;31m"; GRN="\033[0;32m"; YLW="\033[1;33m"; BLU="\033[0;34m"; CYN="\033[0;36m"; NC="\033[0m"
|
||||
RED="\033[0;31m"
|
||||
GRN="\033[0;32m"
|
||||
YLW="\033[1;33m"
|
||||
BLU="\033[0;34m"
|
||||
CYN="\033[0;36m"
|
||||
NC="\033[0m"
|
||||
LOGFILE="${LOGFILE:-$HOME/osint-install-errors.log}"
|
||||
INSTALLED=${INSTALLED:-0}; SKIPPED=${SKIPPED:-0}; FAILED=${FAILED:-0}
|
||||
INSTALLED=${INSTALLED:-0}
|
||||
SKIPPED=${SKIPPED:-0}
|
||||
FAILED=${FAILED:-0}
|
||||
declare -ga FAILED_TOOLS=()
|
||||
|
||||
say() { echo -e "${BLU}[*]${NC} $*"; }
|
||||
ok() { echo -e "${GRN}[✓]${NC} $*"; INSTALLED=$((INSTALLED+1)); }
|
||||
skip() { echo -e "${YLW}[~]${NC} $*"; SKIPPED=$((SKIPPED+1)); }
|
||||
fail() { echo -e "${RED}[✗]${NC} $*"; FAILED=$((FAILED+1)); FAILED_TOOLS+=("$1"); echo "FAIL: $*" >> "$LOGFILE"; }
|
||||
ok() {
|
||||
echo -e "${GRN}[✓]${NC} $*"
|
||||
INSTALLED=$((INSTALLED + 1))
|
||||
}
|
||||
skip() {
|
||||
echo -e "${YLW}[~]${NC} $*"
|
||||
SKIPPED=$((SKIPPED + 1))
|
||||
}
|
||||
fail() {
|
||||
echo -e "${RED}[✗]${NC} $*"
|
||||
FAILED=$((FAILED + 1))
|
||||
FAILED_TOOLS+=("$1")
|
||||
echo "FAIL: $*" >>"$LOGFILE"
|
||||
}
|
||||
|
||||
require_root() {
|
||||
if [ "$EUID" -ne 0 ]; then echo "Please run as root: sudo bash $0"; exit 1; fi
|
||||
if [ "$EUID" -ne 0 ]; then
|
||||
echo "Please run as root: sudo bash $0"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
detect_distro() {
|
||||
if [ -f /etc/os-release ]; then
|
||||
. /etc/os-release
|
||||
case "${ID,,}" in
|
||||
kali|debian|ubuntu|parrot|raspbian|linuxmint|pop|elementary) PKG="apt" ;;
|
||||
arch|manjaro|endeavouros|garuda|artix) PKG="pacman" ;;
|
||||
fedora|rhel|centos|rocky|almalinux|ol) PKG="dnf" ;;
|
||||
kali | debian | ubuntu | parrot | raspbian | linuxmint | pop | elementary) PKG="apt" ;;
|
||||
arch | manjaro | endeavouros | garuda | artix) PKG="pacman" ;;
|
||||
fedora | rhel | centos | rocky | almalinux | ol) PKG="dnf" ;;
|
||||
*) PKG="unknown" ;;
|
||||
esac
|
||||
else
|
||||
|
|
@ -46,15 +67,24 @@ pkg_install() {
|
|||
local pkg="$1"
|
||||
case "$PKG" in
|
||||
apt)
|
||||
if dpkg -s "$pkg" >/dev/null 2>&1; then skip "$pkg already installed"; return; fi
|
||||
if dpkg -s "$pkg" >/dev/null 2>&1; then
|
||||
skip "$pkg already installed"
|
||||
return
|
||||
fi
|
||||
if apt install -y "$pkg" >/dev/null 2>&1; then ok "$pkg (apt)"; else fail "$pkg (apt)"; fi
|
||||
;;
|
||||
pacman)
|
||||
if pacman -Qi "$pkg" >/dev/null 2>&1; then skip "$pkg already installed"; return; fi
|
||||
if pacman -Qi "$pkg" >/dev/null 2>&1; then
|
||||
skip "$pkg already installed"
|
||||
return
|
||||
fi
|
||||
if pacman -S --noconfirm --needed "$pkg" >/dev/null 2>&1; then ok "$pkg (pacman)"; else fail "$pkg (pacman — may not be in repo, try AUR)"; fi
|
||||
;;
|
||||
dnf)
|
||||
if rpm -q "$pkg" >/dev/null 2>&1; then skip "$pkg already installed"; return; fi
|
||||
if 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
|
||||
;;
|
||||
*)
|
||||
|
|
@ -65,25 +95,43 @@ pkg_install() {
|
|||
|
||||
install_pip() {
|
||||
local pkg="$1"
|
||||
if pip3 show "$pkg" >/dev/null 2>&1; then skip "$pkg (pip) already installed"; return; fi
|
||||
if pip3 show "$pkg" >/dev/null 2>&1; then
|
||||
skip "$pkg (pip) already installed"
|
||||
return
|
||||
fi
|
||||
if pip3 install --break-system-packages "$pkg" >/dev/null 2>&1; then ok "$pkg (pip)"; else fail "$pkg (pip)"; fi
|
||||
}
|
||||
install_go() {
|
||||
local mod="$1" name="$2"
|
||||
if ! command -v go >/dev/null 2>&1; then fail "$name — go not installed"; return; fi
|
||||
if command -v "$name" >/dev/null 2>&1; then skip "$name already installed"; return; fi
|
||||
if ! command -v go >/dev/null 2>&1; then
|
||||
fail "$name — go not installed"
|
||||
return
|
||||
fi
|
||||
if command -v "$name" >/dev/null 2>&1; then
|
||||
skip "$name already installed"
|
||||
return
|
||||
fi
|
||||
if go install "$mod" >/dev/null 2>&1; then ok "$name (go)"; else fail "$name (go)"; fi
|
||||
}
|
||||
install_git() {
|
||||
local repo="$1" dst="$2"
|
||||
mkdir -p /opt/osint-arsenal
|
||||
if [ -d "/opt/osint-arsenal/$dst" ]; then skip "$dst already cloned"; return; fi
|
||||
if [ -d "/opt/osint-arsenal/$dst" ]; then
|
||||
skip "$dst already cloned"
|
||||
return
|
||||
fi
|
||||
if git clone --depth=1 "$repo" "/opt/osint-arsenal/$dst" >/dev/null 2>&1; then ok "$dst (git)"; else fail "$dst (git)"; fi
|
||||
}
|
||||
install_docker() {
|
||||
local image="$1" name="$2"
|
||||
if ! command -v docker >/dev/null 2>&1; then fail "$name — docker not installed"; return; fi
|
||||
if docker image inspect "$image" >/dev/null 2>&1; then skip "$name (docker) already pulled"; return; fi
|
||||
if ! command -v docker >/dev/null 2>&1; then
|
||||
fail "$name — docker not installed"
|
||||
return
|
||||
fi
|
||||
if docker image inspect "$image" >/dev/null 2>&1; then
|
||||
skip "$name (docker) already pulled"
|
||||
return
|
||||
fi
|
||||
if docker pull "$image" >/dev/null 2>&1; then ok "$name (docker)"; else fail "$name (docker)"; fi
|
||||
}
|
||||
|
||||
|
|
@ -110,7 +158,7 @@ print_summary() {
|
|||
echo -e " Skipped: ${YLW}$SKIPPED${NC}"
|
||||
echo -e " Failed: ${RED}$FAILED${NC}"
|
||||
echo "============================================="
|
||||
if (( FAILED > 0 )); then
|
||||
if ((FAILED > 0)); then
|
||||
echo -e "${RED}Failed tools:${NC} ${FAILED_TOOLS[@]:-}"
|
||||
echo "See $LOGFILE for details."
|
||||
fi
|
||||
|
|
@ -120,7 +168,8 @@ require_root
|
|||
detect_distro
|
||||
bootstrap_basics
|
||||
|
||||
echo; say "Installing: 👤 Username & Social Media OSINT (33 tools)"
|
||||
echo
|
||||
say "Installing: 👤 Username & Social Media OSINT (33 tools)"
|
||||
install_git https://github.com/ArthurHeitmann/arctic_shift.git arctic_shift # Arctic Shift
|
||||
install_pip blackbird-osint # Blackbird
|
||||
install_git https://github.com/misiektoja/github_monitor.git github_monitor # github_monitor
|
||||
|
|
@ -155,7 +204,8 @@ install_pip twint # Twint
|
|||
install_git https://github.com/kaifcodec/user-scanner.git user-scanner # user-scanner
|
||||
install_git https://github.com/wishihab/userrecon.git userrecon # UserRecon
|
||||
|
||||
echo; say "Installing: 📧 Email & Phone Intelligence (13 tools)"
|
||||
echo
|
||||
say "Installing: 📧 Email & Phone Intelligence (13 tools)"
|
||||
install_git https://github.com/keraattin/EmailAnalyzer.git EmailAnalyzer # EmailAnalyzer
|
||||
install_git https://github.com/Giritharram/EmailHeader-Analyzer-CLI-Python.git EmailHeader-Analyzer-CLI-Python # EmailHeader-Analyzer
|
||||
install_pip ghunt # GHunt
|
||||
|
|
@ -170,7 +220,8 @@ install_git https://github.com/nettitude/Prowl.git Prowl # Prowl
|
|||
install_pip theHarvester # theHarvester
|
||||
install_git https://github.com/z0m31en7/WhatMail.git WhatMail # WhatMail
|
||||
|
||||
echo; say "Installing: 🌐 Domain & IP / Network Recon (68 tools)"
|
||||
echo
|
||||
say "Installing: 🌐 Domain & IP / Network Recon (68 tools)"
|
||||
pkg_install aircrack-ng # Aircrack-ng
|
||||
install_pip py-altdns # altdns
|
||||
install_go github.com/owasp-amass/amass/v4/...@master ... # Amass
|
||||
|
|
@ -240,7 +291,8 @@ pkg_install whatweb # Whatweb
|
|||
pkg_install wifite # Wifite
|
||||
pkg_install wireshark # Wireshark
|
||||
|
||||
echo; say "Installing: 🖼️ Image & Facial Recognition (6 tools)"
|
||||
echo
|
||||
say "Installing: 🖼️ Image & Facial Recognition (6 tools)"
|
||||
install_pip deepface # DeepFace
|
||||
install_git https://github.com/beurtschipper/Depix.git Depix # Depix
|
||||
pkg_install libimage-exiftool-perl # ExifTool
|
||||
|
|
@ -248,14 +300,16 @@ install_pip face_recognition # facerecognition
|
|||
install_git https://github.com/ElevenPaths/FOCA.git FOCA # FOCA
|
||||
install_git https://github.com/GuidoBartoli/sherloq.git sherloq # Sherloq
|
||||
|
||||
echo; say "Installing: 🕶️ Dark Web & Tor Intelligence (5 tools)"
|
||||
echo
|
||||
say "Installing: 🕶️ Dark Web & Tor Intelligence (5 tools)"
|
||||
install_git https://github.com/itsmehacker/DarkScrape.git DarkScrape # DarkScrape
|
||||
install_go github.com/s-rah/onionscan@latest onionscan # OnionScan
|
||||
install_pip onionsearch # OnionSearch
|
||||
install_git https://github.com/SharadKumar97/OSINT-SPY.git OSINT-SPY # OSINT-SPY
|
||||
install_git https://github.com/githacktools/TorghostNG.git TorghostNG # TorghostNG
|
||||
|
||||
echo; say "Installing: 💥 Data Breach & Leak Detection (11 tools)"
|
||||
echo
|
||||
say "Installing: 💥 Data Breach & Leak Detection (11 tools)"
|
||||
pkg_install cewl # CeWL
|
||||
pkg_install crunch # Crunch
|
||||
install_git https://github.com/Mebus/cupp.git cupp # Cupp
|
||||
|
|
@ -268,18 +322,22 @@ install_git https://github.com/gentilkiwi/mimikatz.git mimikatz # Mimikatz
|
|||
install_git https://github.com/lgandx/Responder.git Responder # Responder
|
||||
install_git https://github.com/danielmiessler/SecLists.git SecLists # SecLists
|
||||
|
||||
echo; say "Installing: 🏢 Company & Business Intel (2 tools)"
|
||||
echo
|
||||
say "Installing: 🏢 Company & Business Intel (2 tools)"
|
||||
install_pip opencorporates # opencorporates-cli
|
||||
install_git https://github.com/s0md3v/Orbit.git Orbit # Orbit
|
||||
|
||||
echo; say "Installing: ₿ Cryptocurrency & Blockchain (1 tools)"
|
||||
echo
|
||||
say "Installing: ₿ Cryptocurrency & Blockchain (1 tools)"
|
||||
install_pip etherscan-python # etherscan-py
|
||||
|
||||
echo; say "Installing: 🦠 Malware & Threat Intelligence (2 tools)"
|
||||
echo
|
||||
say "Installing: 🦠 Malware & Threat Intelligence (2 tools)"
|
||||
install_git https://github.com/MISP/MISP.git MISP # MISP
|
||||
pkg_install yara # YARA
|
||||
|
||||
echo; say "Installing: 🔍 Search & Dorking Tools (6 tools)"
|
||||
echo
|
||||
say "Installing: 🔍 Search & Dorking Tools (6 tools)"
|
||||
install_pip censys # Censys CLI
|
||||
install_git https://github.com/jgor/dork-cli.git dork-cli # dork-cli
|
||||
install_git https://github.com/m3n0sd0n4ld/GooFuzz.git GooFuzz # GooFuzz
|
||||
|
|
@ -287,7 +345,8 @@ install_git https://github.com/opsdisk/pagodo.git pagodo # Pagodo
|
|||
install_pip shodan # Shodan CLI
|
||||
install_go github.com/projectdiscovery/uncover/cmd/uncover@latest uncover # uncover
|
||||
|
||||
echo; say "Installing: 📄 Document & Metadata Analysis (10 tools)"
|
||||
echo
|
||||
say "Installing: 📄 Document & Metadata Analysis (10 tools)"
|
||||
pkg_install autopsy # Autopsy
|
||||
pkg_install binwalk # Binwalk
|
||||
pkg_install bulk-extractor # Bulk Extractor
|
||||
|
|
@ -299,7 +358,8 @@ pkg_install scalpel # Scalpel
|
|||
install_pip volatility3 # Volatility
|
||||
install_pip xeuledoc # XeuleDoc
|
||||
|
||||
echo; say "Installing: 🧑 People & Identity OSINT (16 tools)"
|
||||
echo
|
||||
say "Installing: 🧑 People & Identity OSINT (16 tools)"
|
||||
install_git https://github.com/Ignitetch/AdvPhishing.git AdvPhishing # AdvPhishing
|
||||
install_git https://github.com/An0nUD4Y/blackeye.git blackeye # BlackEye
|
||||
install_pip crosslinked # CrossLinked
|
||||
|
|
@ -317,7 +377,8 @@ install_git https://github.com/PerezMascato/URLCADIZ.git URLCADIZ # URLCADIZ
|
|||
install_pip zehef # Zehef
|
||||
install_git https://github.com/htr-tech/zphisher.git zphisher # Zphisher
|
||||
|
||||
echo; say "Installing: 📡 IoT & Device Intelligence (10 tools)"
|
||||
echo
|
||||
say "Installing: 📡 IoT & Device Intelligence (10 tools)"
|
||||
install_git https://github.com/AhMyth/AhMyth-Android-RAT.git AhMyth-Android-RAT # AhMyth Android RAT
|
||||
pkg_install apktool # Apktool
|
||||
install_pip frida-tools # Frida
|
||||
|
|
@ -329,7 +390,8 @@ install_pip shodan # Shodan (IoT)
|
|||
install_git https://github.com/shubhamrooter/ShodanSpider.git ShodanSpider # ShodanSpider
|
||||
install_pip zoomeye # ZoomEye CLI
|
||||
|
||||
echo; say "Installing: 🧰 Frameworks & All-in-One Platforms (12 tools)"
|
||||
echo
|
||||
say "Installing: 🧰 Frameworks & All-in-One Platforms (12 tools)"
|
||||
install_git https://github.com/thewhiteh4t/FinalRecon.git FinalRecon # FinalRecon
|
||||
install_git https://github.com/Manisso/fsociety.git fsociety # fsociety
|
||||
install_git https://github.com/Z4nzu/hackingtool.git hackingtool # Hackingtool
|
||||
|
|
@ -343,7 +405,8 @@ install_pip recon-ng # Recon-ng
|
|||
pkg_install sn0int # sn0int
|
||||
install_pip spiderfoot # SpiderFoot
|
||||
|
||||
echo; say "Installing: 🔒 Free VPN & Privacy Tools (12 tools)"
|
||||
echo
|
||||
say "Installing: 🔒 Free VPN & Privacy Tools (12 tools)"
|
||||
install_git https://github.com/trailofbits/algo.git algo # Algo VPN
|
||||
install_git https://github.com/HACK3RY2J/Anon-SMS.git Anon-SMS # Anon-SMS
|
||||
install_git https://github.com/Und3rf10w/kali-anonsurf.git kali-anonsurf # Anonsurf
|
||||
|
|
|
|||
94
redteam.sh
94
redteam.sh
|
|
@ -1,7 +1,7 @@
|
|||
#!/usr/bin/env bash
|
||||
# ===================================================================
|
||||
# ⚔️ Red team / offensive
|
||||
# Part of awesome-osint-arsenal v3.4
|
||||
# Part of awesome-osint-arsenal v2.1
|
||||
# Auto-detects: Kali / Debian / Ubuntu / Parrot / Mint / Pop!_OS /
|
||||
# Arch / Manjaro / EndeavourOS /
|
||||
# Fedora / RHEL / CentOS / Rocky / Alma
|
||||
|
|
@ -9,27 +9,48 @@
|
|||
# ===================================================================
|
||||
set -uo pipefail
|
||||
|
||||
RED="\033[0;31m"; GRN="\033[0;32m"; YLW="\033[1;33m"; BLU="\033[0;34m"; CYN="\033[0;36m"; NC="\033[0m"
|
||||
RED="\033[0;31m"
|
||||
GRN="\033[0;32m"
|
||||
YLW="\033[1;33m"
|
||||
BLU="\033[0;34m"
|
||||
CYN="\033[0;36m"
|
||||
NC="\033[0m"
|
||||
LOGFILE="${LOGFILE:-$HOME/osint-install-errors.log}"
|
||||
INSTALLED=${INSTALLED:-0}; SKIPPED=${SKIPPED:-0}; FAILED=${FAILED:-0}
|
||||
INSTALLED=${INSTALLED:-0}
|
||||
SKIPPED=${SKIPPED:-0}
|
||||
FAILED=${FAILED:-0}
|
||||
declare -ga FAILED_TOOLS=()
|
||||
|
||||
say() { echo -e "${BLU}[*]${NC} $*"; }
|
||||
ok() { echo -e "${GRN}[✓]${NC} $*"; INSTALLED=$((INSTALLED+1)); }
|
||||
skip() { echo -e "${YLW}[~]${NC} $*"; SKIPPED=$((SKIPPED+1)); }
|
||||
fail() { echo -e "${RED}[✗]${NC} $*"; FAILED=$((FAILED+1)); FAILED_TOOLS+=("$1"); echo "FAIL: $*" >> "$LOGFILE"; }
|
||||
ok() {
|
||||
echo -e "${GRN}[✓]${NC} $*"
|
||||
INSTALLED=$((INSTALLED + 1))
|
||||
}
|
||||
skip() {
|
||||
echo -e "${YLW}[~]${NC} $*"
|
||||
SKIPPED=$((SKIPPED + 1))
|
||||
}
|
||||
fail() {
|
||||
echo -e "${RED}[✗]${NC} $*"
|
||||
FAILED=$((FAILED + 1))
|
||||
FAILED_TOOLS+=("$1")
|
||||
echo "FAIL: $*" >>"$LOGFILE"
|
||||
}
|
||||
|
||||
require_root() {
|
||||
if [ "$EUID" -ne 0 ]; then echo "Please run as root: sudo bash $0"; exit 1; fi
|
||||
if [ "$EUID" -ne 0 ]; then
|
||||
echo "Please run as root: sudo bash $0"
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
detect_distro() {
|
||||
if [ -f /etc/os-release ]; then
|
||||
. /etc/os-release
|
||||
case "${ID,,}" in
|
||||
kali|debian|ubuntu|parrot|raspbian|linuxmint|pop|elementary) PKG="apt" ;;
|
||||
arch|manjaro|endeavouros|garuda|artix) PKG="pacman" ;;
|
||||
fedora|rhel|centos|rocky|almalinux|ol) PKG="dnf" ;;
|
||||
kali | debian | ubuntu | parrot | raspbian | linuxmint | pop | elementary) PKG="apt" ;;
|
||||
arch | manjaro | endeavouros | garuda | artix) PKG="pacman" ;;
|
||||
fedora | rhel | centos | rocky | almalinux | ol) PKG="dnf" ;;
|
||||
*) PKG="unknown" ;;
|
||||
esac
|
||||
else
|
||||
|
|
@ -46,15 +67,24 @@ pkg_install() {
|
|||
local pkg="$1"
|
||||
case "$PKG" in
|
||||
apt)
|
||||
if dpkg -s "$pkg" >/dev/null 2>&1; then skip "$pkg already installed"; return; fi
|
||||
if dpkg -s "$pkg" >/dev/null 2>&1; then
|
||||
skip "$pkg already installed"
|
||||
return
|
||||
fi
|
||||
if apt install -y "$pkg" >/dev/null 2>&1; then ok "$pkg (apt)"; else fail "$pkg (apt)"; fi
|
||||
;;
|
||||
pacman)
|
||||
if pacman -Qi "$pkg" >/dev/null 2>&1; then skip "$pkg already installed"; return; fi
|
||||
if pacman -Qi "$pkg" >/dev/null 2>&1; then
|
||||
skip "$pkg already installed"
|
||||
return
|
||||
fi
|
||||
if pacman -S --noconfirm --needed "$pkg" >/dev/null 2>&1; then ok "$pkg (pacman)"; else fail "$pkg (pacman — may not be in repo, try AUR)"; fi
|
||||
;;
|
||||
dnf)
|
||||
if rpm -q "$pkg" >/dev/null 2>&1; then skip "$pkg already installed"; return; fi
|
||||
if 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
|
||||
;;
|
||||
*)
|
||||
|
|
@ -65,25 +95,43 @@ pkg_install() {
|
|||
|
||||
install_pip() {
|
||||
local pkg="$1"
|
||||
if pip3 show "$pkg" >/dev/null 2>&1; then skip "$pkg (pip) already installed"; return; fi
|
||||
if pip3 show "$pkg" >/dev/null 2>&1; then
|
||||
skip "$pkg (pip) already installed"
|
||||
return
|
||||
fi
|
||||
if pip3 install --break-system-packages "$pkg" >/dev/null 2>&1; then ok "$pkg (pip)"; else fail "$pkg (pip)"; fi
|
||||
}
|
||||
install_go() {
|
||||
local mod="$1" name="$2"
|
||||
if ! command -v go >/dev/null 2>&1; then fail "$name — go not installed"; return; fi
|
||||
if command -v "$name" >/dev/null 2>&1; then skip "$name already installed"; return; fi
|
||||
if ! command -v go >/dev/null 2>&1; then
|
||||
fail "$name — go not installed"
|
||||
return
|
||||
fi
|
||||
if command -v "$name" >/dev/null 2>&1; then
|
||||
skip "$name already installed"
|
||||
return
|
||||
fi
|
||||
if go install "$mod" >/dev/null 2>&1; then ok "$name (go)"; else fail "$name (go)"; fi
|
||||
}
|
||||
install_git() {
|
||||
local repo="$1" dst="$2"
|
||||
mkdir -p /opt/osint-arsenal
|
||||
if [ -d "/opt/osint-arsenal/$dst" ]; then skip "$dst already cloned"; return; fi
|
||||
if [ -d "/opt/osint-arsenal/$dst" ]; then
|
||||
skip "$dst already cloned"
|
||||
return
|
||||
fi
|
||||
if git clone --depth=1 "$repo" "/opt/osint-arsenal/$dst" >/dev/null 2>&1; then ok "$dst (git)"; else fail "$dst (git)"; fi
|
||||
}
|
||||
install_docker() {
|
||||
local image="$1" name="$2"
|
||||
if ! command -v docker >/dev/null 2>&1; then fail "$name — docker not installed"; return; fi
|
||||
if docker image inspect "$image" >/dev/null 2>&1; then skip "$name (docker) already pulled"; return; fi
|
||||
if ! command -v docker >/dev/null 2>&1; then
|
||||
fail "$name — docker not installed"
|
||||
return
|
||||
fi
|
||||
if docker image inspect "$image" >/dev/null 2>&1; then
|
||||
skip "$name (docker) already pulled"
|
||||
return
|
||||
fi
|
||||
if docker pull "$image" >/dev/null 2>&1; then ok "$name (docker)"; else fail "$name (docker)"; fi
|
||||
}
|
||||
|
||||
|
|
@ -110,7 +158,7 @@ print_summary() {
|
|||
echo -e " Skipped: ${YLW}$SKIPPED${NC}"
|
||||
echo -e " Failed: ${RED}$FAILED${NC}"
|
||||
echo "============================================="
|
||||
if (( FAILED > 0 )); then
|
||||
if ((FAILED > 0)); then
|
||||
echo -e "${RED}Failed tools:${NC} ${FAILED_TOOLS[@]:-}"
|
||||
echo "See $LOGFILE for details."
|
||||
fi
|
||||
|
|
@ -120,7 +168,8 @@ require_root
|
|||
detect_distro
|
||||
bootstrap_basics
|
||||
|
||||
echo; say "Installing: ⚔️ Red Team & Offensive Security (31 tools)"
|
||||
echo
|
||||
say "Installing: ⚔️ Red Team & Offensive Security (31 tools)"
|
||||
install_git https://github.com/infosecn1nja/AD-Attack-Defense.git AD-Attack-Defense # AD Attack & Defense
|
||||
install_pip arjun # Arjun
|
||||
install_git https://github.com/BloodHoundAD/BloodHound.git BloodHound # BloodHound
|
||||
|
|
@ -139,7 +188,8 @@ install_go github.com/assetnote/kiterunner/cmd/kr@latest kr # kiterunner
|
|||
install_go github.com/Ne0nd0g/merlin@latest merlin # Merlin
|
||||
pkg_install metasploit-framework # Metasploit Framework
|
||||
install_git https://github.com/its-a-feature/Mythic.git Mythic # Mythic
|
||||
install_pip git # NetExec (nxc)
|
||||
install_pip git
|
||||
install_pip netexec # NetExec (nxc)
|
||||
install_git https://github.com/codingo/NoSQLMap.git NoSQLMap # NoSQLMap
|
||||
install_git https://github.com/projectdiscovery/nuclei-templates.git nuclei-templates # Nuclei Templates
|
||||
install_git https://github.com/PortSwigger/param-miner.git param-miner # ParamMiner (Burp ext)
|
||||
|
|
|
|||
142
termux.sh
142
termux.sh
|
|
@ -1,82 +1,113 @@
|
|||
#!/usr/bin/env bash
|
||||
# ===================================================================
|
||||
# Awesome OSINT Arsenal — Termux (Android) installer
|
||||
# Subset of tools known to work on Termux.
|
||||
# Run from Termux:
|
||||
# pkg install -y git && git clone <repo> && cd <repo> && bash install-termux.sh
|
||||
# Optimized for ARM64/ARM environments and compilation requirements.
|
||||
# ===================================================================
|
||||
set -uo pipefail
|
||||
|
||||
RED="\033[0;31m"; GRN="\033[0;32m"; YLW="\033[1;33m"; BLU="\033[0;34m"; NC="\033[0m"
|
||||
RED="\033[0;31m"
|
||||
GRN="\033[0;32m"
|
||||
YLW="\033[1;33m"
|
||||
BLU="\033[0;34m"
|
||||
NC="\033[0m"
|
||||
LOGFILE="$HOME/osint-install-errors.log"
|
||||
: > "$LOGFILE"
|
||||
INSTALLED=0; SKIPPED=0; FAILED=0
|
||||
: >"$LOGFILE"
|
||||
INSTALLED=0
|
||||
SKIPPED=0
|
||||
FAILED=0
|
||||
declare -a FAILED_TOOLS=()
|
||||
|
||||
say() { echo -e "${BLU}[*]${NC} $*"; }
|
||||
ok() { echo -e "${GRN}[✓]${NC} $*"; INSTALLED=$((INSTALLED+1)); }
|
||||
skip() { echo -e "${YLW}[~]${NC} $*"; SKIPPED=$((SKIPPED+1)); }
|
||||
fail() { echo -e "${RED}[✗]${NC} $*"; FAILED=$((FAILED+1)); FAILED_TOOLS+=("$1"); echo "FAIL: $*" >> "$LOGFILE"; }
|
||||
ok() {
|
||||
echo -e "${GRN}[✓]${NC} $*"
|
||||
INSTALLED=$((INSTALLED + 1))
|
||||
}
|
||||
skip() {
|
||||
echo -e "${YLW}[~]${NC} $*"
|
||||
SKIPPED=$((SKIPPED + 1))
|
||||
}
|
||||
fail() {
|
||||
echo -e "${RED}[✗]${NC} $*"
|
||||
FAILED=$((FAILED + 1))
|
||||
FAILED_TOOLS+=("$1")
|
||||
echo "FAIL: $*" >>"$LOGFILE"
|
||||
}
|
||||
|
||||
install_pkg() {
|
||||
local p="$1"
|
||||
if dpkg -s "$p" >/dev/null 2>&1; then skip "$p already installed"; return; fi
|
||||
if pkg install -y "$p" >/dev/null 2>&1; then ok "$p (pkg)"; else fail "$p (pkg)"; fi
|
||||
if dpkg -s "$p" >/dev/null 2>&1; then
|
||||
skip "$p already installed"
|
||||
return
|
||||
fi
|
||||
if pkg install -y "$p" >>"$LOGFILE" 2>&1; then ok "$p (pkg)"; else fail "$p (pkg)"; fi
|
||||
}
|
||||
|
||||
install_pip() {
|
||||
local p="$1"
|
||||
if pip show "$p" >/dev/null 2>&1; then skip "$p (pip) already installed"; return; fi
|
||||
if pip install "$p" >/dev/null 2>&1; then ok "$p (pip)"; else fail "$p (pip)"; fi
|
||||
if pip show "$p" >/dev/null 2>&1; then
|
||||
skip "$p (pip) already installed"
|
||||
return
|
||||
fi
|
||||
# Note: Termux occasionally requires --break-system-packages depending on python environment state
|
||||
if pip install --break-system-packages "$p" >>"$LOGFILE" 2>&1 || pip install "$p" >>"$LOGFILE" 2>&1; then
|
||||
ok "$p (pip)"
|
||||
else
|
||||
fail "$p (pip)"
|
||||
fi
|
||||
}
|
||||
|
||||
install_git() {
|
||||
local repo="$1" dst="$2"
|
||||
mkdir -p "$HOME/osint-arsenal"
|
||||
if [ -d "$HOME/osint-arsenal/$dst" ]; then skip "$dst already cloned"; return; fi
|
||||
if git clone --depth=1 "$repo" "$HOME/osint-arsenal/$dst" >/dev/null 2>&1; then ok "$dst (git)"; else fail "$dst (git)"; fi
|
||||
if [ -d "$HOME/osint-arsenal/$dst" ]; then
|
||||
skip "$dst already cloned"
|
||||
return
|
||||
fi
|
||||
if git clone --depth=1 "$repo" "$HOME/osint-arsenal/$dst" >>"$LOGFILE" 2>&1; then ok "$dst (git)"; else fail "$dst (git)"; fi
|
||||
}
|
||||
|
||||
say "Updating Termux..."
|
||||
say "Updating Termux ecosystem repositories..."
|
||||
pkg update -y >/dev/null 2>&1 || true
|
||||
pkg upgrade -y >/dev/null 2>&1 || true
|
||||
|
||||
say "Installing core packages..."
|
||||
pkg install -y python python-pip git curl wget openssh nmap hydra perl >/dev/null 2>&1 || true
|
||||
say "Installing system compilation environment & dependencies (Essential for ARM architecture)..."
|
||||
# build-essential, clang, python-dev are REQUIRED to build wheel packages natively on Android
|
||||
pkg install -y python python-pip python-dev git curl wget openssh nmap hydra perl php \
|
||||
build-essential clang libffi libjpeg-turbo libcrypt libxml2 libxslt >/dev/null 2>&1 || true
|
||||
termux-setup-storage 2>/dev/null || true
|
||||
|
||||
say "Installing Termux-compatible tools..."
|
||||
install_pkg aircrack-ng # Aircrack-ng
|
||||
install_pip blackbird-osint # Blackbird
|
||||
install_pip censys # Censys CLI
|
||||
install_pip dnsrecon # dnsrecon
|
||||
install_pip dnstwist # dnstwist
|
||||
install_pkg libimage-exiftool-perl # ExifTool
|
||||
install_git https://github.com/Manisso/fsociety.git fsociety # fsociety
|
||||
install_pip gitrecon # Gitrecon
|
||||
install_pip h8mail # h8mail
|
||||
install_pip holehe # Holehe
|
||||
install_pkg hydra # Hydra
|
||||
install_pip instaloader # Instaloader
|
||||
install_git https://github.com/maldevel/IPGeoLocation.git IPGeoLocation # IPGeoLocation
|
||||
install_pkg john # John the Ripper
|
||||
install_pip maigret # Maigret
|
||||
install_pip metagoofil # Metagoofil
|
||||
install_git https://github.com/htr-tech/nexphisher.git nexphisher # NexPhisher
|
||||
install_pkg nmap # Nmap
|
||||
install_git https://github.com/s0md3v/Orbit.git Orbit # Orbit
|
||||
install_pip phoneinfoga # PhoneInfoga
|
||||
install_git https://github.com/aerosol-can/PhoneSploit.git PhoneSploit # PhoneSploit
|
||||
install_pip sherlock-project # Sherlock
|
||||
install_pip shodan # Shodan
|
||||
install_pip shodan # Shodan CLI
|
||||
install_pip snoop # Snoop
|
||||
install_pip snscrape # snscrape
|
||||
install_pip social-analyzer # Social Analyzer
|
||||
install_git https://github.com/ultrasecurity/Storm-Breaker.git Storm-Breaker # Storm-Breaker
|
||||
install_pip sublist3r # Sublist3r
|
||||
install_pip theHarvester # theHarvester
|
||||
install_pip trufflehog # trufflehog
|
||||
install_git https://github.com/wishihab/userrecon.git userrecon # UserRecon
|
||||
install_git https://github.com/htr-tech/zphisher.git zphisher # Zphisher
|
||||
install_pkg aircrack-ng
|
||||
install_pkg exiftool # FIXED: Correct Termux package name
|
||||
install_pkg hydra
|
||||
install_pkg john
|
||||
install_pkg nmap
|
||||
|
||||
install_pip blackbird-osint
|
||||
install_pip censys
|
||||
install_pip dnsrecon
|
||||
install_pip dnstwist
|
||||
install_pip gitrecon
|
||||
install_pip h8mail
|
||||
install_pip holehe
|
||||
install_pip instaloader
|
||||
install_pip maigret
|
||||
install_pip metagoofil
|
||||
install_pip sherlock-project
|
||||
install_pip shodan # FIXED: Deduplicated duplicate line entry
|
||||
install_pip snoop
|
||||
install_pip snscrape
|
||||
install_pip social-analyzer
|
||||
install_pip sublist3r
|
||||
install_pip theHarvester
|
||||
|
||||
install_git https://github.com/Manisso/fsociety.git fsociety
|
||||
install_git https://github.com/maldevel/IPGeoLocation.git IPGeoLocation
|
||||
install_git https://github.com/htr-tech/nexphisher.git nexphisher # Requires PHP (installed above)
|
||||
install_git https://github.com/s0md3v/Orbit.git Orbit
|
||||
install_git https://github.com/aerosol-can/PhoneSploit.git PhoneSploit
|
||||
install_git https://github.com/ultrasecurity/Storm-Breaker.git Storm-Breaker # Requires PHP
|
||||
install_git https://github.com/wishihab/userrecon.git userrecon
|
||||
install_git https://github.com/htr-tech/zphisher.git zphisher # Requires PHP
|
||||
|
||||
echo
|
||||
echo "============================================="
|
||||
|
|
@ -84,10 +115,9 @@ echo -e " Installed: ${GRN}$INSTALLED${NC}"
|
|||
echo -e " Skipped: ${YLW}$SKIPPED${NC}"
|
||||
echo -e " Failed: ${RED}$FAILED${NC}"
|
||||
echo "============================================="
|
||||
if (( FAILED > 0 )); then
|
||||
if ((FAILED > 0)); then
|
||||
echo -e "${RED}Failed tools:${NC} ${FAILED_TOOLS[*]}"
|
||||
echo "See $LOGFILE for details."
|
||||
echo "Review comprehensive build errors here: $LOGFILE"
|
||||
fi
|
||||
echo
|
||||
echo "Tools cloned to: $HOME/osint-arsenal/"
|
||||
echo "For more tools, see the README.md — many require x86 Linux and won't run on Android."
|
||||
echo "Tools mapped out to: $HOME/osint-arsenal/"
|
||||
Loading…
Reference in New Issue