{"id":13826555,"url":"https://github.com/bastilleresearch/keysniffer","last_synced_at":"2025-07-09T00:33:57.604Z","repository":{"id":54289222,"uuid":"64222412","full_name":"BastilleResearch/keysniffer","owner":"BastilleResearch","description":"KeySniffer device discovery tools and public advisories ","archived":false,"fork":false,"pushed_at":"2016-07-26T14:02:59.000Z","size":17,"stargazers_count":113,"open_issues_count":3,"forks_count":26,"subscribers_count":19,"default_branch":"master","last_synced_at":"2024-08-05T09:15:28.652Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/BastilleResearch.png","metadata":{"files":{"readme":"readme.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2016-07-26T13:13:27.000Z","updated_at":"2024-01-01T11:49:18.000Z","dependencies_parsed_at":"2022-08-13T11:01:11.722Z","dependency_job_id":null,"html_url":"https://github.com/BastilleResearch/keysniffer","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BastilleResearch%2Fkeysniffer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BastilleResearch%2Fkeysniffer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BastilleResearch%2Fkeysniffer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/BastilleResearch%2Fkeysniffer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/BastilleResearch","download_url":"https://codeload.github.com/BastilleResearch/keysniffer/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":225476383,"owners_count":17480215,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-04T09:01:40.208Z","updated_at":"2024-11-20T05:30:51.307Z","avatar_url":"https://github.com/BastilleResearch.png","language":null,"funding_links":[],"categories":["\u003ca id=\"7bf0f5839fb2827fdc1b93ae6ac7f53d\"\u003e\u003c/a\u003e工具"],"sub_categories":["\u003ca id=\"32739127f0c38d61b14448c66a797098\"\u003e\u003c/a\u003e嗅探\u0026\u0026Sniff"],"readme":"# KeySniffer device discovery tools and advisories\n\nFor information on the KeySniffer vulnerabilities, please visit [keysniffer.net](https://www.keysniffer.net).\n\n## Requirements\n\n- SDCC (minimum version 3.1.0)\n- GNU Binutils\n- Python\n- PyUSB\n- platformio\n\nInstall dependencies on Ubuntu:\n\n```\nsudo apt-get install sdcc binutils python python-pip\nsudo pip install -U pip\nsudo pip install -U -I pyusb\nsudo pip install -U platformio\n```\n\n## Supported Hardware\n\nThe following hardware has been tested and is known to work.\n\n- CrazyRadio PA USB dongle\n- SparkFun nRF24LU1+ breakout board\n- Logitech Unifying dongle (model C-U0007, Nordic Semiconductor based)\n\n## Initialize the submodule\n\n```\ngit submodule init\ngit submodule update\n```\n\n## Build the firmware\n\n```\ncd nrf-research-firmware\nmake\n```\n\n## Flash over USB\n\nnRF24LU1+ chips come with a factory programmed bootloader occupying the topmost 2KB of flash memory. The CrazyRadio firmware and RFStorm research firmware support USB commands to enter the Nordic bootloader.\n\nDongles and breakout boards can be programmed over USB if they are running one of the following firmwares:\n\n- Nordic Semiconductor Bootloader\n- CrazyRadio Firmware\n- RFStorm Research Firmware\n\nTo flash the firmware over USB:\n\n```\ncd nrf-research-firmware\nsudo make install\n```\n\n## Flash a Logitech Unifying dongle\n\n*The most common Unifying dongles are based on the nRF24LU1+, but some use chips from Texas Instruments.\nThis firmware is only supported on the nRF24LU1+ variants, which have a model number of C-U0007. The flashing\nscript will automatically detect which type of dongle is plugged in, and will only attempt to flash the nRF24LU1+ variants.*\n\nTo flash the firmware over USB onto a Logitech Unifying dongle:\n\n```\ncd nrf-research-firmware\nsudo make logitech_install\n```\n\n## Flash a Logitech Unifying dongle back to the original firmware\n\nDownload and extract the Logitech firmware image, which will be named `RQR_012_005_00028.hex` or similar. Then, run the following command to flash the Logitech firmware onto the dongle:\n\n```\ncd nrf-research-firmware\nsudo ./prog/usb-flasher/logitech-usb-restore.py [path-to-firmware.hex]\n```\n\n## Flash over SPI using a Teensy\n\nIf your dongle or breakout board is bricked, you can alternatively program it over SPI using a Teensy.\n\nThis has only been tested with a Teensy 3.1/3.2, but is likely to work with other Arduino variants as well.\n\n### Build and Upload the Teensy Flasher\n\n```\ncd nrf-research-firmware/prog\nplatformio run --project-dir teensy-flasher --target upload\n```\n\n### Connect the Teensy to the nRF24LU1+\n\n| Teensy | CrazyRadio PA | Sparkfun nRF24LU1+ Breakout |\n| ------ | ---------- | -------- |\n| GND | 9 | GND |\n| 8 | 3 | RESET |\n| 9 | 2 | PROG |\n| 10 | 10 | P0.3 |\n| 11 | 6 | P0.1 |\n| 12 | 8 | P0.2 |\n| 13 | 4 | P0.0 |\n| 3.3V | 5 | VIN |\n\n### Flash the nRF24LU1+\n\n```\ncd nrf-research-firmware\nsudo make spi_install\n```\n\n# Python Scripts\n\n## device discovery - MOSART Semiconductor based devices\n\nIdentify nearby MOSART Semiconductor based wireless keyboard dongles\n\n```\nusage: ./tools/mosart-device-discovery.py\n\n```\n\n## device discovery - GE 98614 wireless keyboard\n\n```\nusage: ./tools/ge-device-discovery.py\n\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbastilleresearch%2Fkeysniffer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbastilleresearch%2Fkeysniffer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbastilleresearch%2Fkeysniffer/lists"}