{"id":39688885,"url":"https://github.com/virg736/usb-detection-linux","last_synced_at":"2026-01-18T10:03:41.237Z","repository":{"id":307334714,"uuid":"1029182553","full_name":"virg736/usb-detection-linux","owner":"virg736","description":"Projet pédagogique pour détecter et surveiller les clés USB sous Linux  ( kali, Virtualbox).","archived":false,"fork":false,"pushed_at":"2025-09-13T12:24:28.000Z","size":6075,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-09-13T14:45:37.782Z","etag":null,"topics":["cybersecurity","education","iot-security","linux","monitoring","python","usb"],"latest_commit_sha":null,"homepage":"https://virg736.github.io/","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/virg736.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-07-30T16:37:55.000Z","updated_at":"2025-09-13T12:24:31.000Z","dependencies_parsed_at":"2025-07-30T19:05:13.439Z","dependency_job_id":"ac6ac6e4-168d-46f7-8ca2-695c02cbe85f","html_url":"https://github.com/virg736/usb-detection-linux","commit_stats":null,"previous_names":["virg736/usb-detection-linux"],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/virg736/usb-detection-linux","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/virg736%2Fusb-detection-linux","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/virg736%2Fusb-detection-linux/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/virg736%2Fusb-detection-linux/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/virg736%2Fusb-detection-linux/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/virg736","download_url":"https://codeload.github.com/virg736/usb-detection-linux/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/virg736%2Fusb-detection-linux/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28534205,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-18T00:39:45.795Z","status":"online","status_checked_at":"2026-01-18T02:00:07.578Z","response_time":98,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["cybersecurity","education","iot-security","linux","monitoring","python","usb"],"created_at":"2026-01-18T10:03:38.599Z","updated_at":"2026-01-18T10:03:41.231Z","avatar_url":"https://github.com/virg736.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🐧 Détection et Surveillance des Clés USB sous Linux\r\n\r\n\r\n![Version](https://img.shields.io/badge/version-1.0.0-blue.svg)\r\n![Licence](https://img.shields.io/badge/license-MIT-green.svg)\r\n\r\n\r\n\u003cp align=\"center\"\u003e\r\n\u003cimg src=\"linuxusb.PNG\" alt=\"Illustration USB\" width=\"600\"/\u003e\r\n\u003c/p\u003e\r\n\r\n\u003cp align=\"center\"\u003e\u003ci\u003eIllustration d’un script de détection USB sous Linux\u003c/i\u003e\u003c/p\u003e\r\n\r\n\u003cp align=\"center\"\u003e\r\n© 2025 \u003cstrong\u003eVirginie Lechene\u003c/strong\u003e - Tous droits réservés\u003cbr\u003e\r\nReproduction interdite sans autorisation préalable.\u003cbr\u003e\r\nUsage pédagogique uniquement.\r\n\u003c/p\u003e\r\n\r\n\u003cp align=\"center\"\u003e\r\n\u003cimg src=\"https://licensebuttons.net/l/by-nd/3.0/88x31.png\" alt=\"Creative Commons BY-ND\"\u003e\r\n\u003c/p\u003e\r\n\r\n\u003cp align=\"center\"\u003e\u003cstrong\u003eImage protégée - Propriété exclusive\u003c/strong\u003e\u003c/p\u003e\r\n\r\n----\r\n\r\nSommaire \r\n\r\n\r\n- [Objectif du projet](#objectif-du-projet)\r\n- [Pourquoi la sécurité USB est essentielle](#pourquoi-la-sécurité-usb-est-essentielle)\r\n- [À qui s’adresse ce projet](#à-qui-sadresse-ce-projet)\r\n- [Niveaux du projet](#niveaux-du-projet)\r\n- [Niveau débutant](#niveau-débutant)\r\n- [Niveau intermédiaire](#niveau-intermédiaire)\r\n- [Niveau avancé](#niveau-avancé)\r\n- [Utilisation des scripts](#utilisation-des-scripts)\r\n- [Licence](#licence)\r\n- [FAQ](#faq)\r\n\r\n---\r\n\r\n## Objectif du projet\r\n\r\nCe projet a pour but de détecter et surveiller les périphériques USB sur un système Linux.\r\nIl est structuré en trois niveaux de difficulté, permettant une montée progressive en compétences :\r\n\r\n- Lister les périphériques USB connectés\r\n- Simuler une clé USB pour tester la logique de détection\r\n- Détecter automatiquement une clé USB réelle en temps réel\r\n\r\n\u003e Ce projet est conçu à des fins pédagogiques et a été testé dans un environnement **Kali Linux sous VirtualBox**.\r\n \r\n💡 Idéal pour les débutants souhaitant comprendre comment Linux gère les périphériques USB au niveau système.\r\n\r\n---\r\n\r\n💡 Pourquoi la sécurité USB est essentielle\r\n\r\nLes clés USB sont souvent utilisées comme vecteurs d’attaque :\r\n\r\n- Introduction de malwares (clé infectée)\r\n- Vol de données\r\n- Attaques physiques via périphériques déguisés (BadUSB)\r\n- Accès non autorisé dans des environnements sensibles\r\n\r\nIl est donc **essentiel de surveiller** tout périphérique USB connecté à une machine, notamment sur les postes critiques, afin de prévenir tous comportements non autorisés.\r\n\r\n---\r\n\r\nℹ️ À propos de l’exécution des scripts\r\n\r\nusb_devices_info.sh fonctionne sur toute machine Linux pour lister les périphériques USB connectés.\r\n\r\nsimulate_usb.py permet de tester la logique de détection sans clé USB physique, en simulant une insertion via un dossier local.\r\n\r\nusb_detector.py nécessite un système Linux avec un port USB physique. Il ne peut pas être exécuté dans GitHub Actions (cloud), uniquement sur une machine locale.\r\n\r\n Ce projet est conçu à des fins pédagogiques, pour comprendre les mécanismes de surveillance des périphériques USB sous Linux.\r\n\r\n---\r\n\r\n❓ Pourquoi ne pas simplement utiliser lsusb ?\r\n \r\nCe projet ne se limite pas à un simple alias de commande comme lsusb.\r\n\r\nLa commande lsusb affiche uniquement la liste des périphériques connectés à un instant T.\r\n\r\nElle ne permet pas de :\r\n\r\ndétecter en temps réel l’insertion ou le retrait d’un périphérique,\r\n\r\nsavoir où le périphérique est monté dans le système,\r\n\r\naccéder automatiquement à son contenu,\r\n\r\nou déclencher une surveillance automatisée.\r\n\r\n\r\n---\r\n\r\n## À qui s’adresse ce projet\r\n\r\n### Public visé \u0026 Objectifs pédagogiques\r\nCe projet pédagogique s'adresse à différents profils, chacun pouvant y trouver un objectif spécifique :\r\n\r\n| Public | Objectifs |\r\n|---------------------------|-----------|\r\n| **Étudiants en cybersécurité** | Comprendre les risques USB et créer ses premiers scripts |\r\n| **Formateurs / enseignants** | Appui pour travaux pratiques encadrés (TP) |\r\n| **Administrateurs système** | Surveiller les postes sensibles pour des connexions USB |\r\n| **Pentesters / pros sécurité** | Démontrer les vecteurs d’intrusion physiques |\r\n\r\n---\r\n\r\n## Niveaux du projet\r\n\r\n### Niveau débutant\r\n\r\n**Objectif** : Identifier les périphériques USB connectés via des commandes de base.\r\n\r\n**Script :** `usb_devices_info.sh`\r\n\r\nbash\r\n#!/bin/bash\r\n\r\necho \"Liste des périphériques USB connectés :\"\r\nlsusb\r\n\r\necho -e \"\\nPériphériques montés :\"\r\nlsblk\r\n\r\n📸 Captures d’écran :\r\n\r\n![Contenu du script `usb_devices_info.sh`](securite2.PNG)\r\n*Affichage du script dans Nano*\r\n\r\n\r\n![Résultat du script `usb_devices_info.sh`](secure3.PNG)\r\n*Exécution dans le terminal sous Kali Linux*\r\n\r\n📄 Contenu du script `usb_devices_info.sh`\r\n![Script débutant](scriptdebutant.PNG)\r\n\r\n\r\n---\r\n\r\n### Niveau intermédiaire\r\n\r\n**Objectif** : Simuler l’insertion d’une clé USB en utilisant un dossier comme point de montage.\r\n\r\nCe niveau permet de tester la logique de détection **sans clé USB physique**, à l'aide d'une **clé USB virtuelle** (un simple dossier).\r\n\r\n---\r\n\r\n###  Étapes réalisées\r\n\r\n1. Création d’un dossier simulant une clé USB :\r\nbash\r\nmkdir -p /media/usb_simulation\r\ntouch /media/usb_simulation/test_usb.txt\r\n\r\nCréation du script simulate_usb.py :\r\n\r\nimport os\r\nimport time\r\n\r\nusb_path = \"/media/usb_simulation\"\r\n\r\nprint(\"Surveillance de la clé USB simulée... (Ctrl+C pour quitter)\")\r\nwhile True:\r\nif os.path.exists(usb_path):\r\nprint(\"Clé USB simulée détectée !\")\r\nbreak\r\ntime.sleep(1)\r\n\r\nchmod +x simulate_usb.py\r\n./simulate_usb.py\r\n\r\n---\r\n\r\n**\"J'ai créé une clé USB virtuelle, un script de détection, et je l'ai testé dans le terminal.\"**\r\n\r\n### 📸 Captures d’écran\r\n\r\n![Création du dossier simulant une clé USB](securite6.PNG) \r\n*Dossier `/media/usb_simulation` et fichier `test_usb.txt` utilisés pour simuler une clé USB*\r\n\r\n![Écriture du script `simulate_usb.py`](securite4.PNG) \r\n*Script Python chargé de détécter la présence de la \"clé USB simulée\"*\r\n\r\n![Exécution du script `simulate_usb.py`](securite5.PNG) \r\n*La clé USB simulée est détectée avec succès par le script*\r\n\r\n📄 Contenu du script `simulate_usb.py`\r\n![Script intermédiaire](scriptintermédiaire.PNG)\r\n*Script Python chargé de détecter la présence d’une \"clé USB simulée\"*\r\n\r\n---\r\n\r\n### Niveau avancé\r\n\r\n**Objectif** : Détecter en **temps réel l’insertion d’une vraie clé USB** grâce à la bibliothèque `pyudev`.\r\n\r\nContrairement au niveau intermédiaire (clé simulée via dossier), ici le test est réalisé **avec une véritable clé USB physique**, branchée sur la machine.\r\n\r\nLe script Python s’appuie sur le système d’événements `udev` de Linux pour intercepter automatiquement toute connexion d’un périphérique USB de stockage.\r\n\r\n---\r\n\r\n### 📸 Captures d’écran\r\n\r\n![Installation et exécution du script](secure8.PNG)\r\n*Installation de `pyudev` et lancement du script en attente d’une clé USB*\r\n\r\n![Clé détectée (non montée)](secure9.PNG)\r\n*Détection effective d’une vraie clé USB physique (ex. : /dev/sdb1)*\r\n\r\n📄 Contenu du script `usb_detector.py`\r\n![Script avancé](scriptavancé.PNG)\r\n*Script Python chargé de détecter une vraie clé USB physique via `pyudev`*\r\nCe projet contient un script Python permettant de détecter l'insertion d'une clé USB en temps réel sous Linux.\r\n⚠️ Ce script nécessite un environnement avec un port USB réel (pas exécutable dans GitHub Actions).\r\n\r\n\r\n---\r\n\r\n## Utilisation des scripts\r\n\r\nL’usage des clés USB peut représenter un risque majeur pour la sécurité d’un système, en particulier dans des environnements sensibles (entreprises, laboratoires, établissements scolaires, etc.).\r\n\r\n\r\n\r\nCe projet prend tout son sens dans ce contexte, car il permet :\r\n\r\n🔥 D’identifier les risques liés aux clés USB : propagation de malwares (virus, chevaux de Troie, ransomwares…)\r\n\r\n🕵️‍♂️ De détecter les tentatives de vol de données (copier-coller sauvage, extraction manuelle…)\r\n\r\n🧨 De simuler ou repérer des attaques physiques (ex : BadUSB)\r\n\r\n🚫 De bloquer l’accès non autorisé à un système via des périphériques inconnus\r\n\r\n🖥️ De protéger les postes critiques, notamment dans les environnements industriels ou éducatifs\r\n\r\n🎓 D’offrir un support pédagogique concret pour :\r\n\r\nApprendre à détecter automatiquement l’insertion ou le retrait d’une clé USB\r\n\r\nCréer des bases de détection automatisée (alertes, journalisation, blocage, etc.)\r\n\r\n\r\n\r\n⚠️ Le script avancé nécessite un environnement avec un port USB réel. Il n’est pas exécutable dans GitHub Actions (cloud).\r\n\r\n---\r\n\r\n## Licence\r\n\r\nLe script est publié sous la licence MIT.\r\n🔒 Avertissement sur les modifications\r\n\r\nCe script est fourni à des fins pédagogiques en l’état.\r\n\r\nL’autrice décline toute responsabilité en cas de modification, dérivation ou adaptation du code source.\r\n\r\nToute altération, réutilisation ou redistribution du script se fait sous l’entière responsabilité de l’utilisateur\r\n\r\n---\r\n\r\nℹ️ **À propos de l’usage**\r\nCe projet est destiné exclusivement à des fins pédagogiques :\r\n- Formations en cybersécurité\r\n- Tests d’intrusion légaux (pentests)\r\n- Analyse ou audit en environnement contrôlé\r\n\r\nL’autrice ne cautionne ni n’autorise l’usage, en dehors d’un cadre légal strictement défini.\r\nToute utilisation non conforme est interdite et relève de la responsabilité exclusive de l’utilisateur.\r\n\r\n---\r\n\r\n **Droits sur les visuels**\r\nLes visuels, illustrations ou captures présents dans ce dépôt sont la propriété exclusive de l’autrice.\r\nToute reproduction ou réutilisation sans autorisation préalable est interdite.\r\n\r\n© 2025 Virginie Lechene - Tous droits réservés.\r\n\r\n\r\n\r\n---\r\n\r\n##  FAQ \r\n\r\n### 💡 Est-ce que ces scripts fonctionnent sous Windows ou macOS ?\r\nNon. Le projet est conçu pour fonctionner exclusivement sous Linux (testé avec Kali Linux).  \r\nLes commandes utilisées (comme `lsusb`, `udev`, `mount`, etc.) sont spécifiques à Linux.\r\n\r\n---\r\n\r\n###  Pourquoi les scripts ne sont pas exécutables dans GitHub Actions ?\r\nGitHub Actions n’offre pas d’accès physique aux ports USB.  \r\nLes scripts doivent être testés sur une machine locale avec du matériel USB réel pour fonctionner correctement.\r\n\r\n---\r\n\r\n###  À quoi sert la simulation de clé USB avec un dossier ?\r\nC’est un moyen simple et pédagogique de tester une détection d’insertion sans matériel.  \r\nCela permet aux débutants de comprendre la logique d’un script de surveillance avant de brancher une vraie clé USB.\r\n\r\n---\r\n\r\n### 🔐 Est-ce que ce projet remplace un antivirus ou un outil de sécurité professionnel ?\r\nNon. Ce projet a une visée pédagogique. Il ne remplace pas une solution de sécurité.  \r\nIl est cependant utile pour comprendre les risques liés aux périphériques USB et apprendre à s’en protéger.\r\n\r\n---\r\n\r\n###  Puis-je utiliser ce projet pour surveiller les USB dans une entreprise ?\r\nCe n’est pas recommandé tel quel. Il faudrait renforcer les scripts (logs, alertes, blocages…) pour un usage professionnel.  \r\nMais c’est une bonne base de réflexion pour bâtir une solution plus complète.\r\n\r\n---\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvirg736%2Fusb-detection-linux","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fvirg736%2Fusb-detection-linux","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fvirg736%2Fusb-detection-linux/lists"}