Работа с роутерами 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.
Если на Windows вы получите ошибку, попробуйте повторить ее после start /w pkgmgr /iu:»TelnetClient
Внимание, перед тем, как заходить на модем через 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-адрес модема, если верить вот этим инструкциям:
Для H/W U1 с версией ПО 1.0.21 — mfc set_base_mac XX:XX:XX:XX:XX:XX Для H/W U1 с версией ПО 2.0.0 — mfc set_wan_mac XX:XX:XX:XX:XX:XX Для H/W U2 с версией ПО 2.5.3 — mfc mac set XX:XX:XX:XX:XX:XX
Но у меня для моего 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 выкладывает здесь.
-