Posts Tagged ‘reversing’

Про телефоны и Северную Корею (КНДР)

В моем возрасте еще рано писать мемуары, но воспоминания – вполне можно, тем более, что новые жизненные впечатления накрывают предыдущие и многие прикольные вещи уже не помню за давностью лет. :-)

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

Дело было около 6-7 лет назад. Я тогда написал и выложил в общий доступ небольшую программку, которая позволяла распаковывать и упаковывать обратно языковые пакеты в прошивках сотовых телефонов Siemens. В принципе, в этом не было ничего особо сложного – использовался словарный алгоритм сжатия типа LZ78/LZW: для каждого языка хранился словарь, а каждая строка состояла из ссылок на элементы словаря – точные детали уж не упомню. Все это было оптимизировано для использования на 16-битных процессорах Siemens C167 – данные хранились 16-ти килобайтными сегментами для простоты адресации и все такое. Ассемблерный код распаковщика, достающего нужные строки по запросу, был достаточно компактным и не менялся начиная с моделей телефонов C35/S35 вплоть до заката самой компании, когда ее продали BenQ. А может и сейчас в каких-то остатках Infineon’а, на которых китайцы клепают свои дешевые телефоны, это используется. Менялся только формат заголовка (иногда даже между прошивками в одной модели) и поэтому в своей программе я сделал возможность задавать через конфиг разные варианты моделей телефонов и их прошивок. Мой алгоритм распаковки был полной калькой с Сименсовского, реализованный на VisualBasic. Упаковку пришлось писать уже самому, но так как программист из меня всегда был вполне посредственный, запаковывал он несколько хуже оригинального. ;-)

Писал я все это для личного развлечения и забавы ради, однако, как это обычно и получается, если что-то делаешь более-менее неплохо, то рано или поздно найдутся люди, желающие за это заплатить. :-) На меня вышли сотрудники из небольшой фирмы по ремонту сотовых телефонов, объяснили их ситуацию и попросили помочь. А ситуация была в том, что к ним обратились представители КНДР и заказали сделать им телефон с интерфейсом на корейском языке. В Северной Корее GSM связь тогда только появлялась, а телефоны выдавали только чиновникам и гос.служащим. При этом все аппараты, естественно, были на английском языке – то бишь языке не то что потенциального, а реального противника, использовать который нормальному северо-корейскому партийному чиновнику конечно же зазорно. :-) Южно-корейские телефоны их тоже не устраивали – то ли язык там чем-то отличается, то ли в принципе не хотели принципиально взаимодействовать с «южанами» – у них там в КНДР с этим строго. :-) Так или иначе, но тех, кто решит им этот вопрос искали они у нас в стране. Я, конечно же, согласился. Хотя сейчас, по зрелому размышлению и умудренный опытом, понимаю, что денег попросил неприлично мало. С другой стороны – был я тогда еще несмышленым студентом, а работа была достаточно небольшая и в удовольствие. :-)

В качестве подопытных аппаратов были выбраны Siemens S55 (на тот момент вполне приличный телефон бизнес-класса), которых та ремонтная фирма собиралась купить нужное количество, прошить и продать корейцам (что в итоге, собственно, и сделала). С текстами проблем не было – я отдал файл со всеми англоязычными строками (около двух с половиной тысяч) из языкового пакета корейцам и сказал перевести все на их язык, как они хотят чтобы это выглядело. Перевели они буквально за пару дней – как я понял (по тому, что перевод прислали отдельными блоками), они посадили на это дело трех-четырех человек.

С изображениями иероглифов было уже сложнее. Европейские прошивки имели слишком маленький размер символа – иероглиф туда просто не помещался, а ковырять из-за этого код было слишком долгим. Тогда я взял китайскую прошивку – в ней все как раз было на иероглифах и поэтому знакоместо было вполне здоровенным (16х12 пикселов, если мне память не изменяет). Но с ней возникла другая проблема – не было места под дополнительные изображения символов. Пришлось немного извращаться: заменять китайские иероглифы корейскими, а потом соответствующим образом подменять символы в тексте строк. Делать это пришлось еще и потому, что телефоны Siemens не поддерживали полноценный unicode. У них были своеобразные кодовые страницы – если в тексте строки встречается специальный служебный символ, то код следующих после него прибавляется к фиксированному (зашитому в прошивке) основанию и получается итоговый юникодовый символ, под который уже ищется изображения и который выводится пользователю. Так вот, для частей таблицы unicode с корейскими иероглифами таких заранее зашитых служебных символов для переключения не было.

В общем, проблему с местом удалось успешно решить, тем более, что китайские иероглифы, которые мы меняли, как я понял, лексически отличаются от корейских – обозначают целые слова, а не слоги (как в корейском), поэтому их намного больше и наши корейские заняли лишь часть имеющегося места… Кстати, сами картинки иероглифов корейцы тоже нарисовали очень быстро. Я сказал им для каждого использованного в строчках символа сделать bmp-файл с названием в виде кода этого символа в unicode и его изображением 16х12 – справились они с этим очень оперативно.

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

Первый и последний раз, когда я видел самих корейских заказчиков был как раз на сдаче работы. Их было, если правильно помню, трое – один «главный» и двое русскоговорящих. Они очень хотели получить не просто переведенную прошивку, а возможность потом ее еще и менять. Сначала я не хотел отдавать непосредственно софт, а потом плюнул и все-таки отдал – сама программа для редактирования языковых пакетов и так лежала в интернете, а программа для замены китайских иероглифов корейскими все равно писалась специально для них и больше бы мне не пригодилась (да и представляла собой по сути надерганные из других моих же программ куски). Больше после этого я не видел ни этих корейцев, ни саму фирму, которая это заказала. Хотя вру – в фирме этой я потом случайно оказался с другом, чинившем там сотовый телефон. Работают люди как и раньше…

Вот такой вот любопытный опыт. Вряд ли сейчас кто-то  в КНДР ходит с телефоном с моей прошивкой (все-таки на данный момент эти телефоны сильно устарели), но когда-то – ходил и сознание этого греет мне душу – я люблю делать что-то, что имеет зримый и конкретный результат. Вряд ли они врали про всю эту тему с северной Кореей: у южной и своих телефонов хватало – им нет смысла нанимать русских программистов для таких хитрых переделок. А язык натурально корейский – его таким даже Гугл опознает. :-) Вот, скопировал пару фраз из языкового файла:
«우선권망»
«PIN을 입력하십시오:»
«SIM카드를 넣으십시오»


Минифон от Мегафона – 1:0 в их пользу

Отечественный «Мегафон» в плане интеллекта и фантазии по покупке китайских OEM’ных моделей телефонов и продажи их на территории нашей страны с большим перевесом обходит остальных операторов. Сначала был «бабушкофон», теперь – «минифон».

Обзоры с большим количеством фотографий – тут или тут. В тезисах: крохотный по размерам и вполне современный по внешнему виду телефон с функциональностью телефона, а не медиа-комбайна (т.е. он только звонит и рудиментарно работает с SMS), отдают за 500 рублей в офисах Мегафона. Платишь 500 рублей, получаешь телефон с sim-lock на самого Мегафона, SIM-карту с понравившимся тарифом (который в 90% случает – О’Хард) и 30 рублями на счете, а также 165 бесплатных минут местной связи (в Москве, в регионах по разному, иногда и сильно больше). С точки зрения экспертов, простых пользователей и меня лично – это просто хит. Я взял уже себе и окружающим – всего в количестве 4 штук. Думаю пойти и взять еще, а то многие уже вопят на форумах, что комплекты кончаются. :-)

Немного еще личного мнения и впечатлений. Качество сборки – выше всяких похвал (Нокия с ее облезающей краской и затирающимся пластиком позавидует). Громкость динамика и качество работы микрофона – хорошие. Клавиатура – отличная: резиновые кнопки с тугим ходом, «кликом» и далеко друг от друга разнесенные – в кармане случайно не нажимаются даже без блокировки клавиатуры и если карман забит еще кучей вещей. О функционале говорить бессмысленно – его нет. Но это наоборот несказанно радует: когда пользуешься старым телефоном, все время чувствуешь его ограничения – Java вроде есть, но OperaMini «вылетает»; фотоаппарат вроде есть, но плохой; mp3-плеер есть, но тихий; GPS есть, но спутники ловит долго; и так далее. А когда функционала нет совсем (при этом телефон не стыдно рядом с собой на стол положить) – ни о чем этом не думаешь. :-) Сознание свободно и ничего не напрягает… Ну и опять же – при всем при этом, аппарат совершенно не жалко потерять. При такой-то цене! Вообще, по сути единственный его реальный недостаток – разъем для зарядки. Он выглядит как miniUSB, но с перепутанной полярностью (1 и 5 пины поменяны местами), из-за чего обычные кабели miniUSB использовать для зарядки телефона невозможно, а если не дай Бог вставить его комлектную зарядку в какой-нибудь прибор, то этот прибор, соответственно, тут же сгорит к чертям. Сие не есть гуд. Народ в Инете уже начал перепаивать родной разъем на стандартный, но это геморрой…

Однако, все вышенаписанное – лирика. Перейдем к технике и конкретике. Аппарат (как, кстати, и «бабушкофон») произведен для Мегафона китайской компанией Umeox, модель называется V158 и построена на супер-дешевой платформе Infineon ULC2 (чип модели 7880), ноги которой растут в старые-старые Сименсы (очередная реинкарнация E-Gold’а), что доставляет и наводит на размышления о тщете всего сущего. :-) Ну и ностальгия, само собой: я когда содержимое памяти минифона в HEX увидел – чуть не прослезился – оказалось, что еще помню команды микроконтроллера Siemens C167 даже в шестнадцатеричном виде… Но что-то я опять на лирику и слюни/сопли съехал. ;-)

В miniUSB разъеме кроме зарядки ничего интересного нет. Доступ к последовательной консоли находится под наклейкой с IMEI под батарейкой – просто контактные площадки TX, RX, питание и земля.

Для подключение подойдет любой Serial-TTL конвертер – я использовал старый USB-кабель от мобильника. Собственно, в отсутствии необходимых аксессуаров, тупо приклеил проводки изолентой и зажал батарейкой. Работу консоли можно проверять в любом терминале (скорость 115200, параметры 8N1) – телефон должен откликаться на AT.

А теперь о печальном: на момент написания данного поста бесплатного метода разлочки телефона не существует (при попытке вставить чужую симку аппарат говорит «Только Мегафон»).  Предыдущие версии ULC2 успешно разблокируются в соответствии с данной инструкцией и описанными вот тут утилитами: http://forum.gsmhosting.com/vbb/showthread.php?t=695556. Собственно, утилита работает и с этим телефоном (используется стандартный дебаг-режим, который не поменялся еще с тех пор, как существовали сами телефоны Сименс), только не работает вход в test mode через нажатия * + # + <кнопка power>. Нужно включить телефон (кабель, естественно, должен быть подключен и последовательная консоль – нормально работать), запустить программу, перейти в меню «Settings»-»Phone tool», указать номер порта и скорость 115200, потом в основном окне сделать то, что написано по указанной выше ссылке после основной инструкции: нажать кнопку «V24 AT# On», потом выбрать в меню рядом «ptest_mode», потом снова нажать »V24 AT# On», потом – «Reset» и телефон перезагрузится в тестовый режим – на экране будет надпись «Test Poweron!», а нажатие кнопки «Update info» в программе выдаст в окне следующее:

Connection Test: OK
Prod. testmode: Yes
Target SW Ver: 04.19.00:18.26.18:08.09.00:ULC2GL
Target EEP Ver: 12
RF Band Support: 900 & 1800Mhz

Собственно, все бы хорошо, но функции блока «Security» не работают в принципе – прошивка аппарата более новая, чем поддерживается программой, так что ни разлочить, ни сменить IMEI не получится… Однако, перспективы есть: последние версии утилиты SagemEG уже по заявлениям производителя поддерживают последние прошивки для E-Gold’а, а значит через некоторое время появится и бесплатный аналог – это как пить дать.

В любом случае, Мегафону и Umeox’у можно смело засчитать балл в плюс: при такой стоимости телефона вряд ли кто-нибудь кроме любителей (вроде меня) захочет заморачиваться и тратить либо время, либо деньги на разлочку. Делалось бы это через основной разъем телефона по обычному кабелю USB – тогда еще куда ни шло. А так, как это есть и будет – на фиг никому не сдалось. Ну и в любом случае – респект и уважуха Мегафону за креатив.

И напоследок еще пара вещей, вычитанных в интернете, чтобы не забыть:

1) Защитный код телефона – 0000.

2) Нажав *### в режиме ожидания, можно попасть в простенький нетмонитор и посмотреть информацию о текущей соте и т.п.


Прошивки телевизоров 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ирвания – во вложении.



Архивы

Вход на сайт

Имя:
Пароль:
 

Регистрация | Забыли пароль?

 

Метки