#!/usr/bin/env bash # ============================================================================== # PROJECT OREBOLT - AUTOMATED HEADLESS DISASTER RECOVERY PAYLOAD INJECTOR v1.0 # Enforces build-directory execution and provisions 150 structured modules. # ============================================================================== set -euo pipefail # --- 1. DEFENSIVE ENVIRONMENT DIRECTORY GUARDRAIL --- TARGET_MARKER="h2-workspace" CURRENT_DIR_NAME=$(basename "$(pwd)") EXPECTED_DATA_DIR="overlay/data" echo "======================================================================" echo " PROJECT OREBOLT: RUNTIME TARGET ENVIRONMENT VALIDATION " echo "======================================================================" if [ "${CURRENT_DIR_NAME}" != "${TARGET_MARKER}" ] || [ ! -d "${EXPECTED_DATA_DIR}" ]; then echo "[-] CRITICAL ERROR: Execution denied." echo " This script must run exclusively from within the primary build root:" echo " --> '${TARGET_MARKER}/'" echo " Current directory context: '$(pwd)'" echo " Aborting payload provisioning immediately to protect file trees." echo "======================================================================" exit 1 fi echo "[+] Validation passed: Operating inside validated workspace root." echo "[*] Initializing target storage sub-directories..." PAYLOAD_ROOT="${EXPECTED_DATA_DIR}/payloads" mkdir -p "${PAYLOAD_ROOT}/linux" mkdir -p "${PAYLOAD_ROOT}/macos" mkdir -p "${PAYLOAD_ROOT}/windows" # --- 2. STREAMING PAYLOAD MATRIX PROVISIONING --- echo "[*] Provisioning Menu 1: Linux Emergency Subsystems (01 - 50)..." # Category A: Display Servers & DM Recovery cat << 'EOF' > "${PAYLOAD_ROOT}/linux/01_restart_lightdm.dd" CTRL ALT F2 DELAY 1000 STRING root ENTER DELAY 500 STRING systemctl restart lightdm ENTER EOF cat << 'EOF' > "${PAYLOAD_ROOT}/linux/02_restart_gdm3.dd" CTRL ALT F2 DELAY 1000 STRING root ENTER DELAY 500 STRING systemctl restart gdm3 ENTER EOF cat << 'EOF' > "${PAYLOAD_ROOT}/linux/03_restart_sddm.dd" CTRL ALT F2 DELAY 1000 STRING root ENTER DELAY 500 STRING systemctl restart sddm ENTER EOF cat << 'EOF' > "${PAYLOAD_ROOT}/linux/04_kill_wayland.dd" CTRL ALT F2 DELAY 1000 STRING root ENTER DELAY 500 STRING pkill -9 -f wayland ENTER EOF cat << 'EOF' > "${PAYLOAD_ROOT}/linux/05_rebuild_xorg.dd" CTRL ALT F2 DELAY 1000 STRING root ENTER DELAY 500 STRING rm -f /etc/X11/xorg.conf && Xorg -configure && mv /root/xorg.conf.new /etc/X11/xorg.conf ENTER EOF cat << 'EOF' > "${PAYLOAD_ROOT}/linux/06_clear_x11_locks.dd" CTRL ALT F2 DELAY 1000 STRING root ENTER DELAY 500 STRING rm -f /tmp/.X*-lock /tmp/.11-unix/X* ENTER EOF cat << 'EOF' > "${PAYLOAD_ROOT}/linux/07_drop_tty3.dd" CTRL ALT F3 DELAY 1000 EOF cat << 'EOF' > "${PAYLOAD_ROOT}/linux/08_prompt_clear.dd" CTRL ALT F2 DELAY 1000 CTRL c DELAY 200 ENTER EOF cat << 'EOF' > "${PAYLOAD_ROOT}/linux/09_kill_desktop_context.dd" CTRL ALT F2 DELAY 1000 STRING root ENTER DELAY 500 STRING pkill -KILL -u $(whoami) ENTER EOF cat << 'EOF' > "${PAYLOAD_ROOT}/linux/10_restart_gnome_shell.dd" ALT F2 DELAY 500 STRING r ENTER EOF # Category B: Data Extraction & System Cloning cat << 'EOF' > "${PAYLOAD_ROOT}/linux/11_backup_rootfs.dd" CTRL ALT F2 DELAY 1000 STRING root ENTER DELAY 500 STRING tar --exclude=/proc --exclude=/sys --exclude=/dev --exclude=/run -cf /rootfs_rescue.tar / ENTER EOF cat << 'EOF' > "${PAYLOAD_ROOT}/linux/12_backup_homes.dd" CTRL ALT F2 DELAY 1000 STRING root ENTER DELAY 500 STRING tar -cf /home_backup.tar /home/ ENTER EOF cat << 'EOF' > "${PAYLOAD_ROOT}/linux/13_backup_etc.dd" CTRL ALT F2 DELAY 1000 STRING root ENTER DELAY 500 STRING tar -cf /etc_backup.tar /etc/ ENTER EOF cat << 'EOF' > "${PAYLOAD_ROOT}/linux/14_isolate_ssh_keys.dd" CTRL ALT F2 DELAY 1000 STRING root ENTER DELAY 500 STRING tar -cf /ssh_credentials.tar /home/*/.ssh /root/.ssh ENTER EOF cat << 'EOF' > "${PAYLOAD_ROOT}/linux/15_backup_net_metadata.dd" CTRL ALT F2 DELAY 1000 STRING root ENTER DELAY 500 STRING tar -cf /net_metadata.tar /etc/network/ /etc/netplan/ /etc/NetworkManager/ ENTER EOF cat << 'EOF' > "${PAYLOAD_ROOT}/linux/16_dump_mbr.dd" CTRL ALT F2 DELAY 1000 STRING root ENTER DELAY 500 STRING dd if=/dev/sda of=/mbr_core.bin bs=512 count=1 ENTER EOF cat << 'EOF' > "${PAYLOAD_ROOT}/linux/17_extract_hashes.dd" CTRL ALT F2 DELAY 1000 STRING root ENTER DELAY 500 STRING cp /etc/passwd /etc/shadow /etc/group / ENTER EOF cat << 'EOF' > "${PAYLOAD_ROOT}/linux/18_compress_mail.dd" CTRL ALT F2 DELAY 1000 STRING root ENTER DELAY 500 STRING tar -cf /mail_backup.tar /var/mail/ /var/spool/ ENTER EOF cat << 'EOF' > "${PAYLOAD_ROOT}/linux/19_export_packages.dd" CTRL ALT F2 DELAY 1000 STRING root ENTER DELAY 500 STRING dpkg --get-selections > /installed_packages.txt || rpm -qa > /installed_packages.txt ENTER EOF cat << 'EOF' > "${PAYLOAD_ROOT}/linux/20_locate_sqlite_dbs.dd" CTRL ALT F2 DELAY 1000 STRING root ENTER DELAY 500 STRING find / -name "*.db" -o -name "*.sqlite" > /sqlite_locations.txt ENTER EOF # Category C: Infrastructure Storage & Updates Triage cat << 'EOF' > "${PAYLOAD_ROOT}/linux/21_clear_dpkg_locks.dd" CTRL ALT F2 DELAY 1000 STRING root ENTER DELAY 500 STRING rm -f /var/lib/dpkg/lock-frontend /var/lib/apt/lists/lock && dpkg --configure -a ENTER EOF cat << 'EOF' > "${PAYLOAD_ROOT}/linux/22_vacuum_journals.dd" CTRL ALT F2 DELAY 1000 STRING root ENTER DELAY 500 STRING journalctl --vacuum-size=10M && systemctl restart systemd-journald ENTER EOF cat << 'EOF' > "${PAYLOAD_ROOT}/linux/23_flush_ram_caches.dd" CTRL ALT F2 DELAY 1000 STRING root ENTER DELAY 500 STRING sync && echo 3 > /proc/sys/vm/drop_caches ENTER EOF cat << 'EOF' > "${PAYLOAD_ROOT}/linux/24_rebuild_initramfs.dd" CTRL ALT F2 DELAY 1000 STRING root ENTER DELAY 500 STRING update-initramfs -u -k all ENTER EOF cat << 'EOF' > "${PAYLOAD_ROOT}/linux/25_reverify_grub.dd" CTRL ALT F2 DELAY 1000 STRING root ENTER DELAY 500 STRING update-grub || grub2-mkconfig -o /boot/grub2/grub.cfg ENTER EOF cat << 'EOF' > "${PAYLOAD_ROOT}/linux/26_clean_apt_cache.dd" CTRL ALT F2 DELAY 1000 STRING root ENTER DELAY 500 STRING apt-get clean && apt-get autoremove -y ENTER EOF cat << 'EOF' > "${PAYLOAD_ROOT}/linux/27_identify_space_leaks.dd" CTRL ALT F2 DELAY 1000 STRING root ENTER DELAY 500 STRING du -ah / 2>/dev/null | sort -rh | head -n 50 > /space_hogs.txt ENTER EOF cat << 'EOF' > "${PAYLOAD_ROOT}/linux/28_schedule_fsck.dd" CTRL ALT F2 DELAY 1000 STRING root ENTER DELAY 500 STRING touch /forcefsck ENTER EOF cat << 'EOF' > "${PAYLOAD_ROOT}/linux/29_clear_tmp.dd" CTRL ALT F2 DELAY 1000 STRING root ENTER DELAY 500 STRING find /tmp -type f -atime +1 -delete ENTER EOF cat << 'EOF' > "${PAYLOAD_ROOT}/linux/30_remount_rw.dd" CTRL ALT F2 DELAY 1000 STRING root ENTER DELAY 500 STRING mount -o remount,rw / ENTER EOF # Category D: Firewalls & Authentication Recovery cat << 'EOF' > "${PAYLOAD_ROOT}/linux/31_inject_admin.dd" CTRL ALT F2 DELAY 1000 STRING root ENTER DELAY 500 STRING useradd -m -g sudo -s /bin/bash orebolt && echo "orebolt:bolt60" | chpasswd ENTER EOF cat << 'EOF' > "${PAYLOAD_ROOT}/linux/32_elevate_current_user.dd" CTRL ALT F2 DELAY 1000 STRING root ENTER DELAY 500 STRING usermod -aG sudo,admin $(whoami) ENTER EOF cat << 'EOF' > "${PAYLOAD_ROOT}/linux/33_flush_iptables.dd" CTRL ALT F2 DELAY 1000 STRING root ENTER DELAY 500 STRING iptables -F && iptables -X && iptables -t nat -F && iptables -P INPUT ACCEPT ENTER EOF cat << 'EOF' > "${PAYLOAD_ROOT}/linux/34_enable_ssh.dd" CTRL ALT F2 DELAY 1000 STRING root ENTER DELAY 500 STRING systemctl enable --now ssh || service ssh start ENTER EOF cat << 'EOF' > "${PAYLOAD_ROOT}/linux/35_ufw_bypass_ssh.dd" CTRL ALT F2 DELAY 1000 STRING root ENTER DELAY 500 STRING ufw allow 22/tcp && ufw reload ENTER EOF cat << 'EOF' > "${PAYLOAD_ROOT}/linux/36_disable_apparmor.dd" CTRL ALT F2 DELAY 1000 STRING root ENTER DELAY 500 STRING systemctl stop apparmor && systemctl disable apparmor ENTER EOF cat << 'EOF' > "${PAYLOAD_ROOT}/linux/37_permissive_selinux.dd" CTRL ALT F2 DELAY 1000 STRING root ENTER DELAY 500 STRING setenforce 0 && sed -i 's/SELINUX=enforcing/SELINUX=permissive/g' /etc/selinux/config ENTER EOF cat << 'EOF' > "${PAYLOAD_ROOT}/linux/38_clear_known_hosts.dd" CTRL ALT F2 DELAY 1000 STRING root ENTER DELAY 500 STRING rm -f /home/*/.ssh/known_hosts /root/.ssh/known_hosts ENTER EOF cat << 'EOF' > "${PAYLOAD_ROOT}/linux/39_authorize_ssh_passwords.dd" CTRL ALT F2 DELAY 1000 STRING root ENTER DELAY 500 STRING sed -i 's/PasswordAuthentication no/PasswordAuthentication yes/g' /etc/ssh/sshd_config && systemctl restart ssh ENTER EOF cat << 'EOF' > "${PAYLOAD_ROOT}/linux/40_clear_root_password.dd" CTRL ALT F2 DELAY 1000 STRING root ENTER DELAY 500 STRING passwd -d root ENTER EOF # Category E: Bare-Metal Control Loops cat << 'EOF' > "${PAYLOAD_ROOT}/linux/41_sysrq_sync.dd" ALT SysRq s DELAY 500 EOF cat << 'EOF' > "${PAYLOAD_ROOT}/linux/42_sysrq_umount.dd" ALT SysRq u DELAY 500 EOF cat << 'EOF' > "${PAYLOAD_ROOT}/linux/43_sysrq_reboot.dd" ALT SysRq b EOF cat << 'EOF' > "${PAYLOAD_ROOT}/linux/44_sysrq_poweroff.dd" ALT SysRq o EOF cat << 'EOF' > "${PAYLOAD_ROOT}/linux/45_stream_dmesg.dd" CTRL ALT F4 DELAY 1000 STRING root ENTER DELAY 500 STRING dmesg -w ENTER EOF cat << 'EOF' > "${PAYLOAD_ROOT}/linux/46_sysrq_memdump.dd" ALT SysRq m EOF cat << 'EOF' > "${PAYLOAD_ROOT}/linux/47_sysrq_oom_kill.dd" ALT SysRq f EOF cat << 'EOF' > "${PAYLOAD_ROOT}/linux/48_enable_serial_getty.dd" CTRL ALT F2 DELAY 1000 STRING root ENTER DELAY 500 STRING systemctl enable --now serial-getty@ttyS0.service ENTER EOF cat << 'EOF' > "${PAYLOAD_ROOT}/linux/49_flash_interfaces_down.dd" CTRL ALT F2 DELAY 1000 STRING root ENTER DELAY 500 STRING ip link set eth0 down && ip link set wlan0 down ENTER EOF cat << 'EOF' > "${PAYLOAD_ROOT}/linux/50_loop_keyboard_leds.dd" CTRL ALT F2 DELAY 1000 STRING root ENTER DELAY 500 STRING while true; do xset led on; sleep 1; xset led off; sleep 1; done ENTER EOF echo "[*] Provisioning Menu 2: macOS Recovery Engines (51 - 100)..." # Category A: Session Managers & Terminal Focus cat << 'EOF' > "${PAYLOAD_ROOT}/macos/51_spotlight_terminal.dd" GUI SPACE DELAY 4000 STRING Terminal ENTER DELAY 1500 EOF cat << 'EOF' > "${PAYLOAD_ROOT}/macos/52_single_user_mode.dd" COMMAND s DELAY 4000 EOF cat << 'EOF' > "${PAYLOAD_ROOT}/macos/53_break_execution.dd" CTRL c DELAY 200 ENTER EOF cat << 'EOF' > "${PAYLOAD_ROOT}/macos/54_kill_finder.dd" OPTION COMMAND ESC DELAY 1000 STRING Finder ENTER DELAY 500 ENTER EOF cat << 'EOF' > "${PAYLOAD_ROOT}/macos/55_restart_opendirectoryd.dd" GUI SPACE DELAY 500 STRING Terminal ENTER DELAY 1000 STRING sudo killall opendirectoryd ENTER EOF cat << 'EOF' > "${PAYLOAD_ROOT}/macos/56_force_close_front_app.dd" COMMAND SHIFT OPTION ESC DELAY 1000 EOF cat << 'EOF' > "${PAYLOAD_ROOT}/macos/57_kill_windowserver.dd" GUI SPACE DELAY 500 STRING Terminal ENTER DELAY 1000 STRING sudo killall -9 WindowServer ENTER EOF cat << 'EOF' > "${PAYLOAD_ROOT}/macos/58_invoke_sysdiagnose_hotkey.dd" COMMAND OPTION PERIOD DELAY 1000 EOF cat << 'EOF' > "${PAYLOAD_ROOT}/macos/59_drop_to_login_screen.dd" COMMAND SHIFT q DELAY 500 ENTER EOF cat << 'EOF' > "${PAYLOAD_ROOT}/macos/60_kill_systemuiserver.dd" GUI SPACE DELAY 500 STRING Terminal ENTER DELAY 1000 STRING sudo killall SystemUIServer ENTER EOF # Category B: Asset Recovery & Storage Captures cat << 'EOF' > "${PAYLOAD_ROOT}/macos/61_archive_system_configs.dd" GUI SPACE DELAY 500 STRING Terminal ENTER DELAY 1000 STRING tar -cf ~/Desktop/mac_configs.tar /etc/hosts /etc/resolv.conf /Library/Preferences/SystemConfiguration/ ENTER EOF cat << 'EOF' > "${PAYLOAD_ROOT}/macos/62_archive_keychains.dd" GUI SPACE DELAY 500 STRING Terminal ENTER DELAY 1000 STRING tar -cf ~/Desktop/keychains.tar ~/Library/Keychains/ ENTER