Rompen la seguridad de todas las redes WiFi con seguridad WPA2

Se ha descubierto recientemente un fallo de seguridad en el protocolo WPA2, el cual permite acceder a las conexiones WiFi y hackearlas.

El exploit lleva el nombre de KRACK (Key Reinstallation AttaCK) y ha sido descubierto desde el CERT de Estados Unidos.

Este fallo de seguridad es de alta gravedad ya que permite robar información y datos personales, secuestrar conexiones TCP o inyectar contenido malicioso en direcciones HTTP, entre otros.

La solución 100% fiable a día de hoy es no usar el WiFi y realizar conexiones mediante cable ethernet. Si necesariamente necesitamos usar el WiFi podríamos usarlo a través de una VPN (Virtual Private Network).

Algunos fabricantes como Aruba y Ubiquiti ya tienen preparados un parche de seguridad para solucionar esta grave vulnerabilidad.

Además, los sistemas operativos más usados como Windows, iOS, Android, etc también lanzarán su parche de seguridad en los próximos días.

Botón “Me gusta” de corazón en Twitter con CSS y jQuery

twitter-like

Para el que no se haya dado cuenta, Twitter hace cosa de un mes cambió su botón de favorito. Ahora este botón es de me gusta y tiene forma de corazón. Ahora este botón al pulsarlo tiene un efecto bastante llamativo. En esta entrada voy a explicar como implementarlo utilizando CSS3 y jQuery.

Código HTML

Imagen de fondo para el corazón

Pincha en la imagen para verla más grande.

web_heart_animation

Código CSS

Animación CSS

Código JavaScript

Espero que os haya servido y sobre todo gustado. Si deseas bajar todo el código completo haz click aquí.

Raspberry pi sin entorno gráfico ni lxde

 

Para instalar un servidor no necesitamos las X-windows ni el entorno gráfico LXDE, así que voy a explicar como dejar la raspberry preparada con lo mínimo para luego instalar el servicio que queramos (web, DNS, DHCP, pbx, etc).

Raspbian, es la distribución oficial basada en Debian para la Raspberry Pi. Si no la has comprado ya preinstalada la puedes instalar fácilemnte en una microSD. No voy a detallar la instalación ya que está muy bien explicada aquí.

Una vez instalada la Raspberry Pi, si lo que queremos es usarla como servidor para un determinado servicio, no es necesario el entorno gráfico. Para desinstalar el servidor de las X y el escritorio LXDE que trae por defecto, desinstalamos los siguientes paquetes (Ojo, bajo tu propia responsabilidad):

Desinstalamos completamente las X:

Y si queremos también podemos desinstalar python y cups:

A continuación hacemos un autoremove para que elimine todos los paquetes que fueron instalados como dependencias por los anteriores y que ya no son necesarios:

Instalamos el paquete deborphan:

Desinstalamos paquetes huérfanos:

Esto lo haremos varias veces hasta que ya no desinstale nada más.

Y por último si queremos limpiar más espacio podemos limpiar la caché de apt y las locales:

Eliminamos las locales instalando el paquete localepurge. Nada más instalarlo ya nos pide que seleccionemos las locales “que queremos dejar en el sistema”. Por defecto ya aparecen las que están configuradas, y elimina las demás:

Una vez reiniciado, de esta forma conseguimos una instalación de Raspbian para servidor mínima y ya podemos proceder a instalar el servicio que queramos.

Cron al final de mes

El demonio cron facilita las ejecuciones programadas cuando se trata del primer día del mes. Sin embargo para el último día de cada mes hay que usar un poco de ingenio y otras herramientas del sistema. Una manera es esta:

Así de esta forma cada día a las 23:30 comprobará si se trata del último día del mes:

  • Obtiene el día del mes.
  • Obtiene el calendario del mes actual.
  • Extrae el final de cada línea del calendario.
  • Se queda con la última de esas líneas.
  • Si el día actual es igual al último día del mes obtenido, se ejecuta lo que le digamos y las salidas las manda a /dev/null.

Actualización de seguridad Bash “Shellshock”

Leyendo por Internet y gracias a un correo que he recibido me ha llegado una notificación diciendo que se ha detectado una vulnerabilidad donde el atacante puede saltarse las restricciones del entorno y ejecutar comandos de shell desde bash de forma indiscriminada. A esto se le llama Shellshock.

El problema de esto es que hay servicios y aplicaciones que proporcionan acceso a estas variables de entorno por lo que permiten explotar dicha vulnerabilidad desde estas aplicaciones y servicios. Resumiendo, que no necesitan acceso directo directo a la línea de comandos, terminal o SSH para aprovecharse de este fallo de seguridad.

Por este motivo y al disponer de un VPS he tenido que actualizar de forma inmediata la versión de bash para solucionar lo antes posible este bug. Por eso si tu también dispones de un servidor con Linux, te recomiendo que lo actualices, si es que no lo has hecho ya.

¿Cómo se si mi servidor es vulnerable a este fallo de seguridad?

Para saber si tu servidor tiene una versión de bash afectada por esta vulnerabilidad, tan solo, tienes que acceder a él mediante SSH y ejecutar el siguiente código en a línea de comandos:

Si es vulnerable la salida estándar de este comando te devolverá la palabra Vulnerable. Si no es vulnerable no te devolverá nada.

¿Cómo solucionar este fallo de seguridad si me servidor está afectado?

Tienes que acceder a tu servidor por SSH con usuario root y ejecutar los siguientes comandos dependiendo de tu distribución de Linux.

Para saber tu versión de Debian ejecuta:

Solucionar “Shellshock” en Debian 7 y Ubuntu

Solucionar “Shellshock” en Debian 6

Para actualizar bash en Debian 6, primero tenemos que agregar un repositorio. Para ello tenemos que editar el siguiente archivo:

Y agregar la siguiente línea al final del mismo:

Una vez agregado el repositorio seguir los pasos que hemos realizado para solucionar el problema en Debian 7.

Para terminar, tendremos que borrar la línea que hemos agregado en el fichero sources.list

Si en esta versión de Debian aparece un error como este:

W: GPG error: http://ftp.us.debian.org squeeze-lts Release: The following signatures couldn’t be verified because the public key is not available: NO_PUBKEY XXXXXXXXXXXX

Tendremos que ejecutar los comandos:

Poniendo el mismo id en las XXXX que aparece en el error.

Soluciona “Shellshock” en CentOS, RHEL, Fedora, Scientific Linux

Una vez hecho esto ya habremos solucionado el fallo de seguridad de nuestros servidores Linux. Para estar seguro de ello podremos ejecutar la línea del principio y ver si devuelve la palabra Vulnerable, o si todo es correcto, no devolver nada.

Probando una pantalla LCD con Arduino

Después de una cuentas semanas trasteando con mi Arduino Uno Rev. 3, aquí os traigo otra entrada en el blog para explicaros el funcionamiento de una pantalla LCD de 16×2 (16 caracteres y 2 columnas), la cual me venía cuando compré el Arduino.

Lo bueno de este LCD es que viene con un módulo soldado para la comunican en serie por I2C, así de esta forma nos ahorramos una buena cantidad considerable de pines.

Este display LCD está basado en el controlador HD44780 donde son necesarios 8 pines del Arduino para conectarlo y hacerlo funcionar, pero como ya he comentado, en este caso trae un módulo soldado para hacer la conexión por I2C, así de esta forma tan solo necesitaremos 2 pines más la alimentación a 5v.

I²C es un bus de comunicaciones en serie. Su nombre viene de Inter-Integrated Circuit (Inter-Circuitos Integrados). La versión 1.0 data del año 1992 y la versión 2.1 del año 2000, su diseñador es Philips. La velocidad es de 100 kbit/s en el modo estándar, aunque también permite velocidades de 3.4 Mbit/s. Es un bus muy usado en la industria, principalmente para comunicar microcontroladores y sus periféricos en sistemas integrados (Embedded Systems) y generalizando más para comunicar circuitos integrados entre si que normalmente residen en un mismo circuito impreso.

La principal característica de I²C es que utiliza dos líneas para transmitir la información: una para los datos y por otra la señal de reloj. También es necesaria una tercera línea, pero esta sólo es la referencia (masa). Como suelen comunicarse circuitos en una misma placa que comparten una misma masa esta tercera línea no suele ser necesaria.

Las líneas se llaman:

  • SDA: datos
  • SCL: reloj
  • GND: tierra

 

Módulo I2C

Módulo I2C

Para hacer la conexión con el módulo I2C, la librería que viene por defecto en el IDE de Arduino no funciona por lo que necesitamos otra llamada LiquidCrystal_I2C, la cual la podemos descargar desde aquí abajo. Esta librería reemplaza la que ya viene con el IDE y según su creador dice que es mucho más rápida que la ofrecida por el IDE.

Descargar librería (550KB)

Una vez descargada la librería tendremos que copiarla y pegarla en la carpeta libraries, que se encuentra donde tengamos instalado el software de Arduino.

Conexionado de hardware

La conexión del LCD se queda de la sigueinte forma:

  • El pin GND del display al pin GND del Arduino.
  • El pin VCC del display al pin 5V del Arduino.
  • El pin SDA del display al pin analógico 4 del Arduino.
  • El pin SDL del display al pin analógico 5 del Arduino.

La dirección del displays es 0×27. Esta dirección se configura usando los pines 1, 2 y 3 del controlador I2C PCF8574.

Tabla de direcciones I2C para el controlador PCF8574.

Tabla de direcciones I2C para el controlador PCF8574.

El código

Y aquí esta el resultado:

LCD Arduino

LCD Arduino

Código para saber la dirección I2C

Como siempre pongo el código del sketch usado en mi cuenta de Github para que lo podáis descargar de forma fácil. Además se hacen sugerencias y modificaciones del código.

Descargar código desde GitHub

Medidor de distancia con Arduino y sensor HC-SR04 (II)

Aprovechando la entrada anterior donde explicaba el funcionamiento de un sensor HC-SR04 he decidido modificar un poco el código para agregar unos les de color verde y rojo. Así cuando tengamos un objeto cerca se encenderá el rojo y cuando lo alejemos se encenderá el verde.

En este caso necesitaremos un Arduino Uno Rev 3, un led de color verde, un led de color rojo, dos resistencias de 220 ohmios. Para el que no lo sepa los colores de esta resistencia son rojo, rojo, marrón.

Como ya comenté en el post, como hacer un medidor de distancias con Arduino y un sensor HC-SR04, hace falta que nos bajemos la librería llamada Ultrasonic, descomprimirla y subirla a la carpeta libreries, que se encuentra donde hayamos instalado el Sketch de Arduino.

Descargar librería Ultrasonic

El sensor

Como ya sabemos, el sensor dispone de 4 patillas que las conectaremos de la siguiente forma: VCC a 5V, GND a GND, TRING y ECHO. Como vamos a usar el código del post anterior usaremos los mismos pines de Arduino que son  el TRING a la 7 y el ECHO a la 8.

El esquema

Una vez más os dejo el esquema realizado con el programa Fritzing, el cual es bastante visual y creo que de esta forma se entiende mucho más el como conectar los cables y demás componentes electrónicos.

Medidor de distancias con HR-SR04

El código

Como podéis ver el código es muy parecido al anterior, tan solo tenemos que usar dos pines más para los leds y crear un simple if para decir que si la distancia es menos a 10cm se encienda el led rojo y apague el verde y si es mayor que 10cm que haga lo contrario.

Descargar código desde Github

Ya sabéis que si tenéis alguna duda o queréis comentar lo que queráis respecto al código o al esquema lo podéis hacer mediante los comentarios de abajo.

Medidor de distancia con Arduino y sensor HC-SR04

Hoy voy a traer otro tutorial para Arduino, el cual también es muy sencillo de usar, donde haremos un medidor de distancias con el sensor de ultrasonidos HC-SR04. Así de esta forma podremos medir la distancia de un objeto.

La idea es enviar una señal sonora casi inaudible, para algunos es totalmente inaudible, que rebote en el objeto y al regresar de nuevo al sensor medir cuanto ha tardado en hacer el trayecto, así de esta forma sabremos la distancia.

La velocidad del sonido en el aire (a una temperatura de 20 °C) es de 343 m/s, por lo que el eco tiene que ir y volver, si sabemos que el eco ha tardado t segundos, entonces tenemos que la distancia en metros d es igual:

2d = 343 * t de donde obtenemos d = (343 * t) / 2

Esto es la teoría, la cual no nos va hacer falta para realizar este ejercicio ya que para ello existe la librería Ultrasonic, que tendremos que bajar desde el enlace de abajo, descomprimirla y subirla a nuestra carpeta libreries del compilador IDE.

Descargar librería Ultrasonic

El sensor

Este sensor modelo HC-SR04 dispone de cuatro patillas que son entrada VCC a 5V, GND a GND, TRING y ECHO estas dos van a entradas digitales de nuestra elección. Para el ejemplo que pongo he conectado el TRING a la 7 y el ECHO a la 8.

HC-SR04

El esquema

Aquí os dejo el esquema realizado con el programa Fritzing, así de esta forma no tendréis dificultades a la hora de realizarlo vosotros.

Medidor Distancias con Arduino

El código

Esta librería tal cual viene con un timeout o tiempo de espera de 3ms por lo que la distancia máxima que medirá será de 51cm. La ventaja de tener un timeout tan bajo es que se pueden hacer muchas mediciones en poco tiempo. Si os parece poco podéis cambiarlo en el fichero: Ultrasonic.cpp

Buscamos Time_out= que estará a 3000 y ponemos por ejemplo 30000 para 5 metros y grabamos.

Descargar código desde Github

Con este mismo código pero modificado pretendo en entradas futuras agregar algunas modificaciones como agregarle una pantalla LCD o algunos leds. Así que si os ha gustado o queréis dejar algún comentario con alguna sugerencia. ¡Adelante!

Enviar un tweet con PHP usando la API 1.1 de Twitter

En esta entrada del blog pretendo explicar como enviar por ejemplo un tweet con PHP usando la API 1.1 de Twitter, además decir que es una continuación del post anterior donde explico como crear nuestra aplicación en Twitter Developers.

Por este motivo si te interesa saber como usar la API versión 1.1 de Twitter, te recomiendo que antes leas el otro post para crear la app en Twitter.

El código

Como se puede comprobar necesitaremos modificar el código con nuestros datos de Twttier. Necesitaremos modificar: $consumerKey $consumerSecret $oAuthToken $oAuthSecret. Estos datos tendremos que sacarlos de nuestra app de Twitter.

Este código es realmente simple pero explica el funcionamiento básico de la API de Twitter. Además podremos hacer mas cosas como comprobar quien te ha dejado de seguir, seguir a usuarios, dejar de seguir, crear listas, etc. Para más información tendremos que revisar la documentación de Twitter.

Como ya he comentado este código es muy simple, pero que a partir de aquí ya podremos jugar con él para adaptarlo a nuestras necesidades, así que espero que os guste y ya sabéis que me podéis dejar sugerencias y demás dudas.

Hola mundo con Arduino

Este será mi primer código para ejemplo por lo que será lo más simple posible.

Por fin después de un tiempo esperando, me ha llegado mi Arduino Uno Rev 3 con algunos que otros componentes electrónicos como leds, resistencias, botones, cables, una pantalla LCD y un sensor de ultrasonidos modelo HC-SR04. Por lo que sin perder más tiempo me puse hacer una pequeña prueba para verificar el funcionamiento del Arduino.

Por este motivo decidí hacer un simple código para apagar y encender un led conectado directamente a nuestra placa Arduino Uno. Por lo que necesitaremos:

1. Placa Arduino Uno Rev 3.

2. Un led del color que queramos.

Esquema

Para hacer este montaje vamos a usar la salida digital número 13 de nuestro Arduino, que es la única que lleva una resistencia por lo que podremos conectar directamente el led sin miedo a quemarlo.

Hola_Mundo-Arduino

Conectado el led de la siguiente forma, positivo (patilla larga) a la salida número 13 y negativo (patilla corta) a masa pasamos a abrir el sketch para escribir nuestro código.

Código

El código como ya he comentado arriba es de lo más simple, pero que nos va a venir realmente bien para empezarnos a familiarizarnos con el mundo de Arduino.

Ahora tan solo tendremos que verificar nuestro código y cargarlo en nuestro Arduino usando el sketch.

Actualización: Si queréis podéis copiar el código de arriba, pero también lo dejo en mi cuenta de Github para que lo podáis descargar.

Descargar código desde Github

Página 1 de 3123

Déjame tus datos y te daré un resumen de las entradas de mi blog

También recibirás mi newsletter con más consejos, recursos formativos y ofertas.