Хочу поделиться моим опытом получения рута на 55" C2.
Информацию брал из разных источников, в основном, из этой темы и
throwaway96/crashd.md на гитхабе.
Вводные:
Телевизор LG OLED55C21LA, куплен в Черногории.
Software version: 3.21.45
webOS TV Version: 7.2.0-47 (mullet-marine)
Телевизор подключен к роутеру только Ethernet-кабелем, WiFi не подключал.
Ноут: MacBook Pro 2017 (На 12-v шаге я использую Putty т.к. есть винда на виртуалке, но подойдет вообще любой ssh-клиент, я полагаю.)
Телефон: Android 11
1. Зарегистрировал developer account на сайте LG, указав мой текущий регион (Montenegro)
https://webostv.developer.lge.com/devel ... lg-accountСогласился со всеми лицензионными соглашениями.
2. Установил ThinQ App на Android телефон, залогинился в нем, указав те же логин/пароль, что и выше, подключил телевизор к приложению, залогинился в телевизоре в developer account через приложение.
3. В настройках TV выключил Quick Start+ (General -> Devices -> TV Management).
4. Установил на TV приложение Developer Mode, запустил его, залогинился с помощью developer аккаунт. Получил уведомление на экране, что "You need to install webOS TV CLI v1.12.4 or later version", ответил ОК. В этом приложении включил Dev Mode Status (телевизор перезагрузился), затем там же включил Key Server. Записал IP и пароль, в моем случае это было 192.168.1.11 и 34EC52.
5. Скачал и установил на ноут Dev Manager v1.12.0 отсюда (ставил версию для macOS):
https://github.com/webosbrew/dev-manage ... p/releases6. В установленном на ноут Dev Manager-е, ввел IP и пароль, подключился к телевизору.
7. Там же в разделе App -> Available нашел приложение Homebrew Channel и нажал Install.
8. Перезагрузил телевизор (выключил и дождался щелчка реле, затем включил). Снова запустил на TV приложение Developer Mode.
9. На ноуте, в Dev Manager, на вкладке Terminal подключился к телевизору; появилась командная строка. Там запустил jail_app.conf патчер от throwaway96:
- Код: Выделить всё
curl -L -o /tmp/jailpatch.sh https://raw.githubusercontent.com/throwaway96/install-jail-conf/main/jailpatch.sh && sh /tmp/jailpatch.sh
На всякий случай, сохраненный скрипт:
Увидел текст "verification of current conf successful" в конце, как и ожидалось.
10. Перезагрузил телевизор в третий раз. Снова запустил на нем Developer Mode.
11. На ноуте, в Dev Manager через Terminal активировал непосредственно сам эксплоит:
- Код: Выделить всё
touch /var/log/crashd/"x;telnetd -l sh"
В ответ не было никакого сообщения, что означает успех!
12. С помощью PUTTY подключился с ноута к телевизору по его IP на 23 порт, используя протокол Telnet (про логине увидел "webOS TV 7.2.0 LGwebOSTV" ;).
Далее там:
Убрал бесячий ворнинг:
- Код: Выделить всё
unset LD_PRELOAD
Дал root привелегии приложению Homebrew Channel:
- Код: Выделить всё
/media/developer/apps/usr/palm/services/org.webosbrew.hbchannel.service/elevate-service
Заменил файл на папку, чтобы Dev Mode никогда не заканчивался:
- Код: Выделить всё
rm -rf /var/luna/preferences/devmode_enabled && mkdir -p /var/luna/preferences/devmode_enabled
После чего проверил версию системы:
- Код: Выделить всё
/ # uname -a
Ответом мне было:
- Код: Выделить всё
Linux LGwebOSTV 5.4.96-266.mlt4tv.1 #1 SMP PREEMPT Fri Nov 25 04:25:18 UTC 2022 aarch64 GNU/Linux
13. Удалил на телевизоре Developer Mode (долгое нажатие на иконку, затем кликнуть по появившейся корзине).
ВАЖНО: не устанавливайте больше Developer Mode на ваш TV! (говорит нам throwaway96)
14. Далее в консоли:
- Код: Выделить всё
reboot
Телевизор перезагрузился в четвертый раз.
15. Запустил на TV Homebrew Channel, в настройках убедился что "Root Status: ok".
Включил опцию "SSH server".
16. Перезагрузил телевизор в пятый раз (через настройки Homebrew Channel, т.к. так быстрее).
17. [Опциональный шаг, вроде, но я сделал. ] Присоединился с помощью PUTTY к телевизору на стандартный порт SSH (user:root, pass:alpine).
Положил в authorized_keys свой ключ, сгенерированный в PuttyGen, для безопасного доступа в будущем:
- Код: Выделить всё
mkdir -p /home/root/.ssh
chmod 700 /home/root/.ssh
echo 'ВАШ_SSH_КЛЮЧ' > /home/root/.ssh/authorized_keys
chmod 600 /home/root/.ssh/authorized_keys
Под ключом здесь понимается SSH public key, и обычно он представляет одну строку такого вида:
- Код: Выделить всё
ssh-rsa AAAAB3NzaC1yc2.......lsKdniN72bf+X6TCmqv+Ow9gI0x8GvaQ== demo@test
Соответственно, нужно выше ВАШ_SSH_КЛЮЧ заменить на эту строку, оставив кавычки.
Более подробно прочитать про создание и установку ключей SSH на сервер можно где угодно в инете, например
тут или
тут.
(throwaway96 утверждает, что установка ключа таким образом выключает авторизацию в sshd по паролю, оставляя только pubkey auth, что хорошо.)
18. Перезагрузил в шестой раз и убедился, что ssh авторизация по ключу работает.
UPD. Через несколько дней после получения рута обновил прошивку 03.21.45 -> 03.33.80 штатным способом. Рут доступ сохранился.
UPD2. Внес мелкие правки по тексту, добавил ясности, чтобы люди не путали приложения Dev Manager на ноуте и Developer Mode на телеке.
UPD3. Добавил ясность в п.17 по просьбе
Dekasan. Сохраненный скрипт переложил в аттачмент, т.к. движок форума ставит в коде смайлы.