Мечтая о новом телевизоре читаю тему: 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ирвания — во вложении.
Я сам нахожусь примерно в таком же состоянии (облизываюсь на 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;
}
Ну, 16Мб — это не так уж и страшно. 🙂 IDA и не такое вынесет. ;-))) А вот наличие дебага — это супер (сужу по процитированному листингу), особенно после прошивок разнообразных девайсов, где сам черт ногу сломит…
В общем, спасибо за информацию — посмотрю тоже внутрь этого exeDSP, но по ходу дела — толку нам от всего этого никакого — все равно ничего не добавить и не изменить по факту. Вот сейчас занимаюсь STB-приставкой D-Link DIB-120, так там примерно та же фигня. Ядро линукса по GPL есть — это да. И даже toolchain Бродкомовский есть. Но что толку, если это ядро только и делает, что грузит закрытый бродкомовский модуль ядра, где зашито все взаимодействие с железом, а потом — здоровый 15Мб файл, где лежит вкомпилированная со всякими примочками embedded-Опера, через которую железка и функционирует (грузит html-интерфейс, управляется javascript’ом и т.п.).
Короче, типичная ситуация и одно расстройство. Но для любопытства exeDSP внутри гляну — еще раз спасибо за наводку. 🙂
16М, для IDA, может быть и не так много, но для меня — легкий перебор.
Если мег кода я могу за разумное время (два-три месяца) поднять до читабельных и компилируемых исходников (если там нет особо сложной математики), то 16М — это для меня пока перебор.
В принципе, можно попробовать посмотреть сколько там занимает web-browser, flash и прочие относительно стандартные вещи — и сколько останется без них…
Что с этим можно сделать: если будет настроение заморочиться — можно будет для начала выдернуть оттуда код инициализации TV-шного железа, собрать минималистичный hello, world и подпихнуть его на флэшке (благо telnet там включили и даже научились подпихивать полнофункциональный busybox).
А дальше — действовать по обстоятельствам.
Осталось только дождаться зарплаты…
Если будут вопросы по реверсингу (структура объектов, передача параметров. что-то еще) — могу поотвечать.
ОК, если что обращусь…
Но я обычно достаточно ленивый, чтобы «мег кода я могу за разумное время (два-три месяца) поднять до читабельных и компилируемых исходников». Меня обычно хватает только на то, чтобы изучить конкретный интересующий меня блок (например, какой-нибудь алгоритм упаковки/шифрования прошивки или что-нибудь в этом роде), чтобы потом использовать в других сопутствующих местах… Ну или пару байтов поменять, чтобы какой-нибудь закрытый функционал открыть. Поэтому обычно мне интереснее не исполнимые файлы, а именно харверные прошивки…
Вопрос в том, что применительно к ТВ активно чего-то ковырять вряд ли имеет реальный смысл: Самсунг обновляет линейки телевизоров раз в год, а значит во втором квартале 2010 скорее всего уже будут новые модели… На мой взгляд основной profit, который можно получить от ковыряния прошивки — изучить виджеты и сделать документацию по их созданию и беспроблемному добавлению в телевизор.
Самсунг не так давно выложил исходный ход прошивки для некоторых телевизоров и B650 в том числе
http://www.samsung.com/global/opensource/
Сам купил B750 и есть желание поковыряться, хотябы включить шелл
Я эти исходники не смотрел — качать было лениво, но скорее всего в них не особо много смысла. Я уже выше об этом написал — сейчас все производители тупо выкладывают сорцы линуксового ядра и от этого никакого толку. Потому что все хардварные вещи собираются отдельно модулями ядра, а все самое интересное — вообще пропиетарное (см. выше про exeDSP). 🙁
Skylord
Ты человечище!
Первый чел, который начал таки ковырять этот b650.
Видно , что сам Самсунг ничего кроме стандартных 4-5 виджетов делать ничего не собирается. А ядро линуксовое думаю может быть дополнено и браузером и рекордером… можно провести аналогию с GeeXboX или Freevo
или я ошибаюсь?
Да не начал я его ковырять… Как его ковырять, если у меня и телевизора-то нет? 🙂 Я же написал — было очень лениво заниматься полезным делом, поэтому и пнул эту прошивку…
Более того — там, скорее всего, и не получится ничего расковырять — см. выше, это уже обсуждалось. Весь основной функционал скомпилирован в один файл, с которым мы фиг чего сделаем. По сути единственное, что возможно — исходники виджетов получить и, соответственно, свои собственные писать. Проблем с этим нет — расшифруй прошивку прилагаемой программкой и сможешь сам посмотреть виджеты.
Ну вы звери…
Поковырялся в своем B650 по телнету…
Хотел решить проблему — у меня кабельщики гонят цифру, вместе с ней и EPG. В самом телевизоре можно поставить авто часы — чтоб телевизор брал их у провайдера сигнала. Телек часы берет, но неправильно — на час вперед. Соответственно электронный гид смещается на час, если ставишь время вручную — гид все равно кажет неправильное время.
Как думаете, в настройках файликов найти чего нибудь такое можно? Подкорректировать часовой пояс телеку бы..
Привет, Skylord.
Ты очень, крут, раз так далеко зашел в ковырянии прошивки.
У меня есть похожий телевизор, правда другой модели (диагональ 32»)
Скажи пожалуйста, ты пишешь о каких то файлах, которые можно скачать, где? 😉
Я вот хочу заняться написанием своих виджетов, ты пишешь, что там есть, где?
Что то я не понял 🙂 подскажи пожалуйста. Можно на емейл 😉
Не против пообщаться на тему телевизоров/прошивок, могу быть полезен.
Почитал Ваши рассуждения — дух захватило. Вот где мозги и энтузиазм! Мои аплодисменты.
Ковыряюсь уже месяц с новым телеком — PS50B850Y1W. А именно с DLNA. Штука очень понравилась, но мне (прямо скажем не сильно продвинутому пользователю) сложно понять его капризы. То он воспроизводит, то нет. То только картинку, без звука. Я понимаю, что не хватает ему чего-то.
Скачал последнюю версию PC Share Manager с фирменного сайта — прогресс ! Стал показывать что-то, на что раньше не обращал внимания.
Вижу там (на сайте) еще и прошивка есть. Скачал, но прежде, чем ставить, к вам обращаюсь.
Уважаемые, есть смысл? Производитель не заморачивается объяснить для чего она, и в чем изменения. А судя по высказываниям людей (касательно перепрошивки телевизоров PHILIPS) последствия могут быть и плачевными.
Если не влом, снизойдите!
С официального сайта без проблем можно ставить. А если действительно хочется «прокачать телевизор по полной», то посмотрите в сторону http://samygo.sourceforge.net/ и вот тут еще почитайте — http://forum.ixbt.com/topic.cgi?id=62:16777
to Skylord: Спасибо за ответ.
С оф. сайта все прошло легко и просто… но и не поменялось ничего 🙂
Последую Вашей ссылке на форум.
Возможно ли прикрутить к прошивке эмулятор Cccam, Oscam, mgcamd?
Видимо как раз в этом exeDSP всё нужное для этого запрятано.