Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
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
usbrip — Suivi de l'historique des événements USB sous GNU/Linux | Kitploit
Outils/GitHubGitHub/snovvcrash/usbrip
Analyse ForensiqueCriminalistique NumériqueRenseignement sur les MenacesRéponse aux IncidentsAnalyse de JournauxArchived
GitHubsnovvcrash/usbrip

usbrip

Suivi de l'historique des événements USB sous GNU/Linux

Voir le dépôt
1.2k113il y a 3 ansVérifié par Kitploit

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
Site web

logo.png


version.svg python.svg license.svg blackarch.svg built-with-love.svg

usbrip (hérité de « USB Ripper », et non de « USB R.I.P. ») est un outil de forensique simple doté d'une interface en ligne de commande qui vous permet de suivre les artefacts de périphériques USB (c'est-à-dire l'historique des événements USB) sur des machines Linux.

Table des matières :

  • Description
  • Quick Start
  • Showcase
  • System Log Structure
  • Dependencies
    • deb
    • pip
  • Manual installation
    • Git Clone
    • install.sh
      • Paths
      • Cron
      • uninstall.sh
  • Usage
    • Synopsis
    • Help
  • Examples
  • Credits & References
  • Stargazers Chart
  • Post Scriptum

Description

usbrip est un petit logiciel qui analyse les données de journaux Linux : la sortie de journalctl ou le contenu des fichiers /var/log/syslog* (ou /var/log/messages*). Sur la base des données collectées, usbrip peut construire des tableaux d'historique des événements USB avec les colonnes suivantes :

  • Connecté (date et heure)
  • Hôte
  • VID (identifiant fournisseur)
  • PID (identifiant produit)
  • Produit
  • Fabricant
  • Numéro de série
  • Port
  • Déconnecté (date et heure)

De plus, il peut également :

  • Exporter les données collectées sous forme de fichier JSON pour une utilisation ultérieure.
  • Générer une liste de périphériques USB autorisés (de confiance) sous forme de fichier JSON (appelé auth.json).
  • Rechercher des « événements de violation » basés sur auth.json : découvrir les périphériques USB qui apparaissent dans l'historique et qui n'apparaissent pas dans le fichier auth.json.
  • *lors de l'installation avec le drapeau -s* Créer des stockages protégés (archives 7-Zip) pour sauvegarder automatiquement et accumuler les événements USB à l'aide du planificateur cron.
  • Rechercher des détails supplémentaires sur un périphérique USB spécifique en fonction de son VID et/ou PID.

Quick Start

Méthode 1. Installer avec pip :

root@kitploit:~
~$ sudo -H python3 -m pip install -U usbrip
~$ usbrip -h

Méthode 2. Installer la version de pointe avec install.sh (recommandé, fonctionnalités supplémentaires disponibles) :

root@kitploit:~
~$ sudo apt install python3-venv p7zip-full -y
~$ git clone https://github.com/snovvcrash/usbrip && cd usbrip
~/usbrip$ sudo -H installers/install.sh
~/usbrip$ cd
~$ usbrip -h

Showcase

showcase.png

Docker (*DÉMO UNIQUEMENT !*)

root@kitploit:~
~$ docker run --rm -it snovvcrash/usbrip

System Log Structure

usbrip prend en charge deux types d'horodatages à analyser dans les fichiers journaux système :

  1. Non modifié – structure syslog standard pour GNU/Linux ("%b %d %H:%M:%S", ex. "Jan 1 00:00:00"). Ce type d'horodatage ne fournit pas l'information sur l'année.
  2. Modifié (recommandé) – meilleure structure syslog qui fournit des horodatages de haute précision incluant les années ("%Y-%m-%dT%H:%M:%S.%f%z", ex. "1970-01-01T00:00:00.000000-00:00").

Si vous avez journalctl installé, il n'y a rien à craindre car il peut convertir les horodatages à la volée. Sinon, la structure syslog souhaitée peut être obtenue en définissant le format RSYSLOG_FileFormat dans la configuration de rsyslog.

  1. Commentez la ligne suivante dans /etc/rsyslog.conf :
root@kitploit:~
$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat
  1. Ajoutez un fichier .conf personnalisé pour usbrip :
root@kitploit:~
~$ echo '$ActionFileDefaultTemplate RSYSLOG_FileFormat' | sudo tee /etc/rsyslog.d/usbrip.conf
  1. *optionnel* Supprimez les fichiers journaux existants :
root@kitploit:~
~$ sudo rm -f /var/log/syslog* /var/log/messages*
  1. Redémarrez le service :
root@kitploit:~
~$ sudo systemctl restart rsyslog

Premièrement, usbrip vérifiera s'il est possible de vider les événements système en utilisant journalctl comme option la plus portable. Si ce n'est pas le cas, il recherchera et analysera les fichiers journaux système /var/log/syslog* ou /var/log/messages*.

Dependencies

deb

  • Interpréteur python3.6 (ou plus récent)
  • python3-venv
  • p7zip-full (utilisé par le module storage)

pip

  • terminaltables
  • termcolor
  • tqdm

Manual installation

Git Clone

Pour simplifier, convenons que toutes les commandes où le préfixe ~/usbrip$ apparaît sont exécutées dans le répertoire ~/usbrip créé à la suite d'un git clone :

root@kitploit:~
~$ git clone https://github.com/snovvcrash/usbrip
~$ cd usbrip
~/usbrip$ pwd

install.sh

En plus de l'installation avec pip, usbrip peut également être installé avec le script personnalisé installers/install.sh.

Lors de l'utilisation de install.sh, certaines fonctionnalités supplémentaires deviennent disponibles :

  • L'environnement virtuel est créé automatiquement.
  • Vous pouvez utiliser le module storage – définir une tâche cron pour sauvegarder les événements USB selon un planning (un exemple de tâche cron se trouve dans usbrip/cron/usbrip.cron).

⚠️ Avertissement : si vous utilisez la planification cron, vous devez configurer le crontab avec sudo crontab -e afin de forcer l'exécution du sous-module storage update en tant que root. Les mots de passe de stockage sont conservés dans /var/opt/usbrip/usbrip.ini et sont accessibles uniquement par root par défaut.

Pour installer usbrip avec install.sh, utilisez :

root@kitploit:~
~/usbrip$ sudo -H installers/install.sh [-l/--local] [-s/--storages]
~/usbrip$ cd
~$ usbrip -h
  • Lorsque le commutateur -l est activé, les dépendances Python sont résolues à partir de paquets .tar locaux (répertoire 3rdPartyTools) au lieu de PyPI.
  • Lorsque le commutateur -s est activé, non seulement le projet usbrip est installé, mais aussi la liste des périphériques USB de confiance, les stockages d'historique et de violations sont créés.

Une fois l'installation terminée, vous pouvez supprimer le répertoire ~/usbrip.

Paths

Lorsqu'il est installé avec install.sh, usbrip utilise les chemins suivants :

  • /opt/usbrip/ – répertoire principal du projet.
  • /var/opt/usbrip/log/ – journaux cron d'usbrip.
  • /var/opt/usbrip/storage/ – stockages d'événements USB (history.7z et violations.7z, créés pendant le processus d'installation).
  • /var/opt/usbrip/trusted/ – listes des périphériques USB de confiance (auth.json, créées pendant le processus d'installation).
  • /var/opt/usbrip/usbrip.ini – fichier de configuration d'usbrip (contient les mots de passe pour les stockages 7-Zip).
  • /usr/local/bin/usbrip – lien symbolique vers le script /opt/usbrip/venv/bin/usbrip.

Cron

Les tâches cron peuvent être définies comme suit :

root@kitploit:~
~/usbrip$ sudo crontab -l > tmpcron && echo "" >> tmpcron
~/usbrip$ cat usbrip/cron/usbrip.cron | tee -a tmpcron
~/usbrip$ sudo crontab tmpcron
~/usbrip$ rm tmpcron

uninstall.sh

Le script installers/uninstall.sh supprime usbrip et tous les artefacts d'installation de votre système.

Pour désinstaller usbrip, utilisez :

root@kitploit:~
~/usbrip$ sudo installers/uninstall.sh [-a/--all]
  • Lorsque le commutateur -a est activé, non seulement le répertoire du projet usbrip est supprimé, mais aussi tous les stockages et les journaux d'usbrip sont supprimés.

N'oubliez pas de supprimer la tâche cron si vous en aviez configuré une.

Usage

Synopsis

root@kitploit:~
# ---------- BANNIÈRE ----------

~$ usbrip banner
Obtenir la bannière d'usbrip.

# ---------- ÉVÉNEMENTS ----------

~$ usbrip events history [-t | -l] [-e] [-n <NUMBER_OF_EVENTS>] [-d <DATE> [<DATE> ...]] [--host <HOST> [<HOST> ...]] [--vid <VID> [<VID> ...]] [--pid <PID> [<PID> ...]] [--prod <PROD> [<PROD> ...]] [--manufact <MANUFACT> [<MANUFACT> ...]] [--serial <SERIAL> [<SERIAL> ...]] [--port <PORT> [<PORT> ...]] [-c <COLUMN> [<COLUMN> ...]] [-f <FILE> [<FILE> ...]] [-q] [--debug]
Obtenir l'historique des événements USB.

~$ usbrip events open <DUMP.JSON> [-t | -l] [-e] [-n <NUMBER_OF_EVENTS>] [-d <DATE> [<DATE> ...]] [--host <HOST> [<HOST> ...]] [--vid <VID> [<VID> ...]] [--pid <PID> [<PID> ...]] [--prod <PROD> [<PROD> ...]] [--manufact <MANUFACT> [<MANUFACT> ...]] [--serial <SERIAL> [<SERIAL> ...]] [--port <PORT> [<PORT> ...]] [-c <COLUMN> [<COLUMN> ...]] [-q] [--debug]
Ouvrir un dump d'événements USB.

~$ sudo usbrip events genauth <OUT_AUTH.JSON> [-a <ATTRIBUTE> [<ATTRIBUTE> ...]] [-e] [-n <NUMBER_OF_EVENTS>] [-d <DATE> [<DATE> ...]] [--host <HOST> [<HOST> ...]] [--vid <VID> [<VID> ...]] [--pid <PID> [<PID> ...]] [--prod <PROD> [<PROD> ...]] [--manufact <MANUFACT> [<MANUFACT> ...]] [--serial <SERIAL> [<SERIAL> ...]] [--port <PORT> [<PORT> ...]] [-f <FILE> [<FILE> ...]] [-q] [--debug]
Générer une liste de périphériques USB de confiance (autorisés).

~$ sudo usbrip events violations <IN_AUTH.JSON> [-a <ATTRIBUTE> [<ATTRIBUTE> ...]] [-t | -l] [-e] [-n <NUMBER_OF_EVENTS>] [-d <DATE> [<DATE> ...]] [--host <HOST> [<HOST> ...]] [--vid <VID> [<VID> ...]] [--pid <PID> [<PID> ...]] [--prod <PROD> [<PROD> ...]] [--manufact <MANUFACT> [<MANUFACT> ...]] [--serial <SERIAL> [<SERIAL> ...]] [--port <PORT> [<PORT> ...]] [-c <COLUMN> [<COLUMN> ...]] [-f <FILE> [<FILE> ...]] [-q] [--debug]
Obtenir les événements de violation USB basés sur la liste des périphériques de confiance.

# ---------- STOCKAGE ----------

~$ sudo usbrip storage list <STORAGE_TYPE> [-q] [--debug]
Lister le contenu du stockage sélectionné. STORAGE_TYPE est soit "history" soit "violations".

~$ sudo usbrip storage open <STORAGE_TYPE> [-t | -l] [-e] [-n <NUMBER_OF_EVENTS>] [-d <DATE> [<DATE> ...]] [--host <HOST> [<HOST> ...]] [--vid <VID> [<VID> ...]] [--pid <PID> [<PID> ...]] [--prod <PROD> [<PROD> ...]] [--manufact <MANUFACT> [<MANUFACT> ...]] [--serial <SERIAL> [<SERIAL> ...]] [--port <PORT> [<PORT> ...]] [-c <COLUMN> [<COLUMN> ...]] [-q] [--debug]
Ouvrir le stockage sélectionné. Se comporte de manière similaire au sous-module EVENTS OPEN.

~$ sudo usbrip storage update <STORAGE_TYPE> [IN_AUTH.JSON] [-a <ATTRIBUTE> [<ATTRIBUTE> ...]] [-e] [-n <NUMBER_OF_EVENTS>] [-d <DATE> [<DATE> ...]] [--host <HOST> [<HOST> ...]] [--vid <VID> [<VID> ...]] [--pid <PID> [<PID> ...]] [--prod <PROD> [<PROD> ...]] [--manufact <MANUFACT> [<MANUFACT> ...]] [--serial <SERIAL> [<SERIAL> ...]] [--port <PORT> [<PORT> ...]] [--lvl <COMPRESSION_LEVEL>] [-q] [--debug]
Mettre à jour le stockage — ajouter des événements USB au stockage existant. COMPRESSION_LEVEL est un nombre entre 0 et 9.

~$ sudo usbrip storage create <STORAGE_TYPE> [IN_AUTH.JSON] [-a <ATTRIBUTE> [<ATTRIBUTE> ...]] [-e] [-n <NUMBER_OF_EVENTS>] [-d <DATE> [<DATE> ...]] [--host <HOST> [<HOST> ...]] [--vid <VID> [<VID> ...]] [--pid <PID> [<PID> ...]] [--prod <PROD> [<PROD> ...]] [--manufact <MANUFACT> [<MANUFACT> ...]] [--serial <SERIAL> [<SERIAL> ...]] [--port <PORT> [<PORT> ...]] [--lvl <COMPRESSION_LEVEL>] [-q] [--debug]
Créer un stockage — créer une archive 7-Zip et y ajouter des événements USB selon les options sélectionnées.

~$ sudo usbrip storage passwd <STORAGE_TYPE> [--lvl <COMPRESSION_LEVEL>] [-q] [--debug]
Changer le mot de passe du stockage existant.

# ---------- IDS ----------

~$ usbrip ids search [--vid <VID>] [--pid <PID>] [--offline] [-q] [--debug]
Obtenir des détails supplémentaires sur un périphérique USB spécifique par son <VID> et/ou <PID> à partir de la base de données USB ID.

~$ usbrip ids download [-q] [--debug]
Mettre à jour (télécharger) la base de données USB ID.

Help

Pour obtenir la liste des noms de modules, utilisez :

root@kitploit:~
~$ usbrip -h

Pour obtenir la liste des noms de sous-modules pour un module spécifique, utilisez :

root@kitploit:~
~$ usbrip <MODULE> -h

Pour obtenir la liste de tous les commutateurs pour un sous-module spécifique, utilisez :

root@kitploit:~
~$ usbrip <MODULE> <SUBMODULE> -h

Examples

  • Afficher l'historique des événements de tous les périphériques USB, en supprimant l'affichage de la bannière, les messages d'information et les interactions utilisateur (-q, --quiet), représenté sous forme de liste (-l, --list) avec les 100 dernières entrées (-n NUMBER, --number NUMBER) :

    root@kitploit:~
    ~$ usbrip events history -ql -n 100
    
  • Afficher l'historique des événements des périphériques USB externes (-e, --external, qui ont été effectivement déconnectés) représenté sous forme de tableau (-t, --table) contenant les colonnes Connecté, VID, PID, Déconnecté et Numéro de série (-c COLUMN [COLUMN ...], --column COLUMN [COLUMN ...]) filtré par date (, ) et PID () avec des journaux provenant de fichiers externes (, ) :

Credits & References

  • usbrip / Инструменты Kali Linux
  • Как узнать, какие USB устройства подключались к Linux / HackWare.ru
  • usbrip: USB-форензика для Линуксов, или Как Алиса стала Евой / Форум информационной безопасности Codeby.net

13cubed.jpg

Stargazers Chart

stargazers

Télécharger l’outil
-d DATE [DATE ...]
--date DATE [DATE ...]
--pid <PID> [<PID> ...]
-f FILE [FILE ...]
--file FILE [FILE ...]
root@kitploit:~
~$ usbrip events history -et -c conn vid pid disconn serial -d '1995-09-15' '2018-07-01' --pid 1337 -f /var/log/syslog.1 /var/log/syslog.2.gz

👽 Remarque : il y a une chose à retenir lorsqu'on travaille avec des filtres. Il existe 4 types de filtrage disponibles : uniquement les événements USB externes (périphériques qui peuvent être facilement retirés, -e), par date (-d), par champs (--host, --vid, --pid, --product, --manufact, --serial, --port) et par nombre d'entrées que vous obtenez en sortie (-n). Lorsque vous appliquez différents filtres simultanément, vous obtiendrez le comportement suivant : d'abord, les filtres externe et par date sont appliqués, puis usbrip recherchera les valeurs de champs spécifiées dans l'intersection des deux derniers filtres, et enfin il réduira la sortie au nombre que vous avez défini avec l'option -n. Considérez cela comme une intersection pour les filtrages externe et par date et une union pour les filtrages par champs. J'espère que c'est logique.

  • Construire l'historique des événements de tous les périphériques USB et rediriger la sortie vers un fichier pour une analyse plus approfondie. Lorsque le flux de sortie n'est PAS le terminal stdout (| ou > par exemple), il n'y aura pas de caractères d'échappement ANSI (couleur) dans la sortie, donc n'hésitez pas à l'utiliser de cette façon. Notez également qu'usbrip utilise certains symboles UNICODE, il serait donc agréable de convertir le fichier résultant en encodage UTF-8 (avec encov par exemple) ainsi que de changer les caractères de nouvelle ligne en style Windows pour la portabilité (avec awk par exemple) :

    root@kitploit:~
    ~$ usbrip events history -t | awk '{ sub("$", "\r"); print }' > usbrip.out && enconv -x UTF8 usbrip.out
    

    👽 Remarque : vous pouvez toujours vous débarrasser des caractères d'échappement par vous-même même si vous avez déjà obtenu la sortie vers stdout. Pour ce faire, copiez simplement les données de sortie dans usbrip.out et appliquez une instruction awk supplémentaire :

    root@kitploit:~
    ~$ awk '{ sub("$", "\r"); gsub("\\x1B\\[[0-?]*[ -/]*[@-~]", ""); print }' usbrip.out && enconv -x UTF8 usbrip.out
    
  • Générer une liste de périphériques USB de confiance sous forme de fichier JSON (trusted/auth.json) avec les attributs VID et PID contenant les trois premiers périphériques connectés le 30 novembre 1984 :

    root@kitploit:~
    ~$ sudo usbrip events genauth trusted/auth.json -a vid pid -n 3 -d '1984-11-30'
    

    ⚠️ Avertissement : il existe des cas où différentes clés USB peuvent avoir des numéros de série identiques. Cela peut se produire à la suite d'une erreur de fabrication ou simplement parce que des pirates ont réussi à réécrire la puce mémoire du lecteur qui s'est avérée non programmable une seule fois, etc. Quoi qu'il en soit, « aucun système n'est sûr ». usbrip ne gère pas ces cas de manière intelligente pour l'instant, c'est-à-dire qu'il traitera une paire de périphériques avec des NS identiques (s'il en existe un) comme le même périphérique en ce qui concerne la liste des périphériques de confiance et le module genauth.

  • Rechercher dans l'historique des événements des périphériques USB externes les violations basées sur la liste des périphériques USB de confiance (trusted/auth.json) par attribut PID, limiter les événements résultants à ceux qui ont Bob-PC comme nom d'hôte, EvilUSBManufacturer comme fabricant, 0123456789 comme numéro de série et afficher la sortie sous forme de tableau avec les colonnes Connecté, VID et PID :

    root@kitploit:~
    ~$ sudo usbrip events violations trusted/auth.json -a pid -et --host Bob-PC --manufact EvilUSBManufacturer --serial 0123456789 -c conn vid pid
    
  • Rechercher des détails sur un périphérique USB spécifique par son VID (--vid VID) et son PID (--pid PID) :

    root@kitploit:~
    ~$ usbrip ids search --vid 0781 --pid 5580
    
  • Télécharger la dernière version de la base de données usb.ids :

    root@kitploit:~
    ~$ usbrip ids download