====== Прошиваем DD-WRT в D-Link DIR-300 ======
По мотивам: [[http://www.dd-wrt.com/wiki/index.php/Прошивка_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
Сброс пароля на дефолтный удаленным способом:
* http://slrz.ru/2011/09/sbros-parolya-na-routere-dlink-dir-300-dir-320-dir-615/
* http://dl.packetstormsecurity.net/1012-exploits/dlink_php_vulnerability.pdf
{{tag> dlink dir-300 dd-wrt перепрошивка}}