Записи: Май 2016

  1. 17 мая 2016 Исправляем вход в адимский интерфейс TP-LINK'а

    В TP-LINK'е сломали импорт настроек после обновления прошивки. На самом деле, его сломали уже довольно давно (как минимум, в 2014 году, судя по сообщениям с некоторых форумов), но я столкнулся с этой проблемой только недавно, обновив свой WDR3600. Я редко меняю прошивку роутера. Источником проблемы стало изменение способа хранения паролей: теперь они не хранятся в окрытом виде, вместо этого записывается некая хэш-сумма (что, само по себе, хорошо). В результате чего, после восстановления сбэкапленных настроек, пользователи потеряли возможность залогиниться в интерфейс роутера.

    Одно из возможных решений — сбросить роутер на заводские настройки и повторить кофигурирование по памяти, или списывая с заблаговременно сделанных скриншотов. Подходящих скриншотов у меня не оказалось, а перспектива перенастраивать форвардинг портов и привязку айпишников к MAC-адресам (для выдачи по DHCP) меня не обрадовала.

    Немного погуглив, я выяснил, что конфиг экспортируется в виде обычного текста, зашифрованного с помощью симметричного шифра (DES-ECB). К счастью, некие добрые люди уже провели надлежащие исследования, позволяющие его расшифровать. Раскодированный конфиг от старой прошивки состоит из ~1300 пар вида ключ-значение и выглядит примерно так:

    lan_ip 192.168.8.200
    lan_msk 255.255.255.0
    ...
    lgn_ousr admin
    lgn_opswd admin
    lgn_usr **********
    lgn_pwd **********
    ...
    

    Чтобы сконвертировать его обратно, в форму, пригодную для восстановления на роутере, нужно, перед шифрования с помощью того же самого шифра, записать в начало файла его MD5-сумму, а с конца дополнить нулевыми байтами до ближайшей восьмибайтовой границы. Я сделал удобный скрипт для автоматизации процесса кодирования/декодирования.

    ( tlrecode.sh )

    Для восстановления входа на роутер нужно:

    • сохранить настройки перед обновлением прошивки;
    • сбросить роутер до настроек по умолчанию (если оказалось, что после восстановления сохранённых настроек вход больше невозможен);
    • изменить логин/пароль на желаемые и сохранить новый конфиг;
    • декодировать оба конфига с помощью tlrecode.sh config.bin config.txt && tlrecode.sh config-new.bin config-new.txt;
    • исправить старый конфиг, заменив все строчки, начинающиеся с lgn_, на их вариант из нового конфига;
    • сконвертировать исправленный конфиг с помощью tlrecode.sh -e config.txt config-updated.bin;
    • восстановить настройки роутера, загрузив config-updated.bin.

    После завершения процесса обновления, вход с использованием выбранных логина и пароля не должен вызвать проблем.