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

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

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

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

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

Категории

Все категории
Loading categories
OpenAttack — Пакет с открытым исходным кодом для текстовой состязательной атаки. | Kitploit
Инструменты/GitHubGitHub/thunlp/openattack
Машинное ОбучениеСтатьи и ИсследованияОбучение и ОбразованиеБезопасность ИИСостязательная Атака
GitHubthunlp/openattack

OpenAttack

Пакет с открытым исходным кодом для текстовой состязательной атаки.

Репозиторий
778127674 лет назадПроверено Kitploit

Популярное

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

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

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

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

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

Логотип OpenAttack

Статус покрытия Github Runner Статус ReadTheDoc Версия PyPI Релиз GitHub (последний по дате) Лицензия GitHub PR приветствуются

Документация • Возможности и применение • Примеры использования • Модели атак • Дизайн инструментария

OpenAttack — это инструментарий для текстовых состязательных атак с открытым исходным кодом на Python, который охватывает весь процесс текстовой состязательной атаки, включая предобработку текста, доступ к модели-жертве, генерацию состязательных примеров и оценку.

Возможности и применение

OpenAttack обладает следующими возможностями:

⭐️ Поддержка всех типов атак. OpenAttack поддерживает все типы атак, включая возмущения на уровне предложений/слов/символов и модели атак на основе градиентов/оценок/решений/слепые;

⭐️ Многоязычность. OpenAttack в настоящее время поддерживает английский и китайский языки. Его расширяемая архитектура позволяет быстро добавить поддержку других языков;

⭐️ Параллельная обработка. OpenAttack обеспечивает поддержку многопроцессорного запуска моделей атак для повышения эффективности атаки;

⭐️ Совместимость с 🤗 Hugging Face. OpenAttack полностью интегрирован с библиотеками 🤗 Transformers и Datasets;

⭐️ Большая расширяемость. Вы можете легко атаковать настраиваемую модель-жертву на любом настраиваемом наборе данных или разработать и оценить настраиваемую модель атаки.

OpenAttack имеет широкий спектр применения, включая:

✅ Предоставление различных удобных базовых линий для моделей атак;

✅ Всестороннее оценивание моделей атак с использованием тщательных метрик оценки;

✅ Помощь в быстрой разработке новых моделей атак с помощью общих компонентов атак;

✅ Оценку устойчивости модели машинного обучения к различным состязательным атакам;

✅ Проведение состязательного обучения для повышения устойчивости модели машинного обучения путём обогащения обучающих данных сгенерированными состязательными примерами.

Установка

1. Использование pip (рекомендуется)```bash

pip install OpenAttack

#### 2. Клонирование этого репозитория```bash
git clone https://github.com/thunlp/OpenAttack.git
cd OpenAttack
python setup.py install

После установки вы можете попробовать запустить demo.py, чтобы проверить, работает ли OpenAttack корректно:``` python demo.py

![demo](https://assets.kitploit.com/production/public/readmes/4421/8322af527eba3c3dcd09c66e50aa3a1229ca0f529018fa6d08b6d8349eb0a51f.gif)
## Примеры использования

#### Атака на встроенные модели-жертвы

OpenAttack включает в себя некоторые часто используемые NLP-модели, такие как BERT ([Devlin et al. 2018](https://arxiv.org/abs/1810.04805)) и RoBERTa ([Liu et al. 2019](https://arxiv.org/abs/1907.11692)), которые были дообучены на популярных датасетах (например, [SST-2](https://nlp.stanford.edu/sentiment/treebank.html)). Вы можете без труда проводить состязательные атаки на эти встроенные модели-жертвы.

Следующий фрагмент кода показывает, как использовать PWWS — модель атаки на основе жадного алгоритма ([Ren et al., 2019](https://www.aclweb.org/anthology/P19-1103.pdf)) — для атаки на BERT на датасете SST-2 (полный исполняемый код находится [здесь](https://github.com/thunlp/openattack/blob/master/examples/workflow.py)).```python
import OpenAttack as oa
import datasets # use the Hugging Face's datasets library
# change the SST dataset into 2-class
def dataset_mapping(x):
    return {
        "x": x["sentence"],
        "y": 1 if x["label"] > 0.5 else 0,
    }
# choose a trained victim classification model
victim = oa.DataManager.loadVictim("BERT.SST")
# choose 20 examples from SST-2 as the evaluation data 
dataset = datasets.load_dataset("sst", split="train[:20]").map(function=dataset_mapping)
# choose PWWS as the attacker and initialize it with default parameters
attacker = oa.attackers.PWWSAttacker()
# prepare for attacking
attack_eval = OpenAttack.AttackEval(attacker, victim)
# launch attacks and print attack results 
attack_eval.eval(dataset, visualize=True)
Настраиваемая модель жертвы

Следующий фрагмент кода показывает, как использовать PWWS для атаки на настроенную модель анализа тональности (статистическую модель, построенную в NLTK) на SST-2 (полный исполняемый код находится здесь).```python import OpenAttack as oa import numpy as np import datasets import nltk from nltk.sentiment.vader import SentimentIntensityAnalyzer

configure access interface of the customized victim model by extending OpenAttack.Classifier.

class MyClassifier(oa.Classifier): def init(self): # nltk.sentiment.vader.SentimentIntensityAnalyzer is a traditional sentiment classification model. nltk.download('vader_lexicon') self.model = SentimentIntensityAnalyzer()

def get_pred(self, input_):
    return self.get_prob(input_).argmax(axis=1)

# access to the classification probability scores with respect input sentences
def get_prob(self, input_):
    ret = []
    for sent in input_:
        # SentimentIntensityAnalyzer calculates scores of “neg” and “pos” for each instance
        res = self.model.polarity_scores(sent)

        # we use 𝑠𝑜𝑐𝑟𝑒_𝑝𝑜𝑠 / (𝑠𝑐𝑜𝑟𝑒_𝑛𝑒𝑔 + 𝑠𝑐𝑜𝑟𝑒_𝑝𝑜𝑠) to represent the probability of positive sentiment
        # Adding 10^−6 is a trick to avoid dividing by zero.
        prob = (res["pos"] + 1e-6) / (res["neg"] + res["pos"] + 2e-6)

        ret.append(np.array([1 - prob, prob]))
    
    # The get_prob method finally returns a np.ndarray of shape (len(input_), 2). See Classifier for detail.
    return np.array(ret)

def dataset_mapping(x): return { "x": x["sentence"], "y": 1 if x["label"] > 0.5 else 0, }

load some examples of SST-2 for evaluation

dataset = datasets.load_dataset("sst", split="train[:20]").map(function=dataset_mapping)

choose the costomized classifier as the victim model

victim = MyClassifier()

choose PWWS as the attacker and initialize it with default parameters

attacker = oa.attackers.PWWSAttacker()

prepare for attacking

attack_eval = oa.AttackEval(attacker, victim)

launch attacks and print attack results

attack_eval.eval(dataset, visualize=True)

</details>


<details>
<summary><strong>Пользовательский набор данных</strong></summary>
Скачать инструмент