HACKER ANGELWHITE GALC

jueves, 23 de febrero de 2017

Extraer, modificar y eliminar los metadatos de un archivo con ExifTool

Editar los meta datos de nuestros archivos puede sernos de utilidad a la hora de organizar al gusto nuestra librería, pero también entra un componente de privacidad. ExifTool nos permite administrar nuestra información, tanto como ver los meta datos, como para editarlos y eliminarlos.
overview
Que es ExifTool?
ExifTool es un programa de software con el que podemos acceder y manipular los metadatos de una gran variedad de formatos (JPEG, PNG, MP3, PDF, WEBM, RAR, RTF, SWF, PDF, RAW,PSD o PSP…) incluyendo archivos de video, sonido, imágenes o texto. Es una plataforma construida sobre Perl y que se utiliza habitualmente desde linea de comandos.
Lo mejor de todo es que es Multiplataforma, quiere decir que puede ser usado en cualquier sistema operativo como Windows, Mac OS X y Linux.
Características: >>
Potente, rápido, flexible y personalizable.
Soporta una gran variedad de formatos de archivo diferentes.
Lee EXIF , GPS , IPTC , XMP , JFIF , MakerNotes, GeoTIFF , ICC Profile , Photoshop IRB , FlashPix , AFCP , ID3 y más …
Escribe EXIF , GPS , IPTC , XMP , JFIF , MakerNotes, perfiles ICC , Photoshop IRB , AFCP y más …
Lee y escribe notas creador de muchas cámaras digitales.
Descifra un acertijo envuelto en un misterio dentro de un enigma.
Numerosas opciones de salida de formato (incluyendo delimitado por tabuladores, HTML, XML y JSON).
Multi-idioma de salida (cs, de, en, en_ca, es_ES, es, fr, it, ja, ko, nl, pl, ru, sv, tr, zh_cn o zh_TW).
Etiquetas geográficas imágenes de los archivos de GPS track log (con corrección de tiempo la deriva!).
Genera registros de seguimiento de imágenes georeferenciadas.
Cambios de valores de fecha / hora de fijar las marcas de tiempo en imágenes.
Renombra los archivos y organiza en directorios (por fecha o por cualquier otra meta-información).
Extractos de las imágenes en miniatura, imágenes de vista previa, y grandes imágenes JPEG de archivos RAW.
Copias meta información entre archivos (incluso de diferente formato de archivos).
Lee / escribe información estructurada XMP.
Elimina la información meta individualmente, en grupos o en conjunto.
Establece la fecha de modificación del archivo de la información EXIF.
Apoya las etiquetas en idiomas alternativos XMP , PNG , ID3 , fuente , QuickTime , perfiles ICC , MIE y MXF información.
Los procesos de árbol entero del directorio.
Crea un archivo de texto de salida para cada archivo de imagen.
Crea formato binario sólo metadatos (MIE) los archivos de copia de seguridad de los metadatos.
Automáticamente copias de seguridad de la imagen original al escribir
Organiza la producción en grupos.
Condicionalmente archivos de procesos basados en el valor de la información meta.
Capacidad para añadir personalizado definido por el usuario las etiquetas.
Apoyo a la GTM (Grupo de Trabajo de Metadatos) recomendaciones.
Reconoce miles de etiquetas diferentes.
Probado con imágenes de miles de modelos de cámaras digitales.
Avanzada detallado y basado en HTML volcado hexadecimal salidas.
Funcionamiento y comandos: >>
Ahora vamos a ver una serie de comandos de ejemplo con los usos más comunes:
exiftool.pl -all= /home/usuario/fotografia.png
Con este comando limpiamos todos los metadatos de un archivo en cuestión, comprobamos que nos crea otro archivo terminado en “.png_original” el cual es una copia de seguridad de la imagen original (con todos sus metadatos). ExifTool nos permite guardar los originales por defecto para luego poder recuperarlos, para borrar las copias de seguridad que hemos hecho tenemos que usar el siguiente modificador:
exiftool.pl -delete_original imagen.jpg
Si queremos elimina todos los metadatos de un directorio y de sus respectivos subdirectorios debemos usar el modificador -r. Recordamos que este comando hará copia de todas las fotos que haya procesado:
exitool.pl -r -all= /ruta/fotos/
Si queremos limpiar metadatos directamente sobre el archivo, sin guardar copia del original, podemos hacerlo con el siguiente comando, una vez hecho este proceso no se podrá recuperar los metadatos de las imágenes procesadas, a menos que lo podáis recuperar una vez borrado:
exiftool.pl -r -imagen_original -all= /ruta/imagenes/
Ahora le indicaremos a ExifTool que debe limpiar metadatos únicamente de los ficheros que tengan una extensión en concreto, para ello usamos el modificador -ext, este modificador tiene dos variantes, en el primer ejemplo hacemos un escaneo a los subdirectorios buscando todas las imágenes .jpg:
exiftool.pl -r -imagen_original -ext .jpg -all= /ruta/imagenes/
Por el contrario, si queremos excluir un tipo de archivo de la búsqueda lo haremos añadiéndole un guión al modificador anterior, es decir:
exiftool.pl -r -imagen_original –ext .jpg -all= /ruta/imagenes/
ExifTool es una herramienta estupenda para modificar o limpiar metadatos en ficheros de todo tipo.
Ahora veremos unos ejemplos: >>
Nos dirigimos a la carpeta donde se encuentra ExifTool,  Para dirigirnos y usar la herramienta directamente presionamos las teclas “SHIFT + CLICK DERECHO”, se les abrirá el CMD, con la ruta del Script, listo para ser ejecutado, como se aprecia en la siguiente imagen.
ex1
Ahora usaremos este comando para ver los metadatos de la imagen: Nota si  la imagen esta dentro de la misma carpeta de ExifTool, pones lo siguiente:
exiftool.pl 1.jpg
Pero en la mayoria de casos lo tenemos en otras carpetas, así que simplemente nos dirigimos a la carpeta de nuestros archivos y arrastramos el archivo al CMD.
exiftool.pl “C:\Users\Jey Zeta\Desktop\Curso completo de Python\1.jpg”
ex2
Ahora al darle ENTER, nos aparecerán los Metadatos que tenga el archivo, en este caso una imagen.
ex3
ex4
Esos son los metadatos que nos dio de la imagen descargada de Internet.
Ahora pegaremos la misma imagen dentro de la carpeta ExifTool.
Pero por lo que destaca especialmente exiftool es por su capacidad para modificar o incluso crear nuevos metadatos, las posibilidades son muy amplias y para conocerlas todas.
Una de las opciones que más me agrada es la de añadir o modificar las coordenadas de una fotografía. Por ejemplo si de repente queremos añadirle las coordenadas. Pongamos Nueva Caledonia 😉 lo haríamos así:
exiftool.pl -exif:gpslatitude=”21 30″ -exif:gpslatituderef=S -exif:gpslongitude=”165 30″ -exif:gpslongituderef=E 1.jpg
ex5
1 image files updated (Quiere decir que se ha actualizado los metadatos de la imagen.)
Ahora ejecutaremos el siguiente comando para ver los cambios.
exiftool.pl 1.jpg
Ahora vemos que al ejecutar el comando nos añade 3  datos GPS
ex6
Lo interesante es que guarda la imagen original, para después poder recuperarla, como se ve en la imagen.
ex7
Otras opciones interesantes son las de modificar la fecha, el autor, los comentarios y como no también la de:
Eliminar todos los metadatos…
exiftool.pl -all= 1.jpg
ex8
Ahora veremos la imagen nuevamente…
exiftool.pl 1.jpg
ex9
Como se aprecia ya borro los metadatos, ahora depende de la imaginación de ustedes usar los comandos que deje en la parte de arriba.
  • Nota debes tener instalado Perl


Descarga ExifTool:
Para mas información sobre esta herramienta visitar la pagina del proyecto.
Espero que les haya gustado y sobretodo, que les haya servido este Post.
Gracias a nuestro amigo y colega  Jey Zeta

Cómo saber dónde está alguien por un chat de WhatsApp

No conocía esta característica, pero parece bastante peligroso que una persona pueda saber por qué dirección IP otra persona está conectándose a WhatsApp. Viendo el interés que el mundo tiene en la seguridad de WhatsApp y su privacidad tanto en cómo espiar WhatsApp, esta es una característica peligrosa que atenta contra la privacidad de las personas, así que lo mejor es que la deshabilites.

El estudio de este fallo lo publicaron Luis Delgado y Ferran Pichel en Security By Default, no solo para aprovechar esta característica con el fin de localizar la dirección IP de una persona, sino como fallo de seguridad que provocaba una Denegación de Servicio en la app, además de poder generar un consumo no controlado de recursos.

El problema de se seguridad radica en que por defecto en las nuevas versiones de WhtasApp para Android - en iPhone aún no se ha introducido esa característica -, la aplicación muestra una imagen de previsualización de cualquier URL que ha sido enviada como mensaje de chat en WhatsApp.

Figura 1: Mensaje de WhatsApp con URL que muestra previsualización de imágenes

La funcionalidad de mostrar una previsualización en miniatura de una imagen de la dirección web compartida es muy común en cualquier red social en la que se permite hacer una publicación de URLs, como por ejemplo Facebook o Google+, y por eso deben haberla introducida. El detalle sin embargo es sutil, y cambia por completo el escenario, ya que en Facebook o Google+ la imagen es descargada desde la red social cuando es visualizada por un cliente, pero al hacer que esto sea por defecto en un cliente móvil los riesgos de seguridad son equivalentes a cuando se permite descargar una imagen remota por defecto en un correo electrónico - algo que por ejemplo Mail para iOS hacía mal y corrigió por motivos de seguridad y privacidad -.

Figura 2: Página PHP en servidor web con img a servidor web que controla los accesos a la imagen

Enviando por mensaje una URL de un sitio web que tenga una imagen que sea incluida desde un servidor web controlado, fuerza al cliente de WhatsApp para Android a hacer una petición al servidor web para descargarse la imagen. En esa petición se puede ver la dirección IP desde la que el cliente de WhatsApp para Android, es decir, el móvil de la persona que está detrás de un número de teléfono, se está conectando.

La ubicación geográfica de las direcciones IP no funciona extremadamente bien y puede que salgan cosas dispares a veces, pero puede suponer un riesgo para la privacidad de una persona en muchos casos en los que sí que se puede geo-posicionar más o menos correctamente dicha dirección IP.

Figura 3: El servidor web registra la dirección IP desde donde se está conectando el cliente de WhatsApp

Además de eso, en la petición va también el USER-AGENT de la petición, donde se dan muchos detalles del software que está corriendo tras un determinado número de teléfono, que en un esquema de ataque dirigido puede ser importante, sobre todo hoy en día que se conocen bugs para los terminales Android no actualizados. No hay que olvidar que los usuarios de terminales con Android, debido a la dispersión de hardware, son los que menos actualizados tienen el sistema operativo, así que son los más expuestos a exploits conocidos.
Figura 4: Distribución de versiones de Android ofrecidas por Google
Como curiosidad extra, si además se quiere, esta utilidad podría utilizarse para realizar ataques desde Internet a los servidores de una red interna, enviando una URL con una imagen que apunte a http://ServidorInterno/app.asp?1; shutdown -- de forma similar a como contaba yo que por culpa de las opciones de carga de imagen en Mail para iOS el jefe se podría cargar la base de datos.

Si tienes WhatsApp para Android lo mejor es que desactives esta opción, que aporta más bien poco para tu seguridad y privacidad. Además, como precaución general procura no seguir enlaces que recibas por mensajes de WhatsApp, ya que aunque no se haga la carga automática de las imágenes, si haces clic en un enlace que recibes por WhatsApp y te lleva a un servidor web controlado, vas a hacer pública tu dirección IP, y sucederá lo mismo.

Figura 5: Ajustes de carga de imágenes en URLs en WhatsApp para Android

Como última recomendación, si quieres evitar problemas de privacidad extras, recuerda que en WhatsApp puedes quitar cosas como informar si estás online, la última vez que te conectaste, etcétera. Es decir, puedes poner un poco más de privacidad a su uso.


GRACIAS AL APORTE DE NUESTRO AMIGO  CHELMA ALONSO



martes, 31 de enero de 2017

Introducción Decidí realizar este proyecto por el precio abusivo de un usb rubber ducky. La mayoría de los USB comunes son explotables debido a la vulnerabilidad “BadUSB”. Esto permite a los piratas informáticos re-programar el micro-controlador de estos para que actúe como un “dispositivo de interfaz humana” (HID)/Teclado y realizar las pulsaciones de teclado personalizados en nuestra máquina de destino. Este escenario es a menudo llamado “HID Payload Attack”, ya que tienes que entregar el USB para la ejecución (hablaremos de esto mas adelante). A pesar de que casi todas las unidades flash/USB son explotables, sólo hay una manera y es reprogramar micro controladores “Phison” (Por ahora). En este tutorial vamos a determinar el micro controlador de la unidad flash (USB), compilar el código fuente para las herramientas que necesitamos que esta publicado en Github, hacer un “custom firmware” con una carga útil de HID incorporada y convertir nuestra unidad flash usb inofensiva en un teclado malicioso diseñado para ayudarnos a lograr el compromiso del equipo de la víctima. El proceso es parecido a compilar y flashear roms en un dispositivo Android.


Necesitamos:
  • Usar Windows
  • Una unidad flash USB 3.0 con Phison 2303 (2251-03) de micro controlador.
Voy a utilizar la “Toshiba TransMemory-MX USB 3.0 8GB” en este tutorial.
  • Poder abrir la caja de su dispositivo USB sin dañarlo.
*Notas:

Podemos encontrar una lista de dispositivos compatibles conocidos en GitHub.
 https://github.com/adamcaudill/Psychson/wiki/Known-Supported-Devices

A veces, tener un dispositivo confirmado, no significa que se está utilizando el PS2251-03, ya que los fabricantes pueden utilizar diferentes controladores, incluso en los mismos modelos de dispositivos.

-Por Favor, continúe bajo su propio riesgo, no hay garantía de que el dispositivo seguirá funcionando.

¡A pesar de que no debería aparecer ningún problema!

Determinar el Micro controlador de nuestro USB

Antes de empezar queremos asegurarnos de que nuestro USB utiliza el controlador compatible. Podemos usar un programa llamado “Flash Drive Information Extractor” para recopilar la información necesaria de nuestro USB:
 http://www.antspec.com/files/usbflashinfo.zip

No requiere instalación, se puede usar directamente desde el archivo ZIP. Sólo tiene que abrir la herramienta y pulsa el botón “Obtener Información USB Flash Drive”, mientras que tienemos el USB insertado en el PC. Si la unidad utiliza el Controlador Phison 2303 (2251-03)  el resultado debe ser parecido a esto:




Sin embargo, si el dispositivo USB tiene un micro controlador diferente, lo más probable es que no se puede reprogramar para hacer un dispositivo HID con este exploit. Recomiendo comprobar los dispositivos compatibles conocidos en github y pedir uno de esos, en Ebay.es tienes gran cantidad y directamente te llega a tu puerta.

Configurar el entorno de trabajo

El desarrollador del exploit recomienda usar cualquier versión de “Microsoft Visual Studio 2012” o superior para compilar las herramientas:https://www.visualstudio.comy “SDCC” para crear el firmware personalizado:http://sdcc.sourceforge.net/Visual Studio suele tomar varias horas para descargar y no puede ser detenido, así que asegúrate de que tiene suficiente tiempo disponible. También ocupa bastantes gigabytes en su disco principal, alrededor de 10 GB en mi SSD, lo cual es molesto si solo lo vamos a usar una par de veces.

Descarga y compilación del código fuente

Para poder modificar el código antes debemos descargarlo, el código fuente se publico en github por adamcaudill:

https://github.com/adamcaudill/Psychson

En realidad Visual Studio viene con una característica interesante, vamos a clonar todo el repositorio. Incluso podemos interactuar con Visual Studio(VS) desde el sitio github:




Después de la clonación y la apertura del repositorio. Lo más probable es ver tres soluciones.
  • DriveCom
  • EmbedPayload
  • Injector
Vamos a necesitar “DRIVECOM” y “EmbedPayload” solamente, si se abre se puede compilar conCtrl + Shift + B
 o
 Menu bar – Build – Build SolutionSi no se puede clonar el repositorio a través de Visual Studio, descargue el archivo .zip desde github y abrir los archivos .sln en cada carpeta de las soluciones.DRIVECOM y EmbedPayload debería estar ya en el directorio … Psychson toolsE: Documents Bad_USB Psychson tools

Obtener una “Burner Image”

Una “Burner Image” es necesaria para hacer dumping y flashear el firmware del usb. Estos se denominan normalmente utilizando la convención “BNxxVyyyz.BIN”.Las “Burner Images”para controladores Phison se pueden encontrar aquí:http://www.usbdev.ru/files/phison/El sitio sólo está disponible en ruso, podemos encuentrar el enlace de descarga si escaneamos el sitio buscadno “BN03” (BN implica “Burner Images” y 03 corresponde a PS2251-03)Extraigan los archivos:E: Documents BadUSB Burner_Image

Todas las “Burner Image” debe hacer el trabajo bien, pero se puede usar la versión más reciente que se indica por la parte “VYYY” del nombre.

 

Descargar Duck Encoder

El “Duck Encoder” es una herramienta multiplataforma basada en Java que convierte las secuencias de comandos en las cargas útiles de HID. Se basa en el exploit que nombrabamos antes: “BadUSD” también llamado “Rubber Ducky” creado por Hak5:

https://github.com/hak5darren/USB-Rubber-Ducky/wiki/Downloads

No se olvide de instalar Java:

https://www.java.com

Lo guardé en

E: Documents Bad_USB DuckEncoder


Crear un Firmware personalizado

En este punto todos los preparativos ya están echos y pueden seguir utilizando las herramientas previamente descargadas. En este paso simplemente tenemos que ir a nuestro directorio … Psychson firmware  y ejecutar build.bat. Si todo va bien, verá una nueva carpeta con muchos archivos diferentes en el interior.




fw.bin es el archivo que usaremos a continuación.

Escribiendo un Script

Te puedes preguntar en qué lenguaje vamos a escribir nuestro script. Como el DuckEncoder se basa en el “Rubber Ducky” vamos a utilizar “Duckyscript” como idioma. La sintaxis es bastante fácil.  se Pueden encontrar aquí instrucciones más detalladas:

https://github.com/hak5darren/USB-Rubber-Ducky/wiki/Duckyscript

Vamos a seguir y crearemos un archivo .txt en nuestro directorio preferido.
E: Documents Bad_USB DuckEncoder script.txt
Pensé en mostrarles algo más interesante que un script “Hello World” así que hice éste:



Como usted puede suponer, el BAD USB  “pulsa” la tecla Windows + R y apagar de inmediato el ordenador. Además se puede ver claramente que escribí “/” en lugar de “-“. Eso es porque nuestro “Teclado” (BAD USB) tiene un diseño de Estados Unidos y las ventanas se establece en Déu en mi país. Tenga en cuenta que tenemos que cambiar el diseño de las ventanas de los Estados Unidos y escribir el guión de la manera que haríamos normalmente, o la forma en su PC víctimas sería escribirlo. No sea confuso de la entrada.

Usted puede incluso utilizar scripts personalizados y hacer algo de ingeniería inversa:

https://github.com/hak5darren/USB-Rubber-Ducky/wiki/Payloads]https://github.com/hak5darren/USB-Rubber-Ducky/wiki/Payloads

Convirtiéndolo en un HID Payload

Es el momento de empezar a utilizar la terminal de windows – cmd.

java -jar “PATH to duckencode.jar” -i “PATH to script.txt”-o “payload.bin Path”

Ejemplo:
  java -jar E:DocumentsBadUSBDuckEncoderduckencode.jar -i E:DocumentsBad_USBDuckEncoderscript.txt -o E:DocumentsBad_USBDuckEncoderinject.binNo vamos a conseguir ninguna salida, pero inject.bin se debe crear en “E: Documents Bad_USB DuckEncoder ” en mi caso

Insertar el Payload el firmware

Ahora tenemos que utilizar las herramientas que construimos con Visual Studio. Obviamente EmbedPayload es para Payload. Simplemente tenemos que ejecutarlo en cmd:“Path to EmbedPayload.exe” “PATH to payload” “PATH to the firmware we built”para mi es:
 E:DocumentsBadUSBPsychsontoolsEmbedPayload.exe E:DocumentsBad_USBDuckEncoderinject.bin E:DocumentsBad_USBPsychsonfirmwarebinfw.binNota: ese fw.bin incluye el payload ahora. Tu puedes sobreescribir el payload ejecutando build.bat otra vez.

Volcado del firmware actual de la unidad flash USB

Yo les aconsejo hacer una copia del firmware actual en su unidad flash USB por si desea restaurar. Para cualquier acción que queremos tener en nuestro USB tenemos que usar DRIVECOM que está en nuestra carpeta “herramientas”.“PATH to DriveCom.exe” /drive=”Drive Letter of our USB” /action=DumpFirmware /burner=”PATH to our burner image” /firmware=”PATH of the output.bin”En mi caso:E:DocumentsBad_USBPsychson-mastertoolsDriveCom.exe /drive=F /action=DumpFirmware /burner=E:DocumentsBad_USBFirmwareBN03V117M.BIN /firmware=E:DocumentsBad_USBoriginalfw.bin

Flashear el Firmware

Finalmente podemos entregar el muy maliciosa apagar payload integrado en el firmware a nuestra unidad flash USB:“PATH to DriveCom.exe” /drive=”Drive Letter” /action=SendFirmware /burner=”PATH to our burner image” /firmware=”PATH to the firmware”En mi caso:E:DocumentsBadUSBPsychsontoolsDriveCom.exe /drive=F /action=SendFirmware /burner=E:DocumentsBad_USBFirmwareBN03V117M.BIN /firmware=E:DocumentsBad_USBPsychsonfirmwarebinfw.binUna salida exitosa debe tener este aspecto:




Observe que DRIVECOM está cambiando el modo de nuestra USB a modo de arranque de forma automática al flashear el firmware. Ahora que nuestra unidad flash USB se ha convertido en un teclado que no podemos cambiar los modos más con nuestras herramientas, ni el acceso a la memoria, pero eso es un problema menor. En la siguiente sección me centraré cómo resolver este problema.

Ajuste de nuestro dispositivo en “modo de arranque” Manualmente

Citar
@linuxFR Take a look at this picture:https://cloud.githubusercontent.com/assets/9080593/4591190/2a5e93da-5069-11e4-9daa-9e22539ec801.JPGYou can boot manually, if you unplug the device, put a needle (or some other very small/fine metalthing) between pin 2 and 3 at the side above the TOSHIBA label. According to the picture it would be left side of the chip and the second and third pin counting upside down. With the needle at the pins you have to replug the device and wait for ~1 second, remove the needle and the stick is in boot mode (lamp keeps glowing). Now you can flash, but to me it only worked for custom firmware and I couldn’t get back to original firmware.Hope I could help.



Si usted quiere tomar medidas adicionales para su BAD USB te darás cuenta de que ni DRIVECOM ni en Windows ni ningún otro sistema operativo pueden acceder a ella, ya que es un teclado después de todo. Tenemos que abrir la tapa de nuestra unidad USB y conectar dos pines del microcontrolador mientras enchufa la unidad en nuestro PC.Desde el círculo está en la esquina superior izquierda de mi controlador – desde esta perspectiva – Tengo que conectar los dos pasadores de la parte inferior izquierda:(Puede que tenga que abrir la imagen en una nueva pestaña y hacer zoom )




Yo suelo usar el borde de un conector USB para conectar estos dos pines. Además de un cable de extensión USB puede ser muy útil en este escenario. Parece que es difícil, pero usted se acostumbrará a esto. Utilice lo que usted se sienta más cómodo, sin dañar su unidad flash USB. Si lo haces correctamente la unidad se mostrará en windows de nuevo:



Y podemos modificar nuestra unidad o el firmware original de nuevo.
Si no, su PC se apagará, esfuércese más la próxima vez.Notas:
  • El BAD USB puede no funcionar en todos los PC con Windows, incluyendo la mía, ya que puede no tener los drivers necesarios
  • Tenga en cuenta que usted no será capaz de acceder a la memoria, mientras que su unidad USB está fingiendo ser un dispositivo HID
Reflexiones finales

El Bad USB es una herramienta muy poderosa si usted tiene acceso a el ordenador de la víctima, incluso pensaron que windows podria protegerle, les deja la carga automática de los controladores USB. Además se evita la detección AntiVirus ya que es un teclado en lugar de un virus.Si usted está pensando en hacer de un simple pretexto para insertar nuestra usb en una PC de la empresa de su elección, por favor, tenga en cuenta que tener una unidad flash usb real para el caso lo más probable es que va a ser atrapado, por lo que puede escapar fácilmente .Además me gustaría mencionar que realmente aprecio retroalimentación constructiva de ustedes. Así que no dude en contactar si encuentra algún error o quieres que mejorar algo!

Fuente: luisiblogdeinformatica.com