Загрузка данных


#!/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