Прошивки телевизоров Samsung

Мечтая о новом телевизоре читаю тему: http://forum.ixbt.com/topic.cgi?id=62:15456

Хочется модельку типа 46B652, чтобы был DLNA и можно было на фиг убрать комп-который-типа-медиа-центр. Пусть даже глюки есть при чтении файлов… Но не суть. Суть в том, что в телевизоре — Linux и значить можно/нужно все это ковырять. Хотя телевизора еще нет, но в поисках того, как бы покачественнее поотлынивать от подготовки к поступлению в магистратуру, зашел в дебри Самсунговского сайта и скачал последнюю прошивку (ver.T-CHL7DEUC-2001.0), чтобы посмотреть, как это вообще со стороны выглядит. Выглядит как несколько файликов — образы (appdata.img.enc и exe.img.enc) и, судя по всему, загрузчики этих самых образов (ELF’овские бинарники снаружи, а смотреть внутри было неинтересно). Образы — зашифрованы, но шифрование — обычный XOR со строкой. Какой в нем смысл — загадка, ведь простой человек все равно не сможет с этими образами ничего сделать, а для имеющего хоть минимальный опыт в реверсинге, XOR поверх файлов — это какое-то неуважение и издевательство. Особенно учитывая то, что «пароль» считывается просто глядя на содержимое файлов — как и полагается для типичных image’ей — в них полно нулей, поверх который, будучи отXORенным пароль лежит открытым текстом. 🙂 Пароль — T-CHL7DEUC.

Поискал в интернете — найти простой программки для разXORивания (чтобы тупо брала строку и проходилась ей по всему файлу) не смог. Написал сам на VB.NET, благо это единственный desktop’ный язык, на котором я могу что-то сделать. 🙂

РазXORил образы. appdata — SquashFS, exe — FAT16. Почему так? Никогда не видел этого на Линуксовых девайсах, ибо априори лишено смысла. Но так есть. В SquashFS всякая фигня типа подготовленных сеток каналов для стран и картинок интерфейса. Самое интересное — виджеты и весь их API. Даже документации не надо — все прилично откомментировано и много примеров. Пиши — не хочу. В FAT16 же наоборот — хардварные библиотеки (so’шки), телевизионный модуль для ядра Линукса (samdrv.ko), всякие EDID’ы для DCC и здоровые файл exeDSP (ELF), который запускается из прилагающегося rc.local. Судя по названию — не иначе, как что-то обслуживающее встроенный медийный процессор.

Какие выводы в целом? Самсунг не стал доверять пользователям обновлять все до самых корней. Очевидно, что и ядро, и загрузчик все время остаются теми же.  Из обновляемой прошивки подгружаются только модули ядра и библиотеки. С одной стороны — очень правильно. Уверен, что в случае убийства телевизора прошивкой, к нему можно будет достучаться по банальной последовательной консоли. С другой стороны, это значит, что базовые вещи — загрузчик и ядро — нужно делать сразу такими, чтобы возможность из обновлять даже не потребовалась за время срока поддержки девайса.

Что со всем этим делать дальше — ХЗ. Просто расковырял для самоудовлетворения. Реальный результат только один — написал программку для быстрого разXORивания. Пригодится еще…

Для захода внутрь образа FAT16 использовал файл-менеджер Altap Salamander. SquashFS поленился копировать в Линуксовую виртуальную машину и тупо разжал через скомпилированные под cygwin squashfs-tools. Они вместе с программкой для разXORирвания — во вложении.

Прошивки телевизоров Samsung: 15 комментариев

  1. Я сам нахожусь примерно в таком же состоянии (облизываюсь на LE40B653), и тоже смотрю в сторону прошивки.

    exeDSP — это основная (и единственная) телевизорная прога, в которой находится все: и medai player, и DLNA, и весь GUI и многое-многое другое)

    Будучи человеком достаточно безбашенным, я ее запихнул в дизассемблер. Да, 16М ARM-овского кода — это много даже для меня, да и ARM-овский асм я читаю не очень свободно, но наличие debug-info сильно помогает ориентироваться.

    Вот так, например, выглядит функция Main (не путать с main, который несколько менее интересен)

    void main () {
    PCRealDebug::SetLevel (-1, -1);
    puts («TCTvMiddleware::Initialize() start\n»);
    int _var14;
    TCTvMiddleware::Initialize (&_var14);
    puts («TCTvMiddleware::Initialize() end»);
    APP_INITIALIZE ();
    puts («»APP_INITIALIZE(); end\n»);
    PCRealDebug::Print (700, «Start Tv Turn On»);

    TCTv tv;
    tv.Power (1);
    PCRealDebug (700, «MainLoop»);
    TCTvMiddleware::Watchdog (20000);
    TCTvMiddleware::Finalize ();
    return 0;
    }

  2. Ну, 16Мб — это не так уж и страшно. 🙂 IDA и не такое вынесет. ;-))) А вот наличие дебага — это супер (сужу по процитированному листингу), особенно после прошивок разнообразных девайсов, где сам черт ногу сломит…
    В общем, спасибо за информацию — посмотрю тоже внутрь этого exeDSP, но по ходу дела — толку нам от всего этого никакого — все равно ничего не добавить и не изменить по факту. Вот сейчас занимаюсь STB-приставкой D-Link DIB-120, так там примерно та же фигня. Ядро линукса по GPL есть — это да. И даже toolchain Бродкомовский есть. Но что толку, если это ядро только и делает, что грузит закрытый бродкомовский модуль ядра, где зашито все взаимодействие с железом, а потом — здоровый 15Мб файл, где лежит вкомпилированная со всякими примочками embedded-Опера, через которую железка и функционирует (грузит html-интерфейс, управляется javascript’ом и т.п.).
    Короче, типичная ситуация и одно расстройство. Но для любопытства exeDSP внутри гляну — еще раз спасибо за наводку. 🙂

  3. 16М, для IDA, может быть и не так много, но для меня — легкий перебор.
    Если мег кода я могу за разумное время (два-три месяца) поднять до читабельных и компилируемых исходников (если там нет особо сложной математики), то 16М — это для меня пока перебор.

    В принципе, можно попробовать посмотреть сколько там занимает web-browser, flash и прочие относительно стандартные вещи — и сколько останется без них…

    Что с этим можно сделать: если будет настроение заморочиться — можно будет для начала выдернуть оттуда код инициализации TV-шного железа, собрать минималистичный hello, world и подпихнуть его на флэшке (благо telnet там включили и даже научились подпихивать полнофункциональный busybox).
    А дальше — действовать по обстоятельствам.

    Осталось только дождаться зарплаты…
    Если будут вопросы по реверсингу (структура объектов, передача параметров. что-то еще) — могу поотвечать.

  4. ОК, если что обращусь…
    Но я обычно достаточно ленивый, чтобы «мег кода я могу за разумное время (два-три месяца) поднять до читабельных и компилируемых исходников». Меня обычно хватает только на то, чтобы изучить конкретный интересующий меня блок (например, какой-нибудь алгоритм упаковки/шифрования прошивки или что-нибудь в этом роде), чтобы потом использовать в других сопутствующих местах… Ну или пару байтов поменять, чтобы какой-нибудь закрытый функционал открыть. Поэтому обычно мне интереснее не исполнимые файлы, а именно харверные прошивки…
    Вопрос в том, что применительно к ТВ активно чего-то ковырять вряд ли имеет реальный смысл: Самсунг обновляет линейки телевизоров раз в год, а значит во втором квартале 2010 скорее всего уже будут новые модели… На мой взгляд основной profit, который можно получить от ковыряния прошивки — изучить виджеты и сделать документацию по их созданию и беспроблемному добавлению в телевизор.

  5. Я эти исходники не смотрел — качать было лениво, но скорее всего в них не особо много смысла. Я уже выше об этом написал — сейчас все производители тупо выкладывают сорцы линуксового ядра и от этого никакого толку. Потому что все хардварные вещи собираются отдельно модулями ядра, а все самое интересное — вообще пропиетарное (см. выше про exeDSP). 🙁

  6. Skylord
    Ты человечище!
    Первый чел, который начал таки ковырять этот b650.
    Видно , что сам Самсунг ничего кроме стандартных 4-5 виджетов делать ничего не собирается. А ядро линуксовое думаю может быть дополнено и браузером и рекордером… можно провести аналогию с GeeXboX или Freevo
    или я ошибаюсь?

  7. Да не начал я его ковырять… Как его ковырять, если у меня и телевизора-то нет? 🙂 Я же написал — было очень лениво заниматься полезным делом, поэтому и пнул эту прошивку…
    Более того — там, скорее всего, и не получится ничего расковырять — см. выше, это уже обсуждалось. Весь основной функционал скомпилирован в один файл, с которым мы фиг чего сделаем. По сути единственное, что возможно — исходники виджетов получить и, соответственно, свои собственные писать. Проблем с этим нет — расшифруй прошивку прилагаемой программкой и сможешь сам посмотреть виджеты.

  8. Поковырялся в своем B650 по телнету…
    Хотел решить проблему — у меня кабельщики гонят цифру, вместе с ней и EPG. В самом телевизоре можно поставить авто часы — чтоб телевизор брал их у провайдера сигнала. Телек часы берет, но неправильно — на час вперед. Соответственно электронный гид смещается на час, если ставишь время вручную — гид все равно кажет неправильное время.

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

  9. Привет, Skylord.

    Ты очень, крут, раз так далеко зашел в ковырянии прошивки.

    У меня есть похожий телевизор, правда другой модели (диагональ 32»)

    Скажи пожалуйста, ты пишешь о каких то файлах, которые можно скачать, где? 😉

    Я вот хочу заняться написанием своих виджетов, ты пишешь, что там есть, где?

    Что то я не понял 🙂 подскажи пожалуйста. Можно на емейл 😉

    Не против пообщаться на тему телевизоров/прошивок, могу быть полезен.

  10. Почитал Ваши рассуждения — дух захватило. Вот где мозги и энтузиазм! Мои аплодисменты.

    Ковыряюсь уже месяц с новым телеком — PS50B850Y1W. А именно с DLNA. Штука очень понравилась, но мне (прямо скажем не сильно продвинутому пользователю) сложно понять его капризы. То он воспроизводит, то нет. То только картинку, без звука. Я понимаю, что не хватает ему чего-то.

    Скачал последнюю версию PC Share Manager с фирменного сайта — прогресс ! Стал показывать что-то, на что раньше не обращал внимания.

    Вижу там (на сайте) еще и прошивка есть. Скачал, но прежде, чем ставить, к вам обращаюсь.

    Уважаемые, есть смысл? Производитель не заморачивается объяснить для чего она, и в чем изменения. А судя по высказываниям людей (касательно перепрошивки телевизоров PHILIPS) последствия могут быть и плачевными.

    Если не влом, снизойдите!

  11. to Skylord: Спасибо за ответ.

    С оф. сайта все прошло легко и просто… но и не поменялось ничего 🙂

    Последую Вашей ссылке на форум.

  12. Возможно ли прикрутить к прошивке эмулятор Cccam, Oscam, mgcamd?

    Видимо как раз в этом exeDSP всё нужное для этого запрятано.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *