jueves, 9 de junio de 2011

Esteganografía, oculta texto en una imagen

La esteganografía, técnica que permite entregar mensajes camuflados dentro de un objeto(contenedor), de forma que no se detecte su presencia y pasen inadvertidos. La estenografía se conoce desde tiempos inmemoriales, teniendo los primeros referentes en la antigua Grecia.

El término proviene de la unión de dos palabras griegas: steganos, (oculto) y graphos (escritura). La esteganografía se ha empleado con éxito a lo largo de la Historia con distintos procedimientos y en particular durante la II Guerra Mundial.

Esteganografía moderna
La estenografía ha evolucionado con la aparición de los ordenadores, ahora no es necesario incluir en el “punto” de una “i” un microfilm, como llegó a hacerse. Actualmente es posible ocultar un texto dentro de ficheros de imagen, audio y vídeo. Algunos programas permiten incluso ocultar, entre otros tipos de archivos, ficheros PDF.

La ventaja de utilizar un ordenador para estos propósitos es que no sólo podemos incluir un mensaje, también podemos cifrar su contenido de forma sencilla. Con esto conseguimos dos mecanismos de seguridad.

Por un lado ocultamos la existencia del mensaje y por otro, en caso de ser descubiertos, el cifrado complicará su lectura en función del algoritmo empleado y la complejidad de la clave utilizada. La esteganografía es razonablemente segura para intercambiar información en la red.

Esteganografía, uso de Steghide
Existen muchos programas libres y de pago con este fin, pero he elegido Steghide por su sencillez. Steghide funciona desde la consola en Windows y GNU/Linux, y es un proyecto de código abierto. La sintaxis no es complicada. Para incluir un mensaje escribiremos:
steghide embed -cf nombre.imagen -ef fichero.texto
Para extraer el mensaje:
steghide extract -sf nombre.imagen
Steghide soporta un número razonable de formatos contenedores: JPEG, BMP, WAV y AU. No soporta ficheros de vídeo, pero si buscas en la red, existe software para ese propósito. Para los usuarios de GNU/Linux comentar que Steghide, en concreto, está disponible en formato RPM, aunque lo incluyen muchas distribuciones.

Asociada con cifrado de mensajes, la esteganografía puede ser útil para almacenar datos en la nube que queramos tener disponibles desde cualquier lugar, simplemente elige una buena contraseña y será difícil que nadie acceda a lo que deseas ocultar. Eso sí, comprueba antes que en el proceso de subida o bajada la imagen no quede alterada.

Web | steghide

miércoles, 8 de junio de 2011

10 cosas de Javascript que (seguramente) no sabías y te sorprenderán

Javascript, el lenguaje de programación interpretado del lado del cliente más importante de la actualidad. Su potencial es muy grande pero, a su vez, guarda en su interior una serie de sorpresas y curiosidades bastante llamativas. Si quieres profundizar más, date un paseo por el artículo fuente de Smashing Magazine.

  • Null es un objeto (desde luego, paradójico)
alert(typeof null); //alerts 'object'

  • NaN es un número (otra paradoja más y el universo implosiona)
alert(typeof NaN); //alerts 'Number'

  • array() False es True
alert(new Array() == false); //evaluates true

  • La función replace() acepta como parámetro funciones callback
alert('10 13 21 48 52'.replace(/\d+/g, '*')); //replace all numbers with *

  • Las expresiones regulares se pueden testear con test() además de con match()
alert(/\w{3,}/.test('Hello')); //alerts 'true'

  • Puedes falsear el alcance de una variable o función (algo muy útil la verdad)
var animal = 'dog';
function getAnimal(adjective) { alert(adjective+' '+this.animal); }
getAnimal('lovely'); //alerts 'lovely dog';

  • Las funciones se pueden ejecutar a si mismas... y al parecer sin caer en un bucle infinito ni nada
(function() { alert('hello'); })(); //alerts 'hello'

  • Firefox no lee y devuelve los colores en hexadecimal sino en RGB

  • 0.1 + 0.2 ! 0.3 (¿otra paradoja? Boooooommm!!!)

  • Undefined puede ser definido, es decir, que no es una palabra reservada (fail!)
undefined = "I'm not undefined!";
var someVar;
alert(someVar == undefined); //evaluates false!

Sin duda ¡¡¡que curioso!!!

Vía | Smashing Magazine

miércoles, 1 de junio de 2011

humans.txt

humans.txt es una iniciativa para conocer a los autores de los sitios web que visitamos. Al igual que el fichero robots.txt, se ha de colocar en la raíz del sitio web y se trata de brindar información acerca de las personas que han intervenido en el proceso de creación así como las tecnologías utilizadas. La estructura del fichero debería ser similar a la siguiente:

/* TEAM */ 
Tu cargo dentro del proyecto: Tu nombre.
Site: E-mail, enlace a formulario de contacto,...
Twitter: tu nombre de usuario en Twitter.
Location: Ciudad, Comunidad, País. [...]
/* THANKS */
Name: nombre o url
[...]
/* SITE */
Last update: YYYY/MM/DD
Standards: HTML5, CSS3,..
Components: Modernizr, jQuery, etc.
Software: Software usado para el desarrollo del site.

humans.txt

martes, 31 de mayo de 2011

Lo que probablemente no sabías de PHP

Utilice ip2long () y long2ip () para almacenar las direcciones IP como enteros en lugar de cadenas en una base de datos. Esto reducirá el espacio de almacenamiento en casi un factor de cuatro (15 bytes para char (15) frente a 4 bytes para el número entero), que sea más fácil para calcular si una determinada dirección cae dentro de un rango, y las búsquedas velocidad y tipo (a veces un poco).

Validar direcciones de correo electrónico mediante la comprobación de que el nombre de dominio existe con checkdnsrr () . Esta construido en función de los controles para garantizar que un nombre de dominio especificado resuelve a una dirección IP. Una función definida por el usuario simple que se basa en checkdnsrr () para direcciones de correo electrónico válida en parte se puede encontrar en los comentarios de los usuarios en la sección de documentación de PHP. Esto es útil para la captura de esas personas ocasionales que piensan que su dirección de correo electrónico es 'usuario@wwwphp.net' en lugar de 'usuario@php.net.

Aprende a amar el operador ternario .

Prevenir los mensajes de error potencialmente sensibles de ser mostrado a los usuarios con el error_reporting (0). Lo ideal sería que los informes de errores deben ser completamente desactivado en un servidor de producción desde el interior de php.ini . Sin embargo, si usted está en un servicio de hosting compartido y no le dan su propio php.ini , entonces su mejor apuesta es agregar error_reporting (0), como la primera línea en cada una de las secuencias de comandos (o utilice con require_once () .) Esto evitará que las consultas SQL potencialmente sensibles y los nombres de ruta que se muestren si las cosas salen mal.

Utilice gzcompress() y gzuncompress() para comprimir de forma transparente y descomprimir cadenas largas antes de guardarlos en una base de datos. Estas funciones integradas de utilizar el algoritmo de gzip y puede comprimir texto hasta un 90%. Puedo usar estas funciones casi cada vez que de lectura / escritura a un BLOB de campo dentro de PHP. La única excepción es cuando necesito todas las funciones de indexación de texto.

lunes, 30 de mayo de 2011

CSS3 efecto texto en 3D


h1 {
       text-shadow: 0 1px 0 #ccc,
       0 2px 0 #c9c9c9, 
       0 3px 0 #bbb,
       0 4px 0 #b9b9b9,
       0 5px 0 #aaa,
       0 6px 1px rgba(0,0,0,.1),
       0 0 5px rgba(0,0,0,.1),
       0 1px 3px rgba(0,0,0,.3),
       0 3px 5px rgba(0,0,0,.2),
       0 5px 10px rgba(0,0,0,.25),
       0 10px 10px rgba(0,0,0,.2),
       0 20px 20px rgba(0,0,0,.15);

domingo, 29 de mayo de 2011

Crear diapositivas de imágenes en HTML5 con SlideMyPics

SlideMyPics es un servicio que nos permite crear slideshows de imágenes en HTML5 de una manera muy sencilla que no nos tomará más de 3 minutos crear una diapositiva con nuestras fotos preferidas.

Su uso es muy simple, sólo tienen que elegir la red social de la cual quieren importar los álbumes y darles acceso con nuestros datos de login. Luego tienen que elegir los álbumes disponibles y seleccionar las fotos que van a agregar a la diapositiva.

Lo bueno es que tiene varias opciones de personalización del diseño, podemos elegir entre tres plantillas distintas, personalizar el fondo de la diapositiva, agregar música de fondo desde videos de YouTube, y obviamente la posibilidad de generar un código único para compartir en sitios web.
Visto en FeedMyApp

sábado, 28 de mayo de 2011

php detecta dispositivo/plataforma

Mobile_Detect es una sencilla clase de PHP que permite la detección de las plataformas para dispositivos móviles más conocidas: Android, Blackberry, Opera Mini, Palm, Windows Mobile, así como las genéricas.

Su uso es muy sencillo. Basta con incluir e instanciar la clase:
include("Mobile_Detect.php");
$detect = new Mobile_Detect();
y comprobar:
if ($detect->isAndroid()) {
    // código para una plataforma Google Android
}
Los métodos disponibles son isAndroid(), isBlackberry(), isOpera(), isPalm(), isWindows(), isGeneric(). Si sólo estamos interesados en saber si el usuario está usando un dispositivo móvil pero sin preocuparnos de qué plataforma:
if ($detect->isMobile()) {
    // cualquier plataforma móvil
}

viernes, 27 de mayo de 2011

Compartir código desde Codr no podría ser más fácil. La página es tan simple que prácticamente es como un editor normal de texto, a secas. Se trata únicamente de un sitio desde donde podremos mostrar a otros el código que vayamos escribiendo.


Codr genera un link único que utilizaremos para que, a quien se lo enviemos, pueda ver el código que deseamos compartir. Además, cabe señalar que todo esto es en vivo, cada que agreguemos una nueva línea o que modifiquemos algo, lo mismo sucederá en la página que visualizan nuestros contactos.

Y si querías más, para los más flojos, o para los que les gusta optimizar su tiempo, tiene la posibilidad de arrastrar un archivo que tengamos en nuestro equipo, y Codr automáticamente lo leerá y copiará su contenido por ti. Codr soporta el remarcado de los siguientes lenguajes: html, css, js, php, py, java, cpp.

Web: Codr

jueves, 26 de mayo de 2011

Generador CRUD online para PHP



PhpScaffold.com es una sencilla herramienta online que puede ser de interés para personas que desean gestionar las operaciones básicas CRUD tablas mediante una aplicación php sin importarle el aspecto gráfico. A partir de una consulta create table obtenida por ejemplo de una exportación mysql es capaz de crear los ficheros PHPs de listado, alta, baja y modificación de elementos de esa tabla.
Generador de código | phpscaffold.com

miércoles, 25 de mayo de 2011

herramientas para comprobar la propagación de los DNS

Cuando estamos empezando un nuevo proyecto que incluye un dominio recién registrado o cuando hemos cambiado de hosting y esperamos la propagación de los DNS es útil ver cómo se va llevando a cabo esta tarea.




Con estas dos herramientas pueden comprobar un dominio y ver cómo se están propagando los DNS en los distintos routers de internet.