Keytap2 - acoustic keyboard eavesdropping based on language n-gram frequencies

This is a proof-of-concept of an attack for recovering the contents of an unknown text just by analyzing the audio from the keyboard strokes.
No prior training is required.

This tool runs entirely in your browser. No data is sent or stored to a server.

Assumptions and requirements:
  • The text is in English
  • At least 100 characters of meaningful text are typed
  • Only letters ("a" - "z") and the "Space" keys are pressed (i.e. no Backspace, Shift, numbers, etc.)
  • Noisy mechanical keyboard
  • Microphone in the vicinity of the keyboard

Here is a video demonstrating this type of attack: Demo (~5 min YouTube video)

For training-based acoustic eavesdropping, make sure to checkout Keytap

To run this program in the browser you will need support for pthreads with WebAssembly (i.e. Chrome or Firefox Nightly).
To enable WebAssembly pthreads and SharedArrayBuffer support, check this page.

Press the "Init" button to start:

View on GitHub