etc.git


etc

~ scripts and random things
git clone https://github.com/djnnvx/etc.git
log | files | refs | archive

cleanup.sh (3102B)

      1 #!/bin/bash
      2 # cleanup.sh — terminate all fuzzing processes and optionally remove build artifacts.
      3 #
      4 # Options:
      5 #   --keep-corpus    preserve workdir-*/ (crash data + corpus)
      6 #   --keep-builds    preserve compiled binaries, kernel, syzkaller, initramfs
      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="usb-fuzz"
     19 
     20 KEEP_CORPUS=0
     21 KEEP_BUILDS=0
     22 CRASHES_ONLY=0
     23 
     24 for arg in "$@"; do
     25     case "${arg}" in
     26         --keep-corpus)  KEEP_CORPUS=1  ;;
     27         --keep-builds)  KEEP_BUILDS=1  ;;
     28         --crashes-only) CRASHES_ONLY=1 ;;
     29         *) echo "[!] Unknown option: ${arg}" >&2 ;;
     30     esac
     31 done
     32 
     33 log()  { echo "[*] $*"; }
     34 ok()   { echo "[+] $*"; }
     35 
     36 # ── kill tmux session ─────────────────────────────────────────────────────────
     37 if tmux list-sessions 2>/dev/null | grep -q "^${SESSION}:"; then
     38     log "Killing tmux session '${SESSION}'..."
     39     tmux kill-session -t "${SESSION}" 2>/dev/null || true
     40     ok "tmux session killed."
     41 else
     42     log "No tmux session '${SESSION}' found."
     43 fi
     44 
     45 # ── kill syz-manager and QEMU ─────────────────────────────────────────────────
     46 pkill -u "$(id -un)" -f "syz-manager"       2>/dev/null || true
     47 pkill -u "$(id -un)" -f "syz-fuzzer"        2>/dev/null || true
     48 pkill -u "$(id -un)" -f "syz-executor"      2>/dev/null || true
     49 pkill -u "$(id -un)" qemu-system-x86_64     2>/dev/null || true
     50 
     51 if [[ "${CRASHES_ONLY}" -eq 1 ]]; then
     52     ok "Process cleanup done. (--crashes-only: no files removed)"
     53     exit 0
     54 fi
     55 
     56 # ── remove build artifacts ────────────────────────────────────────────────────
     57 if [[ "${KEEP_BUILDS}" -eq 0 ]]; then
     58     log "Removing compiled kernel + initramfs..."
     59     rm -f bzImage
     60     rm -f qemu/initramfs.cpio.gz qemu/disk.img
     61     rm -rf initramfs/
     62 
     63     log "Removing source trees (kernel, busybox, dropbear, syzkaller, Go)..."
     64     rm -rf linux/
     65     rm -rf busybox-*/  busybox-install/
     66     rm -rf dropbear-*/ dropbear-install/
     67     rm -rf syzkaller/
     68     rm -rf go/ gopath/
     69 
     70     log "Removing SSH keys..."
     71     rm -f qemu/id_rsa qemu/id_rsa.pub
     72 
     73     ok "Build artifacts removed."
     74 fi
     75 
     76 # ── remove fuzzing data ───────────────────────────────────────────────────────
     77 if [[ "${KEEP_CORPUS}" -eq 0 ]]; then
     78     log "Removing workdirs and fuzzing output..."
     79     rm -rf workdir-raw-gadget/ workdir-gadget-fw/ workdir-usbfs/
     80     rm -f .last_backup .seen_crash_hashes
     81     ok "Workdirs removed."
     82 else
     83     log "Keeping workdir-*/ (--keep-corpus)."
     84 fi
     85 
     86 ok "Cleanup complete."