Pull to refresh

Comments 50

Ну вот, как всегда, обрыв на самом интересном месте.
Это не вы, часом, "Лиловый шар" разбивали на части для публикации в "Пионерской правде"? :))

Я помоложе, так что, возможно, кто-то из родни)

Жду, жду продолжения [поглаживая такую же ямаху] )))

Читается как остросюжетный детектив. С нетерпением жду второй серии!

P.S. А ещё саундбар работает с сетью даже тогда, когда выключен (но воткнут в розетку).

а еще он включается со смартфона и в требованиях к приложению беспроводная локальная сеть

Ну вот, как же так, я его купить хотел как раз))

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

Посмотрите в сторону Denon DHT-S216 - почти полный аналог, а чем-то даже лучше, с достойным звуком, но без сетевых фишек и сифона наружу

Почитал отзывы - что-то так себе.

Красота! Трюк с исправлением битов, ориентируясь на CRC, отдельно порадовал. Жду продолжения!

"Шифрование" NAND - не ради сокрытия, а просто чтобы устранить длинные последовательности одинаковых битов (в NAND высокой плотности такие сгустки зарядов могут портить соседние биты), стандартная функция многих NAND-контроллеров. И та странность с другими сидами в каждом n-ном блоке, возможно, учитывает физическую организацию некой конкретной модели NAND. Алгоритмы эти, бывает, всплывают на форумах Acelab и подобных софтов по восстановлению данных.

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

Много очень интересных моментов в статье, особенно для меня. Понравился метод "догадки" поксоренных друг на друга ячеек, да и вообще работа с дампом памяти, снятого с NAND в TSOP48. Сам, практически ежедневно работаю с этим типом памяти. Проберы в использовании дизассемблеров разного толка ограничивают мои возможности, но когда для специалиста @DrMefistO это не проблема, то расследование становится и вправду очень интересным.

Большое спасибо за подобные статьи с исследованиями, разработками и изысканиями. Они помогают тем, кто интересуется и стремиться вырасти в реверсинге. Спасибо также за этот вклад, как лично в мою копилку знаний, так и в ресурс Хабр.

Разве не достаточно было прокси/сниффер какой поставить?

А куда поставить? Простой захват трафика упёрся бы в SSL, а что внутри было бы не ясно.

О том, как победил, я расскажу во второй части.

То, что данные улетяют без спроса очевидно, интересно что будет с этим сделано. Будет ли патч на это безобразие.

Написал вендору, а как там будет дальше неизвестно.

UFO just landed and posted this here

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

Разработчик уведомлен

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

Одно дело передача стримов с микрофона, а другое - вулны

Наверняка к этому моменту у вас мог возникнуть вопрос: а почему вообще приём с ксором блоков мне помог? Дело в том, что в расшифрованном дампе оказалось очень большое количество блоков размером 0x440 байт, заполненных одними лишь нулями, либо FF.

А я вот не понял, честно говоря. Вы же код взяли не из тех блоков которые были заполнены нулями или FF. Как же вам помогли пустые блоки? Или они вам помогли обнаружить периодичность?

И ещё, в порядке товарищеской критики: по тексту немного непоследовательно используется термин "блок". Сам NAND делится на блоки стирания (erase block), которые в свою очередь делятся на страницы (pages). Блоки по 0x440 байта было бы удобнее назвать как-нибудь иначе, чтобы не путать с блоками стирания по 0x22000. Например, "сегменты".

Спасибо за дельную критику! Я, пожалуй, не стану менять уже имеющееся именование. В даташитах нет упоминания деления на блоки "сегменты" по 0x440, как и того, что в каждом из них представлена Spare Area. Думаю, у читателя это не должно вызвать особой путаницы.

Касательно заполнения нулями и FF: да, там практически в самом начале расшифрованного дампа идёт огромный кусок, заполненный 00, а если точнее, то до 0x407F4 (это уже не включая вырезанные 0x40 в каждом "сегменте"). Так что мне, по сути, просто повезло встретить такое большое количество нулей.

В даташитах нет упоминания деления на блоки "сегменты" по 0x440, как и того, что в каждом из них представлена Spare Area

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

Скорее всего так. До прошивки NAND-контроллера я тоже доберусь. Уже нашёл его JTAG.

Да, это самодеятельность NAND-контроллера. К примеру, из него наружу хотят классическими секторами по 0x200, сам NAND имеет страницы по 16К, контроллер использует схему ECC по 11 байт на сектор - ну и чхать ему на некрасивые смещения, забивает физические 16K кусками данные+ECC по 0x20B байт подряд без стыков, не разбираясь, где там по задумке производителя NAND данные, где spare, у него в сторону NAND потоковый интерфейс со счётчиками байтов, разделяющий данные/ЕСС на лету, достаточно только задать ему размеры того и другого. Плюс, внимание, где-то не в начале и не в конце физ. страницы может находиться bad block marker (!=FF - блок дефектный, смещение определяет производитель, он сразу на фабрике помечает дефектные блоки. Смещения встречались ну очень некруглые), приличный NAND-контроллер и его на лету отделяет, как ни в чём ни бывало. В итоге на самом нижнем уровне формат может быть ну очень причудливым.

И вишенкой на торте: в NAND, с которого какой-нибудь SoC напрямую грузится в embedded Linux, запросто может быть несколько зон с разными форматами страниц: BootROM понимает какой-нибудь свой причудливый формат, первичный загрузчик записан в нём, вторичным взяли какой-нибудь готовый U-Boot, организующий софтово свой формат, ядро Linux лежит в нём, а в самом ядре в драйвере ФС ещё какой-нибудь третий, и ФС - в нём :)

Спасибо за статью! Я все такие устройства в отдельную сеть с изоляцией друг от друга добавляю. Пускай сам себя сканирует. Ну и DNS-фильтрация

Расскажете, какое отношение вы имеете к сбербезикам? Просто за деньги да, или работаете там?

А что такое бизон, если не одна из многочисленных управляемых дочек сбера?

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

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

работает с сетью даже тогда, когда выключен (но воткнут в розетку)

Видимо для Wake-on-Lan, или подобного, т. к. у меня в ресивере a1010 даже есть настройка для этого. Всё для того, чтобы можно было включить через приложение.

Так можно подумать, но если узнать, что поднимаются абсолютно все порты, которые работают и в нормальном режиме, одной только необходимостью запускаться через приложуху это дело не объяснить.

Для Spotify connect же. Или я неправ?
А вот что еще в этот момент железяка делает, помимо того, что ждет подключения клиента, да, есть вопросики.

Там разные, в том числе и Alexa, и 443-й, на который можно команды слать.

бывают же умные люди, магия для меня

Sign up to leave a comment.