Фирма KeeLog решила опубликовать проект ранней версии аппаратного кейлоггера, предоставляя полную версию прошивки, исходных кодов программного обеспечения, принципиальных схем и документации. Аппаратный кейлоггер Open Source - это на 100% точный, тестированный логгер клавиатуры PS/2, монтируемый и используемых сотнями людей во всём мире. Действие этого устройства подобно версии KeyGrabber PS/2. Для скачивания и анализа данных с кейлоггера служит специальная аппликация KeyGrab. Напоминаем, однако, что аппаратный кейлоггер Open Source публикуется "как есть", со всеми недостатками и без какой-либо гарантии.

Аппаратный кейлоггер Open Source

Перед началом работы проверьте по списку, располагаете ли Вы всеми инструментами и навыками, необходимыми для выполнения проекта аппаратного кейлоггера Open Source:

  • элементарный опыт по электронике (в основном, работы с аппаратурой)
  • паяльник для интегральных схем
  • программатор для микроконтроллеров (обслуживающий семейство Atmel AT89CXX51)
Аппаратный кейлоггер Open Source - электронные компоненты

Для выполнения этого проекта необходимы следующие компоненты:

  • микроконтроллер Atmel AT89C2051 (или AT89C1051, AT89C4051)
  • память EEPROM типа AT24C512 (или компатибильная)
  • кварцевый генератор 12 MHz
  • 2x конденсатор 33p
  • конденсатор 10 uF
  • резистор 10 k
  • небольшая кнопка
Аппаратный кейлоггер Open Source - гнездо и вилка PS/2 (например, от кабеля)

Необходимо приготовить и корпус для логгера. Хорошая идея - приобрести удлинитель PS/2 и отрезок (несколько сантиметров) термоусадочной трубки, которой можно термическим способом обмотать готовый логгер.

Монтаж следует начать с программирования прошивки микроконтроллера. Запустить аппликацию программатора, выбрать микроконтроллер AT89C2051, и загрузить программу, используя код в бинарной версии или версии hex. В случае сомнений можно также снова компилировать код в исходной версии, используя соответствующий компилятор для семейства 8051. Пайка - это, вероятно, наиболее сложный и трудоёмкий этап монтажа, в связи с тем, что аппаратный кейлоггер должен быть выполнен с сохранением как можно меньших габаритов. На нижеприведённой принципиальной схеме аппаратного кейлоггера Open Source показано, как должны пролегать соединения между компонентами.

Аппаратный кейлоггер Open Source - элементарный опыт по электронике (в основном, работы с аппаратурой)

Спаять элементы, начиная с микроконтроллера и памяти EEPROM. Неиспользуемые пины можно удалить. Убедиться, что останется доступ к кнопке. Во время монтажа конденсаторов убедиться, что они имеют надлежащую поляризацию.

Аппаратный кейлоггер Open Source - пайка

Устройство должно быть как можно меньшего размера, без излишних отступов между элементами. Но, однако, следует избегать замыканий, так как их потом будет очень трудно ликвидировать. После пайки основных элементов аппаратный кейлоггер должен напоминать образец, показанный на снимке.

Аппаратный кейлоггер Open Source - коннекторы

Монтаж гнезда и вилки PS/2 должен выполняться в конце. Хорошая идея - разрезать удлинитель PS/2 на две части и отдельно припаять каждую часть провода. Помните, однако, о том, что нужно надеть термоусадочную трубку на одну из частей перед пайкой. Припаять все четыре используемые линии PS/2 (CLK, DATA, VCC и GND) к гнезду и вилке (присоединяемым к клавиатуре и компьютеру).

Аппаратный кейлоггер Open Source

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

Аппаратный кейлоггер Open Source начинает перехват данных с клавиатуры в момент подключения между компьютером и клавиатурой. Кейлоггер абсолютно "прозрачен", он никоим образом не влияет на функционирование компьютера и клавиатуры, и не может быть обнаружен при помощи программного обеспечения. Все данные с клавиатуры записываются во внутренней энергонезависимой памяти EEPROM размером 64 Кб. Режим перехвата независим от типа операционной системы, установленной на компьютере.

Аппаратный кейлоггер Open Source - установка 1

Найти разъём клавиатуры PS/2 на компьютере.

Аппаратный кейлоггер Open Source - установка 2

Отключить клавиатуру.

Аппаратный кейлоггер Open Source - установка 3

Подключить аппаратный кейлоггер вместо клавиатуры.

Аппаратный кейлоггер Open Source - установка 4

Подключить клавиатуру к кейлоггеру. Режим перехвата включится сразу после включения питания.

Когда данные клавиатуры будут сохранены в режиме перехвата, они могут быть воспроизведены на любом компьютере класса PC с операционной системой Windows 9X/Me/XP/2000. Аппаратный кейлоггер производит это путём симулирования передачи данных через клавиатуру. Передаваемые данные скачиваются при помощи аппликации KeyGrab. После скачивания всех данных с помощью компьютера они могут быть преобразованы или проанализированы. Нижеприведённые инструкции иллюстрируют способ запуска режима скачивания данных с кейлоггера.

Аппаратный кейлоггер Open Source - Режим перехвата 1

Запустить аппликацию KeyGrab.

Аппаратный кейлоггер Open Source - Режим перехвата 2

Подключить аппаратный кейлоггер вместо клавиатуры. Не подключать клавиатуру.

Аппаратный кейлоггер Open Source - Режим перехвата 3

Нажать на титул аппликации KeyGrab, чтобы сделать её активной.

Аппаратный кейлоггер Open Source - Режим перехвата 4

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

Аппаратный кейлоггер Open Source - Режим перехвата 5

Отключить аппаратный кейлоггер и снова подключить клавиатуру PS/2.

Во время скачивания данных в главную таблицу аппликации KeyGrab, они автоматически преобразуются таким образом, чтобы показать клавиши, нажатые во время режима перехвата. Данные передаются в очерёдности, обратной хронологической, чтобы сначала показать наиболее свежие перехваченные данные. Скачанные данные можно анализировать вручную, или воспользоваться некоторыми встроенными опциями поиска.

Аппаратный кейлоггер Open Source - Анализ данных

1 - Позиция в памяти, занятая перехваченными данными (формат hex).
2 - Перехваченная клавиша.
3 - Произошедшее событие - нажатие или отпуск клавиши.
4 - Скан-код клавиши на магистрали PS/2 (формат hex).
5 - Последняя позиция, записанная в памяти (формат hex).
6 - Размер энергонезависимой памяти EEPROM (в килобитах).

Наибольший интерес для пользователя информации представляет колонка с клавишей (2) и событием (3). В этих колонках закодирована информация о вписанных знаках. Перемещая ленту прокрутки, можно воссоздать историю вписанного текста в режиме перехвата. Данные с кейлоггера передаются в обратной хронологической последовательности (наиболее новые данные в начале).

Аппликация для получения данных с аппаратного кейлоггера Open Source для Windows 9X/ME/2000/XP:
KeyGrab.zip (0.7MB)

Полный исходный код для микроконтроллера AT89C2051:
Исходный код - diy.asm

Скомпилированная прошивка для микроконтроллера AT89C2051:
файл BIN - diy.bin, файл HEX - diy.hex

Аппаратный кейлоггер Open Source - KeyGrab

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

Ответственность перед законом

  1. Каждая страна имеет собственное законодательство, касающееся считывания данных с клавиатуры. Незнание закона не даёт права на его нарушение. Просим также ознакомиться с Соглашением о пользовании сайтом.
  2. Фирма KeeLog не берёт на себя никакой ответственности за повреждения или за утрату здоровья и имущества, наступившие в результате использования этого аппаратного кейлоггера.
  3. Аппаратный кейлоггер Open Source не должен использоваться для незаконного перехвата чужих данных, в частности, паролей, банковских реквизитов, конфиденциальной корреспонденции и т.п. В большинстве стран это является нарушением закона.

Аквизиция данных

  1. Аппаратный кейлоггер имеет 64 Кб энергонезависимой памяти типа EEPROM. Заполнение этой памяти приведёт к повторной записи, начиная с первой записи в памяти. Наиболее старые записи будут утеряны.
  2. Первые 128 байт памяти зарезервированы для данных конфигурации, в частности, маркёр, содержащий адрес последней записи в памяти. Этот маркёр обновляется приблизительно каждые 10 секунд
  3. Не оставляйте аппаратный кейлоггер подключённым в режиме перехвата, когда это не является необходимостью. Это приводит к ненужному заполнению памяти, из-за чего старые, часто важные данные, могут быть уничтожены новой записью.

Передача данных

  1. Для получения данных с аппаратного кейлоггера необходим компьютер класса PC со скоростью как минимум 100 MHz с установленной операционной системой Windows 9X/Me/XP/2000.
  2. Для получения данных с аппаратного кейлоггера используется техника симуляции клавиатуры. В связи с этим настоящая клавиатура должна быть отключена во время передачи данных.
  3. В ходе получения данных активной аппликацией должен быть KeyGrab. В ином случае система Windows или другая активная аппликация будут пытаться интерпретировать приходящие нажатия клавиш.
  4. Данные, архивированные в режиме перехвата, воспроизводятся в обратной хронологической последовательности, чтобы показать наиболее свежие данные в начале процесса передачи данных. Чтобы получить наиболее старые записи, необходимо переждать весь процесс трансмиссии. Весь процесс скачивания данных может продолжаться до 20 минут.
  5. Скачивание данных должно быть закончено путём повторного нажатия кнопки. Это нужно сделать тогда, когда данные начнут дублироваться.

Действие клавиатуры PS/2

  1. Действие клавиатуры типа PS/2 более сложно, чем может первоначально показаться. Это можно заметить, анализируя "сырые" данные, архивированные аппаратным кейлоггером. При каждом нажатии клавиши клавиатура генерирует один символ, так называемый "скан-код". При отпуске клавиши этот символ генерируется повторно, но предваряется символом 240 (hex F0). Существуют также расширенные коды клавиш, для которых используется символ 224 (hex E0). Больше информации на эту тему доступно в разделе Протокол клавиатуры PS/2.
  2. Аппаратный кейлоггер Open Source имеет 64 Кб памяти, что, однако, не означает, что он может запомнить 64 тысячи нажатий клавиши. Одна последовательность нажатия - отпуска клавиши занимает 3 байта для стандартной клавиши и 5 для расширенной. Считывание было оптимизировано в коммерческих версиях.

Основы

Аппаратный кейлоггер Open Source - сигналы магистрали PS/2

Разрезая кабель клавиатуры PS/2 , обычно мы видим в середине 6 проводов. Только 4 из них имеют значение. Два - это питание: земля (GND) и +5 вольт (VCC), генерированные блоком питания компьютера. Два остальных - это: асинхронная передача данных: линия данных (DATA) и линия синхронизирующих импульсов (CLK). На рисунке справа показано, как эти линии проходят на пины разъёма DIN (a) и мини-DIN (b). Передача данных производится в двух направлениях, но главную роль играет клавиатура. Она высылает информацию о: нажатии и отпуске клавиши. Модуль данных содержит только один байт, которому предшествует стартовый бит, а за ним следует бит чётности и бит "стоп". Клавиатура выставляет очередные биты на линии данных DATA, а также синхронизирует их с отрицательным импульсом на линии CLK. Частота синхронизации - это 10...30 kHz. Это был бы очень простой, элегантный протокол, если бы не факт, что компьютер время от времени должен высылать данные на клавиатуру. В таком случае линия синхронизирующих импульсов CLK сводится к нулю на какое-то время, и ожидается, пока клавиатура не начнёт синхронизацию. Когда начнутся импульсы, контроллер в компьютере начинает выставлять собственные данные на линии DATA. Ход передачи данных показан на рисунках ниже: (a) от клавиатуры к компьютеру, (b) от компьютера к клавиатуре. Этот протокол, конечно, имеет несколько исключений и сложностей, как, например, прерывание передачи данных, повторение символа и т.д. Но это относительно редкие случаи.

Аппаратный кейлоггер Open Source - процессы

Данные на магистрали

Какие же данные в действительности передаются по кабелю клавиатуры? При старте как клавиатура, так и компьютер высылают данные по инициализации, информируя о своём статусе. При нормальной работе компьютера данные высылает только клавиатура. Эти данные касаются каждого события, которое имело место на клавиатуре. В качестве события принимаются во внимание нажатие и отпуск клавиши. В случае нажатия клавиши высылается её так называемый "скан-код". Каждая клавиша имеет только один скан-код, что создаёт таблицу скан-кодов. В случае отпуска клавиши сначала высылается специальный байт 240 (hex F0), а затем скан-код данной клавиши. Таким образом, стандартное вписывание знака с клавиатуры приведёт к высылке 3 байтов. Если клавиша будет придержана дольше, её скан-код будет повторяться с установленной в данное время частотой повторения. Когда клавиша будет отпущена, будет выслан байт 240, а в конце скан-код. Это по-прежнему был бы простой и приятный протокол, если бы не присутствие некоторых специальных клавишей, таких как Home, End, стрелки и т.д. При нажатии специальной клавиши высылается байт 224 (hex E0), а затем его скан-код. Когда специальная клавиша отпускается, высылается секвенция 224, 240 (hex E0, F0), а затем скан-код клавиши. Стандартные специальные клавиши общие для всех национальных раскладок клавиатур, согласно таблице скан-кодов.Чтобы всю историю усложнить ещё больше, имеются две "супер-специальных" клавиши, Print Screen и Pause, нажатие которых приводит к высылке целого ряда знаков. Лицу, программирующему коммуникацию клавиатуры, лучше всего сделать вид, что эти клавиши не существуют.

Считывание данных

Микроконтроллер осуществляет непрерывный мониторинг линий DATA и CLK, перехватывая все данные. Данные записываются непосредственно во внутренней энергонезависимой памяти, без какого-либо анализа. Благодаря этому пользователь может позже узнать обо всех событиях, которые имели место на клавиатуре. Когда пользователь решит, что перехват закончен, и нажмёт кнопку, аппаратный кейлоггер переключается в режим скачивания. Клавиатура должна быть предварительно отключена, в противном случае она начнёт интерпретировать поток данных. Кейлоггер начинает передачу данных из внутренней памяти путём симуляции клавиатуры. Аппликация KeyGrab должна быть активной аппликацией в системе, чтобы интерпретировать поток данных с аппаратного кейлоггера. Стандартные клавиши высылаются непосредственно при помощи скан-кода, а расширенные - при помощи двухбайтового кода.