README is still under construction
LOGITacker is a hardware tool to enumerate and test of Logitech Wireless Input devices via RF.
In contrast to a tooling, it is designed as stand-alone tool. This means not only the low level RF part,
but also the application part is running on dedicated hardware, which could provides Command Line Interface (CLI)
via USB serial connection.
Keeping hardware from other (not Logitech) out of scope, allowed further optimizations and impro for
low le like RF device discovery.
Additionally support for the following boards was addded:
LOGITacker covers the following Logitech :
LOGITacker does currently not cover the following Logitech:
*Note: KeyJack and C are covered by mjackit*
LOGITacker can also be used as Hardware Implant (see USBsamurai's Tutorial )
There are still many ToDo's. The whole project is in experimental state.
nRF Connect software by Nordic provides a Programmer app, which could be used to flash the firmware from this repository
to a Nordic nRF52840 dongle. After flashing the firmware, the dongle provides 4 new interfaces (USB serial, USB mouse,
USB keyboard and USB HID raw). The serial interface could be accessed using PuTTY or screen on Linux.
Reference: "Terminal Settings" section of nRF5 SDK documentation -
To put the dongle into programming mode (bootloader) push the button labeled RESET. The red LED starts to
"softblink" in red.
The proper file to flash with the Programmer app is build/logitacker_pca10059.hex.
nRF Connect software by Nordic provides a Programmer app, which could be used to flash the firmware from this repository
to a Nordic nRF52840 dongle. After flashing the firmware, the dongle provides 4 new interfaces (USB serial, USB mouse,
USB keyboard and USB HID raw). The serial interface could be accessed using PuTTY or screen on Linux.
Reference: "Terminal Settings" section of nRF5 SDK documentation -
To put the dongle into programming mode (bootloader) follow these steps:
The proper file to flash with the Programmer app is build/logitacker_mdk_dongle.hex.
Thanks to DAPLink support flashing this board is really easy:
1) Connect the board to the host
2) Push the button labeled "IF BOOT / RST"
3) A mass storage with label "DAPLINK" should be detected and mounted to the host.
4) Copy the build/logitacker_mdk.hex file to the DAPLINK .
5) Wait till the green LED stops flashing, and the "DAPLINK" is re-mounted.
6) Push the "IF BOOT / RST" button again, in order to boot the LOGITacker firmware.
The April Brother dongle provides a removable dri accepts uf2 file to program the dongle.
To program the dongle follow these steps:
The proper file to flash with the Programmer app is build/logitacker_aprdongle.uf2.
After flashing the firmware, the dongle provides 4 new interfaces (USB serial, USB mouse,
USB keyboard and USB HID raw). The serial interface could be accessed using PuTTY or screen on Linux.
Reference: "Terminal Settings" section of nRF5 SDK documentation -
The aprbrother dongle has LED issues, which are not caused by LOGITacker. See here for reference:
Once LOGITacker has been flashed, double-tapping the hardware button does not start the bootloader anymore (UF2 flash mode).
1) In order to get back to the bootloader, unplug the dongle
2) Press and hold the hardware button (use something which fits the small hole)
3) Re-plug the dongle with the button still pressed
4) The blue LED should "soft blink", this indicates that the dongle is in bootloader mode again
5) Copy the intended UF2 firmware image to the named 'NRF52BOOT' to flash a new firmware
LOGITacker exposes four USB devices:
LOGITacker provides an interactive CLI interface which could be accessed using the USB CDC ACM serial port.
For details, see "Terminal Settings" section of nRF5 SDK documentation -
In addition to PuTTY, the terminal muxer screen could be used as an alternative, like this screen /de 115200
(/de has to be replaced with the proper device file, representing LOGITacker's USB serial interface).
**In contrast to PuTTY, the screen tool seems not to support tra BACKSPACE to CTRL + H. Because of this CTRL + H
has to be pressed to get BACKSPACE functionality**
*Note: Makerdiary MDK exposes two USB serial ports (one belonging to CMSIS-DAP). Be sure to connect to the correct
port, which runs the CLI. The other port only outputs log messages*
pair sniff: used to sniff device pairings (C)pair device: used to pair a new device to a receiver in pairing mode (or for a dedicated RF address if the devices storage save <address>devices storage load <address> command. Stored devices could be listed with devices storage list.script store "scriptname" and restored with script load "scriptname". Stored scripts could be listed withscript list. To show the content of the currently active the following command is used: script showoptions store command is run. Although being less con, thisIn case, saving of scripts or options to flash fails withLOGITACKER_SCRIPT_ENGINE: failed to write first task for script storage or <warning> LOGITACKER_OPTIONS: failed to find Flash Data Storage record for global options: 2
the flash store is corrupted and has to be rewritten.
Issue erase_flash and reconnect the dongle afterwards.
Entering script to the CLI shows the sub-commands of the script command group. There are two kinds of commands:
Commands to edit the currently acti and commands to manage scripts on flash storage.
The keyboard language layout to use (at time of this writing US and DE are supported), could be selected withoptions inject language de or options inject language us. Keep in mind, that in order to persist the language
setting options store has to be issued.
The commands directly usable within a scripts are:
string command, this is language layout independent.Here is a usage example, showing how to bring up a script which utilizes ALT+NUMPAD input, in order to bypass the key
blacklisting of a Logitech R500 (does not allow keys A to Z and GUI + r) on a Windows 7 host:
To list the script run script show
Below some notes on the script, as the approach applies in other scenarios, too :
As GUI + r is filtered by R500 (or results in GUI without the pressed r) only the start dialog could be opened on
the targeted Windows 7 host (not the run dialog). The start dialog accepts no characters created based on ALT+NUMPAD
combination (on Windows 10 it does so). In order to compensate for this, a help dialog is opened using GUI+F1. This
dialog allows input based on NUMPAD combos, thus cmd.exe could be typed out using the altstring command. In order
to use NUMPAD based key combinations, of course, NUMLOCK has to be turned on. This is why the first command of the script
presses the NUMLOCK key. Even if NUMLOCK was already enabled, a second run of the whole script would succeed.
The next commands:
CTRL+A marks the whole "cmd.exe" stringCTRL+X cuts the "cmd.exe" string (clipboard)ALT+F4 close the opened help dialogGUI opens the start dialog CTRL+V pastes the "cmd.exe" string from clipboard (as it can't be entered it directly using )RETURN execute cmd.exeALT+NUMPAD combinations, as the cmd.exe console supports thisRETURN execute calc.exeThe script could now be stored to flash, for later use with script store "calc_win7". Stored scripts could be checked
like this:
Next a simplified for Windows 10 could be created and stored:
First current script has to be cleared with script clear. Afterwards, a new script could be created.
Again, the script should be stored with script store "calc_win10". The command script list should show bot scripts,
now.
The Windows 7 script could be re-loaded using script load like shown below:
*Note: all commands shown so far, support tab completition.*
In order to load, for example, the Windows 7 script on every boot of LOGITacker, the respecti has to be changed
and stored persistently, like this:
After re-plugging LOGITacker and opening the CLI again (power cycle / reboot), the "calc_win7" script should already be
loaded. This could be checked with script show.
For Logitech devices to plain keystroke injection (see MouseJack research for details), the script could
directly be used. For encrypted devices, like Logitech R500 or Logitech SPOTLIGHT presentation clickers, the new script
can not be injected, without knowing the encryption key. This is issue is covered in the next section.
In order to execute the example scripts agains an encrypted Logitech device, the decryption key has to be obtained.
There are two class of , allow stealing those keys:
1) Sniff the pairing (or re-pairing) of the device to obtain the key (C)
2) USB based key extraction from Logitech receivers using a Texas Instruments chip (C, C)
As the details for C / C aren't released, yet, the key should be obtained using by sniffing
the device pairing. The scripts of the last section have been built to target wireless presentation clickers, like R500
or SPOTLIGHT. When those devices ship, they are already paired to the receiver. This is less of an issue, as an
undocumented pairing mode could be triggered, anyways.
The following video shows the concept:
The pre-release of munifying could be found here:
The only thing which has to be done to capture a pairing with LOGITacker and derive the link encryption key according to
C, is to issue the following command: pair sniff run
LOGITacker starts flashing the red LED. Once a receiver - which is set to pairing mode - is in range, the LED starts
flashing blue. If a pairing is captured successfully, the device and associated key are not only stored in LOGITacker's
RAM, but they are automatically stored to flash.
In order to unpair and re-pair the device to the receiver, the munifying tool is used. Re-pairing of the device is
done, while LOGITacker is running in pair sniff mode.
The command ./munifying unpair lists devices currently paired to the receiver and ask for a device to unpair.
To set the receiver back to pairing mode and re-pair the device, munifying has to be called with ./munifying pair.
Below is the example output of munifying for unpairing a R500 presenation clicker from its receiver and initiating
pairing mode again.
Once the receiver is in pairing mode, the red-flashing LED of LOGITacker should turn to a blue-flashing LED.
For Unifying devices, the device which should be paired has to be turned off and on again. For presentation clickers
R500 / SPOTLIGHT the two buttons used to put the clicker into Bluetooth mode have to pressed and hold.
If nothing has gone wrong, LOGITacker has captured the device address and encryption key. Afterwards, LOGITacker
changes back from "pair sniff" mode to "passi" mode (default behavior).
Here's some example output of a successful key capture:
When pressing keys on the - now paired - device,
LOGITacker should not only print the encrypted reports, but a decrypted , too (in passi mode).
Here's an example for the key "RIGHT":
Additionally, the device should be listed in red with the remarks "encrypted, key ḱnown":
Now e is set, for encrypted injection (LOGITackers script engine automatically encrypts keyboard RF reports
for devices with known key).
In order to inject the "calc_win7" script (which should already be loaded), two steps are needed:
1) Select the injection target (tab completition a)
2) Execute the injection
This is done with the following commands (RF address of the device is only an example):
Once the script has finished execution, LOGITacker changes back from "injection" mode to "discover" mode.
This behavior could be changed using the following command:
The process for ea follows the same steps as described for the "encrypted injection".
The link encryption key for a device has either to be added manually (could be extracted from receivers with unrestricted
of munifying, once released) or to be obtained from sniffing of device pairing.
As pointed out in the previous chapter, passi automatically decrypts received key reports for devices with known
key. Reading the keys from the CLI output isn't really con. To o this, LOGITacker allows forwarding of
decrypted or plain keyboard and mouse frames sniffed in passi mode to its USB interface. The reports are
translated to proper USB HID reports. Thus, the input is ultimately mirrored to the USB host which has LOGITacker
connected.
The respecti could be enabled with the following commands:
The result should look like in the following video, where the sniffed input of a encrypted keyboard is mirrored to
LOGITacker's USB host:
The video additionally shows, that for Unifying device the re-pairing could be initiated using the Unifying software, in
order to sniff the link encryption key. For presentation clickers, this could currently only be achieved with munifying.
**WARNING: In current , no filter could be applied on USB forwarded input. E entered with the sniffed
keyboard is directly forwarded to the USB keyboard interface of LOGITacker.**
t.b.d.
t.b.d.
Demo:
Note: The have been created throughout de and command syntax has likely changed (and will change).
Please use tab completion and CLI inline help. All examples are included in current firmware.
Video:
Note: Discovery, especially of presentation clickers, has been impro this test video.
Video:
To sniff a pairing attempt use pai sniff run. Successfully devices (and keys) of successfully sniffed pairing are
stored to flash automatically. The options pair-sniff command subset could be used to alter this behavior.
The options store command could be used to persistently store options changed at runtime (new option survi
after storing).
If not done automatically after successful pair-sniffing, the respecti has to be sniffed usingpassi AA:BB:CC:DD:EE:FF, where AA:BB:CC:DD:EE:FF has to be replaced by the device address obtained during
pair sniff (a via tab complete).
In order to forward (decrypted) keyboard RF frames to the USB keyboard interface, like shown in the video, the
respecti has to be enabled with options passi pass-through-keyboard on.
Video:
The video utilizes "pair-sniffing" to obtain the device link encryption key. This, of course, isn't needed for unencrypted
devices (f.e. presentation clickers like R400, R700, R800).
The injection mode uses encrypted injection for devices with known AES key and falls back to plain injection if no
key is known or the device isn't encrypted.
In order to create, store and delete scripts use the script sub-command set (again inline help and tab complete).
In order to start a injection enter injection mode for a specific device with inject target AA:BB:CC:DD:EE whereAA:BB:CC:DD:EE has to be replaced by the respecti address (tab complete if already discovered).
To execute the injection, issue inject execute.
The behavior after injection depends on the setting of options inject onsuccess and options inject onfail.
If LOGITacker is configured to lea mode it has to be entered again, using inject target AA:BB:CC:DD:EE, in
order to do further injections.
The current injection script could be stored to flash with script store "scriptname".
It is not allowed to o stored scripts (same name). In order to do so, the respecti has to be deleted
first, with script remove "scriptname".
Stored scripts could be listed with script list.
The current script could be printed with script show.
To set a script as default script on boot (could be used for auto-injection), the following option has to be altered:options inject default-script "scriptname". To persist the new default-script option don't forget to run options store.
altstring feature in scripts (enter characters using ALT+NUMPAD on Windows targets)Video demo 1 (Mouse MX Anywhere 2S):
Video demo 2 (encrypted presentation clicker R500):
LOGITacker should be used for authorized testing and/or educational purposes only.
The only exception is using it against devices or a network, owned by yourself.
I take no responsibility for the abuse of LOGITacker or any information given in
the related documents.
I DO NOT GRANT PERMISSIONS TO USE LOGITacker TO BREAK THE LAW.
As LOGITacker is no production tool, it is likely that bugs occur.
I disclaim any warranty for LOGITacker, it is provided "as is".
开发语言:C
Star 数:745
该项目属于漏洞知识库方向的开源资源,代码结构清晰,适合安全研究人员学习参考。项目围绕Enumerate and test Logitech wireless input devices for vulnerabilities with a nRF52840 radio dongle.展开,提供了可运行的实现,对理解相关安全机制、工具原理与攻防技术具有较高的研究价值。
从技术实现角度看,此类项目的核心在于对底层原理的深入理解与工程化落地。开发者在研究过程中可以结合官方文档与社区讨论,梳理项目的初始化流程、核心模块职责与数据流转,逐步掌握其中的技术细节与设计思路。
1. 下载源码压缩包,解压到本地环境。
2. 根据项目类型准备对应的运行环境与依赖。
3. 按照 README 中的步骤完成配置与部署。
4. 在隔离的测试环境中运行验证,避免影响生产系统。
本资源来源于开源社区,仅供安全研究、技术学习与合法授权范围内的攻防演练使用,请勿用于任何非法或侵害他人权益的用途。使用本项目产生的一切后果由使用者自行承担。
| 资源标题 | LOGITacker - Enumerate and test Logitech wireless input devices |
| 所属分类 | 漏洞知识库 |
| 发布作者 | admin |
| 发布时间 | 2026-10-06 01:07:04 |
| 下载权限 | 免费下载 |
| 附件数量 | 2 个下载链接 |
| 浏览次数 | 155 |
| 讨论数量 | 0 |
| 主题状态 | 正常讨论中 |