Version 2.1
This commit is contained in:
parent
91048feb22
commit
63abebdc14
21
LICENSE
21
LICENSE
|
|
@ -1,21 +0,0 @@
|
||||||
MIT License
|
|
||||||
|
|
||||||
Copyright (c) 2026 barni
|
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
|
||||||
in the Software without restriction, including without limitation the rights
|
|
||||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
||||||
copies of the Software, and to permit persons to whom the Software is
|
|
||||||
furnished to do so, subject to the following conditions:
|
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be included in all
|
|
||||||
copies or substantial portions of the Software.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
||||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
||||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
||||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
||||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
||||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
||||||
SOFTWARE.
|
|
||||||
|
|
@ -0,0 +1,149 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
# ===================================================================
|
||||||
|
# 🛡️ Blue team / defensive + threat intel
|
||||||
|
# Part of awesome-osint-arsenal v3.4
|
||||||
|
# Auto-detects: Kali / Debian / Ubuntu / Parrot / Mint / Pop!_OS /
|
||||||
|
# Arch / Manjaro / EndeavourOS /
|
||||||
|
# Fedora / RHEL / CentOS / Rocky / Alma
|
||||||
|
# Best support: Kali / Debian / Ubuntu (apt-based)
|
||||||
|
# ===================================================================
|
||||||
|
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"
|
||||||
|
LOGFILE="${LOGFILE:-$HOME/osint-install-errors.log}"
|
||||||
|
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"; }
|
||||||
|
|
||||||
|
require_root() {
|
||||||
|
if [ "$EUID" -ne 0 ]; then echo "Please run as root: sudo bash $0"; exit 1; fi
|
||||||
|
}
|
||||||
|
|
||||||
|
detect_distro() {
|
||||||
|
if [ -f /etc/os-release ]; then
|
||||||
|
. /etc/os-release
|
||||||
|
case "${ID,,}" in
|
||||||
|
kali|debian|ubuntu|parrot|raspbian|linuxmint|pop|elementary) PKG="apt" ;;
|
||||||
|
arch|manjaro|endeavouros|garuda|artix) PKG="pacman" ;;
|
||||||
|
fedora|rhel|centos|rocky|almalinux|ol) PKG="dnf" ;;
|
||||||
|
*) PKG="unknown" ;;
|
||||||
|
esac
|
||||||
|
else
|
||||||
|
PKG="unknown"
|
||||||
|
fi
|
||||||
|
export PKG
|
||||||
|
echo -e "${CYN}[i]${NC} Detected package manager: $PKG"
|
||||||
|
if [ "$PKG" = "unknown" ]; then
|
||||||
|
echo -e "${YLW}[!]${NC} Unknown distro — git/pip/go installs will work, system-package installs will be skipped."
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
pkg_install() {
|
||||||
|
local pkg="$1"
|
||||||
|
case "$PKG" in
|
||||||
|
apt)
|
||||||
|
if dpkg -s "$pkg" >/dev/null 2>&1; then skip "$pkg already installed"; return; fi
|
||||||
|
if apt install -y "$pkg" >/dev/null 2>&1; then ok "$pkg (apt)"; else fail "$pkg (apt)"; fi
|
||||||
|
;;
|
||||||
|
pacman)
|
||||||
|
if pacman -Qi "$pkg" >/dev/null 2>&1; then skip "$pkg already installed"; return; fi
|
||||||
|
if pacman -S --noconfirm --needed "$pkg" >/dev/null 2>&1; then ok "$pkg (pacman)"; else fail "$pkg (pacman — may not be in repo, try AUR)"; fi
|
||||||
|
;;
|
||||||
|
dnf)
|
||||||
|
if rpm -q "$pkg" >/dev/null 2>&1; then skip "$pkg already installed"; return; fi
|
||||||
|
if dnf install -y "$pkg" >/dev/null 2>&1; then ok "$pkg (dnf)"; else fail "$pkg (dnf — may not be in repo)"; fi
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
fail "$pkg — unknown package manager, install manually"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
install_pip() {
|
||||||
|
local pkg="$1"
|
||||||
|
if pip3 show "$pkg" >/dev/null 2>&1; then skip "$pkg (pip) already installed"; return; fi
|
||||||
|
if pip3 install --break-system-packages "$pkg" >/dev/null 2>&1; then ok "$pkg (pip)"; else fail "$pkg (pip)"; fi
|
||||||
|
}
|
||||||
|
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
|
||||||
|
}
|
||||||
|
install_git() {
|
||||||
|
local repo="$1" dst="$2"
|
||||||
|
mkdir -p /opt/osint-arsenal
|
||||||
|
if [ -d "/opt/osint-arsenal/$dst" ]; then skip "$dst already cloned"; return; fi
|
||||||
|
if git clone --depth=1 "$repo" "/opt/osint-arsenal/$dst" >/dev/null 2>&1; then ok "$dst (git)"; else fail "$dst (git)"; fi
|
||||||
|
}
|
||||||
|
install_docker() {
|
||||||
|
local image="$1" name="$2"
|
||||||
|
if ! command -v docker >/dev/null 2>&1; then fail "$name — docker not installed"; return; fi
|
||||||
|
if docker image inspect "$image" >/dev/null 2>&1; then skip "$name (docker) already pulled"; return; fi
|
||||||
|
if docker pull "$image" >/dev/null 2>&1; then ok "$name (docker)"; else fail "$name (docker)"; fi
|
||||||
|
}
|
||||||
|
|
||||||
|
bootstrap_basics() {
|
||||||
|
case "$PKG" in
|
||||||
|
apt)
|
||||||
|
apt update -y >/dev/null 2>&1 || true
|
||||||
|
apt install -y python3 python3-pip git curl wget golang-go >/dev/null 2>&1 || true
|
||||||
|
;;
|
||||||
|
pacman)
|
||||||
|
pacman -Sy --noconfirm >/dev/null 2>&1 || true
|
||||||
|
pacman -S --noconfirm --needed python python-pip git curl wget go >/dev/null 2>&1 || true
|
||||||
|
;;
|
||||||
|
dnf)
|
||||||
|
dnf install -y python3 python3-pip git curl wget golang >/dev/null 2>&1 || true
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
print_summary() {
|
||||||
|
echo
|
||||||
|
echo "============================================="
|
||||||
|
echo -e " Installed: ${GRN}$INSTALLED${NC}"
|
||||||
|
echo -e " Skipped: ${YLW}$SKIPPED${NC}"
|
||||||
|
echo -e " Failed: ${RED}$FAILED${NC}"
|
||||||
|
echo "============================================="
|
||||||
|
if (( FAILED > 0 )); then
|
||||||
|
echo -e "${RED}Failed tools:${NC} ${FAILED_TOOLS[@]:-}"
|
||||||
|
echo "See $LOGFILE for details."
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
require_root
|
||||||
|
detect_distro
|
||||||
|
bootstrap_basics
|
||||||
|
|
||||||
|
echo; say "Installing: 🛰️ Threat Intel Platforms (2 tools)"
|
||||||
|
install_docker opencti/platform OpenCTI # OpenCTI
|
||||||
|
install_git https://github.com/yeti-platform/yeti.git yeti # Yeti
|
||||||
|
|
||||||
|
echo; say "Installing: 🛡️ Blue Team & Defensive Security (20 tools)"
|
||||||
|
install_git https://github.com/redcanaryco/atomic-red-team.git atomic-red-team # Atomic Red Team
|
||||||
|
install_git https://github.com/WithSecureLabs/chainsaw.git chainsaw # Chainsaw
|
||||||
|
install_docker thehiveproject/cortex:latest 'Cortex (TheHive)' # Cortex (TheHive)
|
||||||
|
install_docker docker.elastic.co/elasticsearch/elasticsearch:latest 'Elastic Stack (ELK)' # Elastic Stack (ELK)
|
||||||
|
install_git https://github.com/falcosecurity/falco.git falco # Falco
|
||||||
|
install_docker graylog/graylog:latest Graylog # Graylog
|
||||||
|
install_git https://github.com/Yamato-Security/hayabusa.git hayabusa # Hayabusa
|
||||||
|
install_git https://github.com/Neo23x0/Loki.git Loki # Loki
|
||||||
|
install_git https://github.com/mitre/caldera.git caldera # MITRE CALDERA
|
||||||
|
pkg_install osquery # osquery
|
||||||
|
install_git https://github.com/activecm/rita.git rita # RITA
|
||||||
|
install_git https://github.com/SigmaHQ/sigma.git sigma # Sigma
|
||||||
|
install_pip sigma-cli # sigma-cli
|
||||||
|
pkg_install snort # Snort
|
||||||
|
pkg_install suricata # Suricata
|
||||||
|
install_docker strangebee/thehive:latest TheHive # TheHive
|
||||||
|
install_git https://github.com/aquasecurity/tracee.git tracee # Tracee
|
||||||
|
install_git https://github.com/Velocidex/velociraptor.git velociraptor # Velociraptor
|
||||||
|
install_git https://github.com/wazuh/wazuh.git wazuh # Wazuh
|
||||||
|
pkg_install zeek # Zeek (Bro)
|
||||||
|
|
||||||
|
print_summary
|
||||||
|
|
@ -0,0 +1,132 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
# ===================================================================
|
||||||
|
# 🔧 Misc / catch-all
|
||||||
|
# Part of awesome-osint-arsenal v3.4
|
||||||
|
# Auto-detects: Kali / Debian / Ubuntu / Parrot / Mint / Pop!_OS /
|
||||||
|
# Arch / Manjaro / EndeavourOS /
|
||||||
|
# Fedora / RHEL / CentOS / Rocky / Alma
|
||||||
|
# Best support: Kali / Debian / Ubuntu (apt-based)
|
||||||
|
# ===================================================================
|
||||||
|
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"
|
||||||
|
LOGFILE="${LOGFILE:-$HOME/osint-install-errors.log}"
|
||||||
|
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"; }
|
||||||
|
|
||||||
|
require_root() {
|
||||||
|
if [ "$EUID" -ne 0 ]; then echo "Please run as root: sudo bash $0"; exit 1; fi
|
||||||
|
}
|
||||||
|
|
||||||
|
detect_distro() {
|
||||||
|
if [ -f /etc/os-release ]; then
|
||||||
|
. /etc/os-release
|
||||||
|
case "${ID,,}" in
|
||||||
|
kali|debian|ubuntu|parrot|raspbian|linuxmint|pop|elementary) PKG="apt" ;;
|
||||||
|
arch|manjaro|endeavouros|garuda|artix) PKG="pacman" ;;
|
||||||
|
fedora|rhel|centos|rocky|almalinux|ol) PKG="dnf" ;;
|
||||||
|
*) PKG="unknown" ;;
|
||||||
|
esac
|
||||||
|
else
|
||||||
|
PKG="unknown"
|
||||||
|
fi
|
||||||
|
export PKG
|
||||||
|
echo -e "${CYN}[i]${NC} Detected package manager: $PKG"
|
||||||
|
if [ "$PKG" = "unknown" ]; then
|
||||||
|
echo -e "${YLW}[!]${NC} Unknown distro — git/pip/go installs will work, system-package installs will be skipped."
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
pkg_install() {
|
||||||
|
local pkg="$1"
|
||||||
|
case "$PKG" in
|
||||||
|
apt)
|
||||||
|
if dpkg -s "$pkg" >/dev/null 2>&1; then skip "$pkg already installed"; return; fi
|
||||||
|
if apt install -y "$pkg" >/dev/null 2>&1; then ok "$pkg (apt)"; else fail "$pkg (apt)"; fi
|
||||||
|
;;
|
||||||
|
pacman)
|
||||||
|
if pacman -Qi "$pkg" >/dev/null 2>&1; then skip "$pkg already installed"; return; fi
|
||||||
|
if pacman -S --noconfirm --needed "$pkg" >/dev/null 2>&1; then ok "$pkg (pacman)"; else fail "$pkg (pacman — may not be in repo, try AUR)"; fi
|
||||||
|
;;
|
||||||
|
dnf)
|
||||||
|
if rpm -q "$pkg" >/dev/null 2>&1; then skip "$pkg already installed"; return; fi
|
||||||
|
if dnf install -y "$pkg" >/dev/null 2>&1; then ok "$pkg (dnf)"; else fail "$pkg (dnf — may not be in repo)"; fi
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
fail "$pkg — unknown package manager, install manually"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
install_pip() {
|
||||||
|
local pkg="$1"
|
||||||
|
if pip3 show "$pkg" >/dev/null 2>&1; then skip "$pkg (pip) already installed"; return; fi
|
||||||
|
if pip3 install --break-system-packages "$pkg" >/dev/null 2>&1; then ok "$pkg (pip)"; else fail "$pkg (pip)"; fi
|
||||||
|
}
|
||||||
|
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
|
||||||
|
}
|
||||||
|
install_git() {
|
||||||
|
local repo="$1" dst="$2"
|
||||||
|
mkdir -p /opt/osint-arsenal
|
||||||
|
if [ -d "/opt/osint-arsenal/$dst" ]; then skip "$dst already cloned"; return; fi
|
||||||
|
if git clone --depth=1 "$repo" "/opt/osint-arsenal/$dst" >/dev/null 2>&1; then ok "$dst (git)"; else fail "$dst (git)"; fi
|
||||||
|
}
|
||||||
|
install_docker() {
|
||||||
|
local image="$1" name="$2"
|
||||||
|
if ! command -v docker >/dev/null 2>&1; then fail "$name — docker not installed"; return; fi
|
||||||
|
if docker image inspect "$image" >/dev/null 2>&1; then skip "$name (docker) already pulled"; return; fi
|
||||||
|
if docker pull "$image" >/dev/null 2>&1; then ok "$name (docker)"; else fail "$name (docker)"; fi
|
||||||
|
}
|
||||||
|
|
||||||
|
bootstrap_basics() {
|
||||||
|
case "$PKG" in
|
||||||
|
apt)
|
||||||
|
apt update -y >/dev/null 2>&1 || true
|
||||||
|
apt install -y python3 python3-pip git curl wget golang-go >/dev/null 2>&1 || true
|
||||||
|
;;
|
||||||
|
pacman)
|
||||||
|
pacman -Sy --noconfirm >/dev/null 2>&1 || true
|
||||||
|
pacman -S --noconfirm --needed python python-pip git curl wget go >/dev/null 2>&1 || true
|
||||||
|
;;
|
||||||
|
dnf)
|
||||||
|
dnf install -y python3 python3-pip git curl wget golang >/dev/null 2>&1 || true
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
print_summary() {
|
||||||
|
echo
|
||||||
|
echo "============================================="
|
||||||
|
echo -e " Installed: ${GRN}$INSTALLED${NC}"
|
||||||
|
echo -e " Skipped: ${YLW}$SKIPPED${NC}"
|
||||||
|
echo -e " Failed: ${RED}$FAILED${NC}"
|
||||||
|
echo "============================================="
|
||||||
|
if (( FAILED > 0 )); then
|
||||||
|
echo -e "${RED}Failed tools:${NC} ${FAILED_TOOLS[@]:-}"
|
||||||
|
echo "See $LOGFILE for details."
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
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: 🔧 Miscellaneous / Niche Tools (3 tools)"
|
||||||
|
install_git https://github.com/RedSiege/EyeWitness.git EyeWitness # EyeWitness
|
||||||
|
install_pip opencv-python # OpenCV
|
||||||
|
install_pip trufflehog # trufflehog
|
||||||
|
|
||||||
|
print_summary
|
||||||
|
|
@ -0,0 +1,136 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
# ===================================================================
|
||||||
|
# 🔬 Digital forensics & RE
|
||||||
|
# Part of awesome-osint-arsenal v3.4
|
||||||
|
# Auto-detects: Kali / Debian / Ubuntu / Parrot / Mint / Pop!_OS /
|
||||||
|
# Arch / Manjaro / EndeavourOS /
|
||||||
|
# Fedora / RHEL / CentOS / Rocky / Alma
|
||||||
|
# Best support: Kali / Debian / Ubuntu (apt-based)
|
||||||
|
# ===================================================================
|
||||||
|
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"
|
||||||
|
LOGFILE="${LOGFILE:-$HOME/osint-install-errors.log}"
|
||||||
|
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"; }
|
||||||
|
|
||||||
|
require_root() {
|
||||||
|
if [ "$EUID" -ne 0 ]; then echo "Please run as root: sudo bash $0"; exit 1; fi
|
||||||
|
}
|
||||||
|
|
||||||
|
detect_distro() {
|
||||||
|
if [ -f /etc/os-release ]; then
|
||||||
|
. /etc/os-release
|
||||||
|
case "${ID,,}" in
|
||||||
|
kali|debian|ubuntu|parrot|raspbian|linuxmint|pop|elementary) PKG="apt" ;;
|
||||||
|
arch|manjaro|endeavouros|garuda|artix) PKG="pacman" ;;
|
||||||
|
fedora|rhel|centos|rocky|almalinux|ol) PKG="dnf" ;;
|
||||||
|
*) PKG="unknown" ;;
|
||||||
|
esac
|
||||||
|
else
|
||||||
|
PKG="unknown"
|
||||||
|
fi
|
||||||
|
export PKG
|
||||||
|
echo -e "${CYN}[i]${NC} Detected package manager: $PKG"
|
||||||
|
if [ "$PKG" = "unknown" ]; then
|
||||||
|
echo -e "${YLW}[!]${NC} Unknown distro — git/pip/go installs will work, system-package installs will be skipped."
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
pkg_install() {
|
||||||
|
local pkg="$1"
|
||||||
|
case "$PKG" in
|
||||||
|
apt)
|
||||||
|
if dpkg -s "$pkg" >/dev/null 2>&1; then skip "$pkg already installed"; return; fi
|
||||||
|
if apt install -y "$pkg" >/dev/null 2>&1; then ok "$pkg (apt)"; else fail "$pkg (apt)"; fi
|
||||||
|
;;
|
||||||
|
pacman)
|
||||||
|
if pacman -Qi "$pkg" >/dev/null 2>&1; then skip "$pkg already installed"; return; fi
|
||||||
|
if pacman -S --noconfirm --needed "$pkg" >/dev/null 2>&1; then ok "$pkg (pacman)"; else fail "$pkg (pacman — may not be in repo, try AUR)"; fi
|
||||||
|
;;
|
||||||
|
dnf)
|
||||||
|
if rpm -q "$pkg" >/dev/null 2>&1; then skip "$pkg already installed"; return; fi
|
||||||
|
if dnf install -y "$pkg" >/dev/null 2>&1; then ok "$pkg (dnf)"; else fail "$pkg (dnf — may not be in repo)"; fi
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
fail "$pkg — unknown package manager, install manually"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
install_pip() {
|
||||||
|
local pkg="$1"
|
||||||
|
if pip3 show "$pkg" >/dev/null 2>&1; then skip "$pkg (pip) already installed"; return; fi
|
||||||
|
if pip3 install --break-system-packages "$pkg" >/dev/null 2>&1; then ok "$pkg (pip)"; else fail "$pkg (pip)"; fi
|
||||||
|
}
|
||||||
|
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
|
||||||
|
}
|
||||||
|
install_git() {
|
||||||
|
local repo="$1" dst="$2"
|
||||||
|
mkdir -p /opt/osint-arsenal
|
||||||
|
if [ -d "/opt/osint-arsenal/$dst" ]; then skip "$dst already cloned"; return; fi
|
||||||
|
if git clone --depth=1 "$repo" "/opt/osint-arsenal/$dst" >/dev/null 2>&1; then ok "$dst (git)"; else fail "$dst (git)"; fi
|
||||||
|
}
|
||||||
|
install_docker() {
|
||||||
|
local image="$1" name="$2"
|
||||||
|
if ! command -v docker >/dev/null 2>&1; then fail "$name — docker not installed"; return; fi
|
||||||
|
if docker image inspect "$image" >/dev/null 2>&1; then skip "$name (docker) already pulled"; return; fi
|
||||||
|
if docker pull "$image" >/dev/null 2>&1; then ok "$name (docker)"; else fail "$name (docker)"; fi
|
||||||
|
}
|
||||||
|
|
||||||
|
bootstrap_basics() {
|
||||||
|
case "$PKG" in
|
||||||
|
apt)
|
||||||
|
apt update -y >/dev/null 2>&1 || true
|
||||||
|
apt install -y python3 python3-pip git curl wget golang-go >/dev/null 2>&1 || true
|
||||||
|
;;
|
||||||
|
pacman)
|
||||||
|
pacman -Sy --noconfirm >/dev/null 2>&1 || true
|
||||||
|
pacman -S --noconfirm --needed python python-pip git curl wget go >/dev/null 2>&1 || true
|
||||||
|
;;
|
||||||
|
dnf)
|
||||||
|
dnf install -y python3 python3-pip git curl wget golang >/dev/null 2>&1 || true
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
print_summary() {
|
||||||
|
echo
|
||||||
|
echo "============================================="
|
||||||
|
echo -e " Installed: ${GRN}$INSTALLED${NC}"
|
||||||
|
echo -e " Skipped: ${YLW}$SKIPPED${NC}"
|
||||||
|
echo -e " Failed: ${RED}$FAILED${NC}"
|
||||||
|
echo "============================================="
|
||||||
|
if (( FAILED > 0 )); then
|
||||||
|
echo -e "${RED}Failed tools:${NC} ${FAILED_TOOLS[@]:-}"
|
||||||
|
echo "See $LOGFILE for details."
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
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
|
||||||
|
|
||||||
|
print_summary
|
||||||
|
|
@ -0,0 +1,135 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
# ===================================================================
|
||||||
|
# 🔌 Hardware hacking & SDR
|
||||||
|
# Part of awesome-osint-arsenal v3.4
|
||||||
|
# Auto-detects: Kali / Debian / Ubuntu / Parrot / Mint / Pop!_OS /
|
||||||
|
# Arch / Manjaro / EndeavourOS /
|
||||||
|
# Fedora / RHEL / CentOS / Rocky / Alma
|
||||||
|
# Best support: Kali / Debian / Ubuntu (apt-based)
|
||||||
|
# ===================================================================
|
||||||
|
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"
|
||||||
|
LOGFILE="${LOGFILE:-$HOME/osint-install-errors.log}"
|
||||||
|
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"; }
|
||||||
|
|
||||||
|
require_root() {
|
||||||
|
if [ "$EUID" -ne 0 ]; then echo "Please run as root: sudo bash $0"; exit 1; fi
|
||||||
|
}
|
||||||
|
|
||||||
|
detect_distro() {
|
||||||
|
if [ -f /etc/os-release ]; then
|
||||||
|
. /etc/os-release
|
||||||
|
case "${ID,,}" in
|
||||||
|
kali|debian|ubuntu|parrot|raspbian|linuxmint|pop|elementary) PKG="apt" ;;
|
||||||
|
arch|manjaro|endeavouros|garuda|artix) PKG="pacman" ;;
|
||||||
|
fedora|rhel|centos|rocky|almalinux|ol) PKG="dnf" ;;
|
||||||
|
*) PKG="unknown" ;;
|
||||||
|
esac
|
||||||
|
else
|
||||||
|
PKG="unknown"
|
||||||
|
fi
|
||||||
|
export PKG
|
||||||
|
echo -e "${CYN}[i]${NC} Detected package manager: $PKG"
|
||||||
|
if [ "$PKG" = "unknown" ]; then
|
||||||
|
echo -e "${YLW}[!]${NC} Unknown distro — git/pip/go installs will work, system-package installs will be skipped."
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
pkg_install() {
|
||||||
|
local pkg="$1"
|
||||||
|
case "$PKG" in
|
||||||
|
apt)
|
||||||
|
if dpkg -s "$pkg" >/dev/null 2>&1; then skip "$pkg already installed"; return; fi
|
||||||
|
if apt install -y "$pkg" >/dev/null 2>&1; then ok "$pkg (apt)"; else fail "$pkg (apt)"; fi
|
||||||
|
;;
|
||||||
|
pacman)
|
||||||
|
if pacman -Qi "$pkg" >/dev/null 2>&1; then skip "$pkg already installed"; return; fi
|
||||||
|
if pacman -S --noconfirm --needed "$pkg" >/dev/null 2>&1; then ok "$pkg (pacman)"; else fail "$pkg (pacman — may not be in repo, try AUR)"; fi
|
||||||
|
;;
|
||||||
|
dnf)
|
||||||
|
if rpm -q "$pkg" >/dev/null 2>&1; then skip "$pkg already installed"; return; fi
|
||||||
|
if dnf install -y "$pkg" >/dev/null 2>&1; then ok "$pkg (dnf)"; else fail "$pkg (dnf — may not be in repo)"; fi
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
fail "$pkg — unknown package manager, install manually"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
install_pip() {
|
||||||
|
local pkg="$1"
|
||||||
|
if pip3 show "$pkg" >/dev/null 2>&1; then skip "$pkg (pip) already installed"; return; fi
|
||||||
|
if pip3 install --break-system-packages "$pkg" >/dev/null 2>&1; then ok "$pkg (pip)"; else fail "$pkg (pip)"; fi
|
||||||
|
}
|
||||||
|
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
|
||||||
|
}
|
||||||
|
install_git() {
|
||||||
|
local repo="$1" dst="$2"
|
||||||
|
mkdir -p /opt/osint-arsenal
|
||||||
|
if [ -d "/opt/osint-arsenal/$dst" ]; then skip "$dst already cloned"; return; fi
|
||||||
|
if git clone --depth=1 "$repo" "/opt/osint-arsenal/$dst" >/dev/null 2>&1; then ok "$dst (git)"; else fail "$dst (git)"; fi
|
||||||
|
}
|
||||||
|
install_docker() {
|
||||||
|
local image="$1" name="$2"
|
||||||
|
if ! command -v docker >/dev/null 2>&1; then fail "$name — docker not installed"; return; fi
|
||||||
|
if docker image inspect "$image" >/dev/null 2>&1; then skip "$name (docker) already pulled"; return; fi
|
||||||
|
if docker pull "$image" >/dev/null 2>&1; then ok "$name (docker)"; else fail "$name (docker)"; fi
|
||||||
|
}
|
||||||
|
|
||||||
|
bootstrap_basics() {
|
||||||
|
case "$PKG" in
|
||||||
|
apt)
|
||||||
|
apt update -y >/dev/null 2>&1 || true
|
||||||
|
apt install -y python3 python3-pip git curl wget golang-go >/dev/null 2>&1 || true
|
||||||
|
;;
|
||||||
|
pacman)
|
||||||
|
pacman -Sy --noconfirm >/dev/null 2>&1 || true
|
||||||
|
pacman -S --noconfirm --needed python python-pip git curl wget go >/dev/null 2>&1 || true
|
||||||
|
;;
|
||||||
|
dnf)
|
||||||
|
dnf install -y python3 python3-pip git curl wget golang >/dev/null 2>&1 || true
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
print_summary() {
|
||||||
|
echo
|
||||||
|
echo "============================================="
|
||||||
|
echo -e " Installed: ${GRN}$INSTALLED${NC}"
|
||||||
|
echo -e " Skipped: ${YLW}$SKIPPED${NC}"
|
||||||
|
echo -e " Failed: ${RED}$FAILED${NC}"
|
||||||
|
echo "============================================="
|
||||||
|
if (( FAILED > 0 )); then
|
||||||
|
echo -e "${RED}Failed tools:${NC} ${FAILED_TOOLS[@]:-}"
|
||||||
|
echo "See $LOGFILE for details."
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
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
|
||||||
|
|
||||||
|
print_summary
|
||||||
|
|
@ -0,0 +1,42 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
# ===================================================================
|
||||||
|
# Awesome OSINT Arsenal — install everything
|
||||||
|
# Runs each category installer in order.
|
||||||
|
# Best support: Kali / Debian / Ubuntu / Parrot.
|
||||||
|
# Partial: Arch / Manjaro / Fedora / RHEL.
|
||||||
|
# For Android, use: bash termux.sh
|
||||||
|
# ===================================================================
|
||||||
|
set -uo pipefail
|
||||||
|
cd "$(dirname "$0")"
|
||||||
|
|
||||||
|
if [ "$EUID" -ne 0 ]; then
|
||||||
|
echo "Run me as root: sudo bash install.sh"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
|
INSTALLERS=(
|
||||||
|
"osint.sh"
|
||||||
|
"redteam.sh"
|
||||||
|
"blueteam.sh"
|
||||||
|
"forensics.sh"
|
||||||
|
"hardware.sh"
|
||||||
|
"labs.sh"
|
||||||
|
"extras.sh"
|
||||||
|
)
|
||||||
|
|
||||||
|
LOGFILE="$HOME/osint-install-errors.log"
|
||||||
|
: > "$LOGFILE"
|
||||||
|
|
||||||
|
for inst in "${INSTALLERS[@]}"; do
|
||||||
|
echo
|
||||||
|
echo "==========================================="
|
||||||
|
echo " Running: $inst"
|
||||||
|
echo "==========================================="
|
||||||
|
bash "$inst"
|
||||||
|
done
|
||||||
|
|
||||||
|
echo
|
||||||
|
echo "==========================================="
|
||||||
|
echo " ALL DONE"
|
||||||
|
echo " Failures (if any) logged to: $LOGFILE"
|
||||||
|
echo "==========================================="
|
||||||
|
|
@ -1,422 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
# ============================================================
|
|
||||||
# AWESOME OSINT ARSENAL - Kali Linux Full Installer
|
|
||||||
# Source: github.com/rawfilejson/awesome-osint-arsenal
|
|
||||||
# For authorized security research & OSINT only
|
|
||||||
# ============================================================
|
|
||||||
|
|
||||||
RED='\033[0;31m'; GREEN='\033[0;32m'; YELLOW='\033[1;33m'
|
|
||||||
CYAN='\033[0;36m'; NC='\033[0m'; BOLD='\033[1m'
|
|
||||||
|
|
||||||
ok() { echo -e "${GREEN}[✔]${NC} $1"; }
|
|
||||||
warn() { echo -e "${YELLOW}[!]${NC} $1"; }
|
|
||||||
info() { echo -e "${CYAN}[*]${NC} $1"; }
|
|
||||||
fail() { echo -e "${RED}[✘]${NC} $1"; }
|
|
||||||
|
|
||||||
TOOLS_DIR="/opt/osint-arsenal"
|
|
||||||
ERRORS=()
|
|
||||||
LOG_FILE="/var/log/osint-arsenal-install.log"
|
|
||||||
START_TIME=$(date +%s)
|
|
||||||
|
|
||||||
banner() {
|
|
||||||
cat << 'EOF'
|
|
||||||
___ ____ ___ _ _ _____ _ ____ ____ _____
|
|
||||||
/ _ \/ ___|_ _| \ | |_ _| / \ | _ \/ ___|| ____|
|
|
||||||
| | | \___ \| || \| | | | / _ \ | |_) \___ \| _|
|
|
||||||
| |_| |___) | || |\ | | | / ___ \| _ < ___) | |___
|
|
||||||
\___/|____/___|_| \_| |_| /_/ \_\_| \_\____/|_____|
|
|
||||||
|
|
||||||
Awesome OSINT Arsenal - Kali Linux Installer
|
|
||||||
For authorized security research only.
|
|
||||||
EOF
|
|
||||||
}
|
|
||||||
|
|
||||||
check_root() {
|
|
||||||
if [[ $EUID -ne 0 ]]; then
|
|
||||||
warn "Not running as root. Some installs may fail. Re-run with: sudo bash $0"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
run() {
|
|
||||||
# run "description" command...
|
|
||||||
local desc="$1"; shift
|
|
||||||
if "$@" &>/dev/null; then
|
|
||||||
ok "$desc"
|
|
||||||
else
|
|
||||||
fail "$desc"
|
|
||||||
ERRORS+=("$desc")
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
# ── 1. SYSTEM UPDATE ──────────────────────────────────────
|
|
||||||
step_apt() {
|
|
||||||
info "── STEP 1: System update & apt packages ──"
|
|
||||||
apt-get update -y &>/dev/null && apt-get upgrade -y &>/dev/null
|
|
||||||
ok "System updated"
|
|
||||||
|
|
||||||
APT_TOOLS=(
|
|
||||||
# Core utilities
|
|
||||||
git curl wget python3 python3-pip golang-go ruby-full build-essential
|
|
||||||
# Network / scanning
|
|
||||||
nmap masscan wireshark tcpdump netcat-openbsd
|
|
||||||
# Web recon
|
|
||||||
nikto dirb gobuster whatweb wfuzz feroxbuster
|
|
||||||
# Password & brute force
|
|
||||||
hydra john hashcat medusa cewl crunch
|
|
||||||
# Wireless
|
|
||||||
aircrack-ng kismet wifite reaver hcxtools fern-wifi-cracker
|
|
||||||
bettercap ettercap-common
|
|
||||||
# OSINT pre-installed
|
|
||||||
theharvester recon-ng maltego spiderfoot set
|
|
||||||
# Web app
|
|
||||||
sqlmap burpsuite
|
|
||||||
# Vuln scanners
|
|
||||||
openvas
|
|
||||||
# Forensics
|
|
||||||
binwalk foremost bulk-extractor scalpel
|
|
||||||
# Misc
|
|
||||||
macchanger libimage-exiftool-perl apktool jadx
|
|
||||||
dnsrecon
|
|
||||||
)
|
|
||||||
|
|
||||||
for pkg in "${APT_TOOLS[@]}"; do
|
|
||||||
if apt-get install -y "$pkg" &>/dev/null; then
|
|
||||||
ok "apt: $pkg"
|
|
||||||
else
|
|
||||||
warn "apt: $pkg (skipped/unavailable)"
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
# ── 2. PYTHON (pip) TOOLS ─────────────────────────────────
|
|
||||||
step_pip() {
|
|
||||||
info "── STEP 2: Python pip tools ──"
|
|
||||||
pip3 install --upgrade --break-system-packages pip &>/dev/null
|
|
||||||
|
|
||||||
PIP_TOOLS=(
|
|
||||||
# Username / social OSINT
|
|
||||||
sherlock-project maigret blackbird-osint nexfil
|
|
||||||
social-analyzer socid-extractor osrframework
|
|
||||||
socialscan holehe gitrecon
|
|
||||||
# Email OSINT
|
|
||||||
h8mail theHarvester mailto-analyzer
|
|
||||||
# Phone OSINT
|
|
||||||
phoneinfoga ignorant
|
|
||||||
# DNS / domain
|
|
||||||
dnsrecon sublist3r
|
|
||||||
# Social media scrapers
|
|
||||||
instaloader snscrape twayback toutatis
|
|
||||||
telepathy telethon
|
|
||||||
# Forensics / metadata
|
|
||||||
volatility3 metagoofil
|
|
||||||
# AI / face
|
|
||||||
deepface face_recognition opencv-python
|
|
||||||
# Web / fuzzing
|
|
||||||
wfuzz paramspider
|
|
||||||
# Misc
|
|
||||||
spiderfoot recon-ng
|
|
||||||
# Mobile
|
|
||||||
frida-tools objection
|
|
||||||
)
|
|
||||||
|
|
||||||
for pkg in "${PIP_TOOLS[@]}"; do
|
|
||||||
if pip3 install --break-system-packages "$pkg" &>/dev/null; then
|
|
||||||
ok "pip: $pkg"
|
|
||||||
else
|
|
||||||
warn "pip: $pkg (skipped/failed)"
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
# ── 3. GO TOOLS ───────────────────────────────────────────
|
|
||||||
step_go() {
|
|
||||||
info "── STEP 3: Go-based tools ──"
|
|
||||||
export PATH=$PATH:/usr/local/go/bin:$HOME/go/bin:/root/go/bin
|
|
||||||
export GOPATH=$HOME/go
|
|
||||||
|
|
||||||
GO_TOOLS=(
|
|
||||||
"github.com/owasp-amass/amass/v4/...@master"
|
|
||||||
"github.com/projectdiscovery/subfinder/v2/cmd/subfinder@latest"
|
|
||||||
"github.com/projectdiscovery/httpx/cmd/httpx@latest"
|
|
||||||
"github.com/projectdiscovery/nuclei/v3/cmd/nuclei@latest"
|
|
||||||
"github.com/projectdiscovery/katana/cmd/katana@latest"
|
|
||||||
"github.com/OJ/gobuster/v3@latest"
|
|
||||||
"github.com/s-rah/onionscan@latest"
|
|
||||||
"github.com/kgretzky/evilginx2@latest"
|
|
||||||
"github.com/drk1wi/Modlishka@latest"
|
|
||||||
)
|
|
||||||
|
|
||||||
for pkg in "${GO_TOOLS[@]}"; do
|
|
||||||
name=$(basename "${pkg%%@*}")
|
|
||||||
if go install "$pkg" &>/dev/null; then
|
|
||||||
ok "go: $name"
|
|
||||||
else
|
|
||||||
warn "go: $name (failed)"
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
# ── 4. RUBY GEMS ──────────────────────────────────────────
|
|
||||||
step_gems() {
|
|
||||||
info "── STEP 4: Ruby gems ──"
|
|
||||||
run "gem: wpscan" gem install wpscan
|
|
||||||
}
|
|
||||||
|
|
||||||
# ── 5. GIT CLONE TOOLS ────────────────────────────────────
|
|
||||||
step_git() {
|
|
||||||
info "── STEP 5: Git clone tools → $TOOLS_DIR ──"
|
|
||||||
mkdir -p "$TOOLS_DIR"
|
|
||||||
cd "$TOOLS_DIR" || exit 1
|
|
||||||
|
|
||||||
declare -A REPOS=(
|
|
||||||
# Username / social
|
|
||||||
["userrecon"]="https://github.com/wishihab/userrecon.git"
|
|
||||||
# Email
|
|
||||||
["EmailAnalyzer"]="https://github.com/keraattin/EmailAnalyzer.git"
|
|
||||||
["MailHeaderDetective"]="https://github.com/akajhon/MailHeaderDetective.git"
|
|
||||||
["WhatMail"]="https://github.com/z0m31en7/WhatMail.git"
|
|
||||||
["Infoga"]="https://github.com/m4ll0k/Infoga.git"
|
|
||||||
# Domain / IP
|
|
||||||
["IPGeoLocation"]="https://github.com/maldevel/IPGeoLocation.git"
|
|
||||||
# Image / forensics
|
|
||||||
["Depix"]="https://github.com/beurtschipper/Depix.git"
|
|
||||||
# Social media
|
|
||||||
["Osintgram"]="https://github.com/Datalux/Osintgram.git"
|
|
||||||
["TeleGram-OSINTer"]="https://github.com/Alb-310/TeleGram-OSINTer.git"
|
|
||||||
# Credential / password
|
|
||||||
["LaZagne"]="https://github.com/AlessandroZ/LaZagne.git"
|
|
||||||
["Responder"]="https://github.com/lgandx/Responder.git"
|
|
||||||
# Dark web
|
|
||||||
["OSINT-SPY"]="https://github.com/SharadKumar97/OSINT-SPY.git"
|
|
||||||
["pwndb"]="https://github.com/coj337/pwndb.git"
|
|
||||||
# Privacy / anon
|
|
||||||
["kali-anonsurf"]="https://github.com/Und3rf10w/kali-anonsurf.git"
|
|
||||||
["Anon-SMS"]="https://github.com/HACK3RY2J/Anon-SMS.git"
|
|
||||||
# Web app scanning
|
|
||||||
["LinkFinder"]="https://github.com/GerbenJavado/LinkFinder.git"
|
|
||||||
["Photon"]="https://github.com/s0md3v/Photon.git"
|
|
||||||
["URLCADIZ"]="https://github.com/PerezMascato/URLCADIZ.git"
|
|
||||||
["webhack"]="https://github.com/yan4ikyt/webhack.git"
|
|
||||||
# Phishing / social engineering
|
|
||||||
["zphisher"]="https://github.com/htr-tech/zphisher.git"
|
|
||||||
["nexphisher"]="https://github.com/htr-tech/nexphisher.git"
|
|
||||||
["Storm-Breaker"]="https://github.com/ultrasecurity/Storm-Breaker.git"
|
|
||||||
["shorturl"]="https://github.com/htr-tech/shorturl.git"
|
|
||||||
["SocialFish"]="https://github.com/UndeadSec/SocialFish.git"
|
|
||||||
["AdvPhishing"]="https://github.com/Ignitetch/AdvPhishing.git"
|
|
||||||
# Vuln / exploitation
|
|
||||||
["commix"]="https://github.com/commixproject/commix.git"
|
|
||||||
# Wireless
|
|
||||||
["fluxion"]="https://github.com/FluxionNetwork/fluxion.git"
|
|
||||||
["bluemaho"]="https://github.com/pysec/bluemaho.git"
|
|
||||||
# Mobile
|
|
||||||
["PhoneSploit"]="https://github.com/aerosol-can/PhoneSploit.git"
|
|
||||||
["AhMyth-Android-RAT"]="https://github.com/AhMyth/AhMyth-Android-RAT.git"
|
|
||||||
["msfpc"]="https://github.com/g0tmi1k/msfpc.git"
|
|
||||||
# Financial OSINT
|
|
||||||
["Orbit"]="https://github.com/s0md3v/Orbit.git"
|
|
||||||
# All-in-one frameworks
|
|
||||||
["fsociety"]="https://github.com/Manisso/fsociety.git"
|
|
||||||
["hackingtool"]="https://github.com/Z4nzu/hackingtool.git"
|
|
||||||
["lscript"]="https://github.com/arismelachroinos/lscript.git"
|
|
||||||
# Wordlists
|
|
||||||
["SecLists"]="https://github.com/danielmiessler/SecLists.git"
|
|
||||||
["cupp"]="https://github.com/Mebus/cupp.git"
|
|
||||||
# Google dorking
|
|
||||||
["pagodo"]="https://github.com/opsdisk/pagodo.git"
|
|
||||||
["GooFuzz"]="https://github.com/m3n0sd0n4ld/GooFuzz.git"
|
|
||||||
["dorkScanner"]="https://github.com/madhavmehndiratta/dorkScanner.git"
|
|
||||||
# ReconAIzer (Burp extension)
|
|
||||||
["ReconAIzer"]="https://github.com/hisxo/ReconAIzer.git"
|
|
||||||
)
|
|
||||||
|
|
||||||
for name in "${!REPOS[@]}"; do
|
|
||||||
url="${REPOS[$name]}"
|
|
||||||
if [[ -d "$name" ]]; then
|
|
||||||
warn "git: $name already exists, pulling latest"
|
|
||||||
git -C "$name" pull &>/dev/null && ok "git: $name (updated)" || warn "git: $name (pull failed)"
|
|
||||||
else
|
|
||||||
if git clone --depth=1 "$url" "$name" &>/dev/null; then
|
|
||||||
ok "git: $name"
|
|
||||||
else
|
|
||||||
fail "git: $name"
|
|
||||||
ERRORS+=("git clone $name")
|
|
||||||
fi
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
# Install pip requirements where available
|
|
||||||
info "Installing per-repo pip requirements..."
|
|
||||||
for dir in IPGeoLocation Photon LinkFinder Osintgram OSINT-SPY webhack commix; do
|
|
||||||
if [[ -f "$TOOLS_DIR/$dir/requirements.txt" ]]; then
|
|
||||||
pip3 install --break-system-packages -r "$TOOLS_DIR/$dir/requirements.txt" &>/dev/null \
|
|
||||||
&& ok "requirements: $dir" || warn "requirements: $dir (partial)"
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
}
|
|
||||||
|
|
||||||
# ── 6. SPECIAL INSTALLS ───────────────────────────────────
|
|
||||||
step_special() {
|
|
||||||
info "── STEP 6: Special installs ──"
|
|
||||||
|
|
||||||
# Metasploit (if not present)
|
|
||||||
if ! command -v msfconsole &>/dev/null; then
|
|
||||||
info "Installing Metasploit Framework..."
|
|
||||||
curl -s https://raw.githubusercontent.com/rapid7/metasploit-omnibus/master/config/templates/metasploit-framework-wrappers/msfupdate.erb \
|
|
||||||
| sed 's/apt-get/apt-get -y/g' | bash &>/dev/null \
|
|
||||||
&& ok "Metasploit installed" || warn "Metasploit (failed - install manually)"
|
|
||||||
else
|
|
||||||
ok "Metasploit already installed"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# PhoneInfoga binary
|
|
||||||
if ! command -v phoneinfoga &>/dev/null; then
|
|
||||||
info "Installing PhoneInfoga binary..."
|
|
||||||
curl -sSL https://raw.githubusercontent.com/sundowndev/phoneinfoga/master/support/scripts/install \
|
|
||||||
| bash &>/dev/null && ok "phoneinfoga binary" || warn "phoneinfoga binary (failed)"
|
|
||||||
else
|
|
||||||
ok "phoneinfoga already installed"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# AnonSurf
|
|
||||||
if [[ -d "$TOOLS_DIR/kali-anonsurf" ]]; then
|
|
||||||
cd "$TOOLS_DIR/kali-anonsurf" && bash installer.sh &>/dev/null \
|
|
||||||
&& ok "anonsurf installed" || warn "anonsurf (manual install needed)"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Nuclei templates
|
|
||||||
if command -v nuclei &>/dev/null; then
|
|
||||||
nuclei -update-templates &>/dev/null && ok "nuclei templates updated"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
# ── 7. ADDITIONAL TOOLS (suggested extras) ────────────────
|
|
||||||
step_extras() {
|
|
||||||
info "── STEP 7: Extra tools not in original list ──"
|
|
||||||
|
|
||||||
# These complement the OSINT arsenal nicely
|
|
||||||
EXTRA_PIP=(
|
|
||||||
trufflehog # Git secret scanning
|
|
||||||
git-dumper # Dump exposed .git repos
|
|
||||||
waybackpy # Wayback Machine API client
|
|
||||||
dnstwist # Domain phishing detection
|
|
||||||
shodan # Shodan CLI
|
|
||||||
censys # Censys CLI
|
|
||||||
xeuledoc # Google Docs OSINT
|
|
||||||
redditsfinder # Find Reddit accounts by email
|
|
||||||
linkedin2username # Generate username lists from LinkedIn
|
|
||||||
)
|
|
||||||
|
|
||||||
EXTRA_APT=(
|
|
||||||
tor # Tor daemon (for dark web tools)
|
|
||||||
proxychains4 # Route traffic through proxies/tor
|
|
||||||
steghide # Steganography analysis
|
|
||||||
stegseek # Fast steghide cracker
|
|
||||||
exiv2 # Alternative metadata tool
|
|
||||||
jq # JSON parsing (useful for API tools)
|
|
||||||
whois # WHOIS lookups
|
|
||||||
dnsutils # dig, nslookup
|
|
||||||
traceroute # Network path tracing
|
|
||||||
beef-xss # Browser Exploitation Framework
|
|
||||||
)
|
|
||||||
|
|
||||||
EXTRA_GIT=(
|
|
||||||
"EyeWitness|https://github.com/RedSiege/EyeWitness.git" # Web screenshots
|
|
||||||
"gitrob|https://github.com/michenriksen/gitrob.git" # GitHub secret scanner
|
|
||||||
"GitLeaks|https://github.com/gitleaks/gitleaks.git" # Git secret leaks
|
|
||||||
"theHarvester|https://github.com/laramies/theHarvester.git" # Email/domain (latest)
|
|
||||||
"crosslinked|https://github.com/m8sec/CrossLinked.git" # LinkedIn name scraper
|
|
||||||
"recon-ng|https://github.com/lanmaster53/recon-ng.git" # Latest recon-ng
|
|
||||||
"spiderfoot|https://github.com/smicallef/spiderfoot.git" # Latest SpiderFoot
|
|
||||||
"osmedeus|https://github.com/j3ssie/osmedeus.git" # Full recon workflow
|
|
||||||
"finalrecon|https://github.com/thewhiteh4t/FinalRecon.git" # All-in-one web recon
|
|
||||||
"URLextractor|https://github.com/eschultze/URLextractor.git" # URL extraction
|
|
||||||
"phoneinfoga-web|https://github.com/sundowndev/phoneinfoga.git" # PhoneInfoga web UI
|
|
||||||
)
|
|
||||||
|
|
||||||
for pkg in "${EXTRA_APT[@]%%#*}"; do
|
|
||||||
pkg=$(echo "$pkg" | xargs)
|
|
||||||
apt-get install -y "$pkg" &>/dev/null && ok "extra apt: $pkg" || warn "extra apt: $pkg"
|
|
||||||
done
|
|
||||||
|
|
||||||
for pkg in "${EXTRA_PIP[@]%%#*}"; do
|
|
||||||
pkg=$(echo "$pkg" | xargs)
|
|
||||||
pip3 install --break-system-packages "$pkg" &>/dev/null && ok "extra pip: $pkg" || warn "extra pip: $pkg"
|
|
||||||
done
|
|
||||||
|
|
||||||
cd "$TOOLS_DIR" || exit 1
|
|
||||||
for entry in "${EXTRA_GIT[@]}"; do
|
|
||||||
name="${entry%%|*}"
|
|
||||||
url="${entry##*|}"
|
|
||||||
if [[ ! -d "$name" ]]; then
|
|
||||||
git clone --depth=1 "$url" "$name" &>/dev/null && ok "extra git: $name" || warn "extra git: $name"
|
|
||||||
else
|
|
||||||
ok "extra git: $name (already exists)"
|
|
||||||
fi
|
|
||||||
done
|
|
||||||
|
|
||||||
# Shodan CLI setup hint
|
|
||||||
if command -v shodan &>/dev/null; then
|
|
||||||
warn "Remember to init Shodan: shodan init YOUR_API_KEY"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Tor config for dark web tools
|
|
||||||
if command -v tor &>/dev/null; then
|
|
||||||
systemctl enable tor &>/dev/null
|
|
||||||
systemctl start tor &>/dev/null
|
|
||||||
ok "Tor service enabled (SOCKS proxy on 127.0.0.1:9050)"
|
|
||||||
fi
|
|
||||||
}
|
|
||||||
|
|
||||||
# ── SUMMARY ───────────────────────────────────────────────
|
|
||||||
summary() {
|
|
||||||
local END_TIME=$(date +%s)
|
|
||||||
local DURATION=$(( END_TIME - START_TIME ))
|
|
||||||
local MINS=$(( DURATION / 60 ))
|
|
||||||
local SECS=$(( DURATION % 60 ))
|
|
||||||
echo ""
|
|
||||||
echo -e "${BOLD}════════════════════════════════════════${NC}"
|
|
||||||
echo -e "${GREEN} Install complete!${NC}"
|
|
||||||
echo -e " Duration: ${CYAN}${MINS}m ${SECS}s${NC}"
|
|
||||||
echo -e " Log file: ${CYAN}$LOG_FILE${NC}"
|
|
||||||
echo -e " Tools directory: ${CYAN}$TOOLS_DIR${NC}"
|
|
||||||
echo ""
|
|
||||||
if [[ ${#ERRORS[@]} -gt 0 ]]; then
|
|
||||||
echo -e "${YELLOW} Failed installs (${#ERRORS[@]}):${NC}"
|
|
||||||
for e in "${ERRORS[@]}"; do echo " - $e"; done
|
|
||||||
else
|
|
||||||
echo -e "${GREEN} No errors!${NC}"
|
|
||||||
fi
|
|
||||||
echo ""
|
|
||||||
echo -e "${YELLOW} Quick-start commands:${NC}"
|
|
||||||
echo " sherlock USERNAME"
|
|
||||||
echo " maigret USERNAME"
|
|
||||||
echo " theHarvester -d domain.com -b all"
|
|
||||||
echo " recon-ng"
|
|
||||||
echo " spiderfoot -l 127.0.0.1:5001"
|
|
||||||
echo " nuclei -u https://target.com"
|
|
||||||
echo " subfinder -d domain.com"
|
|
||||||
echo " amass enum -d domain.com"
|
|
||||||
echo -e "${BOLD}════════════════════════════════════════${NC}"
|
|
||||||
}
|
|
||||||
|
|
||||||
# ── MAIN ──────────────────────────────────────────────────
|
|
||||||
banner
|
|
||||||
exec > >(tee -a "$LOG_FILE") 2>&1
|
|
||||||
check_root
|
|
||||||
|
|
||||||
echo ""
|
|
||||||
echo -e "${BOLD}This will install 100+ OSINT & security tools.${NC}"
|
|
||||||
echo -e "${YELLOW}Use only on systems you own or have authorization to test.${NC}"
|
|
||||||
echo ""
|
|
||||||
read -rp "Continue? [y/N]: " confirm
|
|
||||||
[[ "$confirm" =~ ^[Yy]$ ]] || { echo "Aborted."; exit 0; }
|
|
||||||
|
|
||||||
step_apt
|
|
||||||
step_pip
|
|
||||||
step_go
|
|
||||||
step_gems
|
|
||||||
step_git
|
|
||||||
step_special
|
|
||||||
step_extras
|
|
||||||
summary
|
|
||||||
|
|
@ -0,0 +1,129 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
# ===================================================================
|
||||||
|
# 🎓 Training / vulnerable apps
|
||||||
|
# Part of awesome-osint-arsenal v3.4
|
||||||
|
# Auto-detects: Kali / Debian / Ubuntu / Parrot / Mint / Pop!_OS /
|
||||||
|
# Arch / Manjaro / EndeavourOS /
|
||||||
|
# Fedora / RHEL / CentOS / Rocky / Alma
|
||||||
|
# Best support: Kali / Debian / Ubuntu (apt-based)
|
||||||
|
# ===================================================================
|
||||||
|
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"
|
||||||
|
LOGFILE="${LOGFILE:-$HOME/osint-install-errors.log}"
|
||||||
|
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"; }
|
||||||
|
|
||||||
|
require_root() {
|
||||||
|
if [ "$EUID" -ne 0 ]; then echo "Please run as root: sudo bash $0"; exit 1; fi
|
||||||
|
}
|
||||||
|
|
||||||
|
detect_distro() {
|
||||||
|
if [ -f /etc/os-release ]; then
|
||||||
|
. /etc/os-release
|
||||||
|
case "${ID,,}" in
|
||||||
|
kali|debian|ubuntu|parrot|raspbian|linuxmint|pop|elementary) PKG="apt" ;;
|
||||||
|
arch|manjaro|endeavouros|garuda|artix) PKG="pacman" ;;
|
||||||
|
fedora|rhel|centos|rocky|almalinux|ol) PKG="dnf" ;;
|
||||||
|
*) PKG="unknown" ;;
|
||||||
|
esac
|
||||||
|
else
|
||||||
|
PKG="unknown"
|
||||||
|
fi
|
||||||
|
export PKG
|
||||||
|
echo -e "${CYN}[i]${NC} Detected package manager: $PKG"
|
||||||
|
if [ "$PKG" = "unknown" ]; then
|
||||||
|
echo -e "${YLW}[!]${NC} Unknown distro — git/pip/go installs will work, system-package installs will be skipped."
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
pkg_install() {
|
||||||
|
local pkg="$1"
|
||||||
|
case "$PKG" in
|
||||||
|
apt)
|
||||||
|
if dpkg -s "$pkg" >/dev/null 2>&1; then skip "$pkg already installed"; return; fi
|
||||||
|
if apt install -y "$pkg" >/dev/null 2>&1; then ok "$pkg (apt)"; else fail "$pkg (apt)"; fi
|
||||||
|
;;
|
||||||
|
pacman)
|
||||||
|
if pacman -Qi "$pkg" >/dev/null 2>&1; then skip "$pkg already installed"; return; fi
|
||||||
|
if pacman -S --noconfirm --needed "$pkg" >/dev/null 2>&1; then ok "$pkg (pacman)"; else fail "$pkg (pacman — may not be in repo, try AUR)"; fi
|
||||||
|
;;
|
||||||
|
dnf)
|
||||||
|
if rpm -q "$pkg" >/dev/null 2>&1; then skip "$pkg already installed"; return; fi
|
||||||
|
if dnf install -y "$pkg" >/dev/null 2>&1; then ok "$pkg (dnf)"; else fail "$pkg (dnf — may not be in repo)"; fi
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
fail "$pkg — unknown package manager, install manually"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
install_pip() {
|
||||||
|
local pkg="$1"
|
||||||
|
if pip3 show "$pkg" >/dev/null 2>&1; then skip "$pkg (pip) already installed"; return; fi
|
||||||
|
if pip3 install --break-system-packages "$pkg" >/dev/null 2>&1; then ok "$pkg (pip)"; else fail "$pkg (pip)"; fi
|
||||||
|
}
|
||||||
|
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
|
||||||
|
}
|
||||||
|
install_git() {
|
||||||
|
local repo="$1" dst="$2"
|
||||||
|
mkdir -p /opt/osint-arsenal
|
||||||
|
if [ -d "/opt/osint-arsenal/$dst" ]; then skip "$dst already cloned"; return; fi
|
||||||
|
if git clone --depth=1 "$repo" "/opt/osint-arsenal/$dst" >/dev/null 2>&1; then ok "$dst (git)"; else fail "$dst (git)"; fi
|
||||||
|
}
|
||||||
|
install_docker() {
|
||||||
|
local image="$1" name="$2"
|
||||||
|
if ! command -v docker >/dev/null 2>&1; then fail "$name — docker not installed"; return; fi
|
||||||
|
if docker image inspect "$image" >/dev/null 2>&1; then skip "$name (docker) already pulled"; return; fi
|
||||||
|
if docker pull "$image" >/dev/null 2>&1; then ok "$name (docker)"; else fail "$name (docker)"; fi
|
||||||
|
}
|
||||||
|
|
||||||
|
bootstrap_basics() {
|
||||||
|
case "$PKG" in
|
||||||
|
apt)
|
||||||
|
apt update -y >/dev/null 2>&1 || true
|
||||||
|
apt install -y python3 python3-pip git curl wget golang-go >/dev/null 2>&1 || true
|
||||||
|
;;
|
||||||
|
pacman)
|
||||||
|
pacman -Sy --noconfirm >/dev/null 2>&1 || true
|
||||||
|
pacman -S --noconfirm --needed python python-pip git curl wget go >/dev/null 2>&1 || true
|
||||||
|
;;
|
||||||
|
dnf)
|
||||||
|
dnf install -y python3 python3-pip git curl wget golang >/dev/null 2>&1 || true
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
print_summary() {
|
||||||
|
echo
|
||||||
|
echo "============================================="
|
||||||
|
echo -e " Installed: ${GRN}$INSTALLED${NC}"
|
||||||
|
echo -e " Skipped: ${YLW}$SKIPPED${NC}"
|
||||||
|
echo -e " Failed: ${RED}$FAILED${NC}"
|
||||||
|
echo "============================================="
|
||||||
|
if (( FAILED > 0 )); then
|
||||||
|
echo -e "${RED}Failed tools:${NC} ${FAILED_TOOLS[@]:-}"
|
||||||
|
echo "See $LOGFILE for details."
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
require_root
|
||||||
|
detect_distro
|
||||||
|
bootstrap_basics
|
||||||
|
|
||||||
|
echo; say "Installing: 🎓 Training, Labs & CTF (4 tools)"
|
||||||
|
install_git https://github.com/digininja/DVWA.git DVWA # DVWA
|
||||||
|
install_docker bkimminich/juice-shop 'OWASP Juice Shop' # OWASP Juice Shop
|
||||||
|
install_docker webgoat/webgoat 'OWASP WebGoat' # OWASP WebGoat
|
||||||
|
install_git https://github.com/practisec/pwnedhub.git pwnedhub # PwnedHub
|
||||||
|
|
||||||
|
print_summary
|
||||||
|
|
@ -0,0 +1,360 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
# ===================================================================
|
||||||
|
# 🔍 OSINT toolkit
|
||||||
|
# Part of awesome-osint-arsenal v3.4
|
||||||
|
# Auto-detects: Kali / Debian / Ubuntu / Parrot / Mint / Pop!_OS /
|
||||||
|
# Arch / Manjaro / EndeavourOS /
|
||||||
|
# Fedora / RHEL / CentOS / Rocky / Alma
|
||||||
|
# Best support: Kali / Debian / Ubuntu (apt-based)
|
||||||
|
# ===================================================================
|
||||||
|
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"
|
||||||
|
LOGFILE="${LOGFILE:-$HOME/osint-install-errors.log}"
|
||||||
|
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"; }
|
||||||
|
|
||||||
|
require_root() {
|
||||||
|
if [ "$EUID" -ne 0 ]; then echo "Please run as root: sudo bash $0"; exit 1; fi
|
||||||
|
}
|
||||||
|
|
||||||
|
detect_distro() {
|
||||||
|
if [ -f /etc/os-release ]; then
|
||||||
|
. /etc/os-release
|
||||||
|
case "${ID,,}" in
|
||||||
|
kali|debian|ubuntu|parrot|raspbian|linuxmint|pop|elementary) PKG="apt" ;;
|
||||||
|
arch|manjaro|endeavouros|garuda|artix) PKG="pacman" ;;
|
||||||
|
fedora|rhel|centos|rocky|almalinux|ol) PKG="dnf" ;;
|
||||||
|
*) PKG="unknown" ;;
|
||||||
|
esac
|
||||||
|
else
|
||||||
|
PKG="unknown"
|
||||||
|
fi
|
||||||
|
export PKG
|
||||||
|
echo -e "${CYN}[i]${NC} Detected package manager: $PKG"
|
||||||
|
if [ "$PKG" = "unknown" ]; then
|
||||||
|
echo -e "${YLW}[!]${NC} Unknown distro — git/pip/go installs will work, system-package installs will be skipped."
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
pkg_install() {
|
||||||
|
local pkg="$1"
|
||||||
|
case "$PKG" in
|
||||||
|
apt)
|
||||||
|
if dpkg -s "$pkg" >/dev/null 2>&1; then skip "$pkg already installed"; return; fi
|
||||||
|
if apt install -y "$pkg" >/dev/null 2>&1; then ok "$pkg (apt)"; else fail "$pkg (apt)"; fi
|
||||||
|
;;
|
||||||
|
pacman)
|
||||||
|
if pacman -Qi "$pkg" >/dev/null 2>&1; then skip "$pkg already installed"; return; fi
|
||||||
|
if pacman -S --noconfirm --needed "$pkg" >/dev/null 2>&1; then ok "$pkg (pacman)"; else fail "$pkg (pacman — may not be in repo, try AUR)"; fi
|
||||||
|
;;
|
||||||
|
dnf)
|
||||||
|
if rpm -q "$pkg" >/dev/null 2>&1; then skip "$pkg already installed"; return; fi
|
||||||
|
if dnf install -y "$pkg" >/dev/null 2>&1; then ok "$pkg (dnf)"; else fail "$pkg (dnf — may not be in repo)"; fi
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
fail "$pkg — unknown package manager, install manually"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
install_pip() {
|
||||||
|
local pkg="$1"
|
||||||
|
if pip3 show "$pkg" >/dev/null 2>&1; then skip "$pkg (pip) already installed"; return; fi
|
||||||
|
if pip3 install --break-system-packages "$pkg" >/dev/null 2>&1; then ok "$pkg (pip)"; else fail "$pkg (pip)"; fi
|
||||||
|
}
|
||||||
|
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
|
||||||
|
}
|
||||||
|
install_git() {
|
||||||
|
local repo="$1" dst="$2"
|
||||||
|
mkdir -p /opt/osint-arsenal
|
||||||
|
if [ -d "/opt/osint-arsenal/$dst" ]; then skip "$dst already cloned"; return; fi
|
||||||
|
if git clone --depth=1 "$repo" "/opt/osint-arsenal/$dst" >/dev/null 2>&1; then ok "$dst (git)"; else fail "$dst (git)"; fi
|
||||||
|
}
|
||||||
|
install_docker() {
|
||||||
|
local image="$1" name="$2"
|
||||||
|
if ! command -v docker >/dev/null 2>&1; then fail "$name — docker not installed"; return; fi
|
||||||
|
if docker image inspect "$image" >/dev/null 2>&1; then skip "$name (docker) already pulled"; return; fi
|
||||||
|
if docker pull "$image" >/dev/null 2>&1; then ok "$name (docker)"; else fail "$name (docker)"; fi
|
||||||
|
}
|
||||||
|
|
||||||
|
bootstrap_basics() {
|
||||||
|
case "$PKG" in
|
||||||
|
apt)
|
||||||
|
apt update -y >/dev/null 2>&1 || true
|
||||||
|
apt install -y python3 python3-pip git curl wget golang-go >/dev/null 2>&1 || true
|
||||||
|
;;
|
||||||
|
pacman)
|
||||||
|
pacman -Sy --noconfirm >/dev/null 2>&1 || true
|
||||||
|
pacman -S --noconfirm --needed python python-pip git curl wget go >/dev/null 2>&1 || true
|
||||||
|
;;
|
||||||
|
dnf)
|
||||||
|
dnf install -y python3 python3-pip git curl wget golang >/dev/null 2>&1 || true
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
print_summary() {
|
||||||
|
echo
|
||||||
|
echo "============================================="
|
||||||
|
echo -e " Installed: ${GRN}$INSTALLED${NC}"
|
||||||
|
echo -e " Skipped: ${YLW}$SKIPPED${NC}"
|
||||||
|
echo -e " Failed: ${RED}$FAILED${NC}"
|
||||||
|
echo "============================================="
|
||||||
|
if (( FAILED > 0 )); then
|
||||||
|
echo -e "${RED}Failed tools:${NC} ${FAILED_TOOLS[@]:-}"
|
||||||
|
echo "See $LOGFILE for details."
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
require_root
|
||||||
|
detect_distro
|
||||||
|
bootstrap_basics
|
||||||
|
|
||||||
|
echo; say "Installing: 👤 Username & Social Media OSINT (33 tools)"
|
||||||
|
install_git https://github.com/ArthurHeitmann/arctic_shift.git arctic_shift # Arctic Shift
|
||||||
|
install_pip blackbird-osint # Blackbird
|
||||||
|
install_git https://github.com/misiektoja/github_monitor.git github_monitor # github_monitor
|
||||||
|
install_pip gitrecon # Gitrecon
|
||||||
|
install_go github.com/ibnaleem/gosearch@latest gosearch # GoSearch
|
||||||
|
install_pip holehe # Holehe
|
||||||
|
install_git https://github.com/misiektoja/instagram_monitor.git instagram_monitor # instagram_monitor
|
||||||
|
install_pip instaloader # Instaloader
|
||||||
|
install_go github.com/tdh8316/investigo@latest investigo # Investigo
|
||||||
|
install_git https://github.com/l4rm4nd/LinkedInDumper.git LinkedInDumper # LinkedInDumper
|
||||||
|
install_pip maigret # Maigret
|
||||||
|
install_pip nexfil # NExfil
|
||||||
|
install_git https://github.com/Datalux/Osintgram.git Osintgram # Osintgram
|
||||||
|
install_pip osrframework # OSRFramework
|
||||||
|
install_git https://github.com/seekr-osint/seekr.git seekr # Seekr
|
||||||
|
install_pip sherlock-project # Sherlock
|
||||||
|
install_pip snoop # Snoop
|
||||||
|
install_pip snscrape # snscrape
|
||||||
|
install_pip social-analyzer # Social Analyzer
|
||||||
|
install_pip socialscan # socialscan
|
||||||
|
install_pip socid-extractor # Socid-extractor
|
||||||
|
install_git https://github.com/tejado/telegram-nearby-map.git telegram-nearby-map # Telegram Nearby Map
|
||||||
|
install_git https://github.com/Alb-310/TeleGram-OSINTer.git TeleGram-OSINTer # TeleGram-OSINTer
|
||||||
|
install_pip telepathy # Telepathy
|
||||||
|
install_git https://github.com/sockysec/Telerecon.git Telerecon # Telerecon
|
||||||
|
install_pip telethon # Telethon
|
||||||
|
install_git https://github.com/eth0izzle/the-endorser.git the-endorser # the-endorser
|
||||||
|
install_git https://github.com/drego85/tosint.git tosint # TOsint
|
||||||
|
install_pip toutatis # Toutatis
|
||||||
|
install_pip twayback # Twayback
|
||||||
|
install_pip twint # Twint
|
||||||
|
install_git https://github.com/kaifcodec/user-scanner.git user-scanner # user-scanner
|
||||||
|
install_git https://github.com/wishihab/userrecon.git userrecon # UserRecon
|
||||||
|
|
||||||
|
echo; say "Installing: 📧 Email & Phone Intelligence (13 tools)"
|
||||||
|
install_git https://github.com/keraattin/EmailAnalyzer.git EmailAnalyzer # EmailAnalyzer
|
||||||
|
install_git https://github.com/Giritharram/EmailHeader-Analyzer-CLI-Python.git EmailHeader-Analyzer-CLI-Python # EmailHeader-Analyzer
|
||||||
|
install_pip ghunt # GHunt
|
||||||
|
install_pip h8mail # h8mail
|
||||||
|
install_pip ignorant # Ignorant
|
||||||
|
install_git https://github.com/m4ll0k/Infoga.git Infoga # Infoga
|
||||||
|
install_git https://github.com/akajhon/MailHeaderDetective.git MailHeaderDetective # MailHeaderDetective
|
||||||
|
install_pip mailto-analyzer # mailtoanalyzer
|
||||||
|
install_pip phoneinfoga # PhoneInfoga
|
||||||
|
install_git https://github.com/aerosol-can/PhoneSploit.git PhoneSploit # PhoneSploit
|
||||||
|
install_git https://github.com/nettitude/Prowl.git Prowl # Prowl
|
||||||
|
install_pip theHarvester # theHarvester
|
||||||
|
install_git https://github.com/z0m31en7/WhatMail.git WhatMail # WhatMail
|
||||||
|
|
||||||
|
echo; say "Installing: 🌐 Domain & IP / Network Recon (68 tools)"
|
||||||
|
pkg_install aircrack-ng # Aircrack-ng
|
||||||
|
install_pip py-altdns # altdns
|
||||||
|
install_go github.com/owasp-amass/amass/v4/...@master ... # Amass
|
||||||
|
install_go github.com/tomnomnom/anew@latest anew # anew
|
||||||
|
install_go github.com/michenriksen/aquatone@latest aquatone # Aquatone
|
||||||
|
install_go github.com/tomnomnom/assetfinder@latest assetfinder # assetfinder
|
||||||
|
install_pip git # AutoRecon
|
||||||
|
install_git https://github.com/pry0cc/axiom.git axiom # Axiom
|
||||||
|
install_pip bbot # BBOT
|
||||||
|
pkg_install bettercap # Bettercap
|
||||||
|
install_git https://github.com/commixproject/commix.git commix # Commix
|
||||||
|
pkg_install dirb # Dirb
|
||||||
|
install_pip dirsearch # dirsearch
|
||||||
|
install_pip dnsrecon # dnsrecon
|
||||||
|
install_pip dnstwist # dnstwist
|
||||||
|
pkg_install ettercap-common # Ettercap
|
||||||
|
pkg_install fern-wifi-cracker # Fern Wifi Cracker
|
||||||
|
pkg_install feroxbuster # Feroxbuster
|
||||||
|
install_go github.com/ffuf/ffuf/v2@latest v2 # ffuf
|
||||||
|
install_git https://github.com/Findomain/Findomain.git Findomain # Findomain
|
||||||
|
install_git https://github.com/FluxionNetwork/fluxion.git fluxion # Fluxion
|
||||||
|
install_go github.com/lc/gau/v2/cmd/gau@latest gau # gau (getallurls)
|
||||||
|
install_go github.com/tomnomnom/gf@latest gf # gf
|
||||||
|
install_go github.com/OJ/gobuster/v3@latest v3 # Gobuster
|
||||||
|
install_git https://github.com/jseidl/GoldenEye.git GoldenEye # GoldenEye
|
||||||
|
install_go github.com/jaeles-project/gospider@latest gospider # GoSpider
|
||||||
|
install_go github.com/sensepost/gowitness@latest gowitness # gowitness
|
||||||
|
install_go github.com/hakluke/hakrawler@latest hakrawler # hakrawler
|
||||||
|
pkg_install hcxtools # hcxtools
|
||||||
|
install_go github.com/tomnomnom/httprobe@latest httprobe # httprobe
|
||||||
|
install_go github.com/projectdiscovery/httpx/cmd/httpx@latest httpx # HTTPx
|
||||||
|
install_git https://github.com/codingo/Interlace.git Interlace # Interlace
|
||||||
|
install_git https://github.com/maldevel/IPGeoLocation.git IPGeoLocation # IPGeoLocation
|
||||||
|
install_git https://github.com/Threezh1/JSFinder.git JSFinder # JSFinder
|
||||||
|
install_go github.com/projectdiscovery/katana/cmd/katana@latest katana # Katana
|
||||||
|
pkg_install kismet # Kismet
|
||||||
|
install_git https://github.com/guelfoweb/knock.git knock # knock
|
||||||
|
install_pip knock-subdomains # Knockpy
|
||||||
|
install_git https://github.com/GerbenJavado/LinkFinder.git LinkFinder # LinkFinder
|
||||||
|
pkg_install masscan # Masscan
|
||||||
|
install_git https://github.com/blechschmidt/massdns.git massdns # massdns
|
||||||
|
install_go github.com/tomnomnom/meg@latest meg # meg
|
||||||
|
pkg_install metasploit-framework # Metasploit
|
||||||
|
install_go github.com/projectdiscovery/naabu/v2/cmd/naabu@latest naabu # Naabu
|
||||||
|
pkg_install netcat-openbsd # Netcat
|
||||||
|
pkg_install nikto # Nikto
|
||||||
|
pkg_install nmap # Nmap
|
||||||
|
install_go github.com/projectdiscovery/nuclei/v3/cmd/nuclei@latest nuclei # Nuclei
|
||||||
|
pkg_install openvas # OpenVAS
|
||||||
|
install_pip paramspider # ParamSpider
|
||||||
|
install_git https://github.com/s0md3v/Photon.git Photon # Photon
|
||||||
|
pkg_install reaver # Reaver
|
||||||
|
install_git https://github.com/six2dez/reconftw.git reconftw # reconFTW
|
||||||
|
install_git https://github.com/RustScan/RustScan.git RustScan # RustScan
|
||||||
|
install_pip shodan # Shodan
|
||||||
|
install_go github.com/s0md3v/smap/cmd/smap@latest smap # smap
|
||||||
|
install_git https://github.com/1N3/Sn1per.git Sn1per # Sn1per
|
||||||
|
pkg_install sqlmap # SQLMap
|
||||||
|
install_go github.com/projectdiscovery/subfinder/v2/cmd/subfinder@latest subfinder # Subfinder
|
||||||
|
install_pip sublist3r # Sublist3r
|
||||||
|
pkg_install tcpdump # tcpdump
|
||||||
|
install_git https://github.com/urbanadventurer/urlcrazy.git urlcrazy # URLCrazy
|
||||||
|
install_go github.com/tomnomnom/waybackurls@latest waybackurls # waybackurls
|
||||||
|
install_git https://github.com/yan4ikyt/webhack.git webhack # WebHack
|
||||||
|
install_pip wfuzz # Wfuzz
|
||||||
|
pkg_install whatweb # Whatweb
|
||||||
|
pkg_install wifite # Wifite
|
||||||
|
pkg_install wireshark # Wireshark
|
||||||
|
|
||||||
|
echo; say "Installing: 🖼️ Image & Facial Recognition (6 tools)"
|
||||||
|
install_pip deepface # DeepFace
|
||||||
|
install_git https://github.com/beurtschipper/Depix.git Depix # Depix
|
||||||
|
pkg_install libimage-exiftool-perl # ExifTool
|
||||||
|
install_pip face_recognition # facerecognition
|
||||||
|
install_git https://github.com/ElevenPaths/FOCA.git FOCA # FOCA
|
||||||
|
install_git https://github.com/GuidoBartoli/sherloq.git sherloq # Sherloq
|
||||||
|
|
||||||
|
echo; say "Installing: 🕶️ Dark Web & Tor Intelligence (5 tools)"
|
||||||
|
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)"
|
||||||
|
pkg_install cewl # CeWL
|
||||||
|
pkg_install crunch # Crunch
|
||||||
|
install_git https://github.com/Mebus/cupp.git cupp # Cupp
|
||||||
|
pkg_install hashcat # Hashcat
|
||||||
|
pkg_install hydra # Hydra
|
||||||
|
pkg_install john # John the Ripper
|
||||||
|
install_git https://github.com/AlessandroZ/LaZagne.git LaZagne # LaZagne
|
||||||
|
pkg_install medusa # Medusa
|
||||||
|
install_git https://github.com/gentilkiwi/mimikatz.git mimikatz # Mimikatz
|
||||||
|
install_git https://github.com/lgandx/Responder.git Responder # Responder
|
||||||
|
install_git https://github.com/danielmiessler/SecLists.git SecLists # SecLists
|
||||||
|
|
||||||
|
echo; say "Installing: 🏢 Company & Business Intel (2 tools)"
|
||||||
|
install_pip opencorporates # opencorporates-cli
|
||||||
|
install_git https://github.com/s0md3v/Orbit.git Orbit # Orbit
|
||||||
|
|
||||||
|
echo; say "Installing: ₿ Cryptocurrency & Blockchain (1 tools)"
|
||||||
|
install_pip etherscan-python # etherscan-py
|
||||||
|
|
||||||
|
echo; say "Installing: 🦠 Malware & Threat Intelligence (2 tools)"
|
||||||
|
install_git https://github.com/MISP/MISP.git MISP # MISP
|
||||||
|
pkg_install yara # YARA
|
||||||
|
|
||||||
|
echo; say "Installing: 🔍 Search & Dorking Tools (6 tools)"
|
||||||
|
install_pip censys # Censys CLI
|
||||||
|
install_git https://github.com/jgor/dork-cli.git dork-cli # dork-cli
|
||||||
|
install_git https://github.com/m3n0sd0n4ld/GooFuzz.git GooFuzz # GooFuzz
|
||||||
|
install_git https://github.com/opsdisk/pagodo.git pagodo # Pagodo
|
||||||
|
install_pip shodan # Shodan CLI
|
||||||
|
install_go github.com/projectdiscovery/uncover/cmd/uncover@latest uncover # uncover
|
||||||
|
|
||||||
|
echo; say "Installing: 📄 Document & Metadata Analysis (10 tools)"
|
||||||
|
pkg_install autopsy # Autopsy
|
||||||
|
pkg_install binwalk # Binwalk
|
||||||
|
pkg_install bulk-extractor # Bulk Extractor
|
||||||
|
pkg_install foremost # Foremost
|
||||||
|
install_go github.com/tillson/git-hound@latest git-hound # git-hound
|
||||||
|
install_go github.com/gitleaks/gitleaks/v8@latest v8 # gitleaks
|
||||||
|
install_pip metagoofil # Metagoofil
|
||||||
|
pkg_install scalpel # Scalpel
|
||||||
|
install_pip volatility3 # Volatility
|
||||||
|
install_pip xeuledoc # XeuleDoc
|
||||||
|
|
||||||
|
echo; say "Installing: 🧑 People & Identity OSINT (16 tools)"
|
||||||
|
install_git https://github.com/Ignitetch/AdvPhishing.git AdvPhishing # AdvPhishing
|
||||||
|
install_git https://github.com/An0nUD4Y/blackeye.git blackeye # BlackEye
|
||||||
|
install_pip crosslinked # CrossLinked
|
||||||
|
install_git https://github.com/daprofiler/DaProfiler.git DaProfiler # DaProfiler
|
||||||
|
install_go github.com/kgretzky/evilginx2@latest evilginx2 # Evilginx2
|
||||||
|
install_git https://github.com/initstring/linkedin2username.git linkedin2username # linkedin2username
|
||||||
|
install_go github.com/drk1wi/Modlishka@latest Modlishka # Modlishka
|
||||||
|
install_git https://github.com/Lucksi/Mr.Holmes.git Mr.Holmes # Mr.Holmes
|
||||||
|
install_git https://github.com/htr-tech/nexphisher.git nexphisher # NexPhisher
|
||||||
|
install_git https://github.com/thewhiteh4t/seeker.git seeker # Seeker
|
||||||
|
pkg_install set # SET (Social Engineering Toolkit)
|
||||||
|
install_git https://github.com/UndeadSec/SocialFish.git SocialFish # SocialFish
|
||||||
|
install_git https://github.com/ultrasecurity/Storm-Breaker.git Storm-Breaker # Storm-Breaker
|
||||||
|
install_git https://github.com/PerezMascato/URLCADIZ.git URLCADIZ # URLCADIZ
|
||||||
|
install_pip zehef # Zehef
|
||||||
|
install_git https://github.com/htr-tech/zphisher.git zphisher # Zphisher
|
||||||
|
|
||||||
|
echo; say "Installing: 📡 IoT & Device Intelligence (10 tools)"
|
||||||
|
install_git https://github.com/AhMyth/AhMyth-Android-RAT.git AhMyth-Android-RAT # AhMyth Android RAT
|
||||||
|
pkg_install apktool # Apktool
|
||||||
|
install_pip frida-tools # Frida
|
||||||
|
install_pip greynoise # GreyNoise CLI
|
||||||
|
pkg_install jadx # jadx
|
||||||
|
install_git https://github.com/g0tmi1k/msfpc.git msfpc # MSFPC
|
||||||
|
install_pip objection # Objection
|
||||||
|
install_pip shodan # Shodan (IoT)
|
||||||
|
install_git https://github.com/shubhamrooter/ShodanSpider.git ShodanSpider # ShodanSpider
|
||||||
|
install_pip zoomeye # ZoomEye CLI
|
||||||
|
|
||||||
|
echo; say "Installing: 🧰 Frameworks & All-in-One Platforms (12 tools)"
|
||||||
|
install_git https://github.com/thewhiteh4t/FinalRecon.git FinalRecon # FinalRecon
|
||||||
|
install_git https://github.com/Manisso/fsociety.git fsociety # fsociety
|
||||||
|
install_git https://github.com/Z4nzu/hackingtool.git hackingtool # Hackingtool
|
||||||
|
install_pip harpoon # Harpoon
|
||||||
|
pkg_install maltego # Maltego
|
||||||
|
install_git https://github.com/ninoseki/mitaka.git mitaka # Mitaka
|
||||||
|
install_git https://github.com/loseys/Oblivion.git Oblivion # Oblivion
|
||||||
|
install_git https://github.com/Bafomet666/OSINT-SAN.git OSINT-SAN # OSINT-SAN
|
||||||
|
install_git https://github.com/j3ssie/osmedeus.git osmedeus # osmedeus
|
||||||
|
install_pip recon-ng # Recon-ng
|
||||||
|
pkg_install sn0int # sn0int
|
||||||
|
install_pip spiderfoot # SpiderFoot
|
||||||
|
|
||||||
|
echo; say "Installing: 🔒 Free VPN & Privacy Tools (12 tools)"
|
||||||
|
install_git https://github.com/trailofbits/algo.git algo # Algo VPN
|
||||||
|
install_git https://github.com/HACK3RY2J/Anon-SMS.git Anon-SMS # Anon-SMS
|
||||||
|
install_git https://github.com/Und3rf10w/kali-anonsurf.git kali-anonsurf # Anonsurf
|
||||||
|
pkg_install bleachbit # BleachBit
|
||||||
|
pkg_install macchanger # MAC Changer
|
||||||
|
pkg_install mullvad-vpn # Mullvad VPN
|
||||||
|
pkg_install openvpn # OpenVPN
|
||||||
|
install_pip protonvpn-cli # Proton VPN Free
|
||||||
|
pkg_install riseup-vpn # RiseupVPN
|
||||||
|
pkg_install torbrowser-launcher # Tor Browser
|
||||||
|
pkg_install veracrypt # VeraCrypt
|
||||||
|
pkg_install wireguard # WireGuard
|
||||||
|
|
||||||
|
print_summary
|
||||||
|
|
@ -0,0 +1,156 @@
|
||||||
|
#!/usr/bin/env bash
|
||||||
|
# ===================================================================
|
||||||
|
# ⚔️ Red team / offensive
|
||||||
|
# Part of awesome-osint-arsenal v3.4
|
||||||
|
# Auto-detects: Kali / Debian / Ubuntu / Parrot / Mint / Pop!_OS /
|
||||||
|
# Arch / Manjaro / EndeavourOS /
|
||||||
|
# Fedora / RHEL / CentOS / Rocky / Alma
|
||||||
|
# Best support: Kali / Debian / Ubuntu (apt-based)
|
||||||
|
# ===================================================================
|
||||||
|
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"
|
||||||
|
LOGFILE="${LOGFILE:-$HOME/osint-install-errors.log}"
|
||||||
|
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"; }
|
||||||
|
|
||||||
|
require_root() {
|
||||||
|
if [ "$EUID" -ne 0 ]; then echo "Please run as root: sudo bash $0"; exit 1; fi
|
||||||
|
}
|
||||||
|
|
||||||
|
detect_distro() {
|
||||||
|
if [ -f /etc/os-release ]; then
|
||||||
|
. /etc/os-release
|
||||||
|
case "${ID,,}" in
|
||||||
|
kali|debian|ubuntu|parrot|raspbian|linuxmint|pop|elementary) PKG="apt" ;;
|
||||||
|
arch|manjaro|endeavouros|garuda|artix) PKG="pacman" ;;
|
||||||
|
fedora|rhel|centos|rocky|almalinux|ol) PKG="dnf" ;;
|
||||||
|
*) PKG="unknown" ;;
|
||||||
|
esac
|
||||||
|
else
|
||||||
|
PKG="unknown"
|
||||||
|
fi
|
||||||
|
export PKG
|
||||||
|
echo -e "${CYN}[i]${NC} Detected package manager: $PKG"
|
||||||
|
if [ "$PKG" = "unknown" ]; then
|
||||||
|
echo -e "${YLW}[!]${NC} Unknown distro — git/pip/go installs will work, system-package installs will be skipped."
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
pkg_install() {
|
||||||
|
local pkg="$1"
|
||||||
|
case "$PKG" in
|
||||||
|
apt)
|
||||||
|
if dpkg -s "$pkg" >/dev/null 2>&1; then skip "$pkg already installed"; return; fi
|
||||||
|
if apt install -y "$pkg" >/dev/null 2>&1; then ok "$pkg (apt)"; else fail "$pkg (apt)"; fi
|
||||||
|
;;
|
||||||
|
pacman)
|
||||||
|
if pacman -Qi "$pkg" >/dev/null 2>&1; then skip "$pkg already installed"; return; fi
|
||||||
|
if pacman -S --noconfirm --needed "$pkg" >/dev/null 2>&1; then ok "$pkg (pacman)"; else fail "$pkg (pacman — may not be in repo, try AUR)"; fi
|
||||||
|
;;
|
||||||
|
dnf)
|
||||||
|
if rpm -q "$pkg" >/dev/null 2>&1; then skip "$pkg already installed"; return; fi
|
||||||
|
if dnf install -y "$pkg" >/dev/null 2>&1; then ok "$pkg (dnf)"; else fail "$pkg (dnf — may not be in repo)"; fi
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
fail "$pkg — unknown package manager, install manually"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
install_pip() {
|
||||||
|
local pkg="$1"
|
||||||
|
if pip3 show "$pkg" >/dev/null 2>&1; then skip "$pkg (pip) already installed"; return; fi
|
||||||
|
if pip3 install --break-system-packages "$pkg" >/dev/null 2>&1; then ok "$pkg (pip)"; else fail "$pkg (pip)"; fi
|
||||||
|
}
|
||||||
|
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
|
||||||
|
}
|
||||||
|
install_git() {
|
||||||
|
local repo="$1" dst="$2"
|
||||||
|
mkdir -p /opt/osint-arsenal
|
||||||
|
if [ -d "/opt/osint-arsenal/$dst" ]; then skip "$dst already cloned"; return; fi
|
||||||
|
if git clone --depth=1 "$repo" "/opt/osint-arsenal/$dst" >/dev/null 2>&1; then ok "$dst (git)"; else fail "$dst (git)"; fi
|
||||||
|
}
|
||||||
|
install_docker() {
|
||||||
|
local image="$1" name="$2"
|
||||||
|
if ! command -v docker >/dev/null 2>&1; then fail "$name — docker not installed"; return; fi
|
||||||
|
if docker image inspect "$image" >/dev/null 2>&1; then skip "$name (docker) already pulled"; return; fi
|
||||||
|
if docker pull "$image" >/dev/null 2>&1; then ok "$name (docker)"; else fail "$name (docker)"; fi
|
||||||
|
}
|
||||||
|
|
||||||
|
bootstrap_basics() {
|
||||||
|
case "$PKG" in
|
||||||
|
apt)
|
||||||
|
apt update -y >/dev/null 2>&1 || true
|
||||||
|
apt install -y python3 python3-pip git curl wget golang-go >/dev/null 2>&1 || true
|
||||||
|
;;
|
||||||
|
pacman)
|
||||||
|
pacman -Sy --noconfirm >/dev/null 2>&1 || true
|
||||||
|
pacman -S --noconfirm --needed python python-pip git curl wget go >/dev/null 2>&1 || true
|
||||||
|
;;
|
||||||
|
dnf)
|
||||||
|
dnf install -y python3 python3-pip git curl wget golang >/dev/null 2>&1 || true
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
}
|
||||||
|
|
||||||
|
print_summary() {
|
||||||
|
echo
|
||||||
|
echo "============================================="
|
||||||
|
echo -e " Installed: ${GRN}$INSTALLED${NC}"
|
||||||
|
echo -e " Skipped: ${YLW}$SKIPPED${NC}"
|
||||||
|
echo -e " Failed: ${RED}$FAILED${NC}"
|
||||||
|
echo "============================================="
|
||||||
|
if (( FAILED > 0 )); then
|
||||||
|
echo -e "${RED}Failed tools:${NC} ${FAILED_TOOLS[@]:-}"
|
||||||
|
echo "See $LOGFILE for details."
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
require_root
|
||||||
|
detect_distro
|
||||||
|
bootstrap_basics
|
||||||
|
|
||||||
|
echo; say "Installing: ⚔️ Red Team & Offensive Security (31 tools)"
|
||||||
|
install_git https://github.com/infosecn1nja/AD-Attack-Defense.git AD-Attack-Defense # AD Attack & Defense
|
||||||
|
install_pip arjun # Arjun
|
||||||
|
install_git https://github.com/BloodHoundAD/BloodHound.git BloodHound # BloodHound
|
||||||
|
install_docker specterops/bloodhound:latest 'BloodHound CE' # BloodHound CE
|
||||||
|
install_pip certipy-ad # Certipy
|
||||||
|
install_pip crackmapexec # CrackMapExec
|
||||||
|
install_go github.com/dwisiswant0/crlfuzz/cmd/crlfuzz@latest crlfuzz # CRLFuzz
|
||||||
|
install_go github.com/hahwul/dalfox/v2@latest v2 # Dalfox
|
||||||
|
pkg_install evil-winrm # Evil-WinRM
|
||||||
|
install_git https://github.com/r0oth3x49/ghauri.git ghauri # Ghauri
|
||||||
|
install_go github.com/KathanP19/Gxss@latest Gxss # Gxss
|
||||||
|
install_git https://github.com/HavocFramework/Havoc.git Havoc # Havoc
|
||||||
|
install_pip impacket # Impacket
|
||||||
|
install_go github.com/ropnop/kerbrute@latest kerbrute # Kerbrute
|
||||||
|
install_go github.com/assetnote/kiterunner/cmd/kr@latest kr # kiterunner
|
||||||
|
install_go github.com/Ne0nd0g/merlin@latest merlin # Merlin
|
||||||
|
pkg_install metasploit-framework # Metasploit Framework
|
||||||
|
install_git https://github.com/its-a-feature/Mythic.git Mythic # Mythic
|
||||||
|
install_pip git # NetExec (nxc)
|
||||||
|
install_git https://github.com/codingo/NoSQLMap.git NoSQLMap # NoSQLMap
|
||||||
|
install_git https://github.com/projectdiscovery/nuclei-templates.git nuclei-templates # Nuclei Templates
|
||||||
|
install_git https://github.com/PortSwigger/param-miner.git param-miner # ParamMiner (Burp ext)
|
||||||
|
install_git https://github.com/swisskyrepo/PayloadsAllTheThings.git PayloadsAllTheThings # PayloadsAllTheThings
|
||||||
|
install_git https://github.com/topotam/PetitPotam.git PetitPotam # PetitPotam
|
||||||
|
install_git https://github.com/BC-SECURITY/Empire.git Empire # PowerShell Empire
|
||||||
|
install_git https://github.com/GhostPack/Rubeus.git Rubeus # Rubeus
|
||||||
|
install_git https://github.com/BloodHoundAD/SharpHound.git SharpHound # SharpHound
|
||||||
|
install_go github.com/bishopfox/sliver/server@latest server # Sliver
|
||||||
|
install_git https://github.com/swisskyrepo/SSRFmap.git SSRFmap # SSRFmap
|
||||||
|
install_git https://github.com/t3l3machus/Villain.git Villain # Villain
|
||||||
|
install_git https://github.com/s0md3v/XSStrike.git XSStrike # XSStrike
|
||||||
|
|
||||||
|
print_summary
|
||||||
|
|
@ -0,0 +1,93 @@
|
||||||
|
#!/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
|
||||||
|
# ===================================================================
|
||||||
|
set -uo pipefail
|
||||||
|
|
||||||
|
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
|
||||||
|
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"; }
|
||||||
|
|
||||||
|
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
|
||||||
|
}
|
||||||
|
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
|
||||||
|
}
|
||||||
|
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
|
||||||
|
}
|
||||||
|
|
||||||
|
say "Updating Termux..."
|
||||||
|
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
|
||||||
|
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
|
||||||
|
|
||||||
|
echo
|
||||||
|
echo "============================================="
|
||||||
|
echo -e " Installed: ${GRN}$INSTALLED${NC}"
|
||||||
|
echo -e " Skipped: ${YLW}$SKIPPED${NC}"
|
||||||
|
echo -e " Failed: ${RED}$FAILED${NC}"
|
||||||
|
echo "============================================="
|
||||||
|
if (( FAILED > 0 )); then
|
||||||
|
echo -e "${RED}Failed tools:${NC} ${FAILED_TOOLS[*]}"
|
||||||
|
echo "See $LOGFILE for details."
|
||||||
|
fi
|
||||||
|
echo
|
||||||
|
echo "Tools cloned to: $HOME/osint-arsenal/"
|
||||||
|
echo "For more tools, see the README.md — many require x86 Linux and won't run on Android."
|
||||||
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue