Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
ODPure — Défense de purification en entrée en boîte noire qui neutralise les attaques par porte dérobée sur les détecteurs d'objets via corruption, reconstruction par diffusion et vote consensuel DBSCAN. | Kitploit
Outils/GitHubGitHub/alex66366/odpure
Outils DéfensifsAnalyse Dynamique (Sandboxing)Analyse des VulnérabilitésApprentissage AutomatiqueArticles et RechercheSécurité de l'IAAttaque Adversariale
GitHubalex66366/odpure

ODPure

Défense de purification en entrée en boîte noire qui neutralise les attaques par porte dérobée sur les détecteurs d'objets via corruption, reconstruction par diffusion et vote consensuel DBSCAN.

Voir le dépôt
118il y a 11 joursPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

ODPure : Purification de porte dérobée pour la détection d'objets via consensus de corruption d'ensemble

La première défense de purification en boîte noire au stade de l'entrée, conçue pour les détecteurs d'objets contre les attaques par porte dérobée.

License: MIT

📖 Aperçu

ODPure est le premier framework de purification en boîte noire au stade de l'entrée, conçu pour défendre les détecteurs d'objets contre les attaques par porte dérobée. Il met en œuvre un nouveau paradigme Corruption-Reconstruction-Sélection (CRS) qui :

  1. Corrompt les images d'entrée avec diverses perturbations pour perturber les motifs de déclenchement
  2. Reconstruit les caractéristiques structurelles fines à l'aide de priors de diffusion génératifs
  3. Sélectionne les détections à haute confiance via un vote de consensus spatial

ODPure neutralise efficacement diverses attaques par porte dérobée (réduisant le taux de succès de l'attaque jusqu'à 0,0 %) tout en préservant l'utilité de détection propre, offrant des compromis défense-utilité supérieurs aux défenses existantes.

🔑 Caractéristiques principales

  • Défense en boîte noire : Aucun besoin des internes du modèle, des gradients ou des architectures
  • Agnostique au modèle : Fonctionne avec n'importe quel détecteur d'objets (YOLO, Faster R-CNN, etc.)
  • Défense multi-attaques : Gère les types d'attaques OMA, ODA et OGA
  • Zero-Shot : Aucune connaissance préalable des motifs de déclenchement requise
  • Perception continue : Maintient la continuité du flux opérationnel sans rejeter de données
  • 📋 Prérequis

    Configuration système requise

    • Python 3.8+
    • CUDA 11.7+ (pour l'accélération GPU)
    • 16 Go+ de mémoire GPU recommandés

    Dépendances Python

    root@kitploit:~
    # Core dependencies
    torch>=1.13.0
    torchvision>=0.14.0
    numpy>=1.21.0
    Pillow>=9.0.0
    opencv-python>=4.5.0
    
    # Diffusion models
    diffusers>=0.14.0
    transformers>=4.25.0
    accelerate>=0.20.0
    
    # Evaluation
    scikit-learn>=1.2.0  # For DBSCAN clustering
    scipy>=1.9.0
    
    # Data processing
    pyyaml>=6.0
    tqdm>=4.64.0
    

    Configuration de l'environnement Conda (recommandé)

    root@kitploit:~
    # Create conda environment
    conda create -n odpure python=3.9 -y
    conda activate odpure
    
    # Install PyTorch with CUDA
    conda install pytorch torchvision pytorch-cuda=11.7 -c pytorch -c nvidia
    
    # Install other dependencies
    pip install -r requirements.txt
    

    📦 Téléchargement des poids pré-entraînés

    Avant d'exécuter le module de Reconstruction, vous devez télécharger les poids du modèle pré-entraîné :

    Poids requis

    ModèleDescriptionTéléchargement
    DiffBIR v2.1Modèle de restauration principalHuggingFace
    Stable DiffusionPriors de diffusion latenteHuggingFace
    LLaVALégendeur vision-langageHuggingFace
    RAMModèle de reconnaissance conscienteGitHub Release

    Étapes d'installation

    1. Créez le répertoire des poids :
    root@kitploit:~
    mkdir -p Method/Reconstruction/weights
    
    1. Téléchargez et placez les poids en suivant les instructions des dépôts de modèles respectifs.

    2. Mettez à jour les fichiers de configuration dans Method/Reconstruction/configs/ pour pointer vers vos poids téléchargés.

    🏗️ Structure du projet

    root@kitploit:~
    ODPure/
    ├── attack_script/              # Backdoor attack implementations
    │   ├── COCO_chessboard_29x29_OMA.py     # Object Misclassification (Chessboard)
    │   ├── COCO_chessboard_29x29_ODA.py     # Object Disappearance Attack (Chessboard)
    │   ├── COCO_chessboard_9x9_OGA.py      # Object Generation Attack (Chessboard)
    │   ├── COCO_poke_15x15_OMA.py          # OMA (Poké Ball)
    │   ├── COCO_poke_15x15_ODA.py          # ODA (Poké Ball)
    │   ├── COCO_poke_15x15_OGA.py          # OGA (Poké Ball)
    │   ├── COCO_white_15x15_OMA.py         # OMA (Solid White)
    │   ├── COCO_white_15x15_ODA.py         # ODA (Solid White)
    │   └── COCO_white_15x15_OGA.py         # OGA (Solid White)
    │
    ├── Method/                     # Core defense methodology
    │   ├── corruptions/           # Image corruption module
    │   │   ├── imagecorruption.py # Corruption functions
    │   │   └── multiprocess_imagecorruption.py  # Parallel processing
    │   │
    │   ├── Reconstruction/         # Diffusion-based restoration
    │   │   ├── inference.py       # Main inference script
    │   │   ├── diffbir/           # DiffBIR model implementation
    │   │   ├── llava/             # LLaVA captioner
    │   │   ├── ram/               # Recognition-Aware Model
    │   │   ├── configs/           # Model configurations
    │   │   └── weights/           # Model weights (download separately)
    │   │
    │   └── dbscan_vote_new.py     # DBSCAN clustering & voting
    │
    ├── evaluation/                 # Evaluation metrics
    │   ├── OMA_ASR_new.py         # OMA Attack Success Rate
    │   ├── OMA_mAP.py             # OMA Mean Average Precision
    │   ├── ODA_ASR_new.py         # ODA Attack Success Rate
    │   ├── ODA_mAP.py             # ODA Mean Average Precision
    │   ├── OGA_ASR_new.py         # OGA Attack Success Rate
    │   ├── OGA_mAP.py             # OGA Mean Average Precision
    │   ├── val_OMA.py             # YOLO validation for OMA
    │   ├── val_ODA.py             # YOLO validation for ODA
    │   └── val_OGA.py             # YOLO validation for OGA
    │
    ├── data_format_conversion/    # Data format utilities
    │   ├── voc2yolo.py            # VOC to YOLO format conversion
    │   ├── cocotoyolo.py          # COCO to YOLO format conversion
    │   └── select_coco_val_attack_information.py
    │
    ├── ablation_study/            # Ablation experiments
    │   ├── multiprocess_imagecorruption.py
    │   ├── random_select_corruption.py
    │   └── select_specific_corruption.py
    │
    ├── run_pipeline.sh            # One-shot CRS pipeline runner
    └── README.md                 # This file
    

    🚀 Démarrage rapide

    Option A : Pipeline de bout en bout en une seule fois (recommandé)

    Le point d'entrée recommandé est run_pipeline.sh, qui enchaîne les trois étapes CRS :

    root@kitploit:~
    # Defaults: GPU=0, INPUT=inputs/demo/bid, OUTPUT=results/v2.1_demo_bid, ATTACK=ODA
    bash run_pipeline.sh
    
    # Custom arguments: GPU_ID INPUT_DIR OUTPUT_DIR ATTACK
    bash run_pipeline.sh 0 inputs/coco_oda results/oda ODA
    bash run_pipeline.sh 1 inputs/coco_oma results/oma OMA
    bash run_pipeline.sh 2 inputs/coco_oga results/oga OGA
    

    Le script effectue :

    1. Étape 1 (Corruption) – génère 45 variantes corrompues
    2. Étape 2 (Reconstruction) – DiffBIR v2.1 avec légendeur LLaVA
    3. Étape 3 (Sélection) – vote de consensus spatial DBSCAN

    Les détections purifiées finales sont écrites dans <OUTPUT_DIR>/final/.

    Option B : Exécuter chaque étape manuellement

    Utilisez cette option si vous souhaitez inspecter / remplacer les étapes intermédiaires.

    Étape 1 : Corruption

    root@kitploit:~
    python Method/corruptions/multiprocess_imagecorruption.py \
        --input_dir /path/to/input/images \
        --output_dir /path/to/corrupted/images \
        --num_corruptions 45 \
        --num_workers 8
    

    Étape 2 : Reconstruction

    root@kitploit:~
    python Method/Reconstruction/inference.py \
        --task denoise \
        --upscale 2 \
        --version v2.1 \
        --captioner llava \
        --cfg_scale 6 \
        --noise_aug 1 \
        --input /path/to/corrupted/images \
        --output /path/to/restored/images \
        --batch_size 32 \
        --device cuda
    

    Étape 3 : Sélection (vote DBSCAN)

    root@kitploit:~
    python Method/dbscan_vote_new.py \
        --folder_purs /path/to/restored/detections \
        --temp /path/to/temp \
        --output_path /path/to/final/detections \
        --eps 0.5 \
        --min_samples 10
    

    📊 Évaluation

    Étape 1 : Activer l'environnement

    root@kitploit:~
    conda activate odpure
    

    Étape 2 : Exécuter le détecteur sur trois divisions

    root@kitploit:~
    # Run on poisoned inputs (before defense)
    python evaluation/val_ODA.py \
        --weights runs/train/exp/weights/last.pt \
        --data data/ODA_poison.yaml \
        --img 640 --iou-thres 0.65 --conf-thres 0.5 \
        --save-txt --save-conf \
        --project results/poisoned_val_txt
    
    # Run on clean inputs
    python evaluation/val_ODA.py \
        --weights runs/train/exp/weights/last.pt \
        --data data/ODA_clean.yaml \
        --img 640 --iou-thres 0.65 --conf-thres 0.5 \
        --save-txt --save-conf \
        --project results/clean_val_txt
    
    # Run on purified inputs (after defense via ODPure)
    python evaluation/val_ODA.py \
        --weights runs/train/exp/weights/last.pt \
        --data data/ODA_purified.yaml \
        --img 640 --iou-thres 0.65 --conf-thres 0.5 \
        --save-txt --save-conf \
        --project results/pur_val_txt
    

    Étape 3 : Calculer ASR / mAP

    OMA (Attaque de mauvaise classification d'objets)

    root@kitploit:~
    python evaluation/OMA_ASR_new.py
    

    Configurez les chemins dans le script :

    root@kitploit:~
    gt_folder      = "/path/to/ground_truth"
    benign_folder  = "/path/to/clean_val_txt"
    attack_folder  = "/path/to/pur_val_txt"
    target_class   = "0"      # person class
    

    ODA (Attaque de disparition d'objets)

    root@kitploit:~
    python evaluation/ODA_ASR_new.py
    

    OGA (Attaque de génération d'objets)

    root@kitploit:~
    python evaluation/OGA_ASR_new.py
    

    Calculer mAP

    root@kitploit:~
    python evaluation/ODA_mAP.py
    python evaluation/OGA_mAP.py
    python evaluation/OMA_mAP.py
    

    🛡️ Configuration de la défense

    Paramètres ODPure par défaut

    ParamètreValeurDescription
    num_corruptions15 types × 3 sévérités = 45 variantesDiversité de corruption
    corruption_severity1, 2, 3Niveaux d'intensité de corruption
    DBSCAN eps0.5Rayon de regroupement
    DBSCAN min_samples10Seuil de consensus
    cfg_scale6.0Guidage sans classificateur
    noise_aug1Niveau d'augmentation du bruit

    Types de corruption

    ODPure utilise 15 fonctions de corruption diverses réparties en 4 catégories :

    • Bruit : Gaussien, Impulsionnel, Sel et poivre
    • Flou : Gaussien, Verre, Mouvement, Zoom, Défocalisation
    • Météo : Neige, Givre, Brouillard, Luminosité
    • Numérique : Compression JPEG, Pixellisation, Transformation élastique

    🔧 Utilisation avancée

    Corruptions personnalisées

    root@kitploit:~
    from Method.corruptions.imagecorruption import *
    
    # Apply specific corruption
    corrupted_img = gaussian_noise(image, severity=2)
    corrupted_img = glass_blur(image, severity=1)
    corrupted_img = jpeg_compression(image, severity=3)
    

    Traitement multi-GPU

    root@kitploit:~
    # Process on specific GPU
    CUDA_VISIBLE_DEVICES=0 python Method/Reconstruction/inference.py \
        --task denoise --input inputs/demo --output results/demo
    
    # Batch processing with multiple GPUs
    CUDA_VISIBLE_DEVICES=0,1,2,3 python Method/Reconstruction/inference.py \
        --task denoise --batch_size 64 --input inputs/batch --output results/batch
    

    Intégration avec YOLOv5

    root@kitploit:~
    # Train backdoored model
    CUDA_VISIBLE_DEVICES="0,1" python train.py \
        --data data/custom.yaml \
        --epochs 200 \
        --weights checkpoints/yolov5s.pt \
        --img 640 \
        --batch-size 128
    
    # Evaluate with defense
    python evaluation/val_ODA.py \
        --weights runs/train/exp/weights/last.pt \
        --data data/val.yaml \
        --img 640 \
        --iou-thres 0.65 \
        --conf-thres 0.5 \
        --save-txt --save-conf
    

    📈 Résultats expérimentaux

    Performance de défense sur VOC et COCO (déclencheur échiquier)

    AttaqueJeu de données (Modèle)mAP propreAvant défense (mAP/ASR)Après défense (mAP/ASR)
    OMAVOC (YOLO)76.4%8.2% / 87.7%80.5% / 2.0%
    OMAVOC (F-RCNN)79.3%44.9% / 94.6%78.1% / 17.4%
    OMACOCO (YOLO)52.8%0.4% / 94.6%52.0% / 1.5%
    OMACOCO (F-RCNN)49.7%6.3% / 91.9%47.0% / 16.3%
    ODAVOC (YOLO)72.0%71.6% / 96.5%76.7% / 20.8%
    ODAVOC (F-RCNN)77.6%76.4% / 69.3%75.4% / 18.9%
    ODACOCO (YOLO)54.0%52.4% / 99.9%54.1% / 25.4%
    ODACOCO (F-RCNN)50.9%50.3% / 81.7%51.4% / 28.0%
    OGAVOC (YOLO)80.4%78.0% / 65.1%82.2% / 0.0%
    OGAVOC (F-RCNN)83.2%81.2% / 98.4%80.9% / 0.0%
    OGACOCO (YOLO)53.0%52.8% / 99.8%54.4% / 0.0%
    OGACOCO (F-RCNN)48.9%49.1% / 95.4%49.5% / 0.0%

    Robustesse contre les attaques adaptatives

    DéclencheurAttaquemAP propreASR avantASR après
    Poké BallOMA77.3%95.5%19.8%
    Poké BallODA75.3%98.5%35.1%
    Poké BallOGA79.8%96.8%15.4%
    Blanc uniOMA75.5%82.0%52.9%
    Blanc uniODA71.8%71.1%44.0%
    Blanc uniOGA80.2%73.7%37.0%

    🔬 Modèle de menace

    Capacité de l'attaquant

    • Implante une porte dérobée via un empoisonnement des données pendant l'entraînement
    • Manipule les détecteurs pour qu'ils présentent des comportements malveillants (OMA, ODA, OGA)
    • Maintient des prédictions normales sur les entrées propres

    Contraintes du défenseur

    • Agnostique à l'attaque : Aucune connaissance préalable des motifs de déclenchement
    • Boîte noire stricte : Interroge uniquement les entrées et observe les sorties
    • Aucune donnée d'entraînement : Purification uniquement sur les entrées au moment de l'inférence

    Objectifs de défense

    • Sécurité : Atténuer l'activation de la porte dérobée (ASR faible)
    • Fidélité : Maintenir un mAP élevé sur les entrées propres et purifiées

    Types d'attaques

    Type d'attaqueDescriptionComportement
    OMAAttaque de mauvaise classification d'objetsForce les objets cibles à être mal classifiés
    ODAAttaque de disparition d'objetsFait disparaître les objets cibles de la détection
    OGAAttaque de génération d'objetsInduit des objets fantômes hallucinés

    📚 Citation

    Si vous trouvez ce travail utile dans vos recherches, veuillez citer :

    root@kitploit:~
    @article{odpure2026,
      title={ODPure: Backdoor Purification for Object Detection via Ensemble Corruption Consensus},
      author={},
      journal={},
      year={2026}
    }
    

    📝 Licence

    Ce projet est sous licence MIT - voir le fichier LICENSE pour plus de détails.

    🤝 Remerciements

    • DiffBIR - Restauration d'images par diffusion
    • LLaVA - Assistant de langage et de vision à grande échelle
    • YOLOv5 - Framework de détection d'objets
    • CLIP - Pré-entraînement contrastif langage-image

    📧 Contact

    Pour toute question ou collaboration, veuillez ouvrir une issue sur GitHub.


    ODPure - Protéger les systèmes de détection d'objets contre les attaques par porte dérobée tout en maintenant une perception continue.

    Télécharger l’outil