Прошиваем DD-WRT в D-Link DIR-300
Подготовка
Узнаем что будем перешивать
Первое что нужно сделать - это узнать номер ревизии маршрутизатора (наклейка на обратной стороне).
У меня такая железка: D-Link DIR-300 H/W Version: A1, F/W: 1.03
Все дальнейшее описание прошивки предполагается что ревизия маршрутизатора A1. Для ревизии B1 способ прошивки несколько иной, читать тут: http://sergey-s-betke.blogs.novgaro.ru/networking/devices/d-link/dap-1150/proshivaem-d-link-proshivkoj-dd-wrt
Качаем необходимые файлы
Идем на http://www.dd-wrt.com/site/support/router-database ищем наш маршрутизатор, качаем файлы
- ap61.ram
- ap61.rom
- linux.bin
Устанавливаем TFTP-сервер
Процедура прошивки проводилась на компьютере с OS Ubuntu. Требуется установленный TFTP-сервер.
$ sudo apt-get install tftp tftpd
Если необходимо - вносим изменения в конфигурационный файл /etc/inetd.conf
Складываем нужные нас файлы в папку /srv/tftp
Запускаем сервис
$ sudo service openbsd-inetd start
Если работаем на Windows, то рекомендую http://tftpd32.jounin.net/
Перепрошивка
Включаем сетевой кабель в порт «INTERNET» (он же WAN), вторым концом в компьютер.
Отключаем питание D-link, зажимаем кнопку Reset, включаем питание. Через 30 сек отпускаем кнопку Reset.
Устанавливаем на компьютере новый IP-адрес:
$ sudo ifconfig eth0 192.168.20.80
Подключаемся к D-link:
$ telnet 192.168.20.81 9000 Trying 192.168.20.81... Connected to 192.168.20.81. Escape character is '^]'.
Нажимаем Enter, появляется приглашение. Вводим команду
RedBoot> load ap61.ram Using default protocol (TFTP) Entry point: 0x800410bc, address range: 0x80041000-0x800680d8
И вводим
RedBoot> go
Telnet-сессия или зависнет или оторвется - это нормально.
НЕ выключая и НЕ перегружая маршрутизатор, переключаем кабель в разъем LAN1.
Меняем IP-адрес компьютера:
$ sudo ifconfig eth0 192.168.1.2
И снова подключаемся к D-link
$ telnet 192.168.1.1 9000 Trying 192.168.1.1... Connected to 192.168.1.1. Escape character is '^]'. DD-WRT>
Делаем следующее (примечание: выполнение команды fis занимает некоторое время, не нужно паниковать):
DD-WRT> fconfig -i Initialize non-volatile configuration - continue (y/n)? Y Run script at boot: false Use BOOTP for network configuration: true Default server IP address: Console baud rate: 9600 GDB connection port: 9000 Force console for special debug messages: false Network debug at boot time: false Update RedBoot non-volatile configuration - continue (y/n)? Y ... Erase from 0xbffe0000-0xbfff0000: . ... Program from 0x80ff0000-0x81000000 at 0xbffe0000: . DD-WRT> fis init About to initialize [format] FLASH image system - continue (y/n)? Y *** Initialize FLASH Image System ... Erase from 0xbffe0000-0xbfff0000: . ... Program from 0x80ff0000-0x81000000 at 0xbffe0000: . DD-WRT> ip_address -h 192.168.1.2 IP: 192.168.1.1/255.255.255.0, Gateway: 0.0.0.0 Default server: 192.168.1.2 DD-WRT> load -r -b %{FREEMEMLO} ap61.rom Using default protocol (TFTP) Raw file loaded 0x80080000-0x800a8717, assumed entry at 0x80080000 DD-WRT> fis create -l 0x30000 -e 0xbfc00000 RedBoot An image named 'RedBoot' exists - continue (y/n)? Y ... Erase from 0xbfc00000-0xbfc30000: ... ... Program from 0x80080000-0x800a8718 at 0xbfc00000: ... ... Erase from 0xbffe0000-0xbfff0000: . ... Program from 0x80ff0000-0x81000000 at 0xbffe0000: . DD-WRT> reset
После этого D-link перезагрузится и сессия прервется. Снова подключаемся телнетом к адресу 192.168.1.1 порт 9000 после того, как маршрутизатор перезапустится и будет ждать команд (на это нужно примерно 30 секунд).
$ telnet 192.168.1.1 9000 Trying 192.168.1.1... Connected to 192.168.1.1. Escape character is '^]'. DD-WRT> ip_address -h 192.168.1.2 IP: 192.168.1.1/255.255.255.0, Gateway: 0.0.0.0 Default server: 192.168.1.2 DD-WRT> fis init About to initialize [format] FLASH image system - continue (y/n)? y *** Initialize FLASH Image System ... Erase from 0xbffe0000-0xbfff0000: . ... Program from 0x80ff0000-0x81000000 at 0xbffe0000: . DD-WRT> load -r -b 0x80041000 linux.bin Using default protocol (TFTP) Raw file loaded 0x80041000-0x803ddfff, assumed entry at 0x80041000 DD-WRT> fis create linux ... Erase from 0xbfc30000-0xbffcd000: .......................................................... ... Program from 0x80041000-0x803de000 at 0xbfc30000: .......................................................... ... Erase from 0xbffe0000-0xbfff0000: . ... Program from 0x80ff0000-0x81000000 at 0xbffe0000: . DD-WRT> fconfig boot_script true boot_script: Setting to true Update RedBoot non-volatile configuration - continue (y/n)? Y ... Erase from 0xbffe0000-0xbfff0000: . ... Program from 0x80ff0000-0x81000000 at 0xbffe0000: . DD-WRT> fconfig boot_script_timeout 3 boot_script_timeout: Setting to 3 Update RedBoot non-volatile configuration - continue (y/n)? Y ... Erase from 0xbffe0000-0xbfff0000: . ... Program from 0x80ff0000-0x81000000 at 0xbffe0000: . DD-WRT> fconfig bootp false bootp: Setting to false Update RedBoot non-volatile configuration - continue (y/n)? Y ... Erase from 0xbffe0000-0xbfff0000: . ... Program from 0x80ff0000-0x81000000 at 0xbffe0000: . DD-WRT> fconfig bootp false bootp: Setting to false DD-WRT> fconfig Run script at boot: true Boot script: Enter script, terminate with empty line >> fis load -l vmlinux.bin.17 >> exec >> Enter script, terminate with empty line >> fis load -l linux >> exec >> Boot script timeout (1000ms resolution): 3 Use BOOTP for network configuration: false Gateway IP address: Local IP address: Local IP address mask: Default server IP address: Console baud rate: 9600 GDB connection port: 9000 Force console for special debug messages: false Network debug at boot time: false Update RedBoot non-volatile configuration - continue (y/n)? Y ... Erase from 0xbffe0000-0xbfff0000: . ... Program from 0x80ff0000-0x81000000 at 0xbffe0000: . DD-WRT> ip_address -h 192.168.1.1 IP: 192.168.1.1/255.255.255.0, Gateway: 0.0.0.0 Default server: 192.168.1.1 DD-WRT> reset
Теперь D-link перезагрузится и некоторое время будет недоступен.
Как загорится значок WAN - можно коннектиться браузером на 192.168.1.1. Имя пользователя и пароль по умолчанию - «root» и «admin» соответственно.
Удаленно сбрасываем пароль админа на оригинальной прошивке
Вход в администрирование без ввода пароля:
http://192.168.0.1/bsc_lan.php?NO_NEED_AUTH=1&AUTH_GROUP=0
Сброс пароля на дефолтный удаленным способом: