CategoríaDocumentacion

Solución al no-cambio de hora en Chile

En Chile, nuevamente el Gobierno cambió la configuración de la zona horaria, aplazando el cambio de hora que debería haberse hecho hoy, para el 28 de Abril.

La medida, que replica el esquema adoptado el año pasado, establece que el horario de invierno entrará en vigencia la medianoche del Sábado 28 de Abril y posteriormente, se retornará al horario de verano, la medianoche del Sábado 1 de Septiembre.

Para UNIX existe una solución que es modificar el archivo que define el TimeZone de Chile/Continental. Esta solución es mucho más limpia que cambiar la hora a mano o que usar la zona horaria de otro país, ya que continuamos usando la zona horaria de Chile pero con las modificaciones que el gobierno impuso.

La solución rápida es descargar este archivo “timezone” que modifiqué con las nuevas fechas, descomprimirlo y pisar el archivo /etc/localtime y en el directorio donde tengas los archivos de zona que generalmente se encuentran en /usr/share/zoneinfo/Chile/Continental.

Seguir leyendo

Manipular volúmenes lógicos (LVM) en discos virtuales

Me refiero a discos virtuales a los que creamos usando dd. Cuando creamos un disco utilizando por ejemplo dd if=/dev/zero of=imagen.img y lo usamos para crear una máquina virtual, en este caso con Xen, luego le instalamos un sistema operativo que maneje ya sea CentOS, RHEL, Debian o cualquier otro que maneje LVM en la instalación, hay veces que necesitamos manipularlo ya sea para clonarlo, hacerle mantención o simplemente montarlo para ver los archivos. En mi caso, tuve que clonar la máquina virtual en caliente y quedó el FS corrupto, por lo que tuve que corregirlo, tambien sirve para hacer tareas de mantención como aumentar o disminuir el tamaño del disco o volúmenes lógicos.

Tengo mi disco original llamado “vm1.img” y la clono simplemente con un cp o bien con “dd if=vm1.img vm1_clon.img“, paso a paso, lo que tenemos que hacer es:

  1. Crear un dispositivo “loop” en base a nuestro disco virtual
  2. Mapear el dispositivo loop creado
  3. Revisar los dispositivos creados en /dev/mapper/
  4. Activar el volúmen y realizar las tareas necesarias

Las herramientas que usé son losetup, kpartx y vgchange.

Seguir leyendo

[PoC] Cifrado del historial de bash (.bash_history)

El otro día, en mis momentos de ocio, se me ocurrio buscar una forma de cifrar el historial de comandos que guarda bash. Hay servidores que sólo tenemos -o hemos ganado- acceso como usuarios, y no nos gusta que el administrador (root) vea lo que hacemos o los comandos que hemos ejecutado. Existen varias formas de ir contra eso, por ejemplo eliminar el bash_history o bien editarlo cada vez que hacemos algo que no queremos que sepan. Esta forma es un poco mas rebuscada y busca cifrar mediante GPG el historial, de manera tal que el root no podrá leer lo que dice el archivo.

La logica es bastante simple:

  1. Cuando ingresamos (login) a nuestra cuenta desciframos el bash history usando nuestra clave privada
  2. Cuando salimos (logout) ciframos el archivo con nuestra clave publica.

Para lograrlo vamos a necesitar tener una clave gpg y configurar el comportamiento del login y logout con unos scripts que les mostraré a continuación.

Seguir leyendo

Tethering con un BlackBerry 8520 en Archlinux via bluetooth

Si bien lo probé con Archlinux, tambien hay evidencias que funciona en Debian aunque, independiente de la distribución, debería funcionar para cualquiera. Tambien debería funcionar con cualquier celular que soporte “Dial Up“.
Debemos tener instaladas las herramientas de bluetooth: bluez-utils bluez-libs dbus wvdial

Primero, debemos poner el bluetooth del teléfono en modo escucha y escanearlo con nuestro disponisitivo, para ver si soporte el modo.

[root@balcebu zerial]# hcitool scan
Scanning ...
F4:0B:93:DB:90:FF BlackBerry 8520
[root@balcebu zerial]#

Y vemos si soporta el modo Dial Up

root@balcebu zerial]# sdptool browse F4:0B:93:DB:90:FF
Browsing F4:0B:93:DB:90:FF ...
[...]
Service Name: Dialup Networking
Service RecHandle: 0x10000
Service Class ID List:
"Dialup Networking" (0x1103)
"Generic Networking" (0x1201)
Protocol Descriptor List:
"L2CAP" (0x0100)
"RFCOMM" (0x0003)
Channel: 1
Profile Descriptor List:
"Dialup Networking" (0x1103)
Version: 0x0100
[...]

En este caso soporta, en el canal 1.

Seguir leyendo

Esteganografía: Ofuscación de archivos (parte 2)

Luego de haber enseñado como ofuscar un archivo dentro de otro, llegó el momento de saber como “separarlos”. En la primera parte, hubo comentarios de quienes tenian problemas porque se corrompía el archivo y no todas las versiones de unrar o unzip lo podían descomprimir, ya que obviamente, el archivo tiene muchos bits y bytes extras que no corresponden al zip, al rar o al archivo que escondimos. Una vez separado el archivo que hemos escondido, evitaremos todos estos problemas y tendremos nuestro archivo íntegro.

Para separar el archivo vamos a usar el comando split, que nos permite “dividir” o “cortar” un archivo por líneas, bytes, etc. En este caso, separaremos por bytes el archivo.
La sintaxis de split para separar un archivo es tan simple como:

$ split --bytes=XXX archivo
o tambien
$ split -b XXX archivo

De esta forma, el split separará el archivo cada XXX bytes, creando archivos de la forma xab, xac, xad, … xaN.
Ejemplo:
[zerial@balcebu ejemplo_split]$ du -sh archivo.jpg
48K archivo.jpg
[zerial@balcebu ejemplo_split]$ split -b 10000 archivo.jpg
[zerial@balcebu ejemplo_split]$ ls
archivo.jpg xaa xab xac xad xae
[zerial@balcebu ejemplo_split]$ du -csh *
48K archivo.jpg
12K xaa
12K xab
12K xac
12K xad
8.0K xae
104K total
[zerial@balcebu ejemplo_split]$

Para poder separar el archivo ofuscado, vamos a necesitar saber de antemano el tamaño del archivo original, para poder separarlo por esa cantidad de bytes.

Seguir leyendo

SSH, Port Forwarding y Tunneling: Saltarse las restricciones del firewall

En mi nuevo lugar de trabajo, misteriosamente está bloqueado por el firewall, entre otras cosas, la salida al puerto 25 de cualquier servidor. Desde mi portatil uso el cliente de correo Thunderbird conectandose a distintas cuentas  de correo que tengo alojadas en Google Apps asi que no podía quedarme sin revisar mis cuentas de correo, por lo que tuve que buscar la forma de hacerlo.
Lo primero que se me vino a la cabeza es hacer un port forwarding con ssh usando un servidor externo, sabiendo que tengo el puerto 22 desbloqueado para salir. Entonces, accedería a cualquier servicio corriendo en el puerto 25 mediante un redireccionamiento a traves del puerto 22. Con esta técnica podemos saltarons el firewall y todas las restricciones.

Seguir leyendo