
🎤⌨️ Écoute acoustique du clavier
Ceci est une collection d'outils en ligne de commande et GUI pour capturer et analyser des données audio.
L'outil le plus intéressant s'appelle keytap - il peut deviner les touches du clavier enfoncées uniquement en analysant l'audio capturé par le microphone de l'ordinateur.
Consultez ce billet de blog pour plus de détails :
Keytap : description et quelques réflexions aléatoires
Vidéo : courte démo de Keytap en action
L'outil keytap2 est un autre outil intéressant pour reconstituer du texte à partir de l'audio. Il ne nécessite pas de données d'apprentissage - il utilise plutôt des informations statistiques sur les fréquences des lettres et des n-grammes dans la langue anglaise.
Une description plus détaillée de l'outil est disponible ici : Discussion sur Keytap2
Vidéo : courte démo de Keytap2 en action
CTF : pouvez-vous deviner le texte tapé ?
Cette version introduit des améliorations algorithmiques significatives et de meilleures statistiques de n-grammes par rapport à keytap2. L'attaque est désormais entièrement automatisée et ne nécessite aucune intervention manuelle pendant le processus de reconstitution du texte.
Vidéo : courte démo de l'utilisation de Keytap3
Vidéo : un autre exemple d'utilisation de Keytap3
Interface graphique pour Keytap3
Vérifiez si votre clavier est vulnérable à Keytap :
"Cela fonctionne incroyablement bien.
J'espère que vous réalisez ce que vous avez créé (et mis à la disposition de chaque personne dans le monde)." -- ffpip
"Je viens de l'essayer et cela fonctionne incroyablement bien. Cela me donne presque envie d'arrêter d'utiliser un clavier mécanique." -- Karawebnetwork
"Cette attaque et le Van Eck phreaking sont la raison pour laquelle Edward Snowden, lorsqu'il tapait des mots de passe et d'autres informations sensibles, se couvrait avec une couverture ainsi que son ordinateur portable." -- aarchi
"C'est ce que méritent les utilisateurs de claviers mécaniques" -- super guy
"putain.." -- Lluis Franco
Dépendances :
SDL2 - utilisé pour capturer l'audio et ouvrir les fenêtres GUI libsdl
[Ubuntu]
$ sudo apt install libsdl2-dev
[Mac OS with brew]
$ brew install sdl2
[MSYS2]
$ pacman -S git cmake make mingw-w64-x86_64-dlfcn mingw-w64-x86_64-gcc mingw-w64-x86_64-SDL2
FFTW3 (optionnel) - certains outils auxiliaires effectuent des transformations de Fourier fftw
Linux, FreeBSD, Mac OS, Windows (MSYS2 + MinGW)
git clone https://github.com/ggerganov/kbd-audio
cd kbd-audio
git submodule update --init
mkdir build && cd build
cmake ..
make
Résumé court des outils disponibles. Si le statut de l'outil n'est pas stable, attendez-vous à des problèmes et à des résultats non optimaux.
record-full
Enregistrer l'audio dans un fichier binaire brut sur le disque
./record-full output.kbd [-cN]
play-full
Lire un enregistrement capturé via l'outil record-full
./play-full input.kbd [-pN]
record
Enregistrer l'audio uniquement pendant la frappe. Utile pour collecter des données d'apprentissage pour keytap
./record output.kbd [-cN] [-CN]
play
Lire un enregistrement créé avec l'outil record
./play input.kbd [-pN]
keytap
Détecter les touches enfoncées via la capture audio du microphone en temps réel. Utilise les données d'apprentissage capturées avec l'outil record
./keytap input0.kbd [input1.kbd] [input2.kbd] ... [-cN] [-CN] [-pF] [-tF]
keytap-gui
Détecter les touches enfoncées via la capture audio du microphone en temps réel. Utilise les données d'apprentissage capturées avec l'outil record. Version GUI
./keytap-gui input0.kbd [input1.kbd] [input2.kbd] ... [-cN] [-CN]
Démo en ligne : https://keytap.ggerganov.com
keytap2-gui record.kbd n-gram-dir [-pN] [-cN] [-CN]
Tout retour sur les performances des outils est grandement apprécié. Veuillez laisser un commentaire ici.
| Nom | Type | Statut |
|---|
| record | text | stable |
| record-full | text | stable |
| play | text | stable |
| play-full | text | stable |
| view-gui | gui | stable |
| view-full-gui | gui | stable |
| key-detector | text | stable |
| keytap | text | stable |
| keytap-gui | gui | stable |
| keytap2-gui | gui | stable |
| keytap3 | text | stable |
| keytap3-gui | gui | stable |
| - | extra | - |
| guess-qp | text | experiment |
| guess-qp2 | text | experiment |
| keytap3-multi | text | experiment |
| scale | text | experiment |
| subreak | text | experiment |
| key-average-gui | gui | experiment |
| keytap2 | text | experiment |
Détecter les touches enfoncées via la capture audio du microphone. Utilise des informations statistiques (fréquences de n-grammes) sur la langue. Aucune donnée d'apprentissage n'est nécessaire. Le fichier d'entrée 'record.kbd' doit être généré via l'outil record-full et contient les données audio qui seront analysées. Le dossier 'n-gram-dir' doit contenir des fichiers de probabilités de n-grammes pour la langue correspondante.
./keytap2-gui record.kbd ../data
Démo en ligne : https://keytap2.ggerganov.com
keytap3
Reconstitution entièrement automatisée de texte inconnu à partir d'enregistrements audio
./keytap3 input.kbd ../data [-cN] [-CN] [-pF] [-tF] [-FN] [-fN]
Démo en ligne : https://keytap3.ggerganov.com
keytap3-gui
Version GUI de l'outil keytap3
./keytap3-gui input.kbd ../data [-cN] [-CN] [-pF] [-tF] [-FN] [-fN]
Démo en ligne : https://keytap3-gui.ggerganov.com
view-full-gui
Visualiser les formes d'onde enregistrées avec l'outil record-full. Peut également lire les données audio
./view-full-gui input.kbd [-pN]