ggerganov /kbd-audio

🎤⌨️ Acoustic keyboard eavesdropping

★ 9,036⑂ 606👁 134⑃ 17● 36▤ 2
C++Created 2018-08-28ggerganov.github.io/keytap
9,036
stars
+0+0+2
606
forks
134
watchers
17
prs
36
issues
2
releases
–
discussions

README

kbd-audio
=====


This is a collection of command-line and GUI tools for capturing and analyzing audio data.

 Keytap

The most interesting tool is called keytap - it can guess pressed keyboard keys only by analyzing the audio captured from the computer's microphone.

Check this blog post for more details:

Keytap: description and some random thoughts

Video: short demo of Keytap in action

Try it online:



 Keytap2

The keytap2 tool is another interesting tool for recovering text from audio. It does not require training data - instead it uses statistical information about the frequencies of the letters and n-grams in the English language.

A more detailed description of the tool is available here: Keytap2 discussion

Video: short demo of Keytap2 in action

CTF: can you guess the text being typed?

Try it online:



 Keytap3

This version introduces significant algorithm improvements and better n-gram statistics compared to keytap2. The attack is now fully
automated and does not require any manual intervation during the text recovery process.

Video: short demo of using Keytap3

Video: another example of using Keytap3

GUI for Keytap3

Check if your keyboard is vulnerable to Keytap:



 What people say about Keytap

"This works incredibly well.\
I hope you realize what you've created (and made available to every person in the world)." -- ffpip

"I just tried it and it works incredibly well. It kind of makes me want to stop using a mechanical keyboard." -- Karawebnetwork

"This attack and Van Eck phreaking are why Edward Snowden, while typing passwords and other sensitive information, would pull a blanket over himself and his laptop." -- aarchi

"This is what mechanical keyboard users deserve" -- super guy

"fuck.." -- Lluis Franco

 Build instructions

Dependencies:

 - SDL2 - used to capture audio and to open GUI windows 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 (optional) - some of the helper tools perform Fourier transformations 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

 Tools

Short summary of the available tools. If the status of the tool is not stable, expect problems and non-optimal results.

| Name                | Type    | Status      |
| ---                 | ---     | ---         |
| 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  |

Snapshot: 2026-11-04T14:00:00Z · Data license Apache-2.0 · JSON