Autor Tema: Tutorial rápido y sucio de busybox + dropbear.  (Leído 4658 veces)

Desconectado vquicksilver

  • Jr. Member
  • **
  • Thank You
  • -Given: 0
  • -Receive: 0
  • Mensajes: 84
  • Karma: 4
    • Ver Perfil
Tutorial rápido y sucio de busybox + dropbear.
« en: Febrero 26, 2010, 10:31:11 am »
Bueno, como mi One esta en modo brick y tengo algo de tiempo, voy a poner cómo compilar e instalar estos 2 programas.

Lo primero es tener un toolchain para arm, ademas de un entorno adecuado para hacer compilacion cruzada, ya que los scripts ./configure y demás tienen la mala costumbre de hacer llamadas a binarios de la propia arquitectura para la que se esta haciendo compilación cruzada. Esto lo podemos conseguir de 2 formas, 1 instalando scratchbox, 2 bajando la imagen de debian para arm y compilando en el qemu (infinitamente mas lento, aunque más fácil sino tienes mucha experiencia).


En mi caso uso Gentoo, y he usado scratchbox ya que esta en portage. La instalación es simple, yo he usado los siguientes paquetes:

dev-embedded/scratchbox
dev-embedded/scratchbox-devkit-qemu
dev-embedded/scratchbox-toolchain-cs2009q1-eglibc2_8

En el último va el toolchain, en el penúltimo va qemu, que lo usaremos para ejecutar esas comprobaciones de los configures etc... (esto lo hace scratchbox de forma transparente).

Scratchbox, funciona de la siguiente manera, necesitamos añadir nuestro usuario el grupo sbox, reentramos con el usuario en el sistema, y ejecutamos el script de inicio de scratchbox en init.d. En el kernel necesitamos tener soporte de VDSO para que funcione scratchbox correctamente. A continuación creamos un TARGET seleccionando el toolchain que hemos descargado previamente (seleccionamos arquitectura arm) y elegimos el qemu para arm.

A continuación podemos crear un hello world para ver si todo ha ido correctamente, y lo compilamos con "CFLAGS="-march=armv6 -mcpu=arm1136j-s" gcc -static archivo.c -o hello". Y ya tendremos nuestro binario para arm. Es necesario compilar con static puesto que las bibliotecas de android no son las mismas que las de una distribución de linux normal. (No hay glibc entre otras, ya que usa su propia biblioteca de C). Este binario de nombre hello, ya lo podemos ejecutar en nuestro one perfectamente.

Ahora vamos a por Busybox, y por Dropbear.

1º) Busybox:

-Descargamos el codigo fuente de la última versión desde la pagina de busybox.
-Descomprimimos en nuestro home de scratchbox.
-Abrimos un terminal que no pertenezca a la sesión de scratchbox, para ejecutar el make menuconfig.
-Elegimos las opciones deseadas para crear nuestro propio binario, aseguraros que se compila todo de forma estatica (Sale una opción en libs o algo asi sino recuerdo mal)
-Guardamos la configuración.
-Volvemos al terminal con scratchbox, y ejecutamos el make, con las CFLAGS de arriba preferiblemente.

Y en la propia carpeta cuando acabe tendremos el binario.
Busybox nos da un montón de opciones, se puede por ejemplo instalar un servidor ftpd que en combinación con dropbear nos permite mandar a paseo el adb (No del todo, pero en fin sino se tiene a mano adb te puede salvar de mas de un apuro).

2º) Instalación de dropbear:
Es bastante similar a busybox, aunque debido a que android no usa /etc/passwd ni ningun otro sistema para identificar usuarios, tenemos que parchearlo, hay varios metodos, yo he usado el parche de esta http://jblomer.web.cern.ch/jblomer/dropbear0.52-android.patch , porque me parecía el más comodo, aunque puede que no sea el metodo mas limpio, es el que menos modifica el sistema de archivos.

Bien bajamos las fuentes de dropbear, descomprimimos, patch -p1 < nombredelparche, y ya tendremos listas las sources.
Ahora configuramos con:
Código: [Seleccionar]
./configure --disable-loginfunc --disable-utmp --disable-utmpx --disable-wtmp --disable-wtmpx --disable-lastlog --disable-zlib
Antes de compilar podemos hechar un vistazo al options.h y modificar alguna cosa interesante como el PATH.

Una vez hecho lo anterior compilamos con:

Código: [Seleccionar]
STATIC=1 MULTI=1 CFLAGS="-march=armv6 -mcpu=arm1136j-s" make PROGRAMS="dropbear dropbearkey"
La opción STATIC es obvia, la opción MULTI es para que "nos junte" los 2 programas en el mismo binario, al estilo busybox. Copiamos el binario al One. Lo renombramos a dropbear y hacemos un enlace simbolico al binario con nombre dropbearkey.
Ya lo tenemos casi instalado, solo nos queda generar las claves privada y publica que serviran para conectarnos al dispositivo. Para ello mirar la ayuda de dropbearkey, nos deja elegir numero de bits, y tipo de clave, es importante que guardemos la clave publica que escupira al final y debe ser de la forma siguiente:

ssh-dss[/rsa] clave root@localhost

Podemos guardar ambas claves en la tarjeta sd en /sdcard/. Pero la publica la debemos copiar a todos los dispositivos desde donde nos vayamos a conectar al movil por ssh.

A continuación lanzamos dropbear (Mira las instrucciones de dropbear sino sabes como), en mi caso lo lanzaba de manera que ademas de la clave pública pidiese un password:

Código: [Seleccionar]
dropbear -A -N root -U 0 -G 0 -C password -d /sdcard/dss.secret -p 22


Y ya nos debería dejar conectar, (dropbear debe ser lanzado como root para que nos de una shell.)

Usando esto y por ejemplo connectbot podemos tener acceso root desde el propio movil.

PD: No he detallado mucho lo de los PATH, porque me imagino que cada uno tendra sus proferencias. Cualquier sugerencia cosa que no entendáis preguntarla.

PD2: Sino os sale el binario de dropbear, me lo podéis pedir y lo colgais en algún lado.
PD3: Ahora maquillo un poco el tutorial para quede bonito xD.





« última modificación: Febrero 26, 2010, 10:36:21 am por vquicksilver »