Files
CoM-ghost_protocol/opsec/scripts/opsec-hostname-randomize.sh
T

65 lines
1.8 KiB
Bash
Executable File

#!/bin/bash
# OPSEC Hostname Randomization
# Config-aware: reads HOSTNAME_PATTERN and HOSTNAME_CUSTOM_PREFIX from /etc/opsec/opsec.conf
# Patterns: desktop (desktop-XXXX), random (8 random chars), custom (PREFIX-XXXX)
if [ "$EUID" -ne 0 ]; then
echo "Please run as root"
exit 1
fi
# Source config if available
OPSEC_LIB="/usr/local/lib/opsec/opsec-lib.sh"
if [ -f "$OPSEC_LIB" ]; then
. "$OPSEC_LIB"
opsec_load_config 2>/dev/null || true
else
opsec_green() { echo -e "\033[38;5;49m[+] $*\033[0m"; }
opsec_info() { echo -e "\033[38;5;39m[~] $*\033[0m"; }
opsec_dim() { echo -e "\033[38;5;244m $*\033[0m"; }
fi
# Config values with defaults
PATTERN="${HOSTNAME_PATTERN:-desktop}"
PREFIX="${HOSTNAME_CUSTOM_PREFIX:-}"
RAND_HEX=$(head -c 2 /dev/urandom | od -An -tx1 | tr -d ' ')
OLD_HOSTNAME=$(hostname)
case "$PATTERN" in
desktop)
NEW_HOSTNAME="desktop-${RAND_HEX}"
;;
random)
NEW_HOSTNAME=$(head -c 4 /dev/urandom | od -An -tx1 | tr -d ' ')
;;
custom)
NEW_HOSTNAME="${PREFIX}-${RAND_HEX}"
;;
*)
NEW_HOSTNAME="desktop-${RAND_HEX}"
;;
esac
opsec_info "Randomizing hostname..."
opsec_dim "Old: ${OLD_HOSTNAME}"
opsec_dim "New: ${NEW_HOSTNAME} (pattern: ${PATTERN})"
# Set hostname via hostnamectl (persistent)
hostnamectl set-hostname "$NEW_HOSTNAME" 2>/dev/null || {
echo "$NEW_HOSTNAME" > /etc/hostname
hostname "$NEW_HOSTNAME"
}
# Update /etc/hosts to match
if grep -q "$OLD_HOSTNAME" /etc/hosts 2>/dev/null; then
sed -i "s/$OLD_HOSTNAME/$NEW_HOSTNAME/g" /etc/hosts
fi
# Ensure localhost entries exist
if ! grep -q "127.0.0.1.*$NEW_HOSTNAME" /etc/hosts; then
sed -i "/127\.0\.0\.1/s/$/ $NEW_HOSTNAME/" /etc/hosts
fi
opsec_green "Hostname randomized to: ${NEW_HOSTNAME}"