joelsernamoreno / EvilCrow-Keylogger

WiFi keylogger with Micro SD slot, based on the Atmega32U4 microcontroller and the ESP32-PICO module
Creative Commons Attribution 4.0 International
208 stars 37 forks source link

All Three Successes, SSID changed OK, but still can't change keyboard Layout #14

Closed ghost closed 2 years ago

ghost commented 2 years ago

I have apllied these changes in files: ESP32.ino: const char ssid = "Keylogger"; ==> const char ssid = "Keyla";

Keyboard.cpp:

define kbd_en_us ==> #define kbd_pt_pt

(also, tested too with es_es and cz_cz. No effect)

No errors when run the flash.bat, no relevant (apparently) warnings, as we can see in log: C:\Users\Audr1un\KL\keylogger-pio>C:\Users\Audr1un.platformio\penv\Scripts\platformio.exe run -t upload -d programmer Processing LilyPadUSB (platform: atmelavr; framework: arduino; board: LilyPadUSB)

Verbose mode can be enabled via -v, --verbose option CONFIGURATION: https://docs.platformio.org/page/boards/atmelavr/LilyPadUSB.html PLATFORM: Atmel AVR (3.4.0) > Arduino LilyPad USB HARDWARE: ATMEGA32U4 8MHz, 2.50KB RAM, 28KB Flash DEBUG: Current (simavr) On-board (simavr) PACKAGES:

Connecting to programmer: . Found programmer: Id = "CATERIN"; type = S Software Version = 1.0; No Hardware Version given. Programmer supports auto addr increment. Programmer supports buffered memory access with buffersize=128 bytes.

Programmer supports the following devices: Device code: 0x44

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% -0.00s

avrdude: Device signature = 0x1e9587 (probably m32u4) avrdude: reading input file ".pio\build\LilyPadUSB\firmware.hex" avrdude: writing flash (4580 bytes):

Writing | ################################################## | 100% 0.38s

avrdude: 4580 bytes of flash written avrdude: verifying flash memory against .pio\build\LilyPadUSB\firmware.hex: avrdude: load data flash data from input file .pio\build\LilyPadUSB\firmware.hex: avrdude: input file .pio\build\LilyPadUSB\firmware.hex contains 4580 bytes avrdude: reading on-chip flash data:

Reading | ################################################## | 100% 0.06s

avrdude: verifying ... avrdude: 4580 bytes of flash verified

avrdude: safemode: Fuses OK (E:CE, H:D8, L:FF)

avrdude done. Thank you.

======================================================================================================= [SUCCESS] Took 13.98 seconds =======================================================================================================

C:\Users\Audr1un\KL\keylogger-pio>ping -n 3 127.0.0.1

Disparando 127.0.0.1 com 32 bytes de dados: Resposta de 127.0.0.1: bytes=32 tempo<1ms TTL=128 Resposta de 127.0.0.1: bytes=32 tempo<1ms TTL=128 Resposta de 127.0.0.1: bytes=32 tempo<1ms TTL=128

Estatísticas do Ping para 127.0.0.1: Pacotes: Enviados = 3, Recebidos = 3, Perdidos = 0 (0% de perda), Aproximar um número redondo de vezes em milissegundos: Mínimo = 0ms, Máximo = 0ms, Média = 0ms

C:\Users\Audr1un\KL\keylogger-pio>C:\Users\Audr1un.platformio\penv\Scripts\platformio.exe run -t upload -d esp32 Processing keylogger (platform: espressif32@1.10.0; framework: arduino; board: pico32)

Verbose mode can be enabled via -v, --verbose option CONFIGURATION: https://docs.platformio.org/page/boards/espressif32/pico32.html PLATFORM: Espressif 32 (1.10.0) > ESP32 Pico Kit HARDWARE: ESP32 80MHz, 320KB RAM, 4MB Flash DEBUG: Current (esp-prog) External (esp-prog, iot-bus-jtag, jlink, minimodule, olimex-arm-usb-ocd, olimex-arm-usb-ocd-h, olimex-arm-usb-tiny-h, olimex-jtag-tiny, tumpa) PACKAGES:

Writing at 0x00001000... (100 %) Wrote 15568 bytes (10188 compressed) at 0x00001000 in 0.9 seconds (effective 131.4 kbit/s)... Hash of data verified. Compressed 3072 bytes to 128...

Writing at 0x00008000... (100 %) Wrote 3072 bytes (128 compressed) at 0x00008000 in 0.0 seconds (effective 1175.8 kbit/s)... Hash of data verified. Compressed 8192 bytes to 47...

Writing at 0x0000e000... (100 %) Wrote 8192 bytes (47 compressed) at 0x0000e000 in 0.0 seconds (effective 5025.0 kbit/s)... Hash of data verified. Compressed 765296 bytes to 430594...

Writing at 0x00010000... (3 %) Writing at 0x00014000... (7 %) Writing at 0x00018000... (11 %) Writing at 0x0001c000... (14 %) Writing at 0x00020000... (18 %) Writing at 0x00024000... (22 %) Writing at 0x00028000... (25 %) Writing at 0x0002c000... (29 %) Writing at 0x00030000... (33 %) Writing at 0x00034000... (37 %) Writing at 0x00038000... (40 %) Writing at 0x0003c000... (44 %) Writing at 0x00040000... (48 %) Writing at 0x00044000... (51 %) Writing at 0x00048000... (55 %) Writing at 0x0004c000... (59 %) Writing at 0x00050000... (62 %) Writing at 0x00054000... (66 %) Writing at 0x00058000... (70 %) Writing at 0x0005c000... (74 %) Writing at 0x00060000... (77 %) Writing at 0x00064000... (81 %) Writing at 0x00068000... (85 %) Writing at 0x0006c000... (88 %) Writing at 0x00070000... (92 %) Writing at 0x00074000... (96 %) Writing at 0x00078000... (100 %) Wrote 765296 bytes (430594 compressed) at 0x00010000 in 40.0 seconds (effective 153.1 kbit/s)... Hash of data verified.

Leaving... Hard resetting via RTS pin... ======================================================================================================= [SUCCESS] Took 96.27 seconds =======================================================================================================

C:\Users\Audr1un\KL\keylogger-pio>ping -n 3 127.0.0.1

Disparando 127.0.0.1 com 32 bytes de dados: Resposta de 127.0.0.1: bytes=32 tempo<1ms TTL=128 Resposta de 127.0.0.1: bytes=32 tempo<1ms TTL=128 Resposta de 127.0.0.1: bytes=32 tempo<1ms TTL=128

Estatísticas do Ping para 127.0.0.1: Pacotes: Enviados = 3, Recebidos = 3, Perdidos = 0 (0% de perda), Aproximar um número redondo de vezes em milissegundos: Mínimo = 0ms, Máximo = 0ms, Média = 0ms

C:\Users\Audr1un\KL\keylogger-pio>C:\Users\Audr1un.platformio\penv\Scripts\platformio.exe run -t upload -d 32u4 Processing LilyPadUSB (platform: atmelavr; framework: arduino; board: LilyPadUSB)

Verbose mode can be enabled via -v, --verbose option CONFIGURATION: https://docs.platformio.org/page/boards/atmelavr/LilyPadUSB.html PLATFORM: Atmel AVR (3.4.0) > Arduino LilyPad USB HARDWARE: ATMEGA32U4 8MHz, 2.50KB RAM, 28KB Flash DEBUG: Current (simavr) On-board (simavr) PACKAGES:

Downloading [------------------------------------] 0% Downloading [####################################] 100%

Unpacking [------------------------------------] 0% Unpacking [#######-----------------------------] 20% Unpacking [##############----------------------] 40% Unpacking [#####################---------------] 60% Unpacking [############################--------] 80% Unpacking [####################################] 100% Library Manager: Mouse @ 1.0.1 has been installed! Library Manager: Installing id:868

Downloading [------------------------------------] 0% Downloading [#####-------------------------------] 14% Downloading [##########--------------------------] 28% Downloading [###############---------------------] 42% Downloading [####################----------------] 57% Downloading [#########################-----------] 71% Downloading [##############################------] 85% Downloading [####################################] 100%

Unpacking [------------------------------------] 0% Unpacking [#-----------------------------------] 4% Unpacking [##----------------------------------] 8% Unpacking [####--------------------------------] 12% Unpacking [#####-------------------------------] 16% Unpacking [#######-----------------------------] 20% Unpacking [########----------------------------] 24% Unpacking [##########--------------------------] 28% Unpacking [###########-------------------------] 32% Unpacking [############------------------------] 36% Unpacking [##############----------------------] 40% Unpacking [###############---------------------] 44% Unpacking [#################-------------------] 48% Unpacking [##################------------------] 52% Unpacking [####################----------------] 56% Unpacking [#####################---------------] 60% Unpacking [#######################-------------] 64% Unpacking [########################------------] 68% Unpacking [#########################-----------] 72% Unpacking [###########################---------] 76% Unpacking [############################--------] 80% Unpacking [##############################------] 84% Unpacking [###############################-----] 88% Unpacking [#################################---] 92% Unpacking [##################################--] 96% Unpacking [####################################] 100% Library Manager: SD @ 1.2.4 has been installed! Found 9 compatible libraries Scanning dependencies... Dependency Graph |-- 1.0.1 | |-- 1.0 |-- 1.2.4 | |-- 1.0 |-- 1.3.2 | |-- 1.0 |-- 1.0.1 | |-- 1.0 |-- 1.0 Building in release mode Compiling .pio\build\LilyPadUSB\src\ATMEGA32U4.ino.cpp.o Compiling .pio\build\LilyPadUSB\lib05c\HID\HID.cpp.o Compiling .pio\build\LilyPadUSB\lib353\Mouse\Mouse.cpp.o Compiling .pio\build\LilyPadUSB\lib505\SPI\SPI.cpp.o Compiling .pio\build\LilyPadUSB\lib783\SD\File.cpp.o Compiling .pio\build\LilyPadUSB\lib783\SD\SD.cpp.o Compiling .pio\build\LilyPadUSB\lib783\SD\utility\Sd2Card.cpp.o Compiling .pio\build\LilyPadUSB\lib783\SD\utility\SdFile.cpp.o C:/Users/Audr1un/KL/EvilCrow-Keylogger/code/ATMEGA32U4/ATMEGA32U4.ino: In member function 'virtual void KbdRptParser::OnKeyUp(uint8_t, uint8_t)': C:/Users/Audr1un/KL/EvilCrow-Keylogger/code/ATMEGA32U4/ATMEGA32U4.ino:70:38: warning: right operand of comma operator has no effect [-Wunused-value] key_modifier = key|modifiersard,HEX; ^ C:/Users/Audr1un/KL/EvilCrow-Keylogger/code/ATMEGA32U4/ATMEGA32U4.ino: In function 'char ProcessCommand()': C:/Users/Audr1un/KL/EvilCrow-Keylogger/code/ATMEGA32U4/ATMEGA32U4.ino:130:1: warning: no return statement in function returning non-void [-Wreturn-type] } ^ Archiving .pio\build\LilyPadUSB\lib05c\libHID.a Compiling .pio\build\LilyPadUSB\lib783\SD\utility\SdVolume.cpp.o Archiving .pio\build\LilyPadUSB\lib505\libSPI.a Compiling .pio\build\LilyPadUSB\libf4f\USB_Host_Shield_2.0\BTD.cpp.o Archiving .pio\build\LilyPadUSB\lib353\libMouse.a Compiling .pio\build\LilyPadUSB\libf4f\USB_Host_Shield_2.0\BTHID.cpp.o Compiling .pio\build\LilyPadUSB\libf4f\USB_Host_Shield_2.0\PS3BT.cpp.o Compiling .pio\build\LilyPadUSB\libf4f\USB_Host_Shield_2.0\PS3USB.cpp.o Indexing .pio\build\LilyPadUSB\lib05c\libHID.a Indexing .pio\build\LilyPadUSB\lib505\libSPI.a Indexing .pio\build\LilyPadUSB\lib353\libMouse.a Archiving .pio\build\LilyPadUSB\lib783\libSD.a Compiling .pio\build\LilyPadUSB\libf4f\USB_Host_Shield_2.0\PS4Parser.cpp.o Compiling .pio\build\LilyPadUSB\libf4f\USB_Host_Shield_2.0\PSBuzz.cpp.o Compiling .pio\build\LilyPadUSB\libf4f\USB_Host_Shield_2.0\SPP.cpp.o Compiling .pio\build\LilyPadUSB\libf4f\USB_Host_Shield_2.0\Usb.cpp.o Compiling .pio\build\LilyPadUSB\libf4f\USB_Host_Shield_2.0\Wii.cpp.o Compiling .pio\build\LilyPadUSB\libf4f\USB_Host_Shield_2.0\XBOXOLD.cpp.o Compiling .pio\build\LilyPadUSB\libf4f\USB_Host_Shield_2.0\XBOXONE.cpp.o Indexing .pio\build\LilyPadUSB\lib783\libSD.a Compiling .pio\build\LilyPadUSB\libf4f\USB_Host_Shield_2.0\XBOXRECV.cpp.o Compiling .pio\build\LilyPadUSB\libf4f\USB_Host_Shield_2.0\XBOXUSB.cpp.o Compiling .pio\build\LilyPadUSB\libf4f\USB_Host_Shield_2.0\adk.cpp.o Compiling .pio\build\LilyPadUSB\libf4f\USB_Host_Shield_2.0\cdc_XR21B1411.cpp.o Compiling .pio\build\LilyPadUSB\libf4f\USB_Host_Shield_2.0\cdcacm.cpp.o Compiling .pio\build\LilyPadUSB\libf4f\USB_Host_Shield_2.0\cdcftdi.cpp.o Compiling .pio\build\LilyPadUSB\libf4f\USB_Host_Shield_2.0\cdcprolific.cpp.o Compiling .pio\build\LilyPadUSB\libf4f\USB_Host_Shield_2.0\hidboot.cpp.o Compiling .pio\build\LilyPadUSB\libf4f\USB_Host_Shield_2.0\hidcomposite.cpp.o Compiling .pio\build\LilyPadUSB\libf4f\USB_Host_Shield_2.0\hidescriptorparser.cpp.o Compiling .pio\build\LilyPadUSB\libf4f\USB_Host_Shield_2.0\hiduniversal.cpp.o Compiling .pio\build\LilyPadUSB\libf4f\USB_Host_Shield_2.0\hidusagetitlearrays.cpp.o Compiling .pio\build\LilyPadUSB\libf4f\USB_Host_Shield_2.0\masstorage.cpp.o Compiling .pio\build\LilyPadUSB\libf4f\USB_Host_Shield_2.0\max_LCD.cpp.o Compiling .pio\build\LilyPadUSB\libf4f\USB_Host_Shield_2.0\message.cpp.o Compiling .pio\build\LilyPadUSB\libf4f\USB_Host_Shield_2.0\parsetools.cpp.o Compiling .pio\build\LilyPadUSB\libf4f\USB_Host_Shield_2.0\usbh_midi.cpp.o Compiling .pio\build\LilyPadUSB\libf4f\USB_Host_Shield_2.0\usbhid.cpp.o Compiling .pio\build\LilyPadUSB\libf4f\USB_Host_Shield_2.0\usbhub.cpp.o Compiling .pio\build\LilyPadUSB\libb9b\Keyboard\Keyboard.cpp.o Archiving .pio\build\LilyPadUSB\libFrameworkArduinoVariant.a Compiling .pio\build\LilyPadUSB\FrameworkArduino\CDC.cpp.o Compiling .pio\build\LilyPadUSB\FrameworkArduino\HardwareSerial.cpp.o Compiling .pio\build\LilyPadUSB\FrameworkArduino\HardwareSerial0.cpp.o Indexing .pio\build\LilyPadUSB\libFrameworkArduinoVariant.a Compiling .pio\build\LilyPadUSB\FrameworkArduino\HardwareSerial1.cpp.o Compiling .pio\build\LilyPadUSB\FrameworkArduino\HardwareSerial2.cpp.o Archiving .pio\build\LilyPadUSB\libf4f\libUSB_Host_Shield_2.0.a Compiling .pio\build\LilyPadUSB\FrameworkArduino\HardwareSerial3.cpp.o Archiving .pio\build\LilyPadUSB\libb9b\libKeyboard.a Compiling .pio\build\LilyPadUSB\FrameworkArduino\IPAddress.cpp.o Compiling .pio\build\LilyPadUSB\FrameworkArduino\PluggableUSB.cpp.o Compiling .pio\build\LilyPadUSB\FrameworkArduino\Print.cpp.o Compiling .pio\build\LilyPadUSB\FrameworkArduino\Stream.cpp.o Indexing .pio\build\LilyPadUSB\libf4f\libUSB_Host_Shield_2.0.a Indexing .pio\build\LilyPadUSB\libb9b\libKeyboard.a Compiling .pio\build\LilyPadUSB\FrameworkArduino\Tone.cpp.o Compiling .pio\build\LilyPadUSB\FrameworkArduino\USBCore.cpp.o Compiling .pio\build\LilyPadUSB\FrameworkArduino\WInterrupts.c.o Compiling .pio\build\LilyPadUSB\FrameworkArduino\WMath.cpp.o Compiling .pio\build\LilyPadUSB\FrameworkArduino\WString.cpp.o Compiling .pio\build\LilyPadUSB\FrameworkArduino\abi.cpp.o Compiling .pio\build\LilyPadUSB\FrameworkArduino\hooks.c.o Compiling .pio\build\LilyPadUSB\FrameworkArduino\main.cpp.o Compiling .pio\build\LilyPadUSB\FrameworkArduino\new.cpp.o Compiling .pio\build\LilyPadUSB\FrameworkArduino\wiring.c.o Compiling .pio\build\LilyPadUSB\FrameworkArduino\wiring_analog.c.o Compiling .pio\build\LilyPadUSB\FrameworkArduino\wiring_digital.c.o Compiling .pio\build\LilyPadUSB\FrameworkArduino\wiring_pulse.S.o Compiling .pio\build\LilyPadUSB\FrameworkArduino\wiring_pulse.c.o Compiling .pio\build\LilyPadUSB\FrameworkArduino\wiring_shift.c.o Archiving .pio\build\LilyPadUSB\libFrameworkArduino.a Indexing .pio\build\LilyPadUSB\libFrameworkArduino.a Linking .pio\build\LilyPadUSB\firmware.elf Checking size .pio\build\LilyPadUSB\firmware.elf Advanced Memory Usage is available via "PlatformIO Home > Project Inspect" RAM: [======= ] 65.8% (used 1685 bytes from 2560 bytes) Flash: [==========] 98.4% (used 28210 bytes from 28672 bytes) Building .pio\build\LilyPadUSB\firmware.hex Configuring upload protocol... AVAILABLE: avr109 CURRENT: upload_protocol = avr109 Looking for upload port... Auto-detected: COM6 Forcing reset using 1200bps open/close on port COM6 Waiting for the new upload port... Uploading .pio\build\LilyPadUSB\firmware.hex

Connecting to programmer: . Found programmer: Id = "CATERIN"; type = S Software Version = 1.0; No Hardware Version given. Programmer supports auto addr increment. Programmer supports buffered memory access with buffersize=128 bytes.

Programmer supports the following devices: Device code: 0x44

avrdude: AVR device initialized and ready to accept instructions

Reading | ################################################## | 100% 0.00s

avrdude: Device signature = 0x1e9587 (probably m32u4) avrdude: reading input file ".pio\build\LilyPadUSB\firmware.hex" avrdude: writing flash (28210 bytes):

Writing | ################################################## | 100% 2.28s

avrdude: 28210 bytes of flash written avrdude: verifying flash memory against .pio\build\LilyPadUSB\firmware.hex: avrdude: load data flash data from input file .pio\build\LilyPadUSB\firmware.hex: avrdude: input file .pio\build\LilyPadUSB\firmware.hex contains 28210 bytes avrdude: reading on-chip flash data:

Reading | ################################################## | 100% 0.37s

avrdude: verifying ... avrdude: 28210 bytes of flash verified

avrdude: safemode: Fuses OK (E:CE, H:D8, L:FF)

avrdude done. Thank you.

======================================================================================================= [SUCCESS] Took 31.84 seconds =========================================================================================

Please Help, I am burning my sanity for almost three days. In time, before I get trapped in this, I was wodering if I could change the scan codes of keys / and ? in english keyboard, cause the keylogger works like charm in a PT_BR keyboard, except the InternationalKey1 (HID 0x87), which have the same scan code of the modifier key KEY_RIGHT_GUI. Anyway, in a short answer, is easy and simple just make this change or I would need to make fundamental (and brutal) changes in the code?

joelsernamoreno commented 2 years ago

Hi!

Last time I changed the layout on my device it was working correctly, I will check this this week. To change the layout you just need to change Keyboard.cpp as indicated in the documentation

About changing the scan codes... this is simple. In the sketch you can find the modifiers, change this with the values you need. The keymaps can be found in EvilCrow-Keylogger/libraries/Keyboard/src/*

For example, for the layout en_us, open en_us.h and change the values you need

ghost commented 2 years ago

Hello again!

I have changed the Keyboard.cpp to pt_pt and delete all the others languages libraries, including en_us. This stubborn device refuse to abandon the en_us language. The log shows NO errors so far.

If you are too much busy, just give me some of your thoughts what could cause this and I will happily search how to solve it. Thank you, I'm your fan.

image

image

joelsernamoreno commented 2 years ago

Hi!

Can you check that the PT layout is correct? I have never been able to check that it is correct, maybe this is the problem

Here is a list of layouts from another project, maybe you can find the correct one here:

https://github.com/insecurityofthings/uC_mousejack/blob/master/tools/keymap.py

You can modify pt_pt.h and change the layout

Another option is to upload the atmega32u4.ino sketch with the Arduino IDE, but I haven't seen any errors in your platformio log. Possibly the problem is that the PT layout is incorrect

ghost commented 2 years ago

Hello! Well, I messed up a little with the en_us layout just to see (and prove my point of he is not only evil, but an insurgent crow too), and yet no effect, the keyboard's output and the log didn't show the changes: 'n' is still 'n', 'o' still 'o', 'p' still 'p' and the keyscan 0x87 still don't show anything. image

When I tried to upload atmega32u4.ino with Arduino IDE, some errors was given:

Arduino: 1.8.19 (Windows 10), Board: "LilyPad Arduino USB"

C:\Users\Audr1un\KL\EvilCrow-Keylogger\code\ATMEGA32U4\ATMEGA32U4.ino: In member function 'virtual void KbdRptParser::OnKeyUp(uint8_t, uint8_t)':

ATMEGA32U4:68:12: error: 'class Keyboard_' has no member named 'rawrelease'; did you mean 'release'?

Keyboard.rawrelease(key, 0);

        ^~~~~~~~~~
        release

C:\Users\Audr1un\KL\EvilCrow-Keylogger\code\ATMEGA32U4\ATMEGA32U4.ino: In member function 'virtual void KbdRptParser::OnKeyDown(uint8_t, uint8_t)':

ATMEGA32U4:84:12: error: 'class Keyboard_' has no member named 'rawpress'; did you mean 'press'?

Keyboard.rawpress(key, modifiers);

        ^~~~~~~~
        press

Multiple libraries were found for "hidboot.h"

Used: C:\Users\Audr1un\Documents\Arduino\libraries\USB_Host_Shield_2.0

Not used: C:\Program Files (x86)\Arduino\libraries\USB_Host_Shield_2.0

Multiple libraries were found for "Keyboard.h"

Used: C:\Users\Audr1un\Documents\Arduino\libraries\Keyboard

Not used: C:\Program Files (x86)\Arduino\libraries\Keyboard

exit status 1

'class Keyboard_' has no member named 'rawrelease'; did you mean 'release'?

This report would have more information with "Show verbose output during compilation" option enabled in File -> Preferences.

joelsernamoreno commented 2 years ago

Hi!

The rawrelease and rawpress functions were created to make the keylogger work properly

In order to compile atmega32u4.ino with arduino ide you have to copy the Keyboard and USB Host libraries (this is in the libraries folder) in the Arduino library directory

ghost commented 2 years ago

Finally I did understand. In the LOG the mess take effect, the 0x87 make the promissed '/' character appears. But I'm still struggling because when I press that key, the monitor don't show anything, the EvilCrow log and then discards. In other words, in the log, I can make the pt_br layout to work fine, but the feedback in the screen works like a en_us layout.

Your library was expect to work like that? How can I make the output of the EvilCrow to be the same as the input?

joelsernamoreno commented 2 years ago

Read atmega32u4.ino. Here you can find Onkeyup and Onkeydown. If you look at the code, the key you press and release on your keyboard is looked up in asciimap. This is then saved to the SD and displayed on the web. The key you press on the keyboard has to be the same as the one shown on the web

I don't know the PT keyboard, to do this do you do a key combination or just press a key?

Screenshot_20220117-224136_Chrome

ghost commented 2 years ago

Web do you mean when I access the wifi from the ESP32? In the web it's shown OK, the problem is just the feedback from the user's input in their screen monitor. The key is the same as english layout, / is raw, ? is when I press the Shiftkey. image

I read the atmega32u4.ino and digged some more, are you sure that's the problem is not for the fact of the scancode is 0x87? the keyboard file, in the line https://github.com/joelsernamoreno/EvilCrow-Keylogger/blob/master/libraries/Keyboard/src/Keyboard.cpp#L557 admits 0x87 like a modifier

joelsernamoreno commented 2 years ago

Screen monitor? Do you mean that typing / with your keyboard does not show up on the computer or in the keylogger log?

ghost commented 2 years ago

On the computer of the target. I have discovered yesterday that log works properly with some modifications in the keyboard layout. Now it's just the EvilCrow it's not sending the / key to the computer after log it

joelsernamoreno commented 2 years ago

Well, then the problem is in sending the key to the computer, not in the log.

Ok, I understand that for / you use SHIFT + /

Right?

This works with rawpress (onkeydown), not rawrelease

Shift is MODIFIERKEY_LEFT_SHIFT (0x02), this should be correct for your keyboard. So... try to press SHIFT + / very slowly, maybe this is the problem

joelsernamoreno commented 2 years ago

Anyway, in the keyboard picture you sent me it should not be necessary to press Shift to print /

ghost commented 2 years ago

No, look at the keyboard image, the key '/' should appear without any modifier and the '?' is SHIFT + /

Pressing slowly didn't work

joelsernamoreno commented 2 years ago

Ok, so how do you have configured / in the layout?

ghost commented 2 years ago

image

joelsernamoreno commented 2 years ago

Are you sure it is x87? If this is the same as the English keyboard, it should be x38

ghost commented 2 years ago

It's a special key defined in the HID as international key, only present in the japanese and brazilian keyboard. I'm sure not only for that, but because the log works after I changed the layout from 0x38 to 0x87

joelsernamoreno commented 2 years ago

So I don't really know what the problem is. This should work for /

ghost commented 2 years ago

:(

joelsernamoreno commented 2 years ago

If it is onkeydown you comment the line Keyboard.rawpress(key, modifiers); and you put Keyboard.print("/") what happens?

ghost commented 2 years ago

Well, 3 different things: 1 - in the computer screen, every key pressed turns 'D', the '/' key and SHIFT + '/' key shows the D too
2 - in the web log, works properly, except it shows / as /?Dq 3 - in the sd log, it shows everything normal, except for the SHIFT + /, it shows just '/' (yes, I didnt notice before, the log don't recognize SHIFT + / as ? before this changes that you suggested)

ghost commented 2 years ago

The 'D' is probabily an generic error, because when I change to Keyboard.print("b"), for example, it's shows 'b' on the screen