Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
keysweeper — KeySweeper — это скрытное устройство на базе Arduino, замаскированное под работающее USB-зарядное устройство для розетки, которое беспроводным и пассивным способом перехватывает, расшифровывает, записывает и передаёт (через GSM) все нажатия клавиш с любой беспроводной клавиатуры Microsoft поблизости. | Kitploit
Инструменты/GitHubGitHub/samyk/keysweeper
Безопасность встроенных системСниффинг и анализ пакетовЭксфильтрация данныхСбор информацииБезопасность беспроводных сетейАппаратный ХакингRed Teaming
GitHubsamyk/keysweeper

keysweeper

Репозиторий
1.1k24649 лет назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →

Описание

KeySweeper — это скрытное устройство на базе Arduino, замаскированное под работающее USB-зарядное устройство для розетки, которое беспроводным и пассивным способом перехватывает, расшифровывает, записывает и передаёт (через GSM) все нажатия клавиш с любой беспроводной клавиатуры Microsoft поблизости.

Сайт
Поделиться

KEYSWEEPER // SIGINT // SAMY.PL // REL ДЛЯ ВСЕХ // ПРИКЛАДНОЙ ХАКИНГ

KeySweeper

KeySweeper — это скрытое устройство на базе Arduino, замаскированное под работающее USB-зарядное устройство для розетки, которое беспроводно и пассивно перехватывает, расшифровывает, регистрирует и передаёт (через GSM) все нажатия клавиш с любой беспроводной клавиатуры Microsoft поблизости.

Все нажатия клавиш регистрируются онлайн и локально. SMS-оповещения отправляются при вводе триггерных слов, имён пользователей или URL-адресов, раскрывая пароли. Если KeySweeper отключить от сети, он продолжает работать от внутренней батареи и автоматически заряжается при повторном включении питания. Веб-инструмент позволяет вести мониторинг нажатий клавиш в реальном времени.

Живая демонстрация и полные подробности — в видео: KeySweeper


KeySweeper

Инструмент живого мониторинга KeySweeper

Контактное лицо: @SamyKamkar // [email protected] // http://samy.pl

Выпущено: 12 января 2015 г.

Исходный код / схема: https://github.com/samyk/keysweeper

Стоимость устройства: $10–80 в зависимости от варианта исполнения

Статус: Работает, открытый исходный код, открытое аппаратное обеспечение, рассекречено.


(U) Возможности

Внутренности KeySweeper

KeySweeper — это скрытое устройство на базе Arduino, замаскированное под работающее USB-зарядное устройство для розетки, которое беспроводно и пассивно перехватывает, расшифровывает, регистрирует и передаёт обратно все нажатия клавиш с любых беспроводных клавиатур Microsoft (использующих проприетарный 2,4-ГГц радиочастотный протокол) в зоне действия.

Нажатия клавиш передаются оператору KeySweeper через Интернет с помощью опционального GSM-чипа либо могут храниться на flash-чипе и доставляться по беспроводной связи, когда вторичное устройство KeySweeper оказывается в зоне беспроводной связи целевого KeySweeper. Веб-инструмент позволяет вести мониторинг нажатий клавиш в реальном времени.

KeySweeper умеет отправлять SMS-оповещения при вводе определённых нажатий клавиш, например «www.bank.com». Если KeySweeper отключить от сети переменного тока, он выглядит выключенным, однако продолжает скрытно работать от внутренней батареи, которая автоматически заряжается при повторном подключении к сети переменного тока.

KeySweeper развивает работу Трэвиса Гудспида над проектом goodfet.nrf и работу Торстена Шрёдера и Макса Мозера над проектом KeyKeriki v2.0.

SMS от KeySweeper


(U) Аппаратное обеспечение

Microsoft Wireless Keyboard 800

Микроконтроллер Arduino / Teensy

$3 - 30: Можно использовать микроконтроллер Arduino или Teensy. В своей сборке я использую 3,3-вольтовый Arduino Pro Mini из-за его очень тонкого профиля.

RF-чип nRF24L01+ на 2,4 ГГц

$1: Я использую RF-чип nRF24L01+ за $1, который обменивается данными по GFSK на 2,4 ГГц. Подробности ниже; эти чипы можно купить всего за $1 на eBay. Эти чипы могут общаться только по проприетарным протоколам и не предназначены для перехвата, однако, как мы увидим ниже, их можно хитроумно заставить пассивно перехватывать пакеты.

Сетевое USB-зарядное устройство

$6: Я использую недорогое сетевое USB-зарядное устройство (выпрямитель), которое преобразует переменный ток в 5 В постоянного тока; то, на которое я даю ссылку, имеет винт, благодаря которому его легко вскрыть (я разломал несколько других в процессе вскрытия). Для GSM-версии KeySweeper я беру два USB-зарядника — внутренности маленького зарядника (похожего на зарядник от iPhone) и внешний корпус от более крупного USB-зарядника.

SPI-чип последовательной флэш-памяти

ОПЦИОНАЛЬНО ($2): Опциональный SPI-чип флэш-памяти можно использовать для хранения нажатий клавиш. Если вы используете плату FONA GSM, описанную ниже, это не обязательно, так как нажатия можно передавать в интернет в реальном времени. Однако, если вы хотите более дешёвый вариант, можно сохранять нажатия на этом чипе внутри KeySweeper, а затем получать их позже, подойдя к устройству в зону 2,4-ГГц беспроводной связи с вторичным устройством, которое выкачает эти нажатия.

У большинства микроконтроллеров очень ограниченная память или EEPROM для хранения данных, поэтому преимущество наличия flash-чипа для хранения этих нажатий очевидно.

Adafruit FONA

ОПЦИОНАЛЬНО ($45): Компания Adafruit создала плату под названием FONA, которая позволяет использовать 2G-SIM-карту для отправки/получения SMS, телефонных звонков и выхода в Интернет прямо с устройства.

С ней flash-чип не нужен, поскольку нажатия клавиш немедленно отправляются на бэкенд-сервер для сбора данных. Кроме того, если на целевых клавиатурах будут введены определённые ключевые слова, SMS-сообщение будет отправлено на указанный номер, чтобы оповестить оперативника об этом факте.

SIM-карта

ОПЦИОНАЛЬНО ($3, только при использовании FONA): FONA требует мини-SIM-карту (не микро-SIM). Я использую предоплаченную SIM-карту T-Mobile. Рекомендую T-Mobile, так как они поддерживают 2G, тогда как большинство других операторов уже убрали или выводят из эксплуатации свои 2G-сети, а FONA для Интернета поддерживает только 2G. Убедитесь, что вы взяли SIM-карту нужного размера — подробнее о требованиях FONA к SIM-карте здесь.

Литий-ионный (LiOn или LiPo) аккумулятор 3,7 В

ОПЦИОНАЛЬНО ($5 и выше, только при использовании FONA): FONA обеспечивает встроенную зарядку LiPo/LiOn аккумулятора, и пока KeySweeper подключён к сети переменного тока, аккумулятор будет оставаться заряженным, однако он всё равно обязателен. Кроме того, KeySweeper продолжает скрытно работать от аккумулятора, когда его отключают от сети переменного тока, и начинает заряжаться при повторном подключении к сети.

KeySweeper без питания


(U) Программное обеспечение

KeySweeper

Исходный код KeySweeper полностью доступен в моём github: https://github.com/samyk/keysweeper

KeySweeper состоит из нескольких частей. Основной код устанавливается на микроконтроллер, а веб-бэкенд на jQuery и PHP регистрирует все нажатия клавиш и предоставляет веб-интерфейс для мониторинга целевых клавиатур в реальном времени.

KeySweeper также требует следующие файлы из библиотеки RF24 от maniacbug:

  • RF24.h
  • nRF24L01.h
  • RF24_config.h

Просто скопируйте файлы в каталог keysweeper_mcu_src. Также необходимо изменить директиву #include в файле RF24.h с #include <RF24_config.h> на #include "RF24_config.h".

Библиотека Adafruit FONA

Стоит использовать мою версию библиотеки Adafruit FONA, так как я добавил дополнительную опцию, позволяющую FONA сообщать нам о поступлении нового текстового сообщения. В оригинальной библиотеке приходится постоянно опрашивать устройство, чтобы узнать, не появилось ли больше сообщений, чем ожидалось. В моей версии можно включить опцию fona.setSMSInterrupt(1), которая на момент появления новых SMS переводит контакт RI (Ring Interrupt) в низкий уровень.

jQuery Terminal

Я создал бэкенд-инструмент, позволяющий в реальном времени следить за клавиатурами через веб-страницу. Плагин jQuery Terminal делает его более эффектным.

jQuery UI Virtual Keyboard

jQuery UI Virtual Keyboard продолжает делать живой шпионский интерфейс KeySweeper эффектным, показывая нажатия клавиш на виртуальной клавиатуре, когда пользователь реально нажимает клавиши.

Инструмент живого мониторинга KeySweeper


(U) Определение беспроводного протокола клавиатуры

Получив беспроводную клавиатуру Microsoft, если она в нашем распоряжении, мы можем заглянуть на её заднюю сторону и посмотреть FCC ID. На моей клавиатуре FCC ID (обязательный для всех устройств, использующих радиочастоты в США) — C3K1455, который легко ищется на сайте FCC.

http://samy.pl/keysweeper/fcc.jpg

Сразу же мы обнаруживаем, что клавиатура работает на частотах 2403–2480 МГц, согласно отчёту FCC.

Теперь, когда я знаю, что это устройство работает на 2,4 ГГц, я предполагаю, что оно использует либо распространённый 2,4-ГГц протокол, такой как wi-fi, bluetooth, zigbee и другие, либо проприетарный протокол. Поскольку устройство поставлялось с собственным USB-адаптером (с его собственным FCC ID, C3K1461), это, скорее всего, проприетарный сигнал на 2,4 ГГц.

Поскольку это, вероятно, проприетарный сигнал на 2,4 ГГц, теперь нам нужен какой-то метод перехвата на 2,4 ГГц. Wi-Fi снифферы не помогут, так как это не 802.11 (как в случае с SkyJack), а RTL-SDR сам по себе не поможет, поскольку его верхняя граница около 2,2 ГГц, если только дополнительно не использовать преобразователь частоты вниз (мы использовали RTL-SDR в Digital Ding Dong Ditch). Поэтому мне сразу хочется использовать HackRF, мощное и недорогое программно-определяемое радио, однако, несмотря на его чрезвычайную мощность за свою цену, возможно, нам удастся обойтись более дешёвым оборудованием.

Исходя из предыдущего опыта, я предполагаю, что клавиатура использует что-то вроде Nordic nRF24L01+, TI CC2500 или Cypress CYRF6936, но мы не узнаем наверняка без дальнейшего исследования.

http://samy.pl/keysweeper/int1.jpg

Выкрутив винты из клавиатуры и вскрыв её, мы видим один чип, отвечающий за всё. На нём написано NRF 24LE1H, что очень похоже на nRF24L01 (n=Nordic Semiconductor, RF=Radio Frequency, 24=2.4GHz)! Быстрый поиск показывает чип nRF24LE1, и мы видим, что в нём действительно интегрированы RF-чип nRF24L01+ и CPU (система-на-кристалле/SoC), а быстрый поиск на eBay показывает, что nRF24L01+ можно заказать нам менее чем за $1.

root@kitploit:~
Чип nRF24LE1 объединяет ядро 2,4-ГГц RF-трансивера nRF24L01+, улучшенный 16-МГц 8-битный процессор, совместимый с 8051, 1 кБ + 256 Б ОЗУ, 16 кБ встроенной флэш-памяти и широкий набор системной периферии.

http://samy.pl/keysweeper/int2.jpg

Глядя на даташит nRF24L01+, мы видим, что это 2,4-ГГц RF-чип, работающий на скорости 250 кбит/с, 1 Мбит/с или 2 Мбит/с, использующий GFSK (гауссовская частотная манипуляция — это цифровая частотная модуляция/ЧМ) и, к сожалению, не имеющий легального режима подслушивания или прямого режима для сниффинга... или всё-таки имеет?

http://samy.pl/keysweeper/Amfm3-en-de.gif


(U) Перехват проприетарных сигналов на 2,4 ГГц

Хотя обычно я достал бы что-то вроде HackRF или RTL-SDR с цифровым преобразователем частоты вниз (чтобы привести 2,4 ГГц в диапазон RTL-SDR), было бы очень удобно перехватывать сигнал с помощью более дешёвого оборудования, ведь в конечном счёте я хочу упаковать всё это в устройство, которое можно оставлять в поле.

После простого поиска нашлась удивительная страница Трэвиса Гудспида, где он не только перехватывает похожую клавиатуру (Microsoft Comfort Desktop 5000), но и показывает, как превратить nRF24L01+ в сниффер на 2,4 ГГц с помощью своего устройства GoodFET и компьютера с python-приложением goodfet.nrf.

GoodFET и nRF24L01+

Трэвис обнаружил, что сниффинг с помощью этого устройства традиционно сложен, поскольку нужно указать не только канал (частоту) для прослушивания, но и MAC-адрес, на котором слушать. Чип nRF доставляет только пакеты, отправленные на этот конкретный MAC-адрес. Кроме того, чип nRF не сообщает вам MAC-адрес, поскольку вы уже указали его (предполагается, что он находится в одном из наших каналов RX_ADDR_P[0-5], как указано в даташите).

Однако при указании длины MAC Трэвис обнаружил один вариант, который в даташите считается «недопустимым» (SETUP_AW, 0x03 set to 00), но на самом деле устанавливает MAC длиной 2 байта! Кроме того, задав в качестве MAC данные, которые обычно встречаются в преамбуле (0x00AA or 0x0055, in binary 0000000010101010 or 0000000001010101), мы можем обмануть устройство, заставив его отдать нам пакет раньше, раскрыв полный MAC-адрес в части данных! Прочитайте его отличный разбор со всеми подробностями.

USB-адаптер Microsoft


(U) Повышение скорости и портативности

Хотя для перехвата во время тестирования мы можем использовать GoodFET, компьютер и nRF24L01+, в конечном счёте мы хотим разместить это на недорогом встраиваемом устройстве. Мы можем взять часть отличной работы Трэвиса на Python и портировать её на встраиваемый C, чтобы загружать её на микроконтроллер, а не требовать компьютер + GoodFET.

Кроме того, мы вносим несколько улучшений. Goodfet.nrf предлагает метод сканирования устройств, выполняя следующее:

  • начать с частоты 2400 МГц
  • установить скорость 1 Мбит/с и MAC 0x00AA, слушать 10 секунд
  • установить скорость 2 Мбит/с и MAC 0x00AA, слушать 10 секунд
  • установить скорость 1 Мбит/с и MAC 0x0055, слушать 10 секунд
  • установить скорость 2 Мбит/с и MAC 0x0055, слушать 10 секунд
  • увеличивать частоту и начинать заново; как только достигаем 2528 МГц, сбрасываем на 2400 (128 частот)
  • при обнаружении потенциальной клавиатуры для подтверждения требуется как минимум четыре пакета, чтобы пройти порог и убедиться, что пакет настоящий, так как ложных срабатываний много

Это означает, что для сканирования всего диапазона частот требуется ~85 минут, и при этом в нужный 10-секундный интервал должно быть нажато как минимум несколько клавиш. Изучив исследование и клавиатуру Трэвиса, исследование и клавиатуру KeyKeriki, а также собственную клавиатуру, мы можем внедрить несколько улучшений:

  • если помните из данных FCC, для этих клавиатур используется только диапазон 2403–2480 МГц, что сокращает наши 128 возможных частот до 78 (примерно на 40% меньше сканирования)
  • все клавиатуры используют 2 Мбит/с, что вдвое сокращает наш поиск
  • после осмотра других клавиатур я обнаружил, что все клавиатуры Microsoft начинаются с MAC 0xCD, а это значит, что наша преамбула всегда будет 0xAA (10101010) — ведь за преамбулой 0xAA всегда следует бит 1 (0xCD is 11001101), чтобы биты чередовались; это вдвое сокращает наш поиск
  • поскольку мы знаем первый байт нашего MAC (0xCD), а также знаем, какие пакеты искать, мы просто детектируем только эти пакеты, а значит, нам достаточно увидеть лишь один пакет, чтобы с уверенностью определить, что перед нами клавиатура
  • мы сокращаем время сканирования на каждой частоте до 500 мс, благодаря чему полный проход занимает менее 40 секунд

(U) Расшифровка нажатий клавиш

Торстен Шрёдер и Макс Мозер представили отличное устройство KeyKeriki, способное перехватывать данные клавиатур Microsoft, полностью изучили процесс расшифровки и создали устройство для этой цели. Однако Трэвис указывает, что их устройству требуются два радио и мощный микроконтроллер для захвата и разбора пакетов на скорости 2 Мбит/с, на которой общаются клавиатуры. Проект Трэвиса тоже отличный, но требует хост-компьютера и слишком велик для нашего скрытного исполнения. Мы улучшаем эти конструкции в данном сценарии, требуя лишь недорогое радио и микроконтроллер — оба маломощные и очень маленькие, без компьютера и дорогих приёмников.

Торстен и Макс обнаружили, что нажатия клавиш просто шифруются (xor) с помощью MAC-адреса в режиме ECB, который мы можем перехватить, используя метод Трэвиса по использованию nRF24L01+ для сниффинга и раскрытия MAC-адресов. Такое «шифрование» эквивалентно тому, чтобы взять колоду карт, один раз снять её и назвать перемешанной.

После дальнейшего исследования я обнаружил, что, поскольку теперь нам известно, что все клавиатуры Microsoft начинаются с MAC-адреса 0xCD, сами нажатия клавиш (оранжевый цвет ниже) оказываются выровненными по первому байту MAC-адреса (0xCD). Это означает, что даже не зная MAC-адрес, мы можем расшифровать нажатие, так как выравнивание никогда не меняется, а 0xCD всегда является первым байтом MAC.

Дополнительное открытие: поскольку длина зашифрованной части пакета — 11 байт, MAC — 5 байт, а CRC вычисляется через xor каждого байта с другим (до шифрования), происходит кое-что интересное. Так как MAC участвует в xor дважды, мы можем вычислить контрольную сумму, не зная MAC-адрес. Это объясняется тем, что MAC-адрес присутствует там полностью дважды, а xor любого числа с самим собой (xor MAC с MAC) взаимно уничтожается. Одиннадцатый байт снова является первым байтом MAC, который, как мы знаем, всегда равен 0xCD. Это позволяет проводить другие атаки, например изменять нажатие и CRC, снова без знания MAC-адреса. Я представлю это и ещё несколько забавных демонстраций в будущем проекте.

Страница из презентации KeyKeriki демонстрирует процесс расшифровки:

http://samy.pl/keysweeper/decrypt.png

  • Тип устройства 0x0A = клавиатура, 0x08 = мышь
  • Тип пакета 0x78 = нажатие клавиши, 0x38 = простой (клавиша удерживается)
  • Тип модели 0x06 = клавиатура? Это тот же HID-код, что и для клавиатуры
  • HID-код 0x05 = буква 'b' (описано в разделе 7 здесь)

Наш метод расшифровки, реализованный в исходном коде KeySweeper:``` // decrypt those keyboard packets! void decrypt(uint8_t* pkt) { // our encryption key is the 5-byte MAC address and // starts 4 bytes in (4-byte header is unencrypted) for (int i = 4; i < 15; i++) pkt[i] ^= mac >> (((i - 4) % 5) * 8) & 0xFF; }

root@kitploit:~
# (U) Создание / Переделка USB-зарядного устройства

**ВНИМАНИЕ: Устройства, подключаемые к сети переменного тока, работают с высоким напряжением, и наше устройство, подключаемое к сети, небезопасно и не соответствует типичным стандартам электробезопасности. Это опасное устройство, которое при неправильном использовании или сборке может убить, вызвать пожар или иной серьёзный ущерб. Не собирайте устройство с питанием от сети переменного тока, если вы не знаете, что делаете. Если вы хотите продолжить сборку этого устройства, но без сети переменного тока, просто используйте батарею или питайте устройство напрямую от USB, чтобы безопасно следовать инструкции.**

KeySweeper использует сверхмаломощное и компактное оборудование, чтобы оставаться максимально скрытным. KeySweeper может работать от батареи или от источника питания постоянного тока ~3-20В. Поскольку мы хотим, чтобы KeySweeper был запитан постоянно, мы скрытно устанавливаем его внутри безобидного настенного USB-зарядного устройства, которое, как мы ожидаем, всегда будет включено в розетку.

Если USB-зарядное устройство отключить от сети, KeySweeper незаметно продолжает работу от (опциональной) внутренней батареи. Как только KeySweeper снова подключают к сети, он переключается обратно на питание от сети переменного тока и одновременно подзаряжает батарею.

Если вы собираете KeySweeper **без** GSM-платы, всё можно разместить в обычном настенном USB-зарядном устройстве для сети переменного тока. Я советую искать такое, которое скреплено винтом, поскольку большинство других запаяны наглухо, и для их вскрытия придётся что-то повредить.
[![http://samy.pl/keysweeper/usbopen.jpg](https://assets.kitploit.com/production/public/readmes/placeholders/f0fc86cfe65f76d40e15aaec61704ec8220a56dc89d4be03c46f67cb31b9fa8c.svg)](http://samy.pl/keysweeper/usbopen.jpg)

Если вы решите использовать GSM-плату, я обнаружил, что она не помещается в зарядное устройство такого типа вместе с остальной электроникой. Однако я выяснил, что, вскрыв зарядное устройство меньшего размера (похожее на зарядные устройства для iPhone), можно найти гораздо меньший выпрямитель (AC->DC) и понижающий преобразователь (высокое напряжение->5В), что позволяет разместить **всю** нашу электронику в более крупном USB-зарядном устройстве.

[![http://samy.pl/keysweeper/usbcharger1.jpg](https://assets.kitploit.com/production/public/readmes/placeholders/f0fc86cfe65f76d40e15aaec61704ec8220a56dc89d4be03c46f67cb31b9fa8c.svg)](http://samy.pl/keysweeper/usbcharger1.jpg)
[![http://samy.pl/keysweeper/usbcharger2.jpg](https://assets.kitploit.com/production/public/readmes/placeholders/f0fc86cfe65f76d40e15aaec61704ec8220a56dc89d4be03c46f67cb31b9fa8c.svg)](http://samy.pl/keysweeper/usbcharger2.jpg)

Моя подруга Дана одолжила мне свой паяльник для кукол. Я не совсем понимаю, для чего она его использует, но это паяльник с прикрепляемым лезвием. Он отлично подходит для разрезания пластика и, полагаю, кукол. Она забрала паяльник назад, как только я объяснил, что будет делать это устройство. Похоже, она этого не одобряет, хотя я не понимаю почему. Уверен, я узнаю, когда перехвачу ещё нажатия клавиш с её клавиатуры.

[![http://samy.pl/keysweeper/usbcharger3.jpg](https://assets.kitploit.com/production/public/readmes/placeholders/f0fc86cfe65f76d40e15aaec61704ec8220a56dc89d4be03c46f67cb31b9fa8c.svg)](http://samy.pl/keysweeper/usbcharger3.jpg)
[![http://samy.pl/keysweeper/usbchargeropen.jpg](https://assets.kitploit.com/production/public/readmes/placeholders/f0fc86cfe65f76d40e15aaec61704ec8220a56dc89d4be03c46f67cb31b9fa8c.svg)](http://samy.pl/keysweeper/usbchargeropen.jpg)

**ВНИМАНИЕ: ещё раз, поскольку мы имеем дело с сетью переменного тока, это очень опасно. Не вскрывайте и не переделывайте устройства, работающие от сети переменного тока, если вы не знаете, что делаете.** Вы всё равно можете собрать KeySweeper, просто запитав всё от USB-зарядного устройства, порта или батареи без переделки устройства, работающего от сети переменного тока.

Также важно подключить наш Arduino через порт RAW к 5-вольтовому USB-питанию с правильной полярностью (минус к GND, плюс к RAW). В данном случае я использую Arduino Pro Mini на 3.3В. Порт RAW принимает нестабилизированное напряжение от 3.35 до 12В и использует встроенный стабилизатор напряжения для понижения до 3.3В. Обратите внимание, что наш чип nRF24L01+ требует 1.9-3.6В, поэтому подача 5В — это **слишком много!** Кроме того, если вы используете SPI-чип, такой как [SST25VF016B](http://ww1.microchip.com/downloads/en/DeviceDoc/S71271_04.pdf), ему требуется 2.7-3.6В, так что снова 5В — это **слишком много!** Обязательно используйте стабилизированные 3.3В с Arduino (с контакта VCC на Arduino 3.3В или с контакта 3V3 на Arduino 5В).

[![http://samy.pl/keysweeper/multimeter.jpg](https://assets.kitploit.com/production/public/readmes/placeholders/f0fc86cfe65f76d40e15aaec61704ec8220a56dc89d4be03c46f67cb31b9fa8c.svg)](http://samy.pl/keysweeper/multimeter.jpg)

*примечание: плата USB, изображённая рядом с мультиметром, — это оригинал, до того как я решил заменить её на меньшую, чтобы также поместилась GSM-плата*

После того как мы собрали всё оборудование, можно увидеть, что всё помещается с запасом в нашем зарядном устройстве (до подключения проводки):

[![http://samy.pl/keysweeper/testingsize.jpg](https://assets.kitploit.com/production/public/readmes/placeholders/f0fc86cfe65f76d40e15aaec61704ec8220a56dc89d4be03c46f67cb31b9fa8c.svg)](http://samy.pl/keysweeper/testingsize.jpg)

Ради интереса я подключил светодиод зарядного устройства к контакту 6 на Arduino, и хотя светодиод выглядит одинаково, на самом деле он мигает при перехвате нажатий клавиш. Это, скорее всего, раскроет ваше прикрытие, но за этим очень интересно наблюдать. Я также позаботился о том, чтобы светодиод гас при потере питания от сети переменного тока, даже если остальная часть устройства продолжает работать от внутренней батареи.

Мы также хотим убедиться, что остальная часть USB-зарядного устройства остаётся работоспособной, чтобы другие устройства могли продолжать получать питание от зарядного устройства.

![http://samy.pl/keysweeper/testusb.jpg](https://assets.kitploit.com/production/public/readmes/placeholders/f0fc86cfe65f76d40e15aaec61704ec8220a56dc89d4be03c46f67cb31b9fa8c.svg)

-----

# (U) Дополнительный вторичный KeySweeper
Если вы хотите отказаться от GSM-платы, чтобы снизить затраты, вы можете создать вторичное устройство KeySweeper, содержащее просто Arduino и nRF24L01+. При компиляции вторичного устройства раскомментируйте `#define BACKTRACER 1`.

Принцип работы таков: если вторичный KeySweeper (BACKTRACER) когда-либо окажется в пределах беспроводной дальности (с использованием 2.4GHz nRF24L01+) от первого, он автоматически обнаружит наличие первого, и первое устройство KeySweeper сбросит свои журналы на BACKTRACER. Автоопределение встроено в оба KeySweeper, чтобы они могли быстро найти друг друга, благодаря возможности nRF24L01+ иметь несколько RX-каналов.

Если вы подключите BACKTRACER к компьютеру, журналы нажатий клавиш будут выводиться через последовательный порт, и вы можете отправить команду 'E' через последовательный порт, чтобы стереть содержимое SPI-флеш-чипа оригинального KeySweeper, теперь, когда вы получили его содержимое. Вы можете уйти, позволив оригинальному KeySweeper продолжать записывать нажатия клавиш.

-----

# (U) Схема

Нажмите для увеличения версии (схема на основе FONA) или [нажмите здесь](http://samy.pl/keysweeper/keysweeper.fzz) для файла Fritzing.

[![Схема с GSM-платой](https://assets.kitploit.com/production/public/readmes/placeholders/f0fc86cfe65f76d40e15aaec61704ec8220a56dc89d4be03c46f67cb31b9fa8c.svg)](http://samy.pl/keysweeper/keysweeper2_schem.png)


-----

# (U) Контакты

**Контактное лицо:** [@SamyKamkar](https://twitter.com/samykamkar)

Вы можете увидеть больше моих проектов на <http://samy.pl> или связаться со мной по адресу <[email protected]>.
Скачать инструмент