Доброго всем дня!
Сегодня мы узнаем, как с помощью утилиты 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
и в /proc/mtd
На этом краткий обзор на сегодня закончу. В следующей статье
Через 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 **:**:**:**:**:**
То, что вам нужно подставить вместо звезд, я думаю, вы догадаетесь без меня. Полный синтаксис команды будет такой: mfc init <wanmac> <hwrev> <countrycode> <sn> <pin>
Какие есть альтернативы в случае неудачи. Не отчаивайтесь. Можно попробовать восстановить 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 выкладывает здесь.
от 4 комментария
Как сохранить дамп с роутера — http://routers.in.ua/kak-sokhranit-damp-s-proshivki-routera/
Сам не пробовал
Чтобы узнать модель роутера, есть команда `mfc dump`
Вот еще о том, что делать с урезанным busybox https://www.linux.org.ru/forum/general/13899346/ Там есть список команд
основные команды линукс — https://losst.ru/42-komandy-linux-kotorye-vy-dolzhny-znat