miércoles, 9 de febrero de 2011

Bq Avant, acceso telnet a su sistema por wifi con firmware 2.1 Beta y Kubuntu 10.10

ACTUALIZACIÓN: 10 Febrero 2011: He actualizado un poco el estilo de redacción, añadido una nota al final y corregido un error en el comando vim de la edición del fichero upfw_post_script.sh (había un mkdir detras del comando en la misma linea que no debería estar)

Hoy voy a hacer un post sobre un e-reader que adquirí recientemente. El e-reader tiene el firmware 2.0 pero vamos a instalar la beta 2.1 y a posibilitar que podamos acceder a el por telnet.

Al acceder por telnet debemos tener en cuenta que cualquiera que acceda a la red y la "snife" puede ver la contraseña que usamos en texto plano, pero es lo que hay (asegurad vuestras redes con WPA2-AES y una contraseña larga, es un consejo :-D)

Descripción de Bq Avant

Es un libro electrónico de la empresa bq readers. Tiene pantalla táctil capacitiva de 6" SIPIX y 16 niveles de grises que, aunque no es una Pearl, no se ve mal (aunque podría mejorar y de hecho están intentando mejorar en nuevos firmwares) Dejo la dirección de las especificaciones técnicas del producto para que las veais al completo y no extenderme.

http://www.bqreaders.com/productos/avant.html

La gente de Bq Readers me ha dejado el firmware beta 2.1 original en formato rar. Podéis descargarlo de aquí.

OS_2.1_Beta.rar

Modificación del firm

Una vez descargado, descomprimimos el fichero en un directorio y obtendremos el directorio qdutil. Este directorio contiene el sistema operativo de Bq Avant basado en GNU\linux.

$ unrar x OS_2.1_Beta.rar 

UNRAR 3.93 freeware      Copyright (c) 1993-2010 Alexander Roshal


Extracting from OS_2.1_Beta.rar

Creating    qdutil                                                    OK
Creating    qdutil/upfw                                               OK
Extracting  qdutil/upfw/rootfs.img                                    OK 
Extracting  qdutil/upfw/st060b00_image.pak                            OK 
Extracting  qdutil/upfw/st_2011_0131.bin                              OK 
Extracting  qdutil/upfw/upfw_post_script.sh                           OK 
Extracting  qdutil/urootfs.img                                        OK 
Extracting  qdutil/uzImage                                            OK 
All OK

Como vemos se han descomprimido subdirectorios y ficheros. El fichero que nos interesa es qdutil/upfw/upfw_post_script.sh.

Lo editamos con vim para dejarlo de la siguiente forma añadiendo la parte en negrita:

$ sudo vim qdutil/upfw/upfw_post_script.sh

#!/bin/ash
echo save adept data
if [ -f /mnt/mmc0p3/.adept/device.xml ]; then
        cp /mnt/mmc0p3/.adept/device.xml /tmp/device.xml
fi
if [ -f /mnt/mmc0p3/.adept/devicesalt ]; then
        cp /mnt/mmc0p3/.adept/devicesalt /tmp/devicesalt
fi
if [ -f /mnt/mmc0p3/.adept/devicekey ]; then
        cp /mnt/mmc0p3/.adept/devicekey /tmp/devicekey
fi
echo save database data
if [ -f /mnt/mmc0p3/data/calendar.sqlite ]; then
        cp /mnt/mmc0p3/data/calendar.sqlite /tmp/calendar.sqlite
fi
if [ -f /mnt/mmc0p3/data/webfavo.sqlite ]; then
        cp /mnt/mmc0p3/data/webfavo.sqlite /tmp/webfavo.sqlite
fi

echo format mmcblk0p3 to clean rwdata
umount /dev/mmcblk0p3
mkfs.ext3 /dev/mmcblk0p3

echo restore adept data
mount /dev/mmcblk0p3 /mnt/mmc0p3
if [ -f /tmp/device.xml ]; then
        mkdir /mnt/mmc0p3/.adept
        cp /tmp/device.xml /mnt/mmc0p3/.adept/device.xml
fi
if [ -f /tmp/devicesalt ]; then
        mkdir /mnt/mmc0p3/.adept
        cp /tmp/devicesalt /mnt/mmc0p3/.adept/devicesalt
fi
if [ -f /tmp/devicekey ]; then
        mkdir /mnt/mmc0p3/.adept
        cp /tmp/devicekey /mnt/mmc0p3/.adept/devicekey
fi
echo restore database data
if [ -f /tmp/calendar.sqlite ]; then
        mkdir /mnt/mmc0p3/data
        cp /tmp/calendar.sqlite /mnt/mmc0p3/data/calendar.sqlite
fi
if [ -f /tmp/webfavo.sqlite ]; then
        mkdir /mnt/mmc0p3/data
        cp /tmp/webfavo.sqlite /mnt/mmc0p3/data/webfavo.sqlite
fi

echo format mmcblk0p4 to clean private storage
umount /dev/mmcblk0p4
mkfs.ext3 /dev/mmcblk0p4


#Añadimos este bloque antes del exit 0

# creamos el directorio /mnt/mmc0p1 donde montaremos el dispositivo 
# flash mmcblk0, partición 1
mkdir /mnt/mmc0p1

# Montamos la partición con las opciones lectura escritura, asíncrono y 
# que no use tiempos de acceso
mount -o rw,async,noatime /dev/mmcblk0p1 /mnt/mmc0p1

# Creamos un fichero de script bash llamado inetd y que ejecutará el 
# comando /usr/sbin/inetd. Este comando ejecutará el servidor telnet.
echo '#!/bin/bash' > /mnt/mmc0p1/mnt/etc/rc.d/init.d/inetd
echo "/usr/sbin/inetd" >> /mnt/mmc0p1/mnt/etc/rc.d/init.d/inetd

# Cambiamos los permisos del fichero
chmod 777 /mnt/mmc0p1/mnt/etc/rc.d/init.d/inetd

# Vamos al directorio del runlevel 3 y creamos un link soft con ruta
# relativa al fichero que creamos antes (inetd) para que se ejecute
# al iniciarse este runlevel en el orden 57
cd /mnt/mmc0p1/mnt/etc/rc3.d/
ln -s ../init.d/inetd S57inetd

# Creamos un usuario tipo root (uid y gid 0), con directorio home 
# /root y con shell bash por defecto
echo "fjbejarano::0:0::/root:/bin/bash" >> /mnt/mmc0p1/mnt/etc/passwd

#Por último, desmontamos la partición flash.
umount /mnt/mmc0p1


exit 0

Una vez editado, copiamos todo el directorio qdutil con el fichero modificado en el directorio raíz de la tarjeta microSD que vamos a utilizar en el Bq Avant. Debemos tener unos 200 MB libres, algo más de 200. Esperad hasta que acabe el comando sync para quitar la tarjeta.

$ sudo cp -r qdutil /media/MEMORY\ CARD/
$ sync
$ 

IMPORTANTE: Hacemos una copia de seguridad de todos los directorios de libros que tenemos en el Bq Avant para no perderlos (se mantendrán marcadores y notas pero no los favoritos del navegador)

Instalación del Firmware modificado

Primero debemos tener el bq Avant totalmente cargado de energía, batería al 100%. Segundo insertamos la tarjeta microSD que incluye qdutil con el fichero modificado. Después hacemos lo siguiente.

En la pantalla inicial del libro pulsamos en Configuración --> Configuración Avanzada --> Actualizar Firmware. Nos saldrá una pantalla de confirmación "¿Actualizar firmware?" y aceptamos (recordad que si aceptáis perdéis el contenido del e-reader si no habéis hecho backup)

Esperamos unos segundos, se pondrá en blanco, saldrá una pantalla con el logo antiguo de Ubuntu :-D en modo rescate Rescue OS y después una barra de progreso negra que nos irá indicando lo que queda para acabar. Cuando llegue al final, en unos 5 min o así (o menos) saldrá una nueva pantalla que nos indicará que se ha instalado correctamente "SW Upgrade Success!!!" y que pulsemos el botón deslizador de encendido/apagado del e-reader. Lo pulsamos unos segundos y se apagará. Pulsamos de nuevo e iniciará y ya veremos que el firmware que se carga es el 2.1 Beta. De momento bien, no da error :-D.

Entrando en el sistema por wifi

Una vez que actualiza vamos a Configuración --> Configuración Wifi --> On y elegimos nuestra red inalámbrica. Metemos la contraseña y se conectará a la red.

Una vez hecho esto, podemos averiguar cual es la IP que usa Bq Avant de varias formas. Una es ir a nuestro router wifi a ver que IP le ha dado, o vamos a la consola de Kubuntu e instalamos nmap y escaneamos nuestra red (si estáis en una empresa cuidadito con el escaneo, en casa escanead sin miedo) Ponemos el comando nmap y le damos la dirección IP de nuestra red y la máscara de red. En vuestro caso en casa puede que sea 192.168.1.0/24.

$ sudo aptitude install nmap

$ nmap 192.168.3.0/24

Nmap scan report for new-host-2.home (192.168.3.39)
Host is up (0.031s latency).
Not shown: 994 closed ports
PORT    STATE SERVICE
7/tcp   open  echo
13/tcp  open  daytime
21/tcp  open  ftp
23/tcp  open  telnet
37/tcp  open  time
111/tcp open  rpcbind

Saldrán más bloques como el de arriba de todos vuestros dispositivos y ordenadores conectados a la red. Yo solo he puesto del de bq Avant que es la dirección IP 192.168.3.39. Como vemos, el bq Avant tiene abiertos, ahora, varios puertos. Entre ellos telnet, portmapper, ftp y otros inseguros. Nos interesa el 23 del telnet.

Ahora solo debemos conectar y ver si podemos entrar al sistema.

$ telnet 192.168.3.39
Trying 192.168.3.39...
Connected to 192.168.3.39.
Escape character is '^]'.

Samsung login: fjbejarano
[root@Samsung ~]# 

Y voila, tenemos acceso al sistema de bq Avant :-D.

Algunos comandos en el sistema

Primero, cambiamos la contraseña. La escribis dos veces para verificar y la proxima vez que entréis deberéis ponerla.

# passwd fjbejarano
Changing password for fjbejarano
New password:
Retype password:
Password for fjbejarano changed by root

El directorio raíz del sistema
# pwd
/root
# cd /
# ls -lah
drwxr-xr-x   21 root     root         1.0k Feb  9 15:52 ./
drwxr-xr-x   21 root     root         1.0k Feb  9 15:52 ../
drwxrwxrwx    2 root     root         2.0k Feb  9 15:50 bin/
drwxrwxrwx   11 root     root         3.0k Feb  9 15:50 dev/
drwxr-xr-x   16 root     root            0 Feb  9 16:10 etc/
drwxrwxrwx    7 root     root         1.0k Feb  9 15:50 home/
drwxrwxrwx    2 root     root         2.0k Feb  9 15:50 lib/
-rwxr--r--    1 root     root         1.8k Sep 17 05:07 linuxrc*
drwx------    2 root     root        12.0k Feb  9 15:49 lost+found/
drwxrwxrwx    8 root     root         1.0k Feb  9 15:50 mars/
drwxrwxrwx   11 root     root         1.0k Feb  9 15:50 mnt/
drwxrwxrwx    2 root     root         1.0k Aug  5  2009 opt/
dr-xr-xr-x   47 root     root            0 Jan  1  1970 proc/
drwxr-xr-x    3 root     root         1.0k Feb  9 15:50 qdutil/
drwxrwxrwx    2 root     root         1.0k Feb  9 15:50 root/
-rw-r--r--    1 root     root        10.0k Dec 13 07:09 rootfs
drwxr-xr-x    7 root     root         1.0k Feb  9 15:53 rwdata/
drwxrwxrwx    2 root     root         2.0k Feb  9 15:50 sbin/
drwxr-xr-x   11 root     root            0 Jan  1  1970 sys/
drwxrwxrwx    2 root     root         1.0k Aug  5  2009 sysfs/
drwxrwxrwt    5 root     root          220 Dec 31 21:03 tmp/
drwxrwxrwx    8 root     root         1.0k Feb  9 15:52 usr/
drwxrwxrwx    3 root     root         1.0k Feb  9 15:52 var/

Memoria del sistema, 128 MB de Ram, usados 85 MB de RAM (aprox)

# free   
              total         used         free       shared      buffers
  Mem:       125948        85172        40776            0         3196
 Swap:            0            0            0
Total:       125948        85172        40776

Información del procesador

# cat /proc/cpuinfo

Processor       : ARM926EJ-S rev 5 (v5l)
BogoMIPS        : 199.47
Features        : swp half fastmult edsp java                                                                                                                    
CPU implementer : 0x41                                                                                                                                           
CPU architecture: 5TEJ                                                                                                                                           
CPU variant     : 0x0                                                                                                                                            
CPU part        : 0x926                                                                                                                                          
CPU revision    : 5                                                                                                                                              
Cache type      : write-back                                                                                                                                     
Cache clean     : cp15 c7 ops                                                                                                                                    
Cache lockdown  : format C                                                                                                                                       
Cache format    : Harvard                                                                                                                                        
I size          : 16384                                                                                                                                          
I assoc         : 4                                                                                                                                              
I line length   : 32                                                                                                                                             
I sets          : 128                                                                                                                                            
D size          : 16384                                                                                                                                          
D assoc         : 4                                                                                                                                              
D line length   : 32                                                                                                                                             
D sets          : 128                                                                                                                                            
Hardware        : SMDK2416
Revision        : 0000
Serial          : 0000000000000000


Información de particiones del Bq Avant

# df -h 
Filesystem                Size      Used Available Use% Mounted on
/dev/mmcblk0p1          267.6M    198.4M     55.6M  78% /
tmpfs                    61.5M     28.0k     61.5M   0% /tmp
/dev/mmcblk0p3           90.6M      4.2M     81.8M   5% /rwdata
/dev/mmcblk0p2            1.5G    630.2M    861.1M  42% /mnt/mmc0p2
/dev/mmcblk1p1          483.0M    462.2M     20.8M  96% /mnt/mmc1p1

Tiene un disco flash /dev/mmcblk0 que tiene 3 particiones p1, p2 y p3.
  • p1 es la partición del sistema con el directorio root (/) y configuración del sistema entre otros.
  • p2 es la partición donde se guardan los libros, imágenes, audios, etc. Cada directorio con libros tiene un subdirectorio llamado .info.
  • p3 es un directorio de datos de lectura escritura que contiene, entre otros, el fichero de configuración QBookApp.ini con los parametros del e-reader.
El segundo disco flash que aparece /dev/mmcblk1 con la particion 1 y montado en /mnt/mmc1p1 es mi tarjeta microSD.

Por ejemplo, si vamos al directorio /mnt/mmc0p2/Varios/.info, que es uno de los directorios donde se almacenan los libros, y abrimos el fichero .info correspondiente al libro que tenemos "Implementación de servidores...pdf.info" veremos el siguiente fichero XML.

# cd /mnt/mmc0p2/Varios/.info

# cat Implementacion_Servidores_Linux-AGOSTO-20090803.pdf.info 

<?xml version="1.0" encoding="UTF-8"?>
<book>
        <info>
                <title>Implementación de Servidores con GNU/Linux</title>
                <author>Joel Barrios</author>
                <publish-time>2009-08-03T14:50:30</publish-time>
                <download-time>2009-08-03T14:52:48</download-time>
                <mark-count>2</mark-count>
                <note-count>0</note-count>
                <hili-count>0</hili-count>
                <page-count>1</page-count>
                <last-read-link>#pdfloc(6da,144)</last-read-link>
                <last-read-page>-1</last-read-page>
                <next-note-id>1</next-note-id>
                <font-size>1.30719</font-size>
                <page-mode>2</page-mode>
                <cepub-icon>0</cepub-icon>
                <loanId></loanId>
                <Returnable>0</Returnable>
                <IsDRMFile>0</IsDRMFile>
                <drm_display>Cualquier dispositivo</drm_display>
                <drm_excerpt>Cualquier dispositivo</drm_excerpt>
                <drm_print>Cualquier dispositivo</drm_print>
        </info>
        <marks>
                <mark type="mark">
                        <text>Joel Barrios Dueñas Implementación de Servidores con GNU/Linux /sbin/lspci Lo anterior puede devolver una salida similar a la siguiente, que dependerá de los dispositivos PCI de los que que se dispong ...</text>
                        <url>/mnt/mmc/mmc0p2/Varios/Implementacion_Servidores_Linux-AGOSTO-20090803.pdf</url>
                        <bookmark>#pdfloc(6da,87)</bookmark>
                        <size>0</size>
                        <page>87</page>
                        <pos>0.144999999999999990</pos>
                        <rank>0</rank>
                        <tilt>-1098387564</tilt>
                </mark>
                <mark type="mark">
                        <text>Joel Barrios Dueñas Implementación de Servidores con GNU/Linux groupadd -r sistemas 6.Genere los directorios subordinados /home/desarrollo y /home/sistemas/ del siguiente modo: mkdir -p /home/desarrol ...</text>
                        <url>/mnt/mmc/mmc0p2/Varios/Implementacion_Servidores_Linux-AGOSTO-20090803.pdf</url>
                        <bookmark>#pdfloc(6da,123)</bookmark>
                        <size>0</size>
                        <page>123</page>
                        <pos>0.204999999999999988</pos>
                        <rank>0</rank>
                        <tilt>-1098387564</tilt>
                </mark>
        </marks>
</book>

Vemos como están definidos en él los 2 marcadores que tengo en ese libro y en que páginas. Por tanto, sabemos que si hacemos backup de los directorios ocultos .info, que hay dentro de los directorios con nuestros libros, también se guardará la información relativa a los mismos.

Bueno y eso es todo por hoy, espero que os sea útil y a cacharrear jeje (tened cuidado con lo que hacéis por si os cargáis el sistema aunque, por otro lado, si os lo cargáis podeis reinstalar el firm jeje)


NOTA:
Si vais a estar un rato mirando el sistema es mejor que desactiveis el protector de pantalla del bq Avant: Configuración --> vais a la pagina 2 y Protector de Pantalla --> Off.

Si el protector de pantalla salta os apagara el wifi y perderéis la conexión.

NOTA2:
También podemos ver la IP del bq Avant en el propio bq Avant. Vamos a Configuración --> Configuración Wifi y, estando conectados a la red Wifi, si pulsamos en el icono de llave inglesa de la red a la que estamos conectados nos saldrá una pantalla con los datos obtenidos del punto de acceso (IP, DNS, etc.) claro que si hacemos esto no usamos nmap ni aprendemos a escanear la red :-D.
Related Posts with Thumbnails