Умная колонка Яндекс.Станция вышла около года назад. Помимо распознавания голоса и различной помощи пользователям, колонку выделяет способ активации — пользователю нужно скачать приложение Яндекса и проиграть специальный звуковой сигнал. Один из пользователей VC.ru Сергей Крупник рассказал, как ему удалось взломать систему звуковой активации, изучить звуковое кодирование паролей и придумать свою систему передачи информации через звук.
После подключения приложение Яндекса и Станция связываются посредством звукового сигнала. Сигнал для каждого пользователя свой. Создав новую точку доступа Wi-Fi с паролем «012345678», Крупник записал сигнал активации из приложения и стал изучать его спектр.
Каждый символ пароля передаётся определённым звуком длительностью 40 мс. На спектрограмме нашлась возрастающая последовательность символов, которая оказалась паролем от Wi-Fi. Данные кодируются в ASCII и UTF-8, поэтому пароль «012345678» приобретает вид «30 31 32 33 34 35 36 37 38».
Поменяв пароль несколько раз, Крупник выяснил, что данные кодируются символами по 4 бита, а каждый символ пароля конвертируется в символы шестнадцатиричной системы. Значения привязаны к частотам в пределах от 1 до 4,6 кГц с шагом 240 Гц. Зная механизм, Крупник смог узнать пароль от Wi-Fi всех видеоблогеров, опубликовавших обзор на колонку (тех же Wylsacom и Rozetked). Информация бесполезная, но доказывающая тот факт, что пароли от Wi-Fi приложение и Яндекс.Станция передают в незашифрованном виде.
Вдохновившись идеей инженеров поисковика, Крупник взялся за создание собственной системы звуковой передачи информации. Энтузиаст выбрал 16 нот (считал от До первой октавы) и связал их с символами шестнадцатеричной системы. После этого Крупник написал программу-кодировщик, конвертирующую текст в звук, и программу-расшифровщик, выполняющую обратное действие.
По мнению разработчика, такое кодирование можно применять как звуковой QR-код, зашивая в него ссылки на сайты или аккаунты в социальных сетях. При условии шифрования, посредством звука можно передавать и другие данные.
Приложение для кодирования Крупник выложил в Интернет — желающим закодировать что-либо нужно зайти на сайт octave.skrup.ru. Мы закодировали название нашего сайта по системе Крупника, так что теперь вы можете послушать как звучит SAMESOUND.RU. Исходники программы автор выложил на GitHub, чтобы кто угодно мог воспользоваться его работой и внедрить кодирование в свой проект. Более подробно о процессе взлома Крупник рассказал в своей заметке на Хабре — там много технических подробностей.
Сама идея звукового кодирования не нова. Выпускавшиеся в 1980-х годах компьютеры Spectrum, «Радио-86РК» и «Орион» использовали звуковое кодирование для хранения всей информации. Данные записывались на магнитную пленку в виде «звука». Слушать такие звуки было невозможно, но для хранения информации звуковое кодирование подходило как нельзя лучше.