Need help with keylogger?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

MarinX
164 Stars 47 Forks MIT License 22 Commits 2 Opened issues

Description

Basic keylogger in Go (no C deps)

Services available

!
?

Need anything else?

Contributors list

# 185,986
C
golang
oauth2
kraken
7 commits
# 403,747
Go
Shell
keylogg...
Linux
1 commit
# 409,391
Go
Shell
zap
keylogg...
1 commit

Keylogger

Capture global keyboard events on Linux

Build Status GoDoc License MIT

Notes

  • Only Linux based
  • Need root privilages

Installation

go get github.com/MarinX/keylogger

Getting started

Finding keyboard device

There is a helper on finding the keyboard.

go
 keyboard := keylogger.FindKeyboardDevice()
Which goes through each file device name to find keyword "keyboard"
sh
/sys/class/input/event[0-255]/device/name
and returns the file event path if found
sh
/dev/input/event2
If the function returns empty string, you will need to cat each device name and get the event number. If you know already, you can easily pass it to constructor
sh
keylogger.New("/dev/input/event2")

Getting keypress

Once the keylogger returns channel event, you can switch by event code as described in input_event.go For start, you can listen on keyboard state change

go
keylogger.EvKey
Once you get desire event, there is a helper to parse code into human readable key.
go
event.KeyString()

Writing keypress

Best way is to open an text editor and see how keyboard will react There are 2 methods:

go
func (k *KeyLogger) WriteOnce(key string) error
and
go
func (k *KeyLogger) Write(direction KeyEvent, key string) error 
WriteOnce
method simulates single key press, eg: press and release letter M

Write
writes to keyboard and sync the event. This will keep the key pressed or released until you call another write with other direction eg, if the key is "A" and direction is press, on UI, you will see "AAAAA..." until you stop with release

Probably you want to use

WriteOnce
method

NOTE

If you listen on keyboard state change, it will return double results. This is because pressing and releasing the key are 2 different state change. There is a helper function which you can call to see which type of state change happend ```go // returns true if key on keyboard is pressed event.KeyPress()

// returns true if key on keyboard is released event.KeyRelease() ```

Example

You can find a example script in

example/main.go

Running tests

No magic, just run

sh
go test -v

Creating key sniffer (needs update)

License

This library is under the MIT License

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.