etc~ scripts and random things |
| git clone https://github.com/djnnvx/etc.git |
| log | files | refs | archive |
cleanup.sh (4377B)
1 #!/bin/bash 2 # cleanup.sh — terminate all fuzzing processes and remove build artifacts. 3 # 4 # Options: 5 # --keep-corpus preserve corpus/ and output/ directories 6 # --keep-builds preserve compiled binaries + kernel artifacts 7 # --crashes-only only kill processes, don't remove anything 8 # 9 # Usage: 10 # bash cleanup.sh # full cleanup 11 # bash cleanup.sh --keep-corpus # kill procs + rm artifacts, keep fuzzing data 12 13 set -uo pipefail 14 15 SCRIPT_DIR="$(cd "$(dirname "${0}")" && pwd)" 16 cd "${SCRIPT_DIR}" 17 18 SESSION="usbip-fuzz" 19 QEMU_PID_FILE="${SCRIPT_DIR}/.qemu.pid" 20 21 KEEP_CORPUS=0 22 KEEP_BUILDS=0 23 CRASHES_ONLY=0 24 25 for arg in "$@"; do 26 case "${arg}" in 27 --keep-corpus) KEEP_CORPUS=1 ;; 28 --keep-builds) KEEP_BUILDS=1 ;; 29 --crashes-only) CRASHES_ONLY=1 ;; 30 *) echo "[!] Unknown option: ${arg}" >&2 ;; 31 esac 32 done 33 34 log() { echo "[*] $*"; } 35 ok() { echo "[+] $*"; } 36 37 # ── kill tmux session ───────────────────────────────────────────────────────── 38 if tmux list-sessions 2>/dev/null | grep -q "${SESSION}"; then 39 log "Killing tmux session '${SESSION}'..." 40 tmux kill-session -t "${SESSION}" 2>/dev/null || true 41 ok "tmux session killed." 42 else 43 log "No tmux session '${SESSION}' found." 44 fi 45 46 # ── kill QEMU ───────────────────────────────────────────────────────────────── 47 if [[ -f "${QEMU_PID_FILE}" ]]; then 48 QPID="$(cat "${QEMU_PID_FILE}")" 49 if kill -0 "${QPID}" 2>/dev/null; then 50 log "Killing QEMU (pid ${QPID})..." 51 kill "${QPID}" 2>/dev/null || true 52 sleep 0.5 53 kill -9 "${QPID}" 2>/dev/null || true 54 ok "QEMU killed." 55 fi 56 rm -f "${QEMU_PID_FILE}" 57 fi 58 59 # Kill any stray qemu-system-x86_64 processes belonging to this user 60 pkill -u "$(id -un)" qemu-system-x86_64 2>/dev/null || true 61 62 # ── kill any background AFL++ processes ─────────────────────────────────────── 63 pkill -u "$(id -un)" -f "afl-fuzz.*usbip" 2>/dev/null || true 64 pkill -u "$(id -un)" -f "fuzz_protocol" 2>/dev/null || true 65 pkill -u "$(id -un)" -f "fuzz_devlist" 2>/dev/null || true 66 pkill -u "$(id -un)" -f "fuzz_import" 2>/dev/null || true 67 pkill -u "$(id -un)" -f "fuzz_urb" 2>/dev/null || true 68 pkill -u "$(id -un)" -f "fuzz_vhci_server" 2>/dev/null || true 69 pkill -u "$(id -un)" -f "fuzz_stub_client" 2>/dev/null || true 70 pkill -u "$(id -un)" -f "net_send" 2>/dev/null || true 71 pkill -u "$(id -un)" -f "kcov_shim" 2>/dev/null || true 72 73 if [[ "${CRASHES_ONLY}" -eq 1 ]]; then 74 ok "Process cleanup done. (--crashes-only: no files removed)" 75 exit 0 76 fi 77 78 # ── remove build artifacts ──────────────────────────────────────────────────── 79 if [[ "${KEEP_BUILDS}" -eq 0 ]]; then 80 log "Removing compiled binaries..." 81 rm -f fuzz_protocol fuzz_protocol.cmplog 82 rm -f fuzz_devlist fuzz_devlist.cmplog 83 rm -f fuzz_import fuzz_import.cmplog 84 rm -f fuzz_urb fuzz_urb.cmplog 85 rm -f fuzz_vhci_server fuzz_stub_client kcov_shim 86 rm -f usbip_network.o usbip_common.o mock_syscalls.o names.o 87 rm -f net_send usbipd-plain 88 89 log "Removing kernel build artifacts..." 90 rm -f bzImage initramfs.cpio.gz 91 rm -rf initramfs/ 92 93 log "Removing source trees (AFL++, kernel, busybox, usbip)..." 94 rm -rf AFLplusplus/ afl-build/ 95 rm -rf "linux-6.12/" # adjust if KERNEL_VER differs 96 rm -rf "busybox-1.36.1/" busybox-install/ busybox/ 97 rm -rf usbip-src/ usbipd-plain-install/ 98 99 ok "Build artifacts removed." 100 fi 101 102 # ── remove fuzzing data ─────────────────────────────────────────────────────── 103 if [[ "${KEEP_CORPUS}" -eq 0 ]]; then 104 log "Removing corpus and fuzzing output..." 105 rm -rf corpus/ output/ 106 rm -f .last_backup .seen_crash_hashes .qemu.pid 107 ok "Corpus and output removed." 108 else 109 log "Keeping corpus/ and output/ (--keep-corpus)." 110 fi 111 112 ok "Cleanup complete."