BUG: MathObfuscation, NegationTrap, SelectiveText and Zalgo converter identifiers ignore settings that change output
Les mainteneurs répondent en général sous 2 jours
Évaluation
- Difficulté
- 3/5
- Temps estimé
- 1-2 jours
- Accessibilité débutants
- 25/100
Piste de recherche
Read the identifier implementations for MathObfuscationConverter, NegationTrapConverter, SelectiveTextConverter, and ZalgoConverter; compare them with seeded converters such as EmojiConverter. Use the reproduction pairs and ConverterRegistry registration shown in the issue to check the behavior. Done means differently configured instances have different identifiers and both NegationTrapConverter instances register successfully.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
Describe the bug
Four text converters leave settings that change their output out of their identifiers, so differently configured instances share one hash:
MathObfuscationConverter:hintandsuffix(onlymin_nandmax_nare included).NegationTrapConverter:wrong_valueandtrap_template. It does not override_build_identifier()at all, so its identifier only holds the supported input and output types.SelectiveTextConverter:word_separator, which word-level strategies split and rejoin on.ZalgoConverter:seed. Other seeded converters (EmojiConverter,CharSwapConverter,AskToDecodeConverter,RandomCapitalLettersConverter, ...) includeseed.
Because the default registry name comes from that hash, registering a second configuration without a custom name raises a duplicate-name error, and memory and analytics cannot tell the configurations apart. This is the same problem as #3242 and #3244, for these text converters.
Steps/Code to Reproduce
from pyrit.converter import (
Base64Converter,
MathObfuscationConverter,
NegationTrapConverter,
SelectiveTextConverter,
ZalgoConverter,
)
from pyrit.converter.text_selection_strategy import WordPositionSelectionStrategy
from pyrit.registry import ConverterRegistry
words = WordPositionSelectionStrategy(start_proportion=0, end_proportion=0.5)
pairs = [
(MathObfuscationConverter(hint="a"), MathObfuscationConverter(hint="")),
(MathObfuscationConverter(suffix="x"), MathObfuscationConverter(suffix="")),
(NegationTrapConverter(wrong_value="1234"), NegationTrapConverter(wrong_value="hunter2")),
(
NegationTrapConverter(trap_template="A {prompt} {wrong_value}"),
NegationTrapConverter(trap_template="B {prompt} {wrong_value}"),
),
(
SelectiveTextConverter(sub_converter=Base64Converter(), selection_strategy=words),
SelectiveTextConverter(sub_converter=Base64Converter(), selection_strategy=words, word_separator=","),
),
(ZalgoConverter(seed=1), ZalgoConverter(seed=2)),
]
for first, second in pairs:
print(first.get_identifier().unique_name, second.get_identifier().unique_name)
registry = ConverterRegistry()
registry.instances.register(NegationTrapConverter(wrong_value="1234"))
registry.instances.register(NegationTrapConverter(wrong_value="hunter2"))
Expected Results
Each pair has two different identifiers, and both NegationTrapConverter instances register.
Actual Results
MathObfuscationConverter::81c6f15b MathObfuscationConverter::81c6f15b
MathObfuscationConverter::81c6f15b MathObfuscationConverter::81c6f15b
NegationTrapConverter::89a3d225 NegationTrapConverter::89a3d225
NegationTrapConverter::89a3d225 NegationTrapConverter::89a3d225
SelectiveTextConverter::91a088c0 SelectiveTextConverter::91a088c0
ZalgoConverter::78d075f9 ZalgoConverter::78d075f9
ValueError: Instance 'NegationTrapConverter::89a3d225' already exists
Screenshots
N/A
Versions
- OS: Windows 11
- Python version: 3.11.9
- PyRIT version: installed from main (5b594e00) in editable mode
- Langage dominant
- Python
- Étoiles
- 4.7k
- Forks
- 1k
- Merge moyen
- 2 j 4 h
- PR mergées (30 j)
- 484
Préparer son environnement
Lance le conteneur de développement du projet dans votre navigateur, avec votre propre compte GitHub.
- Aucun Dockerfile ni fichier Docker Compose
- Propose un modèle de pull request
- Aucun guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de microsoft/PyRIT
-
Scenario objective previews can split supplementary Unicode during truncationPeut-être pris @Aadithya-kl l’a pris il y a 1 jour. OuverteBug: triage help wanted
Difficulté 2/5 1-3 heures Accessibilité débutants 82/100
microsoft/PyRIT#3870 · 1 commentaire · 1 personne assignée ·
Les mainteneurs répondent en général sous 2 jours
-
URLDataTypeSerializer treats mixed-case HTTP(S) schemes as local pathsPeut-être pris @akhil9tiet l’a pris il y a 1 jour. OuverteBug: triage help wanted
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
microsoft/PyRIT#3861 · 1 commentaire · 1 personne assignée ·
Les mainteneurs répondent en général sous 2 jours
-
Parameter required status is lost after wire round-tripPeut-être pris @its-amann l’a pris il y a 1 jour. OuverteBug: triage help wanted
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
microsoft/PyRIT#3854 · 1 commentaire · 1 personne assignée ·
Les mainteneurs répondent en général sous 2 jours
-
BUG: LLMGenericTextConverter identifier changes between processes for set-valued template parametersPeut-être pris @samrudhi03 l’a pris il y a 1 jour. OuverteBug: triage
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
microsoft/PyRIT#3841 · 1 commentaire · 1 personne assignée ·
Les mainteneurs répondent en général sous 2 jours
-
BUG: SelfAskGeneral scorers leave their output keys out of the identifierPeut-être pris @Hrushikesh-ramilla l’a pris il y a 2 jours. OuverteBug: triage
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
Les mainteneurs répondent en général sous 2 jours
Toutes les issues de microsoft/PyRIT
Issues similaires
-
bug
Difficulté 2/5 1-3 heures Accessibilité débutants 69/100
jejjohnson/gaussx#752 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 1/5 Moins d'une heure Accessibilité débutants 85/100
521xueweihan/HelloGitHub#4270 ·
-
enhancement owner: den-haag
Difficulté 2/5 1-3 heures Accessibilité débutants 67/100
Les mainteneurs répondent en général sous 6 jours
-
Difficulté 2/5 1-3 heures Accessibilité débutants 78/100
ok-oldking/ok-wuthering-waves#1828 ·
Les mainteneurs répondent en général sous 1 jour
-
lesson-submission pending-review
Difficulté 1/5 Moins d'une heure Accessibilité débutants 65/100
Ikalus1988/MisakaNet#4512 ·
Les mainteneurs répondent en général sous 1 jour