В этой статье я покажу, как написать простой кейлоггер на Go (Golang).
Еще по теме: Простой кейлоггер на Python
Как написать кейлоггер на Go
Программа использует пакет github.com/MichaelGatesDev/keyboard для прослушивания событий клавиатуры. Она создает новый прослушиватель клавиатуры и открывает файл с именем keylog.txt для хранения зарегистрированных нажатий клавиш. Затем программа начинает прослушивать события клавиатуры и записывает нажатие клавиши в файл. Для завершения используется сочетание клавиш Ctrl+C.
Такой кейлоггер на Go можно внедрить в сторонний процесс, в другое запущенное приложение, или закинуть в автозагрузку.
Кейлоггер прослушивает события клавиатуры и записывает нажатия клавиш в файл с именем keylog.txt. Давайте рассмотрим подробнее.
Импортируются необходимые пакеты:
- fmt используется для форматированного ввода-вывода.
- os обеспечивает независимый от платформы интерфейс к функциям операционной системы.
- os/signal позволяет программе получать и обрабатывать сигналы от операционной системы.
- syscall предоставляет константы и типы для взаимодействия с операционной системой.
- github.com/MichaelGatesDev/keyboard — это сторонний пакет, используемый для обработки событий клавиатуры.
- Основная функция определена.
- Слушатель клавиатуры инициализируется с помощью keyboard.NewKeyboard(). Если во время инициализации возникает ошибка, выводится сообщение об ошибке.
- Создается файл keylog.txt для хранения записанных нажатий клавиш с помощью os.Create(). Если возникает ошибка при создании файла, выводится сообщение об ошибке.
- Слушатель клавиатуры запускается с помощью kb.Start(). Если при запуске прослушивателя возникает ошибка, выводится сообщение об ошибке, и программа возвращается.
- Канал signalChan создается для приема и обработки сигналов (например, Ctrl+C) от операционной системы с помощью signal.Notify(). Указаны сигналы SIGINT и SIGTERM. Горутина запускается для ожидания сигнала на signalChan и останавливает кейлоггер при получении сигнала.
- Сообщение о том, что кейлоггер запущен, выводится на консоль.
- Запускается цикл для прослушивания событий клавиатуры с использованием <-kb.Events. Он ждет, когда произойдет событие.
- Внутри цикла, если есть ошибка при чтении события клавиатуры, выводится сообщение об ошибке, и цикл продолжается до следующей итерации.
- Если событие клавиатуры является событием освобождения клавиши ( event.Kind == keyboard.KeyRelease), клавиша записывается в файл журнала с помощью file.WriteString(). Ключ записывается с символом новой строки "\n", добавляемым к каждому нажатию клавиши.
- Цикл продолжает прослушивать другие события клавиатуры, пока программа не будет завершена, получив сигнал.
Это краткое объяснение предоставленного кода, демонстрирующего простую реализацию кейлоггера на Go.
ПОЛЕЗНЫЕ ССЫЛКИ:
- Создание кейлоггера на C#
- Кейлоггер для терминала Linux с помощью Shelljack
- Как использовать pynput для написания кейлоггера на Python