Ir al contenido principal

Hello world... Again

El blog cobra vida en Gitlab con Nikola, aunque aún faltan algunos detalles el blog ya esta funcional.

GitLab pages me pareció mucho mejor opción frente a GitHub pages y con la opción de GitLab CI puedo publicar desde cualquier equipos sin necesidad de tener instalado Nikola, incluso puedo hacerlo con un commit desde la web de Gitlab y sus shared runners se encargan de construir el blog.

Conservaré el antiguo blog como recuerdo/archivo así que ya no se actualizara.

Mostrar progreso del comando dd

El comando dd (Dataset Definition) es uno de los más útiles y sencillos, aunque también es bastante peligroso (si se usa una ruta equivocada adiós a tus datos). Nos permite copiar y grabar información, principalmente se usa para crear live USBs o en la  Raspberry Pi para grabar imágenes de distribuciones en la SD, para que usar una herramienta tan pesada (no soy fan de Electron) como Etcher para algo tan simple. Aunque si estas aquí es por que probablemente ya lo has usado.

La desventaja de este comando es que no muestra información sobre el progreso, a veces da la impresión de que se ha trabado. Para solucionar esto existen varias formas de ver el progreso de este comando.

Enviando señal USR1

Este método es muy útil cuando ya se esta ejecutando dd, te da la impresión de que se a congelado y quieres conocer el progreso. A demás no requiere instalar ningún paquete extra.

Primero necesitamos conocer el ID del comando dd en ejecución.

pgrep -l '^dd'

En mi caso me devuelve

24701 dd

Ahora enviaremos la señal USR1 al proceso de dd para que nos muestre el estado.

kill -USR1 24701

Y no solo eso, si queremos que se ejecute periódicamente para tener un monitoreo constante podemos usar watch.

watch -n 10 kill -USR1 24701

Usando la "tubería" PV

Aquí usamos el comando pv que es una tubería para monitoriza la información que pasa a través de ella. Existen muchas formas de usar pv, pero la que me parece más sencilla y útil para trabajar con dd es:

pv /ruta-entrada | dd bs=1M of=/ruta-salida

Recuerda que si no tienes instalado pv puedes hacerlo desde tu repositorio.

pv nos muestra la cantidad copiada, el tiempo transcurrido, el tiempo restante y una bonita barra de progreso

2.86GB 0:14:48 [3.47MB/s] [=============>                      ] 41%
ETA 0:20:33

Si te interesa profundizar más en el uso del comando pv puedes consultar este enlace.


Referencias:

Show progress during dd copy | Linux commando

Using pv to display progress of dd |IT from all angels

¿Qué son Superuser y Busybox?

¿Qué es Superuser?

superuser-logo

En entornos Linux el super usuario también se conoce como root, este usuario puede acceder a todo el sistema y modificarlo sin ningún tipo de restricción.

Hay que recordar que Android posee el kernel Linux y hay muchas similitudes en la forma de usarlo respecto a cualquier distribución como Debian o Fedora. Por defecto no poseemos los privilegios para modificar todos los archivos, esto como medida de seguridad, si cualquier usuario puede acceder a las "tripas" del SO modificaría archivos vitales para su correcto funcionamiento.

En sistemas Linux el comando su nos permite cambiar de usuario sin cerrar nuestra sesión actual. Puedo estar en mi sesión de usuario sin privilegios y usar su en una terminal para acceder como root a los archivos del sistema, que no podría abrir con mi usuario normal.

Superuser permite administrar las aplicaciones a las que permitimos el uso del comando su para ejecutar acciones como root. Se compone del .apk o la aplicación como tal con su interfaz gráfica y un binario al que las aplicaciones le piden el acceso al comando su y se los permite o no según segun nuestra lista. Así no se ejecuta malaware a menos que nosotros le permitiéramos escalar privilegios con su.

Instalación

Normalmente Superuser o Super SU que es otra aplicación con el mismo fin, se instalan al momento de rootear el dispositivo, esto ya depende del modelo y el metodo usado. Algunos dispositivos están rooteados de fabrica, para saber si el nuestro lo esta; buscamos la aplicación Superuser o Super Su en nuestro dispositivo, si no se encuentra podemos descargar Root Checker de Google Play o cualquier otra market.

En el caso particular de la Skytab SP722 no me funciono Super SU y el Superuser solo el descargado desde 1Mobile Market.

Para actualizar el binario hay que pulsar en el icono:

Screenshot-1

Y después aquí:

Screenshot-2

Con esto Superuser buscara si hay alguna actualización y la podremos instalar.

¿Que es Busybox?

image3

Busybox fue creado originalmente por Bruce Perens para tener un sistema Debian funcional en un disco flexible (sí, en tan limitado espacio), eso hace a Busybox perfecto para discos de recuperación o sistemas embebidos.

Busybox reúne muchas herramientas de sistemas tipo UNIX en un solo binario o ejecutable, al instalarlo en Android podemos ejecutar una amplia gama de comandos como en nuestra distribución Linux favorita. Muchas aplicaciones hacen uso de las utilidades de Busybox como Titanium Backup o los emuladores de Terminal.

Instalación

En dispositivos con ROMs cocinadas es común que Busybox ya se encuentre instalado. En ROMs stock es necesario que el dispositivo este rooteado y usar una aplicación para permitir elevar privilegios como superuser. En varios sitio recomiendan usar Busybox de Stephen (Stericson) para instalarlo, pero no te permite elegir el directorio dónde lo hará. Esto es un problema si lo que quieres es actualizar el Busybox que ya se encontraba en tu ROM, por defecto la aplicación de Stephen lo instala en /system/xbin/ *pero hay ROMs que lo tienen en */system/bin/.

En el caso de la Skypad SP722 al instalarlos en xbin si hacía un apagado completo de la tablet, al encenderla restauraba el sistema a un Android "puro" no dejaba ni las modificaciones de Skytex. Esto es un problema enorme, por su baja batería es necesario estar apagando constantemente la tablet, pero no podía hacerlo ya perdía toda mi configuración y aplicaciones en el siguiente encendido.

Mi recomendación es usar **Busybox installer de JRummy apps**, a demás de indicarte la ruta actual de tu Busybox te deja elegir la ruta dónde se instalara el nuevo y no solo eso, también puedes elegir versiones anteriores de Busybox, aunque es altamente recomendable usar la ultima.

Una vez descargado Busybox installer desde Google Play o cualquier otra Market procedemos a la instalación:

Screenshot-3

Revisamos en dónde se encuentra instalado nuestro actual Busybox y cambiamos la ruta de instalación por la de nuestro Busybox. En mi caso cambiare de xbin a bin.

Si usaremos aplicaciones que requieren más herramientas de Busybox como DSploit marcamos la casilla de Advanced install y revisamos que todos los comandos se encuentran marcados y procedemos a instalar.

Referencias:

Superuser | Superuser web

¿Cuál es la diferencia entre sudo y su? | Blog DesdeLinux

Busybox | Debian Packages

What is Busybox for an Android user? | Chislon Chow's Blog

Recuperar claves de redes WiFi conectadas en Debian

No, no me refiero a "auditar" una red. Esta entrada es para obtener las claves de los access points a los que ya nos hemos conectado, puede ser que olvidamos la clave y nos da pereza revisarla directamente en el AP.

La información sobre todas las redes a las que nos conectamos se almacenan como archivos de texto plano y se encuentran en la ruta /etc/NetworkManager/system-connections, los archivos tienen el mismo nombre de la red, solo hace falta editarlos con nuestro editor de texto favorito.

Atención: Debes al ser un directorio del sistema debes usar el comando sudo para poder leer el archivo

En mi caso necesito la clave de AP con el nombre de 4 8 15 16 23 42 (soy fan de LOST :P):

sudo cat /etc/NetworkManager/system-connections/4\ 8\ 15\ 16\ 23\ 42

Las claves se encuentran en la sección [wifi-security].

Montar particiones NTFS/FAT32 permanentes

Actualmente los sistemas Windows usan NTFS, como remplazo al ya viejo FAT32, aunque aún se sigue usando en ciertos casos, de cualquier forma aprenderemos como acceder a nuestros archivos en ambos sistemas de archivos. Para realizar el proceso con NTFS es necesario instalar el paquete ntfs-3g que nos permite usar este tipo de partición, finalmente para montar permanentemente ambos sistemas editaremos el archivo fstab.

En el archivo fstab (File System Table) se encuentra la lista de los sistemas de ficheros a montar en el arranque, en el podemos encontrar los puntos de montaje de discos duros, particiones, CDs/DVDs y memorias USB.

Creamos la carpeta donde montaremos nuestra partición puede ser en /mnt o en /media en mi caso usare ambas para montar una partición en cada una.

sudo mkdir /mnt/windows
sudo mkdir /media/multimedia

Instalamos ntfs-3g.

sudo aptitude install ntfs-3g

Buscamos discos NTFS o FAT 32 según sea el caso.

sudo fdisk -l | grep NTFS

En mi caso obtengo lo siguiente, las cuatro primeras lineas son extrañas debido a que están en LVM pero las ultimas dos lineas muestran mis particiones en NTFS

Disk /dev/mapper/crunchbang-root doesn’t contain a valid partition table
Disk /dev/mapper/crunchbang-swap doesn’t contain a valid partition table
Disk /dev/mapper/crunchbang-temp doesn’t contain a valid partition table
Disk /dev/mapper/crunchbang-home doesn’t contain a valid partition table
/dev/sda1   *          63    62910539    31455238+   7  HPFS/NTFS/exFAT
/dev/sda3       861084063   976767119    57841528+   7  HPFS/NTFS/exFAT

Lo único que nos importa es la "ruta" de nuestra partición, en este caso /dev/sda1 y /dev/sda3.

Abrimos el archivo fstab con nuestro edito favorito, en mi caso nano.

sudo nano /etc/fstab

Y agregamos la siguiente linea, remplazar las rutas por las requeridas en tu sistemas. En caso de montar FAT32 usar vfat en lugar de ntfs-3g.

/dev/sda1 /mnt/windows ntfs-3g auto,rw,users,umask=000 0 0
/dev/sda3 /media/multimedia ntfs-3g auto,rw,users,umask=000 0 0

Ejecutamos el siguiente comando para montar todas las particiones en fstab

sudo mount -a

Solo nos resta acceder a las particiones desde la ruta dónde las montamos en este caso /media/multimedia y /mnt/windows


Referencias:

Lo esencial del archivo fstab | HumanOS pero parece ya no estar disponible, esta es una copia encontrada en DesdeLinux

Recuperar tabla de particiones con gpart

Antes que nada hay que aclarar que GParted y gpart son completamente distintos, el primero nos permite editar particiones de forma gráfica como el conocido Partition Magic y el ultimo, que es el que usaremos, nos permite detectar particiones que estan en el disco duro pero que por alguna razón no aparecen en la tabla de particiones MBR.

En mi caso accidentalmente borre la tabla de particiones de mi disco duro con GParted y este es el procedimiento que seguí para recuperarlas usando el modo live de Debian 7 - Crunchbang (Ahora bunsenlabs).

El MBR (Master Boot Record) son los primero 512 bytes del disco duro o cualquier otro dispositivo de almacenamiento almacenamiento, en este se encuentra el bootloader del SO y la tabla de particiones (como se encuentra organizado el disco y en que formato). Actualmente se busca remplazar por  GPT (GUID Partition Table) debiado asus limitantes como el no poder crear más de de 4 particiones primarias.

Recuperando tabla de particiones

Como podemos ver GParted no reconoce las particiones.

Screenshot - 06142013 - 09:30:27 PM

Instalamos gpart.

sudo aptitude install gpart

Usamos gpart en el dispositivo, tardara un rato según el tamaño de tu disco.

    gpart /dev/sda

    | Begin scan...
|  Possible partition(Windows NT/W2K FS), size(30718mb), offset(0mb)
|  Possible partition(Windows NT/W2K FS), size(0mb),
offset(109197mb)
|  Possible extended partition at offset(420451mb)
|  Possible partition(Windows NT/W2K FS), size(56485mb),
offset(420451mb)
|  End scan.

| Checking partitions...
|  Partition(OS/2 HPFS, NTFS, QNX or Advanced UNIX): primary
|  Partition(OS/2 HPFS, NTFS, QNX or Advanced UNIX): primary
|  Partition(OS/2 HPFS, NTFS, QNX or Advanced UNIX): primary
|  Ok.

| Guessed primary partition table:
|  Primary partition(1)
|  type: 007(0x07)(OS/2 HPFS, NTFS, QNX or Advanced UNIX)
|  size: 30718mb #s(62910477) s(63-62910539)
|  chs:  (0/1/1)-(1023/254/63)d (0/1/1)-(3915/254/63)r

| Primary partition(2)
|  type: 007(0x07)(OS/2 HPFS, NTFS, QNX or Advanced UNIX)
|  size: 0mb #s(1) s(223636581-223636581)
|  chs:  (1023/254/63)-(1023/254/63)d (13920/187/1)-(13920/187/1)r

| Primary partition(3)
|  type: 007(0x07)(OS/2 HPFS, NTFS, QNX or Advanced UNIX)
|  size: 56485mb #s(115683057) s(861084063-976767119)
|  chs:  (1023/254/63)-(1023/254/63)d (53600/1/1)-(60800/239/63)r

| Primary partition(4)
|  type: 000(0x00)(unused)
|  size: 0mb #s(0) s(0-0)
|  chs:  (0/0/0)-(0/0/0)d (0/0/0)-(0/0/0)r

Grabando el MBR

Si las particiones son correctas procedemos a guardar el MBR en un archivo.

gpart -W ruta_mbr /dev/hdb

Y escribir el MBR en el disdo duro.

dd if=mbr_del_sistema of=/dev/sda

En mi caso lo escribire directamente en el DD sin guardarlo en un archivo.

gpart -W /dev/sda /dev/sda

Al final nos permite editar las particiones.

Ahora GParted muestra las particiones y podemos montarlas.

Screenshot - 06152013 - 12:19:36 AM

Prevenir es mejor que lamentar

Aunque el proceso fue muy sencillo siempre puede fallar algo (y en el mundo de la informática cuando menos te lo esperas) así que mejor respaldar la tabla de particiones MBR.

Para respaldar todas las particiones incluyendo las lógicas.

sfdisk -d /dev/sda > backup-sda.sf

Y para recuperarlas.

sfdisk /dev/sda < backup-sda.sf

Referencias:

Master Boot Record | Wiki de Arch Linux

gpart | Wikipedia

Recuperacion de particiones perdidas con gpart | Lo hice y lo entendí