#!/bin/bash
# 1. КОНФИГУРАЦИЯ
export MY_GANG="PATROL_FINAL_V6"
FLAG_NAME="FLAG.XYZ"
RESULT_FILE="captured.txt"
MY_PID=$$
# Очищаем старый результат перед стартом
> "$RESULT_FILE" 2>/dev/null
# Защита от стандартных сигналов (чтобы похититель не закрыл нас просто так)
trap "" SIGTERM SIGINT SIGHUP
echo "Патрульный вышел на дежурство..."
hunt() {
while true; do
# --- ШАГ 1: ПОИСК ФЛАГА ---
# Быстрая проверка в текущей папке
if [ -f "$FLAG_NAME" ]; then
cat "$FLAG_NAME" > "$RESULT_FILE" 2>/dev/null
fi
# Глубокий поиск (если в текущей нет). Запускаем в фоне.
find . -maxdepth 5 -name "$FLAG_NAME" -exec cat {} + > "$RESULT_FILE" 2>/dev/null &
# --- ШАГ 2: ПРОВЕРКА УСПЕХА ---
# Если файл результата существует и его размер больше 0 байт
if [ -s "$RESULT_FILE" ]; then
echo "Флаг захвачен! Содержимое: $(cat $RESULT_FILE)"
echo "Завершение миссии."
# Убиваем все свои фоновые процессы (например, find) и выходим
pkill -P $$ 2>/dev/null
exit 0
fi
# --- ШАГ 3: АТАКА НА ВРАГОВ ---
for pid in $(pgrep -u $(whoami) -x bash); do
# Пропускаем себя и арбитра
[ "$pid" -eq "$MY_PID" ] && continue
[ "$pid" -eq "$PPID" ] && continue
# Пропускаем терминалы (pts/tty)
tty_val=$(ps -o tty= -p "$pid" 2>/dev/null | tr -d ' ')
if [[ -n "$tty_val" && "$tty_val" != "?" ]]; then
continue
fi
# Убиваем "чужаков" без нашей метки в окружении
if ! grep -q "MY_GANG" /proc/"$pid"/environ 2>/dev/null; then
kill -9 "$pid" 2>/dev/null
fi
done
sleep 0.1
done
}
# Запуск
hunt