Фирма KeeLog решила опубликовать проект ранней версии аппаратного кейлоггера, предоставляя полную версию прошивки, исходных кодов программного обеспечения, принципиальных схем и документации. Аппаратный кейлоггер Open Source - это на 100% точный, тестированный логгер клавиатуры PS/2, монтируемый и используемых сотнями людей во всём мире. Действие этого устройства подобно версии KeyGrabber PS/2. Для скачивания и анализа данных с кейлоггера служит специальная аппликация KeyGrab. Напоминаем, однако, что аппаратный кейлоггер Open Source публикуется "как есть", со всеми недостатками и без какой-либо гарантии.
Перед началом работы проверьте по списку, располагаете ли Вы всеми инструментами и навыками, необходимыми для выполнения проекта аппаратного кейлоггера Open Source:
Для выполнения этого проекта необходимы следующие компоненты:
Необходимо приготовить и корпус для логгера. Хорошая идея - приобрести удлинитель PS/2 и отрезок (несколько сантиметров) термоусадочной трубки, которой можно термическим способом обмотать готовый логгер.
Монтаж следует начать с программирования прошивки микроконтроллера. Запустить аппликацию программатора, выбрать микроконтроллер AT89C2051, и загрузить программу, используя код в бинарной версии или версии hex. В случае сомнений можно также снова компилировать код в исходной версии, используя соответствующий компилятор для семейства 8051. Пайка - это, вероятно, наиболее сложный и трудоёмкий этап монтажа, в связи с тем, что аппаратный кейлоггер должен быть выполнен с сохранением как можно меньших габаритов. На нижеприведённой принципиальной схеме аппаратного кейлоггера Open Source показано, как должны пролегать соединения между компонентами.
Спаять элементы, начиная с микроконтроллера и памяти EEPROM. Неиспользуемые пины можно удалить. Убедиться, что останется доступ к кнопке. Во время монтажа конденсаторов убедиться, что они имеют надлежащую поляризацию.
Устройство должно быть как можно меньшего размера, без излишних отступов между элементами. Но, однако, следует избегать замыканий, так как их потом будет очень трудно ликвидировать. После пайки основных элементов аппаратный кейлоггер должен напоминать образец, показанный на снимке.
Монтаж гнезда и вилки PS/2 должен выполняться в конце. Хорошая идея - разрезать удлинитель PS/2 на две части и отдельно припаять каждую часть провода. Помните, однако, о том, что нужно надеть термоусадочную трубку на одну из частей перед пайкой. Припаять все четыре используемые линии PS/2 (CLK, DATA, VCC и GND) к гнезду и вилке (присоединяемым к клавиатуре и компьютеру).
Перед обёртыванием термоусадочной трубки вокруг кейлоггера следовало бы нанести между элементами небольшое количество клея или смолы, для придания жёсткости всей конструкции. В конце нужно разогреть термоусадочную трубку, чтобы она плотно охватила кейлоггер, и вырезать небольшое отверстие, обеспечивающее доступ к кнопке.
Аппаратный кейлоггер Open Source начинает перехват данных с клавиатуры в момент подключения между компьютером и клавиатурой. Кейлоггер абсолютно "прозрачен", он никоим образом не влияет на функционирование компьютера и клавиатуры, и не может быть обнаружен при помощи программного обеспечения. Все данные с клавиатуры записываются во внутренней энергонезависимой памяти EEPROM размером 64 Кб. Режим перехвата независим от типа операционной системы, установленной на компьютере.
Найти разъём клавиатуры PS/2 на компьютере.
Отключить клавиатуру.
Подключить аппаратный кейлоггер вместо клавиатуры.
Подключить клавиатуру к кейлоггеру. Режим перехвата включится сразу после включения питания.
Когда данные клавиатуры будут сохранены в режиме перехвата, они могут быть воспроизведены на любом компьютере класса PC с операционной системой Windows 9X/Me/XP/2000. Аппаратный кейлоггер производит это путём симулирования передачи данных через клавиатуру. Передаваемые данные скачиваются при помощи аппликации KeyGrab. После скачивания всех данных с помощью компьютера они могут быть преобразованы или проанализированы. Нижеприведённые инструкции иллюстрируют способ запуска режима скачивания данных с кейлоггера.
Запустить аппликацию KeyGrab.
Подключить аппаратный кейлоггер вместо клавиатуры. Не подключать клавиатуру.
Нажать на титул аппликации KeyGrab, чтобы сделать её активной.
Нажать кнопку на кейлоггере, чтобы запустить передачу данных. Во время скачивания данных не переключать активную аппликацию. Нажать кнопку ещё раз, чтобы закончить скачивание. Это нужно сделать тогда, когда требуемые данные уже будут скачаны на компьютер.
Отключить аппаратный кейлоггер и снова подключить клавиатуру PS/2.
Во время скачивания данных в главную таблицу аппликации KeyGrab, они автоматически преобразуются таким образом, чтобы показать клавиши, нажатые во время режима перехвата. Данные передаются в очерёдности, обратной хронологической, чтобы сначала показать наиболее свежие перехваченные данные. Скачанные данные можно анализировать вручную, или воспользоваться некоторыми встроенными опциями поиска.
Наибольший интерес для пользователя информации представляет колонка с клавишей (2) и событием (3). В этих колонках закодирована информация о вписанных знаках. Перемещая ленту прокрутки, можно воссоздать историю вписанного текста в режиме перехвата. Данные с кейлоггера передаются в обратной хронологической последовательности (наиболее новые данные в начале).
Аппликация для получения данных с аппаратного кейлоггера Open Source для Windows 9X/ME/2000/XP:
KeyGrab.zip (0.7MB)
Полный исходный код для микроконтроллера AT89C2051:
Исходный код - diy.asm
Скомпилированная прошивка для микроконтроллера AT89C2051:
файл BIN - diy.bin, файл HEX - diy.hex
Просим ознакомиться с нижеприведёнными замечаниями, благодаря которым можно избежать многих проблем, связанных с использованием аппаратного кейлоггера.
Разрезая кабель клавиатуры PS/2 , обычно мы видим в середине 6 проводов. Только 4 из них имеют значение. Два - это питание: земля (GND) и +5 вольт (VCC), генерированные блоком питания компьютера. Два остальных - это: асинхронная передача данных: линия данных (DATA) и линия синхронизирующих импульсов (CLK). На рисунке справа показано, как эти линии проходят на пины разъёма DIN (a) и мини-DIN (b). Передача данных производится в двух направлениях, но главную роль играет клавиатура. Она высылает информацию о: нажатии и отпуске клавиши. Модуль данных содержит только один байт, которому предшествует стартовый бит, а за ним следует бит чётности и бит "стоп". Клавиатура выставляет очередные биты на линии данных DATA, а также синхронизирует их с отрицательным импульсом на линии CLK. Частота синхронизации - это 10...30 kHz. Это был бы очень простой, элегантный протокол, если бы не факт, что компьютер время от времени должен высылать данные на клавиатуру. В таком случае линия синхронизирующих импульсов CLK сводится к нулю на какое-то время, и ожидается, пока клавиатура не начнёт синхронизацию. Когда начнутся импульсы, контроллер в компьютере начинает выставлять собственные данные на линии DATA. Ход передачи данных показан на рисунках ниже: (a) от клавиатуры к компьютеру, (b) от компьютера к клавиатуре. Этот протокол, конечно, имеет несколько исключений и сложностей, как, например, прерывание передачи данных, повторение символа и т.д. Но это относительно редкие случаи.
Какие же данные в действительности передаются по кабелю клавиатуры? При старте как клавиатура, так и компьютер высылают данные по инициализации, информируя о своём статусе. При нормальной работе компьютера данные высылает только клавиатура. Эти данные касаются каждого события, которое имело место на клавиатуре. В качестве события принимаются во внимание нажатие и отпуск клавиши. В случае нажатия клавиши высылается её так называемый "скан-код". Каждая клавиша имеет только один скан-код, что создаёт таблицу скан-кодов. В случае отпуска клавиши сначала высылается специальный байт 240 (hex F0), а затем скан-код данной клавиши. Таким образом, стандартное вписывание знака с клавиатуры приведёт к высылке 3 байтов. Если клавиша будет придержана дольше, её скан-код будет повторяться с установленной в данное время частотой повторения. Когда клавиша будет отпущена, будет выслан байт 240, а в конце скан-код. Это по-прежнему был бы простой и приятный протокол, если бы не присутствие некоторых специальных клавишей, таких как Home, End, стрелки и т.д. При нажатии специальной клавиши высылается байт 224 (hex E0), а затем его скан-код. Когда специальная клавиша отпускается, высылается секвенция 224, 240 (hex E0, F0), а затем скан-код клавиши. Стандартные специальные клавиши общие для всех национальных раскладок клавиатур, согласно таблице скан-кодов.Чтобы всю историю усложнить ещё больше, имеются две "супер-специальных" клавиши, Print Screen и Pause, нажатие которых приводит к высылке целого ряда знаков. Лицу, программирующему коммуникацию клавиатуры, лучше всего сделать вид, что эти клавиши не существуют.
Микроконтроллер осуществляет непрерывный мониторинг линий DATA и CLK, перехватывая все данные. Данные записываются непосредственно во внутренней энергонезависимой памяти, без какого-либо анализа. Благодаря этому пользователь может позже узнать обо всех событиях, которые имели место на клавиатуре. Когда пользователь решит, что перехват закончен, и нажмёт кнопку, аппаратный кейлоггер переключается в режим скачивания. Клавиатура должна быть предварительно отключена, в противном случае она начнёт интерпретировать поток данных. Кейлоггер начинает передачу данных из внутренней памяти путём симуляции клавиатуры. Аппликация KeyGrab должна быть активной аппликацией в системе, чтобы интерпретировать поток данных с аппаратного кейлоггера. Стандартные клавиши высылаются непосредственно при помощи скан-кода, а расширенные - при помощи двухбайтового кода.