Про нетрадиційному способу використання комп'ютерної миші

7 липня в Санкт-Петербурзі пройде «очна ставка» NeoQUEST-2016. Гостей чекають цікаві доповіді, конкурси, спілкування з колегами, а кращих учасників online-етапу — восьмигодинне змагання з кібербезпеки! Напередодні «очної ставки» продовжуємо розбирати завдання online-етапи, і на черзі — завдання, присвячена не самому типовому способу використання комп'ютерної мишки.

Чи замислювалися ви коли-небудь про те, як працює оптична мишка? Все просто: у нижній частині розташована камера, швидко робить знімки поверхні, по якій водять мишку. Порівнюючи отримані зображення, контролер мишки обчислює зміщення. Є питання і цікавіше: чи можна якось дістати зображення поверхні під пахвою? Спойлер: можна! Як це зробити, розповімо під катом!

Вихідні дані

Учаснику надавався файли docx, в тексті якого містився якийсь IP-адресу. Першим ділом, звичайно ж, учасники переходили за цією адресою. Тут-то й почалося найцікавіше: на них буквально вивалювалися якісь числа!



Щось зовсім незрозуміле! І головне, незрозуміло, що з цим робити.

Рішення

Для початку варто уважно вивчити docx-файл. Можна помітити цікаву деталь: він важить 223 кб – забагато для одного-єдиного IP-адреси. Тут відразу згадується про те, що docx насправді є архівом. При відкритті файлу з допомогою WinRAR (або іншого архіватора), всередині виявляється pdf-файл з першим ключем. Один є, проте, повинні бути і інші.



Цей файл містить специфікацію оптичного сенсора Agilent ADNS-2610, зокрема, інформацію про те, як отримати зображення з-під пахви. Стає зрозуміло, що числа з сайту – це зображення, отримані з допомогою сенсора.

Єдина проблема полягає в тому, що, згідно специфікації, картинка має розмір 18x18, а значить, імовірно її розмір повинен складати 324 байта (з урахуванням того, що вона чорно-біла). Але за один раз ми отримуємо тільки 243 однобайтових чисел. Щось тут не сходиться!

Уважно прочитавши специфікацію, можна зрозуміти, що один піксель кодується не одним байтом, а шістьма бітами. Це пояснює невідповідність: 243/6 = 324/8.

Для відновлення картинки можна було написати програму, яка отримує і обробляє дані, або змінити логіку вже наявного. Другий спосіб простіше, тому розглянемо його докладно.

Заходимо на сайт, відкриваємо інструменти розробника і зупиняємо виконання всіх скриптів. Потім вставляємо в html-код сторінки елемент canvas:



Після цього змінюємо логіку роботи скрипта: замість відображення даних у вигляді тексту малювання:



Нарешті запускаємо скрипт і отримуємо відео з мишки!



Переміщуючи курсор по екрану, можна знайти другий ключ. Ось, до речі, весь аркуш, по якому «водили» мишкою:



І дещо ще...

У цьому завданні отримання даних з оптичного сенсора імітувалося. А як йдуть справи з реальними пахвами? Виявляється, що і з цієї мишки можна вважати картинку, але з деякими обмеженнями. По-перше, не всі оптичні сенсори підходять для одержання зображення. По-друге, навіть якщо сенсор підходящий, доведеться розбирати мишку і приєднувати до сенсора спеціальним чином запрограмовану плату. Так що без серйозної підготовки стеження через камеру в мишці неможлива.
Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.