Skip to content
KitploitKITPLOIT
ИнструментыЭксплойтыБлог
Log in
Отправить
ИнструментыЭксплойтыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

ЛентыКонтактыКонфиденциальность© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
T-Backdoor — Исследовательский код, реализующий T-Backdoor — атаки с временным триггером типа «бэкдор» на спайковые нейронные сети с использованием триггеров по частоте, задержке и джиттеру без пространственных возмущений. | Kitploit
Инструменты/GitHubGitHub/sisl-uri/t-backdoor
Машинное ОбучениеСтатьи и ИсследованияОбучение и ОбразованиеБезопасность ИИСостязательная Атака
GitHubsisl-uri/t-backdoor

T-Backdoor

Исследовательский код, реализующий T-Backdoor — атаки с временным триггером типа «бэкдор» на спайковые нейронные сети с использованием триггеров по частоте, задержке и джиттеру без пространственных возмущений.

Репозиторий
17125 дней назадЕщё не проверено

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

Примеры кода для статьи: «T-Backdoor: Exploiting Temporal Redundancy in Neuromorphic Data for Spike-preserving Backdoor Attacks on SNNs»

Аннотация

Бэкдор-атаки представляют серьёзную угрозу безопасности для глубоких нейронных сетей (DNN) и остаются в значительной степени неизученными для спайковых нейронных сетей (SNN). Существующие атаки в основном вводят пространственно-временные триггеры, которые вызывают отклонения в распределении спайков отравленных образцов относительно их чистых аналогов. Для устранения этого ограничения в данной работе предлагается новая бэкдор-атака на SNN, названная \textbf{T-Backdoor}, которая работает с использованием чисто временных триггеров, таких как \textit{Rate}, \textit{Latency} и \textit{Jitter}, без внесения каких-либо пространственных возмущений, что делает сдвиг в распределениях спайков значительно более трудным для обнаружения. Посредством обширных экспериментов на трёх эталонных нейроморфных наборах данных: N-MNIST, CIFAR10-DVS и N-Caltech101, а также оценки против семи базовых методов защиты от бэкдоров, мы демонстрируем, что T-Backdoor достигает почти идеальной 100% успешности атаки (ASR) как в одноцелевых, так и в многоцелевых настройках с лишь незначительным снижением точности на чистых данных, оставаясь при этом устойчивой к существующим методам обнаружения и противодействия бэкдорам.

Структура репозитория

├── models.py                          # Architectures for all datasets (shared)
├── datasets.py                        # Neuromorphic dataset loading (shared)
│
├── main_single.py                     # 1. Single-target entry point
├── single_poisoned_dataset.py         #    Trigger implementations + loaders
├── single_utils.py                    #    Train/eval loop, saving, plots
├── single_target.sh                   #    Paper runs
│
├── main_multi_target.py               # 2. Multi-target entry point
├── multi_target_poisoned_dataset.py   #    Per-target parameter assignment
├── multi_target_utils.py              #    Per-target ASR tracking, saving
├── multi_target.sh                    #    Paper runs
│
├── main_mtmt.py                       # 3. Multi-trigger multi-target entry point
├── mtmt_poisoned_dataset.py           #    Per-target trigger-type config
├── mtmt_utils.py                      #    Per-target ASR tracking, saving
└── mtmt.sh                            #    Paper runs

Требования

  • Python 3.11
  • GPU с поддержкой CUDA (CPU работает, но непрактично медленно)
python -m venv venv
source venv/bin/activate

pip install torch torchvision          # CUDA build matching your driver
pip install spikingjelly
pip install numpy scipy matplotlib seaborn tqdm

Эталонное окружение, использованное для приведённых результатов:

ПакетВерсия
Python3.11.10
torch2.11.0+cu128
torchvision0.26.0+cu128
numpy2.2.6
scipy1.16.0
matplotlib3.8.4
seaborn0.13.2
spikingjellylatest from source

Настройка набора данных

Скачайте исходные нейроморфные наборы данных и поместите каждый в отдельный подкаталог data/, названный точно так же, как значение --dataset:

data/
├── mnist/       # N-MNIST
├── cifar10/     # CIFAR10-DVS
├── caltech/     # N-Caltech101
└── gesture/     # DVS128-Gesture

⚠️ data/ должен быть буквальным каталогом в вашем рабочем каталоге

Использование

1. Одноцелевой режим (main_single.py)

Один триггер, один целевой класс.

python main_single.py --dataset cifar10 --type latency --delay_frames 1 \
    --T 10 --epochs 100 --epsilon 0.1 --data_dir 'data/'

Основные аргументы

АргументПо умолчаниюОписание
--datasetgesturemnist, cifar10, caltech, gesture
--typestaticstatic, moving, smart, latency, rate, jitter, jitter_fixed
--epsilon0.1Доля обучающего набора для отравления
--trigger_label0Целевой класс
--T10Временные шаги симуляции
--epochs10Эпохи обучения
--batch_size16Размер батча
--lr0.001Скорость обучения
--lossmsemse или cross
--optimadamadam или sgd
--ampвыкл.Включить автоматическую смешанную точность
--seed42Случайное зерно
--data_dirdata/Корень набора данных
--save_pathexperiments_singleКорень вывода
--model_pathNoneНачать с предобученного чекпоинта

Аргументы, специфичные для триггеров

АргументПо умолчаниюПрименяется к
--delay_frames2latency — кадры задержки
--scale_factor0.5rate — <1 медленнее, >1 быстрее
--n_shift3jitter_fixed — количество переставленных пар кадров
--trigger_size0.1static/moving/smart — размер патча как доля ширины
--postop-leftstatic — top-left, top-right, bottom-left, bottom-right, middle, random
--polarity3static/moving/smart — 0=чёрный, 1=тёмно-синий, 2=зелёный, 3=светло-синий
--n_masks2smart — количество регионов-кандидатов
--leastвыкл.smart — нацелиться на наименее активный регион вместо наиболее активного
--most_polarityвыкл.smart — использовать наиболее активную полярность в регионе

Установка --epsilon 0.0 обучает чистую базовую модель.


2. Многоцелевой режим (main_multi_target.py)

Один тип триггера, N целевых классов, разделённых значением параметра триггера.

# Latency: delay 1 -> class 0, delay 3 -> class 1, delay 5 -> class 2
python main_multi_target.py --dataset mnist --type latency --n_targets 3 \
    --trigger_labels 0 1 2 --delay_params 1 3 5 \
    --epsilon 0.2 --T 10 --epochs 10 --data_dir 'data/'
АргументПо умолчаниюОписание
--typeratestatic, latency, rate, jitter, jitter_fixed
--n_targets3Количество целевых классов
--trigger_labels[0..n-1]Явные целевые метки; длина должна равняться --n_targets
--epsilon0.1Общий бюджет, равномерно распределённый между целями

Параметры для каждой цели. Задайте их явно или позвольте автоматически назначить через np.linspace по диапазону. Явные списки должны иметь длину --n_targets и переопределяют аргументы диапазона.

ТриггерЯвноАвтодиапазонАвтозначение по умолчанию
latency--delay_params 1 3 5--delay_min, --delay_max1 … T//2
rate--rate_params 0.3 0.6 0.9--rate_min, --rate_max0.1 … 6.0
jitter--jitter_params 0.05 0.15 0.25--jitter_std_min, --jitter_std_max0.05 … 0.3
jitter_fixed--nshift_params 1 3 5--n_shift_min, --n_shift_max1 … max(n_shift_min+1, T//4)
static——T разбивается на n_targets групп кадров

Автоматически назначаемые целочисленные параметры (latency, jitter_fixed) дедуплицируются путём инкрементирования при коллизиях, поэтому никакие две цели не имеют одинакового значения.

Для static цели разделяются по тому, какие кадры несут патч — временная ось различает их, а не внешний вид патча.

ASR для каждой цели выводится каждую эпоху вместе с точностью на чистых данных.


3. Мультитриггерный многоцелевой режим (main_mtmt.py)

Разный тип триггера для каждой цели.

python main_mtmt.py --dataset mnist --T 10 --n_targets 5 \
    --target_types latency latency rate rate jitter_fixed \
    --trigger_labels 0 1 2 3 4 \
    --latency_delays 1 2 --rate_scales 0.5 2.0 --jitter_fixed_shifts 3 \
    --epsilon 0.3 --epochs 100 --data_dir 'data/'
Скачать инструмент