Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feedback #3

Open
ggerganov opened this issue Nov 29, 2018 · 8 comments
Open

Feedback #3

ggerganov opened this issue Nov 29, 2018 · 8 comments
Labels
question Further information is requested

Comments

@ggerganov
Copy link
Owner

I was a bit surprised by the huge amount of interest that this project generated. I had no idea if keytap works reliably or not, so I am happy to see that people actually like it.

I am still curious to know how reliable it is. For example, I haven't been able to get any good prediction results when using non-mechanical keyboards. Would be interesting to know if this is the case for everyone.

Feel free to share your experience here.

@ggerganov ggerganov added the question Further information is requested label Dec 6, 2018
@weddy2019
Copy link

weddy2019 commented Apr 2, 2019

Hey man love the work you done with this. I was wondering can it be used with a microphone plugged into the laptop as opposed to the built in microphone in the laptop?

Cheers

@weddy2019
Copy link

In addition what setup did you use and how much machine learning did you do to get your results?

@ggerganov
Copy link
Owner Author

ggerganov commented Apr 2, 2019

The capturing tools do support an option to select the microphone to use (i.e. the capture device).
You simply need to provide the command line argument -cN where you replace N with the capture device ID.

For example, on my machine, when I run the record tool I get this info printed:

$ ./record test.kbd
Usage: ./record output.kbd [-cN]
    -cN - select capture device N

Recording 5 frames per key press
Found 3 capture devices:
    - Capture device #0: 'Built-in Microphone'
    - Capture device #1: 'Soundflower (2ch)'
    - Capture device #2: 'Soundflower (64ch)'
Attempt to open capture device 0 : 'Built-in Microphone' ...
Opened capture device succesfully!
    Frequency:  24000
    Format:     33056 (4 bytes)
    Channels:   1
    Samples:    512

You can see the 3 available capture devices listed in the standard output. By default, the tools select the capture device with ID = 0. For example, if I wanted to use capture device 1 instead, then I would do:

$ ./record test.kbd -c1
Usage: ./record output.kbd [-cN]
    -cN - select capture device N

Recording 5 frames per key press
Found 3 capture devices:
    - Capture device #0: 'Built-in Microphone'
    - Capture device #1: 'Soundflower (2ch)'
    - Capture device #2: 'Soundflower (64ch)'
Attempt to open capture device 1 : 'Soundflower (2ch)' ...
Opened capture device succesfully!
    Frequency:  24000
    Format:     33056 (4 bytes)
    Channels:   1
    Samples:    512

Regarding the machine learning question:
On my iMac, using the build-in mic, I can record just 2-3 keytaps of each key and be able to recognise the key audio with very high accuracy (as demonstrated in the video). The result really depends on the setup you have - mic, keyboard, surroundings, etc. More details about the approach are in the blog post.

@weddy2019
Copy link

weddy2019 commented Apr 3, 2019 via email

@weddy2019
Copy link

weddy2019 commented Apr 3, 2019 via email

@ggerganov
Copy link
Owner Author

Laptop keyboards usually have very bad recall rate - the main reason is that the sound of the keys is very low. I myself have had a nice recall rate only when plugging a mechanical keyboard to my iMac - the clicks are much louder and distinguishable.

The web-version of the tool is at the following link:
https://ggerganov.github.io/jekyll/update/2018/11/24/keytap.html

@Rob-pw
Copy link

Rob-pw commented Jan 27, 2021

Not relevant to the software itself: but on ideas of how to circumvent this - go somewhere where there is no microphone and load your passwords onto a HID (like a Teensy 3.0), then have it type the passwords; but for every day typing it wouldn't help as the approximate keystrokes could be reconstructed - this project highlights the importance of securing every device in proximity (a secure PC with a compromised phone microphone nearby, for instance). I'd known this was possible for a number of years, but the accuracy with such a small training dataset is totally unnerving - thanks!

@dhenson02
Copy link

k im officially never getting on public discord servers again

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
question Further information is requested
Projects
None yet
Development

No branches or pull requests

4 participants