Páginas

sábado, 24 de diciembre de 2011

Ejecutar una version de busybox mas avanzada en router Homestation ADB P.DG A4001N y hacer un backup del firmware

Lo primero de todo hay que indicar que no estoy al 100% seguro de que con este procedimiento se realize un backup correcto del firmware del router, pero que mienstras no se demuestre lo contrario... es valido.

Lo segundo es, que toquetear un router y jugar con su firmware sin saber lo que se hace puede provocar que el router se estropee, y el autor de este texto no se hace responsable de nada. Este blog, de hecho, se ha realizado para que el autor pueda tener siempre a mano algunas notas que le interesan por motivos personales en cualquier parte del mundo, y que no le importa compartir con mas gente. Por este motivo no se hace responsable de los estropicios causados por usar las entradas de este blog.

El procedimiento para ejecutar la version 1.19 de busybox mas avanzada que la que lleva el router Homestation ADB P.DG A4001N es la que sigue:

Descargar la version busybox de aqui, y la guardaremos en un pendrive.
Conectaremos el pendrive al router Homestation y obtendremos acceso root tal y como se explica en esta entrada. Una vez obtenido el acceso en modo root ejecutaremos lo siguiente:

# dmesg
..

sb-storage: device found at 2
usb-storage: waiting for device to settle before scanning
scsi 0:0:0:0: Direct-Access     Generic  USB Flash Disk   2.00 PQ: 0 ANSI: 2
usb-storage: device scan complete
ready
sd 0:0:0:0: [sda] 2047488 512-byte hardware sectors: (1.04 GB/999 MiB)
sd 0:0:0:0: [sda] Write Protect is off
sd 0:0:0:0: [sda] Mode Sense: 03 00 00 00
sd 0:0:0:0: [sda] Assuming drive cache: write through
sd 0:0:0:0: [sda] Assuming drive cache: write through
 sda:
sd 0:0:0:0: [sda] Attached SCSI removable disk



# mkdir /tmp/p
# mount /dev/sda /tmp/p
# cd /tmp/p
# ls
busybox-mips

# ./busybox-mips
BusyBox v1.19.0 (2011-08-14 23:54:39 CDT) multi-call binary.
Copyright (C) 1998-2011 Erik Andersen, Rob Landley, Denys Vlasenko
and others. Licensed under GPLv2.
See source distribution for full notice.

Usage: busybox [function] [arguments]...
   or: busybox --list[-full]
   or: function [arguments]...

BusyBox is a multi-call binary that combines many common Unix
utilities into a single executable.  Most people will create a
link to busybox for each function they wish to use and BusyBox
will act like whatever it was invoked as.

Currently defined functions:
[, [[, acpid, add-shell, addgroup, adduser, adjtimex, arp, arping, ash,
awk, base64, basename, beep, blkid, blockdev, bootchartd, brctl,
bunzip2, bzcat, bzip2, cal, cat, catv, chat, chattr, chgrp, chmod,
chown, chpasswd, chpst, chroot, chrt, chvt, cksum, clear, cmp, comm,
cp, cpio, crond, crontab, cryptpw, cttyhack, cut, date, dc, dd,
deallocvt, delgroup, deluser, depmod, devmem, df, dhcprelay, diff,
dirname, dmesg, dnsd, dnsdomainname, dos2unix, du, dumpkmap,
dumpleases, echo, ed, egrep, eject, env, envdir, envuidgid, ether-wake,
expand, expr, fakeidentd, false, fbset, fbsplash, fdflush, fdformat,
fdisk, fgconsole, fgrep, find, findfs, flock, fold, free, freeramdisk,
fsck, fsck.minix, fsync, ftpd, ftpget, ftpput, fuser, getopt, getty,
grep, groups, gunzip, gzip, halt, hd, hdparm, head, hexdump, hostid,
hostname, httpd, hush, hwclock, id, ifconfig, ifdown, ifenslave,
ifplugd, ifup, inetd, init, insmod, install, ionice, iostat, ip,
ipaddr, ipcalc, ipcrm, ipcs, iplink, iproute, iprule, iptunnel,
kbd_mode, kill, killall, killall5, klogd, last, less, linux32, linux64,
linuxrc, ln, loadfont, loadkmap, logger, login, logname, logread,
losetup, lpd, lpq, lpr, ls, lsattr, lsmod, lspci, lsusb, lzcat, lzma,
lzop, lzopcat, makedevs, makemime, man, md5sum, mdev, mesg, microcom,
mkdir, mkdosfs, mke2fs, mkfifo, mkfs.ext2, mkfs.minix, mkfs.vfat,
mknod, mkpasswd, mkswap, mktemp, modinfo, modprobe, more, mount,
mountpoint, mpstat, mt, mv, nameif, nbd-client, nc, netstat, nice,
nmeter, nohup, nslookup, ntpd, od, openvt, passwd, patch, pgrep, pidof,
ping, ping6, pipe_progress, pivot_root, pkill, pmap, popmaildir,
poweroff, powertop, printenv, printf, ps, pscan, pstree, pwd, pwdx,
raidautorun, rdate, rdev, readahead, readlink, readprofile, realpath,
reboot, reformime, remove-shell, renice, reset, resize, rev, rm, rmdir,
rmmod, route, rpm, rpm2cpio, rtcwake, run-parts, runlevel, runsv,
runsvdir, rx, script, scriptreplay, sed, sendmail, seq, setarch,
setconsole, setfont, setkeycodes, setlogcons, setserial, setsid,
setuidgid, sh, sha1sum, sha256sum, sha512sum, showkey, slattach, sleep,
smemcap, softlimit, sort, split, start-stop-daemon, stat, strings,
stty, su, sulogin, sum, sv, svlogd, swapoff, swapon, switch_root, sync,
sysctl, syslogd, tac, tail, tar, tcpsvd, tee, telnet, telnetd, test,
tftp, tftpd, time, timeout, top, touch, tr, traceroute, traceroute6,
true, tty, ttysize, tunctl, ubiattach, ubidetach, ubimkvol, ubirmvol,
ubirsvol, ubiupdatevol, udhcpc, udhcpd, udpsvd, umount, uname,
unexpand, uniq, unix2dos, unlzma, unlzop, unxz, unzip, uptime, users,
usleep, uudecode, uuencode, vconfig, vi, vlock, volname, wall, watch,
watchdog, wc, wget, which, who, whoami, whois, xargs, xz, xzcat, yes,
zcat, zcip

#



Ahora ya estamos en disposicion de poder hacer un backup del firmware del router, para lo cual usaremos la version de busybox que tenemos en el pendrive y comando dd:


# ls -l /dev/mt*
crw-r--r--    1 1234     root      90,   0 Jul  4 19:51 /dev/mtd0
crw-r--r--    1 1234     root      90,   2 Jul  4 19:51 /dev/mtd1
brw-r--r--    1 1234     root      31,   0 Jul  4 19:51 /dev/mtdblock0
brw-r--r--    1 1234     root      31,   1 Jul  4 19:51 /dev/mtdblock1
brw-r--r--    1 1234     root      31,   2 Jul  4 19:51 /dev/mtdblock2
brw-r--r--    1 1234     root      31,   3 Jul  4 19:51 /dev/mtdblock3
brw-r--r--    1 1234     root      31,   4 Jul  4 19:51 /dev/mtdblock4
brw-r--r--    1 1234     root      31,   5 Jul  4 19:51 /dev/mtdblock5
brw-r--r--    1 1234     root      31,   6 Jul  4 19:51 /dev/mtdblock6
brw-r--r--    1 1234     root      31,   7 Jul  4 19:51 /dev/mtdblock7

Comando para realizar el backup:

# ./busybox-mips dd if=/dev/mtdblock0 of=mtdblock0.bin
11224+0 records in
11224+0 records out
5746688 bytes (5.5MB) copied, 3.679483 seconds, 1.5MB/s


# ls -l
-rwxr-xr-x    1 1234     root      1694608 Jul  4 20:03 busybox-mips
-rwxr-xr-x    1 1234     root      5746688 Jul  4 20:08 mtdblock0.bin


El archivo que se ha creado llamado mtdblock0.bin es el backup del firmware de nuestro router (pendiente de confirmar)


Recopilatorio de entradas tratando este tema aqui

7 comentarios:

  1. Hola agente47, yo también tengo ese router y hice la copia de seguridad con un "cat /dev/mtdblock0 > /media/usb0_0". Solo que no he conseguido montar el sistema squashfs... con dd lo has conseguido? Todavía sigues investigando el router?

    ResponderEliminar
  2. Pues la verdad es que no lo he probado porque al poder tener acceso a todos los archivos no me complique la vida y use un cp para copiar todo el contenido del router...No se si conoces el paquete fimware-mod-kit, son herramientas para jugar con los firmware de sistemas embebidos quizas te sirva de ayuda.

    http://code.google.com/p/firmware-mod-kit/

    A ratos perdidos ire mirando alguna cosa mas, pero la verdad es que vi algunas cosillas que no me gustaron y me compre un Linksys WAG320N.
    El Homestation no tiene pinta de ser un mal router, lastima de firmware...espero que antes o despues alguien se anime ha hacer un "port" de OpenWrt

    ResponderEliminar
  3. Hola querido amigo, tengo un home stationery versión ASL26555. Me estaba preguntando si aprovechando el puerto USB que trae se podría instalar un cliente torrent como transmission. No hay ninguna información al respecto de este modelo o del que hablas en este articulo. Se podría hacer?
    Isidro.nogales@gmail.com

    ResponderEliminar
  4. Hola! Buscando información sobre este router he llegado a esta entrada. Estoy intentando seguir tus indicaciones para ejecutar una versión más reciente de busybox y poder ejecutar el comando arp, pero siempre me aparece este error al intentar ejecutar el nuevo busybox desde el pendrive:

    applet not found

    ¿Sabes cuál puede ser el error?

    Gracias

    ResponderEliminar
    Respuestas
    1. Lo siento pero no tengo ni idea de que puede ser. Siento no poder ayudarte

      Eliminar
    2. Creo el busybox correcto es el de mipsel, por lo menos es el que me funciona a mí.
      http://busybox.net/downloads/binaries/latest/busybox-mipsel

      Saludos.

      Eliminar
  5. He intentado recuperar un P.DG A4001N obteniendo el firmware (de otro funcionando, claro) como aquí se indica, y no funciona. Cuando intento subir el firmware extraído con el busybox, dice que es una imagen ilegal.

    ResponderEliminar