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 — атаки с временным триггером типа «бэкдор» на спайковые нейронные сети с использованием триггеров по частоте, задержке и джиттеру без пространственных возмущений.

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

Популярное

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

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

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

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

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

Примеры кода для статьи: «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) как в одноцелевых, так и в многоцелевых настройках с лишь незначительным снижением точности на чистых данных, оставаясь при этом устойчивой к существующим методам обнаружения и противодействия бэкдорам.

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

root@kitploit:~
├── 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 работает, но непрактично медленно)
root@kitploit:~
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

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

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

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

root@kitploit:~
data/
├── mnist/       # N-MNIST
├── cifar10/     # CIFAR10-DVS
├── caltech/     # N-Caltech101
└── gesture/     # DVS128-Gesture

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

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

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

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

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

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

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

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


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

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

root@kitploit:~
# 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/'

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

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

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

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


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

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

root@kitploit:~
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/'

Списки параметров по типам. Каждый список содержит одну запись на каждую цель данного типа — при --target_types latency latency rate rate jitter_fixed вы передаёте две задержки, две скорости и один сдвиг:

Пропуск списка приводит к автоматическому назначению из соответствующего диапазона *_min / *_max.

Встроенные пресеты (используются, когда --target_types не задан):

  • --n_targets 3 — static (кадры 0..T/3), latency (--delay), rate (--scale_factor)
  • --n_targets 5 — два static (разные группы кадров и позиции), два latency (--delay, --delay_2), один rate

Любое другое значение --n_targets требует --target_types.


Выходные данные

Каждый запуск записывает строку в общий CSV-файл плюс самодостаточный каталог эксперимента.

Параметры триггера кодируются в имени каталога (df1 = задержка 1, sf0.1 = скорость 0.1, ns3 = 3 перестановки), поэтому запуски, отличающиеся только параметром триггера, не перезаписывают друг друга.


Благодарности

Части этой кодовой базы адаптированы из репозитория Sneaky Spikes авторства Gorka Abad и др., сопровождающего статью "Sneaky Spikes: Uncovering Stealthy Backdoor Attacks in Spiking Neural Networks with Neuromorphic Data" (NDSS 2024). Мы благодарим авторов за публичное предоставление их кода.


Цитирование

Если вы находите эту работу полезной в своих исследованиях, пожалуйста, рассмотрите возможность цитирования:

root@kitploit:~
@article{miah2026tbackdoor,
  title   = {T-Backdoor: Exploiting Temporal Redundancy in Neuromorphic Data for Spike-preserving Backdoor Attacks on SNNs},
  author  = {Miah, Abdullah Arafat and Vu, Kevin and Bi, Yu},
  journal = {arXiv},
  year    = {2026}
}

Контакты

По вопросам или проблемам, касающимся кода, пожалуйста, откройте issue на GitHub или свяжитесь:

  • Abdullah Arafat Miah — [email protected]
  • Yu Bi — [email protected]
Скачать инструмент
ПакетВерсия
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
АргументПо умолчаниюОписание
--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 — использовать наиболее активную полярность в регионе
АргументПо умолчаниюОписание
--typeratestatic, latency, rate, jitter, jitter_fixed
--n_targets3Количество целевых классов
--trigger_labels[0..n-1]Явные целевые метки; длина должна равняться --n_targets
--epsilon0.1Общий бюджет, равномерно распределённый между целями
ТриггерЯвноАвтодиапазонАвтозначение по умолчанию
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 групп кадров
АргументПо умолчаниюОписание
--n_targets3Количество целей; для 3 и 5 есть встроенные пресеты
--target_typesNoneТип триггера для каждой цели — static, latency, rate, jitter, jitter_fixed. Длина должна равняться --n_targets. Переопределяет пресеты
--trigger_labels[0..n-1]Целевые метки
--epsilon0.2Общий бюджет, равномерно распределённый между целями
АргументПрименяется к
--latency_delays 1 2каждой цели latency
--rate_scales 0.5 2.0каждой цели rate
--jitter_fixed_shifts 3каждой цели jitter_fixed
--jitter_stds 0.1 0.3каждой цели jitter
--static_positions top-left bottom-rightкаждой цели static
--static_polarities 3 1каждой цели static
НастройкаСводный CSVКаталог эксперимента
Одноцелевой<save_path>/results.csv<dataset>_<type>_<eps>_<size>_<param>_<seed>/
Многоцелевой<save_path>/multi_target_results.csvmulti_<type>_<dataset>_<n>targets_<labels>_eps<eps>_<params>_seed<seed>/
MTMT<save_path>/mtmt_results.csvmtmt_<dataset>_<n>t_<params>_eps<eps>_seed<seed>/