§ Взлом TP-Link WR740N & WR841N для OpenWRT

В своей работе мы достаточно часто используем дешёвые и простые маршрутизаторы от TP-Link для организации VPN канала. Для этой цели я приспособил OpenWRT, и выпиливая поддержку USB и WiFi мы получаем достаточно места для установки OpenVPN на маршрутизатор. В результате устройство стоимостью $25 показывает великолепную стабильность и настраиваемость.

Однако в последнее время TP-Link повинуясь давлению регулятора из США, заблокировали в своих маршрутизаторах возможность установки сторонних прошивок, дабы не допустить увеличение пользователями мощьности WiFi сигнала. И вот первая партия маршрутизаторов с новой прошивкой попалась ко мне, так что пришлось искать способ обхода этой блокировки.

На самом деле TP-Link не стала сильно заморачиваться с блокировкой, и просто внедрила какую то проверку какой-то последовательности бит в прошивке. В результате попытки установки иной прошивки (в том числе и оригинальной но старой) маршрутизатор показывал ошибку 18005, и говорил что прошивка не подходит для данного устройства.

Читая интернеты наткнулся на несколько интересных постов про распайку обычного COM-порта на плату маршрутизатора, и прошивке через этот COM порт, звучит не просто, поэтому продолжил рыть и в итоге нашёл следующий способ.

Оказывается примерно с марта 2013 года в большое количетсво маршрутизаторов TP-Link в загрузчик U-Boot был добавлен специальный модуль для "раскирпичивания" маршрутизаторов. Идея в том, что при определённых обстоятельствах U-Boot загружает модуль восстановления, который все делает практически самостоятельно, а именно:

  1. Запускает U-Boot и присваивает маршрутизатору IP 192.168.0.86/24
  2. При помощи протокола TFTP загружает с сервера с адресом 192.168.0.66 нужный файл восстановления
  3. Устанавливает его исключая любые проверки
  4. Перезагружается в новой прошивке.

Звучит вкусно, но нужно определиться с тремя вещами:

  1. Как сообщить маршрутизатору что необходимо запустить данную процедуру восстановления
  2. Как понять какой файл будет просить маршрутизатор
  3. Какой файл ему подкладывать. У нас как минимум есть factory image и sysupgrade.

Итак по порядку:

Что бы запустить маршрутизатор в режиме восстановления необходимо выключить его, зажать reset, удерживя reset зажатым включить, и в момент когда будут гореть только крайние лампочки (самая правая и самая левая) отпустить reset.

Что бы понять какой файл будет запрашивать наш маршрутизатор мы можем просто запустить tcpdump и посмотреть какой файл будет запрашивать маршрутизатор в запросе RQQ

tcpdump -i eth0 -n -l

В моём случае с WR740N v4.28 файл имел название wr740v4_tp_recovery.bin

Для того что бы прошить OpenWRT необходимо либо скачать образ, либо собрать самому, но образ обязательно должен быть factory, либо же можно использовать официальную прошивку от TP-Link, например на случай отката версии. DD-WRT я не пробовал, но есть подозрение что будет работать точно так же.

Итак, ещё раз пройдёмся по процессу:

  1. Настраиваем сервер tftpd, и кладём необходимую прошивку, предварительно переименовав её, и проверяем что файл имеет разрешения на чтение для tftpd
  2. Присваиваем нашему компу IP 192.168.0.66 (я делаю через алиасы ifconfig eth0:1 192.168.0.66)
  3. Зажимаем reset на маршрутизаторе и включаем его
  4. Когда загорятся только две крайних лампочки отпускаем reset и ждём пару минут.

После этого маршрутизатор перезагрузится, и на нём окажется та прошивка которую вы ему подсунули. Просто и быстро, и никаких распаиваний COM порта на матери, и прочего геммороя с патчами оригинальной прошивки... А если маршрутизаторов у вас не один - то этот способ ещё и быстрее!


comments powered by Disqus