Работа с роутерами D-Link через Telnet
Сегодня мы узнаем, как с помощью утилиты telnet можно подключиться к роутеру D-Link и что это нам дает. Итак, что мы имеем:
- Роутер. Моим подопытным будет роутер D-Link DSL-2640U. Это классический 4-х портовый модем, подключающийся к интернету с помощью технологии ADSL ( Asymmetric Digital Subscriber Line) через телефонный провод и раздающий его на все 4 порта + WiFi.
- Компьютер под управлением операционной системы Windows 7 Pro
Итак. Опкрываем меню Пуск и вводим команду cmd. Можно так же воспользоваться командой Windows+R для вызова окна Выполнить и ввести команду cmd туда. Жмем Enter и перед нами всплывет окно командной строки.
Далее выполним команду telnet 192.168.1.1 23 , где 192.168.1.1 — это ip-адрес нашего модема, а 23 — порт telnet.
Внимание, перед тем, как заходить на модем через telnet, убедитесь, что в настройках модема разрешено подключение через telnet (при заводских настройках оно включено по умолчанию)
Если вы все сделали правильно, то telnet запросить логин и пароль. И не паникуйте, что при вводе пароля не появляются символы на экране. Это специальная фишка linux-систем как защита от кражей паролей
Если вы все сделали правильно, то перед вами появится следующая картина:
Что такое BusyBox вы можете почитать здесь. Если кратко, то это своеобразный интерпретатор команд для unix-подобных систем.
Итак, какие команды наиболее интересны:
-
-
- Команда ls — — выводит список файлов или каталогов (для вывода корневых каталогов можно так же использовать echo */ )
- cat — читает файл. (например, узнать версию встроенной операционной системы можно с помощью cat /proc/version , архитектуру — cat /proc/cpuinfo , память — cat /proc/mtd , )
-
- pwd — узнать текущий каталог
- ip — команда, раскрывающая все возможности работы с сетью
- free — оперативная память на борту
-
Итак, попробуем посмотреть, что из каких файлов и папок состоит наша прошивка. Вводим команду ls -al и нажимаем Enter. И получиться у нас должно что-то типа такого:
Куча всего непонятного, правда? Не пугайтесь. Не так страшен черт, как его малюют. Давайте разбираться:
Первый столбец — это права доступа к файлу/папке (если кратко r — чтение, w — запись, x — исполнение, — — права отсутствуют, t — запрет на удаление пользователем), второй — это количество папок в в ветке, третий — размер файла, четвертый — название. Не так уж и страшно.
Теперь рассмотрим, что же представляет каждая из этих папок в ос Linux:
- /var — Системные данные и конфигурационные файлы (в ос linux обычно является отдельной файловой системой)
- /usr — Большинство стандартных программ и другие полезные компоненты (также часто в linux является отдельной файловой системой)
- /tmp — Временные файлы, которые могут удаляться при перезагрузке
- /sbin — Команды, необходимые для обеспечения минимальной работоспособности системы
- /root — Домашний каталог суперпользователя
- /proc — Информация о всех выполняющихся процессах
- /opt — Программные пакеты необязательных приложения (которые пока не находят широкого применения)
- /mnt — Временные точки монтирования
- /lib, lib32, /lib64 — Библиотеки и вспомогательные файлы для стандартных программ
- /home — Стандартные домашние каталоги пользователей
- /etc — Важные файлы запуска и конфигурации системы
- /dev — Файлы устройств: дисков, принтеров, псевдотерминалов и т.д.
- /bin — команды операционной системы ядра
Если хотите узнать больше, введите в командной строке cat /proc/meminfo . Вы увидите следующее окошко:
Из всего этого нас больше всего интересует MemTotal и MemFree — всего и свободной памяти соответственно. Важной так же является информация в proc/mounts
На этом краткий обзор на сегодня закончу. В следующей статье
Через telnet мы можем так же посмотреть mac-адрес нашего устройства с помощью команды ip link:
Либо еще проще, через команду mfc mac get , например, для ревизий U/RA/U2A — можно проверить командой mfc hwrev get либо через mfc dump. Через telnet мы так же можем попробовать сменить mac-адрес модема, если верить вот этим инструкциям:
Но у меня для моего U/RA/U2A из этих инструкций ничего не сработало: они выполнились и даже mfc mac get показал правильный мак, но в веб-интерфейсе нули так и остались. Помогла команда
То, что вам нужно подставить вместо звезд, я думаю, вы догадаетесь без меня. Полный синтаксис команды будет такой: mfc init
Какие есть альтернативы в случае неудачи. Не отчаивайтесь. Можно попробовать восстановить mac-адреса с помощью кабеля или даже редактирования прошивки, слитой через программатор. Но такая работа требует больше усилий и навыков. Но в принципе эти способы могут пригодиться, если telnet вам откажет. Так же некоторые прошивки позволяют редактировать мак непосредственно в веб
Для более плотной работы с настройками модема введите команду resident_cli . Надо будет подтвердить логин и пароль еще раз. В окне терминала вы увидите снова общую информацию об устройстве и станет доступна консоль для настройки модема. Чтобы вернуться в окно BusyBox, выполните команду sh
Какие еще интересные команды? Для настройки фаервола есть команда iptables . Она открывает перед администратором огромные возможности (от которых честно говоря, можно захлебнуться. Так что я рекомендую настройки фаервола делать через обычный веб-интерфейс)
Перед тем, как прошивать, хорошо бы было снять копию текущей прошивки. Но это не так просто. В консоли D-Link нет готовой команды для бэкапа. Но есть другие не менее любопытные. Например, hexdump, а так же
- dd — копирование файла с конвертированием и форматированием (с параметрами if, of, bs, skip, seek)
- mkdir — создание каталога
Важно знать: все прошивки D-Link распространяются под лицензией GPL! А значит имеют открытый исходный код. Я не знаю, почему компания решила открыть все свои исходники своего ПО. На мой взгляд, это шаг назад, т.к. любой злоумышленник может модифицировать прошивку, залить туда троян либо другой вирус и заразить модемы. В связи с этим интернете, к сожалению, есть много описаний уязвимостей модемов D-Link с подробными рецептами, как ими пользоваться. Очевидно, это минус. Но нам это сейчас на руку. Конечно, нашей целью не является написание вирусов, а наоборот — расширение функционала.
Второй момент — это то, что исходники прошивки ни на каком ни php или asp, а на голом C++, под gcc заточенном. Не то, чтобы это было очень плохо, но это усложняет задачу. Лично для меня C++ — самый сложный стек, с которым мне приходилось сталкиваться. Я считаю, это язык для профессионалов. Но не все так плохо. Итак, впереди нас ждет веселое и увлекательное путешествие в реверс-инжиниринг исходного кода маршрутизаторов D-Link!
Все исходники на свои программы D-Link выкладывает здесь.
Восстановление роутера
Покупая роутер, многие сразу хотят его перепрошить, так как в заводских прошивках нет такой максимальной функцианальности как в альтернативных прошивках. Перед тем как закачивать в роутер альтернативную прошивку нужно внимательно ознакомиться с описанием прошивки, убедиться что прошивка именно к вашей модели роутера, имеет ли прошивка web интерфейс и так далее. Несоблюдение всех этих требований, а также отключение электричества, может привести к повреждению роутера.
В этой статье покажем как можно легко вернуть роутеру заводскую прошивку, если конечно роутер подает признаки жизни. Если роутер не подает признаков жизни, то придется его восстанавливать через консоль — открывать корпус роутера и посоединять к компьютеру через нульмодемный кабель
Процесс восстановления роутера покажем на примере роутера TP—Link TL—MR3220, который прошили альтернативной польской прошивкой, в надежде добиться нормального подключения к роутеру USB 3.5g модема Huawei 306 revB от оператора беспроводного скоростного Интернета «Интертелеком«.
После прошивки оказалось, что прошивка не имеет web интерфейса, а имеющихся знаний у того кто прошивал роутер, не хватает, чтобы разобраться с настройкой 3g модема. Для возврата роутера в прежнее положение необходимо его прошить заводской прошивкой, но стандартным способом сделать это уже не получиться.
Для начала, убеждаемся, что роутер «живой» — горят светодиоды Power, LAN и по сетевому протоколу telnet можно войти в роутер через кнопку «Пуск» -> «Выполнить» -> telnet 192.168.1.1 Вы должны увидеть приглашение роутера.
Для прошивки роутера запускаем программу WinSCP и пытемся подключиться к роутеру. WinSCP спросит логин и пароль. Обычно после прошивки роутера альтернативной прошивкой логин и пароль root. Если пароль не проходит, необходимо установить его в telnet с помощью команды passwd.
Для этого входим в telnet через кнопку «Пуск» -> «Выполнить» -> telnet 192.168.1.1, вводим команду passwd и вводим любой новый пароль, который нужно запомнить для ввода в программу WinSCP.
После входа в программу WinSCP вы долны увидеть два окна как в Total Commander.

Нажимем вверху Commands -> Open Terminal и вводим команду: mtd -r write /tmp/mr3220.bin firmware
mr3220.bin — название прошивки роутера, которую вы скопировали в файловую структуру роутера в папку tmp.
Наблюдаем процесс прошивки роутера в виде быстрого моргания светодиода LAN и получаем восстановленный роутер с заводской прошивкой, как-будто только что из магазина.









