
Keylogger Win32 que suporta corretamente todos os idiomas (que não utilizam IME)
Este repositório contém o código associado a este artigo no qual falamos sobre criar um keylogger win32 que suporta todos os idiomas que não usam editores de método de entrada.
Todos os testes foram feitos no Windows 10 (22h2).
. # keylog code
├── cap_gks.c # sample keylogger using GetKeyState()
├── cap_llh.c # sample keylogger using SetWindowsHookEx(WH_KEYBOARD_LL)
├── cap_rid.c # sample keylogger using GetRawInputData()
├── process.c # retrieve key-strokes context
├── process.h
├── vk_names.h # virtual key to string (name) macro
│
│ # processing code
├── dumper.cpp # program to dump windows KBD*.DLL contents to json
├── kbdhdr.h # slightly modified windows headers
├── reconstruct.py # reconstructs character stream from keylogs
├── replayer.py # win32 python program to replay scan codes and extract resulting characters
│
│ # various
├── kbdlmap.py # KLID to dll name mapping
├── vk_names.py # virtual key number to/from name
├── Makefile # build keylogger with mingw-w64
│
│ # external dependencies
├── extern
│ └── json.hpp # by Niels Lohmann from https://github.com/nlohmann/json
│
│ # json files
├── inputs # input test cases
└── layouts # output of dumper on all win32 kbd*.dll
$ sudo apt install mingw-w64 python3
No Windows, digite um destes comandos, assumindo que os executáveis foram colocados na área de trabalho:
c:\Users\user\Desktop> cap_gks.exe > keylog1.jsonl
c:\Users\user\Desktop> cap_llh.exe > keylog2.jsonl
c:\Users\user\Desktop> cap_rid.exe > keylog3.jsonl
Para despejar o conteúdo de uma DLL em json:
c:\Users\user\Desktop> dmp.exe kbdfr > kbdfr.json
Para reinjetar as teclas:
c:\Users\user\Desktop> python replayer.py keylog1.jsonl > keylog1_ref.txt
Para reconstruir o texto a partir das teclas (e verificar os resultados)
$ python3 reconstruct.py -v -l kbdfr.dll -c keylog1_ref.txt keylog1.jsonl