Комментарии 19
Скорее всего, количество отправляемой информации напрямую зависит от версии прошивки.
Прошивки, предназначенные для китайского рынка, содержат больше специфических для Китая приложений.
Еще не двигался в этом направление, мне пока интересно, кому-то понравится эта статья )
Работа проделана большая, но... Может проще было разобрать образ прошивки? (Даже не из SPI flash, а тупо из образа поставляемого вендором для обновления роутера, хотя конечно стоковая прошивка и шифрованная м.б., это уже смотреть нужно).
И после поиска и нахождения всех разделов flash (в прошивке или дампе flash) варианты -
1) Поправить переменные загрузки в том разделе flash где они хранятся. (он обычно мелкий и в нем перечислены байт значений переменных загрузки).
2) Поправить root раздел (обычно init скрипты) где проверяются boot переменные или же явным образом в этих init скриптах стартовать демоны ssh/telnet/консоли
3) Использовать uboot этой версии от этой платформы без блокировки ввода с клавиатуры. Риск этих экспериментов замены в прошивке, и что можно "окирпичить" роутер, нивелируется возможностью восстановить оригинальную прошивку spi flash программатором.
Было бы интересно посмотреть на bootcmd, да и весь env.
А вы пробовали получить доступ к шеллу более простыми способами прежде, чем вскрывать пациента и паять? Вот здесь говорят, что широко известный эксплоит работает на этом роутере: https://openwrt.org/inbox/toh/xiaomi/xiaomi_mi_router_4a_gigabit_edition#notes_on_firmware_exploit_procedure
Я то и сам непрочь пошалить программатором и паяльником (см. Xiaomi AC2350 например, которому я стоковую прошивку пересобирал, добавляя плюшек, и куда я в итоге портировал OpenWRT). Но я обычно иду по пути наименьшего сопротивления и прибегаю к более агрессивным действиям только в случае, если простые пути недоступны.
В любом случае благодарю за статью!
Емнип, я на двух таких роутерах openwrt и поставил через уязвимость веб-морды. Кажется, по этому туториалу.
Емнип, самой большой проблемой было перевести китайские иероглифы, будучи подключённым к этому роутеру, когда выход в интернет осуществляется через другой. Приходилось фоткать экран телефоном и пихать в гуглопереводчик.
Запоздавший на неделю совет: если в ПК\Ноутбуке только один выход в сеть, то можно обзавестись переходником USB-to-RJ45, чтобы одновременно иметь выход в интернет и подключать различные сетевые устройства.
Запоздавший на год ответ — кажется, у меня был и проводное, и беспроводное подключение на компе, но у меня не получилось с одного и того же браузера подключиться к разным сетям. Для прошивки и переводчика соответственно.
Про приоритеты маршрутов и шлюзов знаю, а вот применять не умею. :/
Судя по версиям U-Boot и ядра похоже на старые ZyXEL Keenetic. Там тоже mipsel, кажется Ralink 3052
Вижу Xiaomi - хочу перепрошить)
Ну, если есть человек с SPI-программатором, то система беззащитна. Ну хорошо, не всякая и не совсем.
Есть задокументированный формат области переменных окружения U-Boot, что позволяет (при наличии программатора) менять их как заблагорассудится. Хуже когда загрузчик собран без возможности сохранения переменных - но это скорее планшетно-телефонное, чем роутерное.
И еще - консоль хорошо, но особого смысла в этом нет. Разве что DTB декомпилировать или через /proc/device-tree восстановить и попытаться на современные ядра насадить... И то нужно, чтобы ядро чип поддерживало. Тогда можно попробовать OpenWRT насадить или вообще кастомную систему с каким-нить BuildRoot'ом сварганить... Но это уже тема совсем других разговоров... Хотя... Я б взял на работу того, кто это сможет.
Ну, если есть человек с SPI-программатором, то система беззащитна. Ну хорошо, не всякая и не совсем.
К сожалению нет. У меня в одном устройстве процессор включается при подаче питания на spi флешку. И тоже начинает читать флешку.
Есть задокументированный формат области переменных окружения U-Boot, что позволяет (при наличии программатора) менять их как заблагорассудится
Их можно зашифровать. Или разрешить менять в заданном диапазоне. Хотя конечно, в данном случае автор стреляет из пушек по воробьям.
Хуже когда загрузчик собран без возможности сохранения переменных - но это скорее планшетно-телефонное, чем роутерное
В планшето-телефонах обычно стоит андрюша на плечах LK. У которого нет переменных вообще
Идеи. Просили же идеи:
1. Не припаивать провода так. Или изолировать (не сдержался).
2. minicom (старый как мои ...) откройте для себя эту древнюю программу, позволяющую не только читать, но и писать. (Вот и статья не нужна вообще?)
hint: подцепиться по uart, запустить minicom, при загрузке проспамить Esc и попасть в меню U-Boot
Ну пайка у автора конечно не фонтан (хотя и не ужас-ужас), но войти в меню кастомизированного вендором U-Boot'а не всегда возможно, "заспамив Esc". Бывает, что ввод на этом этапе отключен и для того, чтобы вогнать U-Boot в состояние, в котором он вообще начнёт реагировать на ввод, необходимы некоторые подпрыгивания с бубном.
Added: И да, в Putty прекрасно работает ввод, так что выпад по поводу терминального софта был точно не уместен - автор на Win, так что Putty вполне адекватный выбор.
Added #2: Например на Xiaomi AC2350 мне приходилось загонять роутер в режим "что-то пошло не так" reset'ом, чтобы попасть в меню U-Boot: https://4pda.to/forum/index.php?showtopic=996681&st=540#entry103414146
Исследование прошивки Mi Router 4A Giga Version. Получение интерфейса командной оболочки Linux