http://habrahabr.ru/post/219513/
Я не люблю делать то, что делает большинство. Возможно, именно поэтому в пионеры меня принимали одним из последних в классе, вместе с отъявленными двоечниками, несмотря на мою хорошую успеваемость. А чем же занято теперь большинство, что делают и для каких устройств? Да, естественно, это же «кастомы» для бесчисленной армии устройств на платформе android, далее в списке могут следовать прошивки для роутеров и модемов, а замыкать список можно прошивками для, доживающих свой век, ТВ-плееров. Такая иерархия устройств с прошивками здесь условна, а вот будет ли являться безусловным фактом то, несет ли изложенный материал в себе какую-либо пользу хоть для кого-нибудь, можно ответить лишь прочитав его.
Материал ни в коем разе не является руководством к действию либо бездействию, более того, использование его в противоправных целях может преследоваться по закону. В случае не достаточно хорошо обдуманных манипуляций есть риск испортить оборудование.
Все началось около полудня. Остаток дня предстоял быть свободным, и было решено чем-нибудь заняться. Взгляд упал на IPTV приставку по фамилии Промсвязь, в девичестве ZTE, и с именем ZXV10 B600 V4C на наклейке.
Не скрою что интерес к этой коробке возникал и ранее, но что-то не срослось: слегка гуглил, малёк сканировал порты, немного трафик перехватывал – ничего толкового. Еще в то время я видел упоминания на китайских сайтах об успешной разблокировке telnet’а, только вот для этого нужно было девайс разбирать. Такой вариант отпадал, ибо везде гарантийные наклейки и, сорвав их, пришлось бы возмещать стоимость железа провайдеру.
Вот и на сей раз пристав к гуглу с запросами «zxv10 b600» ничего, кроме пары глупых вопросов и многочисленных китайских сайтов по продаже железяки, не обнаруживалось. Однако, приметив страницу
iknow.baidu.com, оказавшуюся аналогом
otvety.google.ru, перешел туда. Нет, что-то опять не-то — не подходит, все могут представить, что там за информация. Было принято решение серьезно и глобально у них там «забайдить». Некоторые могут подумать, что я знаю китайский язык, нет, я пользовался только ctrl+c/ctrl+v и
translate.google.com для перевода отдельных строк с китайского на английский, иной раз предоставляя гуглу возможность переводить страницы целиком. Убив пару часов, я натолкнулся на сервисную программу для работы с IPTV приставками, скачал, посмотрел — она хочет активации лицензией. Не-е, такой хоккей нам не нужен! Идем далее, и ищем более старую версию, находим, и как это ни странно, но безо всяких регистраций и прочих происков алчных людей, скачиваем, запускаем. Ба, да она на китайском! И пусть. Понятно же всё. Всего-то две кнопки.
Нам нужна вторая кнопка, и, забегая вперед, скажу, что далее, во втором пункте меню нужна вторая позиция.
Во вновь открывшемся окне вписываем IP адрес приставки и, предварительно удостоверившись что приставка и компьютер в одной подсети, нажимаем единственно доступную кнопку. Вуаля, мы в контакте, правда не в том самом. Посему возрадуемся, и думаем, что же нам это дает. Пора пробежаться по вкладкам и осмотреться. «Так а для чего второй пункт и вторая позиция?» — спросят меня. Действительно, мало что информативного было замечено среди вкладок с малопонятным набором символов. Тут настала очередь меню. Жмем в меню вторую пару иероглифов, затем опять вторую пару.
Очень даже хорошо, теперь, наконец-таки можно увидеть описания настроек на, понятном некоторым людям с детства, человеческом языке. Здесь же видим возможности прочитать настройки из устройства, записать их в устройство, загрузить из файла или сохранить в файл доступные для устройства настройки.
Закончим с настройками, это не столь интересно как кнопка «Start INETD» на первой вкладке.
Превосходно! Я подумал что сейчас наверняка подойдет пара idt:idt, ну или root c пустым паролем. Хм, ну на крайний случай ldt:ldt либо root:root плюс еще пару встречавшихся вариантов на китайских сайтах. Эх, не все так просто. Неужели брутить? Пусть бы там было по три буквы в логине и пароле, а если там больше шести, и не только букв? Черт с ним, ведь иначе тупик, не сам же по клавишам стучать буду. Включил софт и решил посмотреть в сторону сервера обновлений, адрес которого был найден на вкладке настроек.
Приставка обновляется с сервера провайдера, и как стало понятно, из настроек, делает это автоматически после включения и получения IP адреса при наличии на сервере новой прошивки. К слову, возможность автообновления можно отключить, равно как и указать любой адрес сервера обновлений тоже никто не запрещает. Так где прошивка? Что же она собой представляет?
Проследуем в каталог обновлений на сервере. Видим кучу jpg файлов и несколько cfg. Заглянув в zteSTBVer.cfg и zteSTBVer2.cfg картина становится четче. Ниже видна часть содержимого этих файлов относящаяся к модели ZXV10 B600 V4C.
zteSTBVer.cfg[Model=ZXB600V4C(STBSG-BCM7466-00000)]
AppName=Safe Version=403035 Location="safe_40332817.jpg" Destination="/dev/mtd1" Rules={Y(!403035)}
AppName=StbCfgInfo Version=32810 Location="stb_32808.cfg" Destination="/etc/stb.cfg" Rules={Y(!32810)}
AppName=logo Version=403003 Location="logo_B600v4c_403003.jpg" Destination="/dev/mtd4" Rules={Y(!403003)}
AppName=allmtd Version=40332822 Location="allmtd_40332822.jpg" Rules={Y(<40332822)}
zteSTBVer2.cfg[Model=ZXB600V4C(STBSG-BCM7466-00000)]
AppName=allmtd Version=40332822 Location="allmtd_40332822.jpg" Destination="/dev/mtd6" Rules={Y(=999999)}
Забираю файлы для своей модели приставки, согласно вышеприведенных конфигов. Вспоминаю что видел у китайцев некоторую информацию о составе прошивки, вновь заглядывая к ним, наталкиваюсь на упоминание о некоторой утилите SplitFile.exe чистящей 16 байт ECC после каждых 512 байт в файле и разбивающей составную прошивку на части. Поиски утилиты не дали абсолютно ничего. «Зажали!» — в сердцах подумал я, и с помощью швейцарского ножа TextPipe зачистил прошивку. Натравливаем binwalk.
DECIMAL HEX DESCRIPTION
-------------------------------------------------------------------------------------------------------
96 0x60 gzip compressed data, was "vmlinux", from Unix, last modified: Tue Oct 11 15:16:16 2011
2621440 0x280000 JFFS2 filesystem, little endian
6815744 0x680000 CramFS filesystem, little endian size 18268160 version #2 sorted_dirs CRC 0x5a011db9, edition 0, 9846 blocks, 584 files
С той адресацией, что упоминалась в интернете совпадает, однако. Продолжаю с WinHex’ом, который помогает все это дело раскидать на три файла в соответствии с нужными адресами, назвал их тривиально: kernel.bin, jffs2.bin и cramfs.bin. Куда теперь? Правильно, в образ jffs2.bin в файл /etc/passwd. Попавшаяся мне под руку программа New TuxBox Flash Tool для Windows платформы успешно справилась с подключением и просмотром содержимого двух образов файловых систем jffs2 и cramfs. Так что же в passwd?
root:x:0:0:root:/root:/bin/sh
bin:*:1:1:bin:/bin:/dev/null
daemon:*:2:2:daemon:/sbin:/dev/null
adm:*:3:4:adm:/var/tmp:/dev/null
ftp:*:14:50:FTP User:/var/tmp:/dev/null
nobody:*:99:99:Nobody:/:/dev/null
rpcuser:x:29:29:RPC Service User:/var/tmp:/dev/null
nfsnobody:x:65534:65534:Anonymous NFS User:/var/tmp:/dev/null
А может /etc/shadow? Нет его… Изменять и пересобирать прошивку не хочу. Опять тупик.
Переключение видов деятельности с одного на другой иногда дает прекрасные результаты. Открываю браузер и, казалось бы, бесцельно провожу около часа в поисках любой полезной информации по предмету моего интереса. Ссылка за ссылкой, переход за переходом. Ищу по версии линукса, модели процессора и его производителя. Становится поздно, хочется спать, просматриваемый контент несколько удаляется даже от модели процессора, и вот, стоп, а это как так? «To get a root prompt, you have to press Control-C and login with «root» and now password». Запускаю pytty, пытаюсь подключится. Конечно же не выйдет, там идет подбор паролей к логину root. Останавливаю перебор паролей, сохраняю сессию перебора чтобы продолжить утром. Снова запускаю putty, захожу:
login:root
password:ctrl+c
Что?! Я не поверил собственным глазам:
encrypted:null, unencrypted:здесь_пароль
Да, я не последовал четко описанному способу, нажал комбинацию ctrl+c не в тот момент, но во-первых, железяки-то разные, как и способ подключения, а во-вторых, я, в свое время, и в пионеры не особо торопился.
Мой интерес к приставке угас буквально на следующее утро после получения пароля, оставляя за бортом мерещившийся впереди процесс изменения прошивки, возможного добавления функционала, а также тестирования и установки прошивки в приставку. Я не люблю делать то, что делает большинство.