Skip to content

Repository files navigation

đŸ›Ąïž VT TUI Scanner

CI Security License: MIT Python 3.9+ Stars Forks

📋 Description DĂ©taillĂ©e

VT TUI Scanner est une application terminal moderne et interactive (TUI - Terminal User Interface) conçue pour faciliter l'analyse de fichiers, de dossiers et d'URLs via l'API VirusTotal. Développé en Python avec le framework Textual, cet outil offre une expérience utilisateur riche tout en restant léger et cross-platform.

🎯 Pourquoi VT TUI Scanner ?

Dans un contexte de cybersĂ©curitĂ© oĂč la rapiditĂ© et l'efficacitĂ© sont cruciales, VT TUI Scanner rĂ©pond aux besoins des professionnels de la sĂ©curitĂ©, des administrateurs systĂšme et des dĂ©veloppeurs qui souhaitent :

  • Automatiser l'analyse de multiples fichiers sans interface graphique lourde
  • Surveiller des dossiers sensibles en temps rĂ©el
  • Exporter des rapports d'analyse pour audit et conformitĂ©
  • Respecter les limites de l'API VirusTotal (rate-limiting intelligent)
  • IntĂ©grer facilement dans des pipelines CI/CD et des conteneurs Docker

🔐 Cas d'Usage Principaux

  1. Analyse de Fichiers Suspicious - Scanner rapidement des fichiers téléchargés ou reçus
  2. Surveillance de Dossiers - Monitorer des dossiers de téléchargement ou de partage
  3. Vérification d'URLs - Valider la sécurité de liens avant clic
  4. Reporting de Sécurité - Générer des rapports pour audits internes
  5. Intégration DevSecOps - Inclure dans des pipelines de sécurité automatisés

✹ FonctionnalitĂ©s ComplĂštes

đŸ–„ïž Interface TUI Moderne

  • Navigation clavier et souris intuitive
  • ThĂšmes sombre/clair configurables
  • Barres de progression en temps rĂ©el
  • Tableaux de rĂ©sultats interactifs
  • Logs visibles directement dans l'interface

📁 CapacitĂ©s de Scan

Type Description Rate-Limit Aware
Fichier Unique Analyse d'un fichier spĂ©cifique ✅
Dossier Complet Scan rĂ©cursif avec filtrage par extension ✅
Surveillance Watch mode pour nouveaux/modifiĂ©s fichiers ✅
URL VĂ©rification de liens web ✅
Batch Multiple URLs en une session ✅

📊 Export et Reporting

  • JSON - Format structurĂ© pour intĂ©gration API
  • CSV - Compatible Excel/Sheets pour reporting
  • Historique Local - Tracking des scans prĂ©cĂ©dents
  • Timestamps - Horodatage prĂ©cis de chaque analyse

🔒 SĂ©curitĂ© et ConfidentialitĂ©

  • API keys via variables d'environnement (jamais en dur)
  • Fichier .env ignorĂ© par Git (.gitignore configurĂ©)
  • Logs sĂ©curisĂ©s sans donnĂ©es sensibles
  • Respect strict des quotas API VirusTotal

🐳 DĂ©ploiement Flexible

  • Native - Installation Python standard
  • Docker - Conteneurisation prĂȘte Ă  l'emploi
  • Headless - Mode sans TUI pour automation
  • CI/CD - Workflows GitHub Actions inclus

📋 PrĂ©requis Techniques

SystĂšme d'Exploitation

  • ✅ Windows 10/11 (TestĂ© sur Windows 11 Enterprise)
  • ✅ macOS 12+ (Monterey, Ventura, Sonoma)
  • ✅ Linux (Ubuntu 20.04+, Debian 11+, CentOS 8+)

Python

  • Version minimale : Python 3.9
  • Version recommandĂ©e : Python 3.11+
  • Gestionnaire de paquets : pip inclus

API VirusTotal

  • Compte gratuit : virustotal.com
  • API Key gratuite : 4 req/min, 500 req/jour
  • API Key premium : Limites Ă©tendues disponibles

Outils Optionnels

  • Git - Pour cloner le repository
  • Docker - Pour usage containerisĂ©
  • GitHub CLI (gh) - Pour crĂ©ation rapide de repo

🚀 Installation Complùte

Méthode 1 : Installation depuis Source (Recommandée)

# 1. Cloner le repository
git clone https://github.com/valorisa/vt-tui-scanner.git
cd vt-tui-scanner

# 2. Créer un environnement virtuel
python -m venv venv

# 3. Activer l'environnement (PowerShell)
.\venv\Scripts\Activate.ps1

# 4. Installer les dépendances
pip install -r requirements.txt

# 5. Configurer l'API Key
copy .env.example .env
# Éditer .env et ajouter votre VT_API_KEY

Méthode 2 : Installation Docker

# Build de l'image
docker build -t vt-tui-scanner .

# Run avec variable d'environnement
docker run -it -e VT_API_KEY=votre_cle vt-tui-scanner

# Ou avec docker-compose
docker-compose up vt-scanner

MĂ©thode 3 : Installation PyPI (À venir)

pip install vt-tui-scanner

⚙ Configuration DĂ©taillĂ©e

Configuration de l'API Key

Option A : Fichier .env (Recommandé)

# Copier le fichier exemple
copy .env.example .env

# Éditer avec votre Ă©diteur prĂ©fĂ©rĂ©
notepad .env

# Ajouter votre clé
VT_API_KEY=votre_cle_api_virustotal_ici

Option B : Variable d'Environnement SystĂšme

# PowerShell (session actuelle)
$env:VT_API_KEY = "votre_cle_api"

# PowerShell (permanent - nécessite admin)
[Environment]::SetEnvironmentVariable("VT_API_KEY", "votre_cle", "User")

# CMD (permanent)
setx VT_API_KEY "votre_cle"

Option C : Variable d'Environnement Docker

# docker-compose.yml
environment:
  - VT_API_KEY=${VT_API_KEY}

Fichier de Configuration config.yaml

# Configuration complĂšte VT TUI Scanner

# Intervalle de surveillance de dossier (en secondes)
scan_interval: 3600

# Export automatique des résultats
auto_export: true

# Format d'export (json, csv, both)
export_format: json

# Niveau de log (DEBUG, INFO, WARNING, ERROR)
log_level: INFO

# Fichier d'historique des scans
history_file: scan_history.json

# Interface
dark_mode: true

# Chemins
exports_directory: ./exports
logs_directory: ./logs

đŸ’» Guide d'Utilisation Complet

Lancement de l'Interface TUI

# Mode interactif avec TUI
python -m src.main

# Ou aprĂšs installation
vt-tui-scanner

Navigation TUI :

Touche Action
q Quitter l'application
d Basculer mode sombre/clair
f Scanner un fichier
d Scanner un dossier
u Scanner une URL
r Voir les résultats
s ParamĂštres
1-4 Navigation rapide

Mode Headless (Automation)

# Scanner un fichier unique
vt-tui-scanner --headless --file C:\Downloads\suspect.exe

# Scanner un dossier complet
vt-tui-scanner --headless --dir C:\Downloads

# Scanner une URL
vt-tui-scanner --headless --url https://example.com/suspicious-link

# Avec export des résultats
vt-tui-scanner --headless --dir C:\Downloads --export json

# Mode verbose pour debugging
vt-tui-scanner --headless --file test.exe --verbose

Options de Ligne de Commande

usage: vt-tui-scanner [-h] [--headless] [--file FILE] [--url URL] 
                      [--dir DIR] [--config CONFIG] [--export {json,csv,both}] 
                      [--verbose] [--version]

Options:
  --headless          Exécuter sans interface TUI (automation/CI)
  --file FILE         Chemin du fichier Ă  scanner
  --url URL           URL Ă  analyser
  --dir DIR           Dossier à scanner (récursif)
  --config CONFIG     Fichier de configuration (défaut: config.yaml)
  --export FORMAT     Format d'export (json, csv, both)
  --verbose, -v       Activer les logs détaillés
  --version           Afficher la version

📊 Exemples de Sortie

Résultat de Scan (Console)

[2024-01-15 10:30:45] [INFO] VT TUI Scanner starting...
[2024-01-15 10:30:46] [INFO] VTClient initialized
[2024-01-15 10:30:47] [INFO] Uploading file for scan: C:\Downloads\file.exe
[2024-01-15 10:31:15] [INFO] Scan complete: 0/72 detections
[2024-01-15 10:31:15] [INFO] Exported 1 results to exports\scan_results_20240115_103115.json

Export JSON (Extrait)

{
  "export_date": "2024-01-15T10:31:15.123456",
  "total_scans": 1,
  "results": [
    {
      "timestamp": "2024-01-15T10:31:15",
      "scan_type": "file",
      "target": "C:\\Downloads\\file.exe",
      "hash": "abc123def456...",
      "positives": 0,
      "total": 72,
      "status": "completed",
      "permalink": "https://www.virustotal.com/file/abc123...",
      "risk_level": "clean"
    }
  ]
}

đŸ§Ș Tests et Validation

Exécuter la Suite de Tests

# Tous les tests
pytest tests/

# Avec rapport de couverture
pytest tests/ --cov=src --cov-report=html

# Test spécifique
pytest tests/test_vt_client.py -v

# Ouvrir le rapport de couverture
start htmlcov\index.html

Validation de Qualité

# Linting
flake8 src/ tests/ --max-line-length=100

# Formatage
black src/ tests/

# Type checking
mypy src/

🔧 DĂ©pannage (Troubleshooting)

ProblÚme : API Key non trouvée

# Vérifier la variable
echo $env:VT_API_KEY

# Si vide, reconfigurer
copy .env.example .env
# Éditer .env avec votre clĂ©

ProblĂšme : Rate Limit Exceeded

Solution : L'API gratuite est limitée à 4 req/min et 500 req/jour.
- Attendre la fin de la fenĂȘtre de rate-limit
- Utiliser le file tracking pour éviter les re-scans
- Considérer une API key premium pour usage intensif

ProblÚme : Module non trouvé

# Réinstaller les dépendances
pip install -r requirements.txt --force-reinstall

# Vérifier l'environnement virtuel
.\venv\Scripts\Activate.ps1

ProblĂšme : TUI ne s'affiche pas correctement

# Mettre Ă  jour Textual
pip install --upgrade textual

# Vérifier la taille du terminal
# La TUI nécessite minimum 80x24 caractÚres

📁 Structure du Projet

vt-tui-scanner/
├── src/                      # Code source principal
│   ├── __init__.py           # Package initialization
│   ├── main.py               # Entry point
│   ├── tui/                  # Interface utilisateur
│   │   ├── app.py            # Application principale
│   │   ├── screens.py        # Écrans TUI
│   │   └── widgets.py        # Widgets personnalisĂ©s
│   ├── scanner/              # Logique de scan
│   │   ├── vt_client.py      # Client API VirusTotal
│   │   ├── file_scanner.py   # Scan de fichiers
│   │   └── url_scanner.py    # Scan d'URLs
│   ├── utils/                # Utilitaires
│   │   ├── config.py         # Configuration
│   │   ├── logger.py         # Logging
│   │   └── export.py         # Export rĂ©sultats
│   └── models/               # ModĂšles de donnĂ©es
│       └── scan_result.py    # ModĂšle de rĂ©sultat
├── tests/                    # Tests unitaires
├── .github/workflows/        # CI/CD
├── exports/                  # RĂ©sultats exportĂ©s
├── .env.example              # Template configuration
├── .gitignore                # Git exclusions
├── Dockerfile                # Containerisation
├── docker-compose.yml        # Orchestration
├── requirements.txt          # DĂ©pendances Python
├── pyproject.toml           # Configuration projet
├── LICENSE                   # Licence MIT
├── README.md                 # Ce fichier
├── CONTRIBUTING.md           # Guide contribution
└── CHANGELOG.md              # Historique versions

🔒 Notes de SĂ©curitĂ© Importantes

⚠ Avertissements

  1. API Key - Ne jamais commiter .env dans Git
  2. Fichiers Scannés - Les fichiers uploadés sont stockés par VirusTotal
  3. Données Sensibles - Ne pas scanner de fichiers contenant des secrets
  4. Rate Limiting - Respecter les quotas pour éviter le bannissement

✅ Bonnes Pratiques

  • Utiliser des API keys dĂ©diĂ©es par projet
  • Rotater les clĂ©s rĂ©guliĂšrement
  • Monitorer l'usage API dans le dashboard VirusTotal
  • Chiffrer les exports contenant des rĂ©sultats sensibles

đŸ€ Contribuer au Projet

Comment Contribuer ?

  1. Fork le repository
  2. Créer une branche feature (git checkout -b feature/amazing-feature)
  3. Commit les changements (git commit -m 'Add amazing feature')
  4. Push vers la branche (git push origin feature/amazing-feature)
  5. Pull Request vers main

Standards de Code

  • PEP 8 - Style Python officiel
  • Type Hints - Annotations de type obligatoires
  • Docstrings - Google style pour documentation
  • Tests - Couverture minimale 70% sur fonctions critiques

Voir CONTRIBUTING.md pour le guide complet.


📄 Licence

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

Vous Pouvez :

  • ✅ Utiliser commercialement
  • ✅ Modifier le code
  • ✅ Distribuer des copies
  • ✅ Utiliser dans des projets privĂ©s

Vous Devez :

  • â„č Inclure la notice de copyright
  • â„č Inclure la licence dans les distributions

🙏 Remerciements

  • VirusTotal - Pour l'API gratuite et les services
  • Textual - Framework TUI exceptionnel
  • Python Community - Pour l'Ă©cosystĂšme riche
  • Tous les contributeurs - Pour leurs amĂ©liorations

📞 Support et Contact

Canal Lien
🐛 Issues GitHub Issues
📖 Wiki GitHub Wiki
📧 Email community@example.com
💬 Discussions GitHub Discussions

📈 Roadmap

Version 1.0 (Actuelle)

  • TUI de base
  • Scan fichiers/URLs
  • Export JSON/CSV
  • Docker support
  • CI/CD pipeline

Version 1.1 (Planifiée)

  • Notifications desktop
  • Scan planifiĂ© (cron-like)
  • ThĂšmes personnalisables
  • Support multi-API keys

Version 2.0 (Future)

  • Interface GUI optionnelle
  • Multi-threading pour gros dossiers
  • IntĂ©gration autres plateformes TI
  • SystĂšme de plugins

⭐ Si vous aimez ce projet, n'oubliez pas de mettre une étoile sur GitHub ! ⭐

Faire un Star | Fork | Issues

About

đŸ›Ąïž VT TUI Scanner - Cross-platform TUI application for VirusTotal scanning with rate-limit awareness, directory monitoring, and export capabilities. Built with Python & Textual.

Topics

Resources

Contributing

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages