jueves, noviembre 08, 2012

Me mudo

Después de haber intentado darle vida al blog este 2012 y haber visto con alegría cómo el número de visitas crecía exponencialmente, me mudo a http://unamiradaentrebytes.wordpress.com/ debido a lo pesado que se me hace manejar el interfaz de blogger para añadir código a los artículos.

Estoy a un click de distancia. Pásate a verme.

martes, septiembre 18, 2012

Acceder al puerto serie en Livebox2

Desnudando al Livebox2

ACTUALIZADO 08/Oct/2012: con qué adaptador conectarse al puerto serie


Para acceder al puerto serie de un Livebox2 lo primero que hay que hacer es, obviamente, desmontar la tapa del router. Para ello desmontamos las 4 patitas de goma que lleva el router.
Patas de goma del Livebox2
Una vez quitadas las gomas aparecen unos tornillos Torx-10:
Tornillos Torx-10 para acceder al Livebox2
Y sólo queda desencajar la tapa de arriba que no presenta ninguna resistencia. Si hay resistencia, asegúrate de haber quitado los 4 tornillos previamente.

Haciendo el implante al Livebox2

Para acceder al puerto serie del Livebox2 hay que soldar unos pines (o un puerto DB9 mediante cables) a los 4 contactos (realmente sólo hacen falta 3 si usas un adaptador USB ya que está alimentado a través de éste). Éstos se encuentran al lado del botón de RESET que podemos encontrar en la parte posterior del router.
Contactos del puerto serie, botón de RESET y puerto USB del Livebox2 vistos desde el otro lado

 Una vez soldados los pines, cada uno de ellos corresponde respectivamente con:

Pines del puerto serie del Livebox2

 Accediendo por terminal serie al Livebox2


 Los parámetros del programa de terminal con el que vayas a conectarte al Livebox2 son los siguientes:

  • Velocidad: 57600bps 
  • Bits: 8 
  • Paridad: No 
  • Bits de parada: 1 
  • Control de flujo: en mi equipo con mi adaptador serial/USB ambos a OFF


Y con ésto, pulsando unas pocas veces la tecla Intro debería aparecerte el terminal solicitándote el Login.

Dependiendo de la versión de firmware que tengas (que la tuya será FAST3yyy_691288 si ha estado conectado al ADSL de Orange a partir de agosto de 2011) podrás acceder con root/1234 si es una versión anterior o no podrás acceder (todavía).

En el próximo post mostraré los pasos a dar para hacer un downgrade y así poder acceder al router por telnet, activar opciones ocultas (que permanecen aunque actualicen el firmware) y poder modificar lo que queráis del sistema operativo (válido hasta que te actualicen el firmware).

Si tienes alguna duda o comentario, por favor, no dudes en dejarlo.

Actualización: con qué hardware conectarse al livebox

Para conectarse al livebox hace falta un puerto serie TTL. Los que hemos utilizado toda la vida no nos valen ya que utilizan 10V de tensión cuando el puerto serie del Livebox2 funciona en niveles TTL (3,3V). Aquí tienes una foto del mío.
Livebox con pines soldados y adaptador USB-TTL


Lo más fácil es comprar uno hecho (por ejemplo éste de dx), pero también podrías hacértelo (hay esquemas online) o modificar uno que tengas con chip MAX232 por un MAX2323. Si quieres profundizar en el tema, mira esta página de openwrt.

sábado, julio 14, 2012

Muuuuu!!! Easter Egg

xir@naranjito:~$ apt-get
[...]
See the apt-get(8), sources.list(5) and apt.conf(5) manual
pages for more information and options.
This APT has Super Cow Powers.
xir@naranjito:~$ apt-get moo
(__)
(oo)
/------\/
/ | ||
* /\---/\
~~ ~~

...."Have you mooed today?"...
xir@naranjito:~$ aptitude -v moo
There really are no Easter Eggs in this program.
xir@naranjito:~$ aptitude -vv moo
Didn't I already tell you that there are no Easter Eggs in this program?
xir@naranjito:~$ aptitude -vvv moo
Stop it!
xir@naranjito:~$ aptitude -vvvv moo
Okay, okay, if I give you an Easter Egg, will you go away?
xir@naranjito:~$ aptitude -vvvvv moo
All right, you win.

/----\
-------/ \
/ \
/ |
-----------------/ --------\
----------------------------------------------

xir@naranjito:~$ aptitude -vvvvvv moo
What is it? It's an elephant being eaten by a snake, of course.

"Hackear" un BMW en menos de 3 minutos... y robarlo

Cómo "hackean" los BMW generando una nueva llave y se llevan el coche en menos de tres minutos ha sido mudado con el resto del blog a mi nuevo blog "
Una Mirada Entre Bytes" en http://unamiradaentrebytes.wordpress.com/

lunes, julio 09, 2012

Escanear documentos desde un navegador web

Por qué instalar un escaner en red

Hoy estaba haciendo un curso sobre copywriting y tenía que imprimir unas hojas. Tengo una impresora multifunción Canon Pixma MP190 que es un infierno configurar en las distribuciones "nuevas" porque los drivers son antiguos y dependen de libcupsys2 en lugar de libcups2. Así que he aprovechado una placa Alix que tengo en casa funcionando y he decidido instalar ahí la impresora para poder imprimir desde cualquiera de los ordenadores de casa (estoy pensando incluso en echar echando una mirada a imprimir desde los móviles).

El caso es que, una vez configurada la impresora, he pensado en añadir el escaner. He encontrado varios hilos útiles. Me he decidido a seguir éste, pero me parecía excesivo (por recursos y para lo que lo voy a utilizar) instalar un apache sólo para gestionar el scanner, así que mi siguiente pensamiento ha sido: "voy a usar nginx". ERROR. Nginx no soporta CGIs. Así que instalaré la siguiente opción que me haga perder menos tiempo: lighttpd.

Instalación de los componentes necesarios

Como siempre en nuestros sistemas GNU/Linux (Debian way), el modo fácil:

apt-get install sane-utils netpbm lighttpd

Configurando el sistema

Lo primero que tendremos que verificar es que el escaner es detectado. Para ello ejecutamos:

sudo scanimage -L

Debe devolver algo como:

device `pixma:04A91734_62836D' is a CANON Canon PIXMA MP190 multi-function peripheral

Cualquier tipo de error deberá ser subsanado previamente a continuar con este procedimiento. lighttpd necesita una pequeña configuración. Editamos el fichero /etc/lighttpd/lighttpd.conf y añadiremos en el bloque de los server_modules la línea:

"mod_cgi",

como la ves, con comillas y coma.

El otro bloque lo deberás añadir en tu vhost o al final de tu fichero si no tienes hosts virtuales:

$HTTP["url"] =~ "/escaner/" {
    cgi.assign = ( ".cgi" => "/bin/bash" )
    }

Descargamos el paquete,  descomprimimos y asignamos permisos. Es un zip.


Asignamos los permisos necesarios al usuario (a mí me ha funcionado con éstos):

drwxr-xr-x 2 www-data scanner  4096 2007-08-18 22:51 images
-rwxr-xr-x 1 www-data scanner  9091 2012-07-09 07:16 index.cgi
-rwxr-xr-x 1 www-data scanner   378 2008-01-26 19:54 print.cgi
drwxr-xr-x 2 www-data scanner  4096 2012-07-09 07:16 scans

Para poder acceder al escaner, he añadido con visudo la siguiente línea al fichero sudoers:

www-data ALL=NOPASSWD: /usr/bin/scanimage

He creado un index.html que redirige a index.cgi para evitar poner los cgi como index-file. El contenido del fichero no lo puedo añadir debido a limitaciones de Blogspot, pero es un REFRESH sin más a index.cgi

La web ya me funcionaba pero me devolvía un error y no mostraba el escaneado. En este punto, si no funciona "tal cual", debemos verificar que los parámetros que le pasa al escaner son válidos con el nuestro.
La línea original es:

scanimage --resolution $QUALITY $SIZE --brightness $BRIGHTNESS --mode $MODE --format=ppm > /tmp/scan_file.ppm

La comparamos con los parámetros que acepta nuestro escaner. 

scanimage --help

Nos devuelve la ayuda general y una específica para nuestro escaner. Esos serán los parámetros que acepte:

Options specific to device `pixma:04A91734_62836D':
  Scan mode:
    --resolution auto||75|150|300|600dpi [75]
        Sets the resolution of the scanned image.
    --mode auto|Color|Gray [Color]
        Selects the scan mode (e.g., lineart, monochrome, or color).
    --source Flatbed [Flatbed]
        Selects the scan source (such as a document-feeder).
    --button-controlled[=(yes|no)] [no]
        When enabled, scan process will not start immediately. To proceed,
        press "SCAN" button (for MP150) or "COLOR" button (for other models).
        To cancel, press "GRAY" button.
  Gamma:
    --custom-gamma[=(auto|yes|no)] [yes]
        Determines whether a builtin or a custom gamma-table should be used.
    --gamma-table auto|0..255,...
        Gamma-correction table.  In color mode this option equally affects the
        red, green, and blue channels simultaneously (i.e., it is an intensity
        gamma table).
  Geometry:
    -l auto|0..216.069mm [0]
        Top-left x position of scan area.
    -t auto|0..297.011mm [0]
        Top-left y position of scan area.
    -x auto|0..216.069mm [216.069]
        Width of scan-area.
    -y auto|0..297.011mm [297.011]
        Height of scan-area.
  Buttons:
    --button-update
        Update button state
    --button-1  [0]
        Button 1
    --button-2  [0]
        Button 2

Type ``scanimage --help -d DEVICE'' to get list of all options for DEVICE.

List of available devices:
    pixma:04A91734

Como ves, en mi escaner, no está soportado el parámetro Brightness, así que lo elimino de la línea incluida en el cgi y elimino en el resto del script las opciones de Brightness en el menú. Podemos añadir otras opciones que ofrezca nuestro escaner.

Yo lo voy a dejar aquí de momento. Adjunto un screenshot de la prueba que he hecho con un pendrive y una púa en mi nuevo webscanner.


Se me ocurre que puede serme útil si me dejo un documento en casa que necesito y mi chica lo puede poner en el escaner. Accediendo por la VPN al servidor web, podría disponer del documento en mi móvil en un momento.

Deja un comentario con otras utilidades que le encuentres u otras ideas de uso con pequeñas modificaciones.

jueves, julio 05, 2012

tlhIngbuntu: ¿otro sabor de Ubuntu?

Cuando creía que lo había visto (casi) todo, vuelvo a sorprenderme con los grados de frikismo de algunas ¿personas?

miércoles, julio 04, 2012

Enhorabuena a tus derechos online.

 ACTA rejected

 Como continuación de mi aventura de ayer, hoy me han escrito dos de los eurodiputados que me respondieron ayer indicándome, no sólo que ellos habían votado en contra de ACTA sino también los resultados:
  • 39 votos a favor
  • 478 votos en contra
  • 165 abstenciones
Como bien dice “ACTA has today been consigned to history". Ésto no quiere decir que no se vaya a legislar sobre los derechos de autor, pero de una manera racional. 

Enhorabuena a tus derechos online. Ésta vez no han sido aniquilados.

martes, julio 03, 2012

4 de julio, dia de la Independencia... de Europa

Mañana, día 4 de julio de 2012, se vota la "ACTA". Una ley que bajo la bandera de la legitimidad de los derechos de autor y las patentes espera poder recortar libertades fundamentales de los ciudadanos europeos en favor de las grandes corporaciones americanas. Como muchos otros ciudadanos consternados con esta aberración hacia nuestros derechos, he escrito a los eurodiputados (puedes enviar tu email a ésta lista de correo para que les llegue:  europarl-all@falkvinge.net ) pidiéndoles que voten en contra de dicha ley. Mi email:
------------------------------------------------------------------------------------------------------------------------------------


Dear Member of the European Parliament.

As an European citizen, I urge to reject the ACTA treaty on july 2-5.

ACTA is no designed in Europe for Europeans' benefit nor problems nor
economy nor freedom... It only benefits to big American corporations'
interests killing Europeans' freedoms for their benefit. It tries to
lockout any and all reforms of copyright and patent structures which
could benefit European culture and innovation. It has been designed to
prevent next (and actual) generation of entrepreneurs from developing
new and better productos and services which displace old bussiness
leaders from their position. They spend efforts in keeping this
position in stead of developing new ideas which has no benefit for
Europeans.

Europe is living a critical moment where we must look for our best
options and interests which are not foreign ones. We must stop steping
on our rights and civil liberties for foregin benefits. We'd like (and
need) to have political representatives which take care of us as
Americans do trying to build this kind of treaties worldwide.

As new powerfull countries begin to arrive in Asia we need to be as
competitive as we can and this laws are amputating our legs to run
this race.

Hope you listen to our voices.
Best regards.
Ivan Eguiguren
Spain

P.S.: I have understood that some MEPs have voiced concerns that mails
like this one would be part of an automated process, and even regarded
it as a form of attack, in that sense. I want to underscore that this
mail is not part of an automated process.

I am not an attack – I am a European voter, pleading for my
representatives to represent me against US businesses. (For the
technically inclined, the mail headers will show that the identical
copies you may have received of this sample letter were all sent
manually, one by one, by different people.)

------------------------------------------------------------------------------------------------------------

Lo he enviado  a las 8:23am y hasta ahora, 11:41am me han respondido 3 eurodiputados (mejor dicho, me han respondido de sus oficinas) para indicarme que votarán en contra. Éstos son:
  • Nigel Farage
  • Mojca Kleva
  • Auke Zijlstra
  • Helmut Scholz

Realmente espero que lo cumplan porque a mí me han alegrado el día y, de no hacerlo, mañana mi tristeza será doble. EDITO: en contra de lo que opinaba (realmente pensaba que ni me contestarían), me está gustando mucho que expliquen sus posiciones en sus correos. Scholz, por ejemplo, indica que está en contra de ACTA, que no de los derechos de autor, y que considera que deben tratarse independientemente "las falsificaciones" de bienes, medicinas y esperar las opiniones del sector creativo en el entorno digital. También que se debe llegar a un acuerdo con China, Brasil o India para aunar las diferentes legislaciones. Mojca Kleva indica que ACTA indica correctamente el problema pero da respuestas equivocadas. Por otra parte, de Nigel Farage destaco que indica que ACTA eleva la cuestiones de infracciones de derechos de autor, patentes y marcas registradas de la ley civil a la ley criminal en 39 paises.

IPv6 con ebtables

El problema


Al ejecutar:
ebtables -t broute -A BROUTING -i $CLIENT_IFACE -p ipv6 --ip-proto tcp --ip-dport 80 -j redirect --redirect-target DROP
Devuelve el error:
for ip filtering the protocol must be specified as IPv4

La solución


ebtables -t broute -A BROUTING -i $CLIENT_IFACE -p ipv6 --ip6-proto tcp --ip6-dport 80 -j redirect --redirect-target DROP

martes, junio 26, 2012

Particiones VMWare: cómo montarlas directamente en tu distribución habitual

Intro

En el trabajo utilizo (de momento) máquinas virtuales sobre VMWare Server. Estas máquinas ofrecen varias opciones al crearlas entre ellas elegir si particionas el disco virtual en ficheros de 2GB o en un sólo fichero. Esta seguna manera es lo que en inglés llaman "flat disk". Podremos montar un "flat disk" de vmware en nuestra máquina física de una manera muy simple.

Descubriendo nuestro disco de VMWare

Primero averiguamos qué particiones y de qué tipo existen en su interior:

# fdisk -l disco-flat.vmdk 
last_lba(): I don't know how to handle files with mode 8180
You must set cylinders. You can do this from the extra functions menu. 
Disk disco-flat.vmdk: 0 MB, 0 bytes 255 heads, 63 sectors/track, 0 
cylinders Units = cylinders of 16065 * 512 = 8225280 bytes 
Device Boot Start End Blocks Id System
disco-flat.vmdk1 * 1 457 3668992 83 Linux
Partition 1 does not end on cylinder boundary.
disco-flat.vmdk2 458 523 522241 5 Extended
Partition 2 does not end on cylinder boundary.
disco-flat.vmdk5 458 523 522240 82 Linux swap / Solaris


En este caso, encontramos que la primera partición es de tipo Linux (83).

Montando el disco de VMWare en un directorio

Montamos las particiones:  

kpartx -av disco-flat.vmdk

Ésto montará las particiones que contenga el disco virtual y mostrará algo parecido a:
add map loop0p1 : 0 7337984 linear /dev/loop0 2048 
add map loop0p5 : 0 1044480 linear /dev/loop0 7342080 

loop0p1 indica el dispositivo (/dev/loop0) y la partición (p1).
La primera partición era la que contenía el sistema de ficheros Linux (83), así que será esa la que montemos. Creamos un directorio donde montarla:

# mkdir -p /mnt/flatdisk-image 


Y montamos la partición:

# mount /dev/mapper/loop1p1 /mnt/flatdisk-image

Si no ha aparecido ningún error tendrás montado el sistema de ficheros en /mnt/flatdisk-image:  

# ls /mnt/flatdisk-image 
bin dev home lib media opt root sbin srv tmp var boot etc initrd.img lost+found mnt proc run selinux sys usr vmlinuz 
Ya puedes trastear con los ficheros.

Desmontando las particiones del disco de VMWare


Desmontar es tan fácil como (en este orden):
# umount /mnt/flatdisk-image # kpartx -d disco-flat.vmdk Con eso ya tendríamos el disco desmontado limpiamente con los cambios hechos.

martes, junio 19, 2012

Curiosidades de IPv4 (a estas alturas)

El otro día, por error, tecleando una IP, me ocurrió ésto:
ping 192.168.1
PING 192.168.1 (192.168.0.1) 56(84) bytes of data.

Coincidió que estaba en una red 192.168.0.0/24, así que me quedé bocas 8-O
¿Cómo había averiguado que estaba en esa red? ¿Sería como en IPv6, que obvia los 0 intermedios? ¿Y cómo sabía que era el tercer octeto y no el segundo el que era 0? Bueno, no era 192.168..1, así que no funcionaba como IPv6.

Ayer, viendo un blog que me recomendó un colega (http://elladodelmal.com), me encontré con más curiosidades. He aquí mis pruebas:
root@sqa-test:~/virtual_files# ping 0
PING 0 (127.0.0.1) 56(84) bytes of data.
64 bytes from 127.0.0.1: icmp_req=1 ttl=64 time=0.048 ms
^C
--- 0 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.048/0.048/0.048/0.000 ms

root@sqa-test:~/virtual_files# ping 10.230.770
PING 10.230.770 (10.230.3.2) 56(84) bytes of data.
64 bytes from 10.230.3.2: icmp_req=1 ttl=128 time=1.08 ms
^C
--- 10.230.770 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 1.083/1.083/1.083/0.000 ms

Dicen que ésto viene de inet_aton():
http://linux.die.net/man/3/inet_aton
a.b.c.d

Each of the four numeric parts specifies a byte of the address; the bytes are assigned in left-to-right order to produce the binary address.

a.b.c

Parts a and b specify the first two bytes of the binary address. Part c is interpreted as a 16-bit value that defines the rightmost two bytes of the binary address. This notation is suitable for specifying (outmoded) Class B network addresses.

a.b

Part a specifies the first byte of the binary address. Part b is interpreted as a 24-bit value that defines the rightmost three bytes of the binary address. This notation is suitable for specifying (outmoded) Class C network addresses.

a

The value a is interpreted as a 32-bit value that is stored directly into the binary address without any byte rearrangement.

El pequeño Pepito Grillo me dice que no pruebe, pero ¿servirá para saltarse filtros y firewalls? ;)