Расширение возможностей Android TV-приставки NV-501-Wac

    Общий рейтинг статьи: 0 (проголосовало 0 )
    Опубликовано:  [просмотров 1466]


    Не так давно я приобрел Android TV-приставку NV-501-Wac (разработка ООО "Предприятие"Элтекс"), она поставлялась в рамках цифрового TV от "Электронного города" в г. Новосибирск, с выкупом оборудования в течение восьми месяцев. В том виде, в котором она поставляется изначально, приставка обладает довольно куцым функционалом и,помимо всего прочего, разработчики из "Электронного города" ,так закостомили прошивку, что с пульта стало невозможно работать ни с чем, кроме их штатных приложений.

    Android TV-приставка NV-501-WAC

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

    Здравствуйте.
    Исходные коды нами не предоставляются ни на каких условиях, поскольку они
    содержат исходники от чипвендора, полученные нами под NDA.
    Мы практикуем выдачу разобранных прошивок под самостоятельную сборку.
    Данный сборочный архив предоставляется в рамках системы поддержки
    заказчиков.
    Для регистарции представителей Вашей компании необходимо обратиться в
    коммерческий отдел, к любому менеджеру компании Элтекс по направлению Media.

    Но, я честно говоря, и не рассчитывал что мне что нибудь предоставят, такова политика компаний в большинстве случаев. Поэтому зайдем с "другой стороны". Во первых, вскрывать ее не хотелось и ,на счастье, банальное сканирование портов показало, что у приставки открыты ssh и adb порты.

    Причем, adb совершенно не защищен и если мы выполним подключение:

    # adb connect 192.168.3.100:5555
    # adb shell

    То мы сразу же, спокойно входим в рутовую консоль устройства! Это конечно здорово и предоставляет возможность дальнейших модификаций без особых заморочек, но это же такая гигантская дыра в безопасности! Надо будет попробовать на досуге просканировать публичные WIFI-сети на наличие открытых network-adb.

    Собственно, первое, что приходит в голову, это разобраться с подключением по ssh, чтобы закрыть net-adb при помощи ip-tables и оставить доступ только по ключу. Конфигурационный файл sshd расположен в файле /system/etc/ssh/sshd_config и содержит интересующую нас запись:

    AuthorizedKeysFile /system/etc/ssh/authorized_keys/ssh_key_%u

    Следовательно, проверим каталог /system/etc/ssh/authorized_keys/ и видим, что согласно прописанной логики там присутствует ключ только для пользователя log. Логично, что нам потребуется создать файл ssh_key_root для реализации доступа пользователя root.

    Сгенерируем открытый и закрытый ключи командой:

    # ssh-keygen -t rsa -b 4096 -C "root@th22.info"

    Следующим этапом перемонтируйте раздел /system/ в режим rw и вставьте содержимое публичной части ключа в файл ssh_key_root:

    # mount -o remount rw /system/
    # vi /system/etc/ssh/authorized_keys/ssh_key_root

    Вот теперь можно попробовать подключиться с помощью ssh, с использованием ключа:

    # ssh -i /home/chernousov/Temp/keys/key.txt root@192.168.3.2

    Дальше можно импортировать ключ пользователю, но это я уже рассказывал и повторяться не буду, лучше рассмотрим вопрос установки busibox. Тут есть одна небольшая особенность, так как рут у нас только shell (Super su, будем устанавливать чуть позже), то установим при помощи adb:

    $ adb push ./busybox /data/local/tmp
    # chmod 777 /data/local/tmp/busybox
    # cp /data/local/tmp/busybox /system/xbin/busybox
    # /system/xbin/busybox --install /system/xbin/

    Вот теперь можно уже поработать над расширением функционала, а сегодня мы рассмотрим только копирование файлов по sftp. Крайне не удобно бегать с флэшкой от компьютера к приставке, поэтому реализуем копирование файлов по sftp. Это довольно медленный и "однозадачный" метод, для реализации полноценного шаринга файлов лучше использовать nfs и samba, но на безрыбье и так сойдет.

    По умолчанию попытка копирования завершится ошибкой "remote host has disconnected". Это связано с тем, что в конфигурационном файле демона ssh прописан путь к несуществующему файлу /usr/libexec/sftp-server. Этот файл можно скачать в нашем облаке:

    Ссылка на файл [sftp-server]

    Следующим этапом просто скопируйте этот файл на TV-приставку и пропишите корректный путь в конфигурационном файле:

    $ adb push ./sftp-server /system/xbin/
    # chmod 777 /system/xbin/sftp-server

    Конфигурационный файл ssh без комментариев выглядит следующим образом:

    Protocol 2
    HostKey /data/ssh/ssh_host_rsa_key
    HostKey /data/ssh/ssh_host_dsa_key
    AllowUsers log root
    AuthorizedKeysFile /system/etc/ssh/authorized_keys/ssh_key_%u
    PasswordAuthentication yes
    PermitEmptyPasswords no
    Subsystem sftp /system/xbin/sftp-server

    Перезапустите приставку командой reboot из консоли и наслаждайтесь передачей файлов по SSH. Хотя, там наслаждаться то особо нечем на больших файлах скорость копирования 4.5 мб/сек, на большом количестве мелких 500 кб/сек.

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

    P.S. Немного характеристик прямо из под капота:

    # cat /proc/meminfo
    MemTotal: 751552 kB

    # cat /proc/cpuinfo
    processor : 0
    model name : ARMv7 Processor rev 5 (v7l)
    BogoMIPS : 19.57
    Features : swp half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt
    CPU implementer : 0x41
    CPU architecture: 7
    CPU variant : 0x0
    CPU part : 0xc07
    CPU revision : 5

    processor : 1
    model name : ARMv7 Processor rev 5 (v7l)
    BogoMIPS : 54.00
    Features : swp half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt
    CPU implementer : 0x41
    CPU architecture: 7
    CPU variant : 0x0
    CPU part : 0xc07
    CPU revision : 5

    Hardware : phoenix
    Revision : 30000
    Serial : 0000000000000000
    media_type : emmc


    Обсуждение статьи

    Ваш комментарий: