miércoles, diciembre 21, 2016

El dron del USNS Bowditch y sus mediciones: ¿Caracterizando el canal SOFAR?

Esta última semana se ha publicado la noticia de la captura y posterior devolución por parte de China de un dron submarino encargado de hacer mediciones de temperatura , salinidad y otras parámetros no clasificados de la columna de agua en mar de China, en una zona donde existen tensiones estratégicas entre varios países. El dron pertenece al USNS Bowditch, buque de la clase Pathfinder encargado de diversas investigaciones oceanográficas y operado por la US Navy. Fue capturado por la marina China a unas 50 millas al noroeste de la Bahía de Súbic en Filipinas.

El dron , Slocum Glider,no tiene equipamiento clasificado. Sus especificaciones pueden consultarse en la web del fabricante y el modelo que es Slocum G2 Glider. Con apenas 50 kg de peso, una longitud de 1.5 metros y 22 cm de diámetro, puede operar en dos rangos de profundidades: de 4 a 200 metros y de 40 a 10000 metros (data sheet completo). Se configura con un conjunto de sensores de entre más de cuarenta a elegir y dispone de diversos enlaces - incluido con la red iridium - para mandar los datos que recoge.

La temperatura, salinidad y presión pueden parecer anodinos datos oceanográficos, pero permiten caracterizar una capa de agua llamada el Canal SOFAR o deep sound channel: La principal propiedad de esa capa es que la velocidad de propagación del sonido en la misma es mínima y permite que una onda sonora de baja frecuencia viaje por el mismo miles de kilómetros antes de que se disipe. La localización de esta capa depende de la temperatura, la presión y la salinidad. Colocando hidrófonos en el mismo se puede usar par detectar submarinos, cosa que los Estado Unidos hicieron durante la Guerra Fría con el sistema SOSUS.

Simplemente tengo la teoría que los datos que recogía el dron tienen un doble objetivo: Por un lado el estudio oceanográfico y por otro lado estudiar dónde en el Mar de China se encuentra dicho canal, que es vital para la guerra submarina (y no se puede olvidar que en la Bahía de Subic, los EEUU tienen una base naval)

martes, noviembre 22, 2016

Tor: ¿Bloqueado en algunos países?

Tor: ¿Bloqueado en algunos países?

No sigo demasiado las novedades del Proyecto Tor, un software y una serie de servidores que permite realizar una navegación más o menos anónima y que intenta proteger el tráfico de nuestro ordenador de miradas indiscretas. Es usado por muchas personas en países donde la censura y el análisis del tráfico de red a través de técnicas DPI están a la orden del día para intentar localizar a ciudadanos desafectos. Hoy, vía @revskills llegaba a un mensaje mandado a la lista de correos del proyecto Tor donde se habla que hay ciertos países que han conseguido dificultar - incluso bloquear - su uso: están a la orden del día

I increasingly think we need a network team engineer who focuses on the censorship side of things. We have a growing number of countries where Tor is being blocked in new and surprising ways -- Kazakhstan, Egypt, Turkey, etc -- and there is nobody on the Tor side who is investigating them or working to fix them or even keeping up-to-date on what's happening. I get that there's value in having another more generic network team developer too, so I don't want to stomp in and declare this as a priority over that though.

Si realmente eso lo han conseguido países como Turquía o Egipto, me pregunto que no serán - y que planes no tendrán - países tecnológicamente más avanzados. Siempre hay que recordar que en esto de la censura en Internet, no importa que un % bajo de la población lo use, lo importante es que el nivel sea lo suficientemente complejo para que la inmensa mayoría de la misma no pueda acceder a estar redes. El Gran Firewall de China es un ejemplo de esto.

Sobre la censura de Tor en Egipto, se puede leer un Egypt: Media censorship, Tor interference, HTTPS throttling and ads injections?

miércoles, octubre 05, 2016

Yahoo analiza los correos de sus usuarios para las fuerzas de seguridad

En varios medios de comunicación se ha publicado la siguiente noticia:Yahoo analiza los correos de sus usuarios por encargado de varias agencias de seguridad de EEUU. Reconozco que no me sorprenda en absoluto, sobre todo desde que tuve conociendo de la existencia de Communications Assistance for Law Enforcement Act. Todos los gobiernos tienen diferentes leyes que le facultan a la intervención electrónica de las comunicaciones. No iba a ser distinto con el caso del correo electrónico.

Leyendo diferentes tweets sobre el tema, algunos sugieren cerrar la cuenta en Yahoo y usar otro servicio de correo. A mi esa respuesta me parece llena de ingenuidad: ¿De verdad pensamos que Google o Apple o Microsoft no se enfrentan a los mismos requerimientos legales que Yahoo en EEUU?. ¿Qué no ocurre lo mismo en los países europeos?. Desde mi punto de vista, lo que ocurre es que todavía nadie ha filtrado la información.

El que quiera preservar esa privacidad tendrá que usar sistemas extremo a extremo de cifrado como PGP o GPG y verificar las firmas que utiliza. ¿Qué tanto por ciento de personas usan esta solución?. La nube ha hecho realmente sencilla la monitorización de información de correo.

martes, junio 21, 2016

WSL: Windows Subsystem for Linux. Artículos de Microsoft

WSL es el nombre del subsistema de Windows que permite la ejecución de binarios originales de Linux. Para lograrlo, Windows emplea una serie de capas de emulación encargadas de cargar los binarios de Linux, crear los procesos, traducir las llamadas al sistema y traducir el acceso al sistema de ficheros. Microsoft ha publicado una varios artículos acompañados de vídeos donde describen como han implementando toda esta funcionalidad.

Todas las entradas sobre este tema se encuentran archivadas en la url wsl. Ahí se podrá comprobar la existencia de nuevas entradas sobre el tema.

viernes, junio 17, 2016

Cuentas de github comprometidas

(vía Slashdot) Un número indeterminado de cuentas en github - uno de los repositorios de código fuente y gestión de proyectos más grandes de Internet - han sido comprometidas debido al uso de las mismas contraseñas en un sitio de terceros, hasta ahora desconocido. Las cuentas de github comprometidas compartirían contraseñas y usuarios con ese sitio. github está contactando con los usuarios cuyas cuentas han sido comprometidas para que cambien las contraseñas de las mismas.

Parece ser que los repositorios de código no han sido alterados, pero no estará de más que se compruebe el contenido de los mismos porque este ataque sería la forma más sencilla de dejar una puerta trasera oculta en el código de aquellas cuentas comprometidas.

Este tipo de ataques nos debe de recodar unas normas básicas sobre seguridad de las contraseñas:

  • No compartir contraseñas entre distintos sitios, aunque hay que reconocer que es difícil no hacerlo.
  • Usar autenticación de doble factor si está disponible.
  • Cada cierto tiempo, cambiar las contraseñas de los sitios en los que tengamos cuenta.
  • En caso de un ataque a un sitio con acceso no autorizado, no usar una contraseña que consideremos definitiva, puesto que puede ocurrir que todavía no se haya cerrado el problema de seguridad que causó la brecha de seguridad. Estar atentos, si se puede, a los registros de acceso para controlar cualquier actividad sospechosa.

jueves, junio 16, 2016

APFS: Un nuevo sistema de ficheros para MacOS X (ahora macOS Sierra)

Los años no han pasado en balde por HFS+, el sistema de archivos introducido en 1998 en la versión 8.1 de MacOS (classic) y que desde entonces ha sido el estándar en todas las versiones de MacOS X. Aunque hace unos años hubo un tímido intento de usar ZFS, llegando MacOS X 10.5 (Leopard) a tener soporte de lectura, no se siguió desarrollando. Sin embargo,las limitaciones existentes en HFS+ han llevado a Apple a desarrollar un nuevo sistema de ficheros, APFS con el objetivo de que MacOS disponga de un sistema de ficheros moderno dejando atrás los problemas de HFS+.

En APFS la unidad de almacenamiento básico es un contenedor (container) dentro del cual hay varios volúmenes o sistemas de ficheros, los cuales tienen sus propios espacio de nombres. Estos volúmenes comparten todo el espacio libre presente en el contenedor. Un contenedor , según la documentación de Apple se mapea a una entrada en la tabla de particiones GPT.

APFS expande sus estructuras internas para dar soporte a sistemas de fichero que puedan contener muchos más entradas y de tamaño superior, optimizaciones para que tenga más rendimiento en discos SSD, cifrado de datos más granular o un sistema de copy on write para que las actualizaciones sean resistente a errores, sustituyendo al journaling

Pero lo que hace potente a este nuevo sistema de ficheros son características como el clonado de ficheros y directorios, que permite o los snapshots. Características similares a estas existen en Linux en btrfs

Parece ser que Apple quiere publicar las especificaciones del sistema de ficheros para que utilidades de tercero puedan acceder a los discos que usen este nuevo formato. Veremos en qué queda.

Me pregunto si Dominic Giampaolo, que creó el sistema de ficheros para BeOS también está detrás de este diseño. Para quien tenga curiosidad, publicó el libro Practical File System Design with the Be File System

miércoles, junio 08, 2016

Alejandro no ha ido a la cárcel por 79,20 euros

Esta mañana, en un bar, he visto un trozo de un programa de Antena 3 donde hablaban que una persona iba a la cárcel por haber pagado 79,20 euros usando una tarjeta falsificada. Aparte de ver a Revilla desbarrando, no le di mucha importancia a este asunto hasta que por mi TL apareció este disparate de artículo de opinión de Martín Algarra. Entonces decidí intentar localizar la sentencia, porque si algo que tenía claro es que nadie va a la cárcel por esa cantidad como está titulando toda la prensa española.

Cuando uno localiza la sentencia por la cual ha sido condenado Alejandro González - los nombres en la misma son ficticios pero la de los abogados no, es fácil ver a quien corresponde Alejandro - , uno se da cuenta que ha sido condenado por:

  • Delito de falsificación de tarjetas de crédito y débito del artículo 399 bis .1 CP al ser mas favorable.
  • Delito continuado de estafa de los artículos 248 , 249 y 74 del CP

Lo interesante de este caso es cuando vas a la prensa a leer sobre el tema. Por ejemplo, El Mundo titula Entra en prisión el joven condenado a 6 años por pagar 79,20 euros con una tarjeta falsa mientras que El País , Granada pide el indulto del condenado por pagar 80 euros con una tarjeta falsa en 2010. Aquí las capturas de ambos titulares:


Un simple enlace a la sentencia hubiese bastado para que los lectores tuviésemos una visión más informada de la noticia. Pero no, de los titulares y cuerpos de las noticias parece que se hace hincapié de que ha sido condenado por pagar ese dinero con la tarjeta falsa, cuando no es real. Es más, es extraño que no aparezca la sentencia cuando es algo habitual en otros casos.

Lo peor es, es que siendo un poco mal pensando, no aparecen estos datos porque no conviene. Es decir, los periodistas piensan que se nos debe hurtar esa información y que la versión correcta es lo que se está plasmando en el artículo. No me creo que en las redacciones de El País o de El Mundo no haya gente que busquen la referencia a la sentencia y la cuelguen como un enlace. Quizás, porque ya han tomado partido en cual debe ser la interpretación de la historia.

Ahora, si nos dan información sesgada en este caso, imaginaros que ocurre cuando se habla de política o corrupción. Y es una lástima,porque creo que hay periodistas que hacen bien su trabajo.

PD: Es interesante leer los comentarios de los indignadísimos internautas a esta noticia: excepto algún despistado que se ha molestado en buscar la información, todos hablan de que este chico va a la cárcel por 80 euros mientras que los políticos roban millones. Y esto ocurre porque la prensa está en este juego.

miércoles, junio 01, 2016

Capturas de tráfico de malware

Hace algún tiempo tuve la necesidad de probar que unas configuraciones de los IDS Suricata y Snort funcionaban correctamente, generando las alarmas y las capturas de los paquetes de manera adecuada. Una solución sencilla es aprovechar las opciones que tiene tanto Suricata como Snort para leer capturas y analizarlas. En ambos casos, la opción para especificar el fichero es -r y no es necesario ejecutarlo como root, ya que no se abren interfaces para capturas.

suricata -r file.pcap -c suricata.yml
snort -r file.pcap -c snort.conf

A continuación está alguno de los blogs que busqué para obtener capturas de tráfico. Muchas de ellas están en ficheros zip protegidos por contraseña, para poder bajarlos sin que los bloqueen antivirus o proxies.

Advertencia

Estos enlaces llevan a capturas de tráfico en formato pcap de malware. Un error en el manejo de los mismos puede dar lugar a la infección de los ordenadores en los que se está trabajando. Cuidado al manjar estas capturas.

lunes, mayo 30, 2016

Algunos enlaces sobre Elasticsearch

Estos últimos meses estoy trabajado con el motor de búsqueda Elasticsearch. Durante este tiempo, he ido buscando información sobre ciertos aspectos de su uso, configuración y monitorización. Esto son algunos enlaces que he encontrado sobre aspectos de Elasticsearch sobre los cuales me ha interesado profundizar.

El primer enlace que os dejo es Monitor Your Elasticsearch Cluster Performance donde se describe el uso de varias herramientas en la nube que hacen peticiones a las API de Cluster Health de Elasticsearch para poder monitorizar el estado del mismo. Quizás de esta me quedo como usar nginx como un frontal que pase peticiones al API RESET de Elasticsearch.

Este booklet, Performance Monitoring Essential, Elasticsearch Edition de la empresa Sematext, donde se da una visión general del producto, como indexa y sobre todo cuales son los indicadores básicos a vigilar para estudiar el rendimiento.

Si queremos usar Docker para desplegar Elasticsearch, se peude seguir las indicaciones de como crear un Dockerfile.

Microsoft ha publicado una guía de como configurar Elasticsearch en Azure. Hace una buena introducción a la configuración de Elasticsearch y su despliegue en Azure.

Si tenéis una instalación que use una versión 1.7.x y pasáis a la nueva versión 2.x , es conveniente leer con detalle los puntos a tener en cuenta para que la actualización se pueda hacer sin problemas.

Probablemente esto sea una entrada dinámica, que actualizaré conforme vaya leyendo artículos y encontrando información que me interese sobre Elasticsearch.

sábado, mayo 14, 2016

Xvfb: Virtual framebuffer X server

En el mundo de los sistemas operativos tipo Unix, el sistema gráfico con el cual se implementan las interfaces de usuario en modo gráfico es X Window. Éste tiene una arquitectura cliente servidor, donde los programas se conectan a un servidor, X Server, el cual recibe las órdenes necesarias para dibujar en pantalla lo que deseen los programas clientes. Se encarga de mandar a los clientes información de los eventos de los distintos dispositivos (ratones, teclados, ...) del sistema. Toda esta comunicación se realiza usando el protocolo X. Este servidor se encarga de manejar todos los dispositivos necesarios para la entrada y salida.

Hay diversas implementaciones del servidor X, y hoy quiero hablar de una de ellas, Xvfb. Este servidor corre en máquinas donde no hay pantallas ni dispositivos de entrada y se comporta como un framebuffer tonto, donde el servidor va dibujando lo que se le pide.

Pero, ¿qué sentido tiene un sistema de este tipo, si no siquiera podemos interaccionar con el mismo?. Pues hay varios escenarios donde encaja:

  • Programas que sean clientes X, pero que no necesiten mostrar ventanas para interaccionar con el usuario.
  • Pruebas: Se quiere hacer pruebas automáticas con algún tipo de framework y no queremos tener ventanas abriéndose y cerrando en nuestro escritorio mientras se ejecutan. Este fue el escenario

Mi caso de uso ha sido poder probar una web a través del navegador Firefox que era controlado por una serie de scripts, ejecutándose en una máquina virtual sin necesidad de que interactúe con la pantalla.

Xvfb admite las opciones del servidor X, mas las propias que ayudan a configurarlo. Lo básico es decir cual va a ser la pantalla que va a usar y la resolución junto con la profundidad de color. Puede arrancarse:

$ Xvfb :0 -screen 0 1280x1024x24

Le estamos indicando que el servidor "0" tenga una pantalla "0" con una resolución de 1024x768 y 24 bits de color. Podemos conectarnos a ella, con lo cual la variable DISPLAY debe tener el valor 0:0. Cambiando el número de servidor X (:0) se puede ejecutar junto a un servidor X normal que interactúe con la pantalla, teclado y ratón.

Se puede comprobar que funciona con estas simples órdenes (supuestos que tenemos xterm e imagemagick instalados), de tal manera que nos generará la captura de pantalla en screen.jpg

$ env DISPLAY="0:0" xterm &
$ import -window root screen.jpg

Por defecto, el servidor Xvfb va a permitir conexiones TCP/IP, así que puede ser interesante desactivar la misma con -nolisten tcp

$ Xvfb :0 -screen 0 1280x1024x24 -nolisten tcp

jueves, abril 28, 2016

AMD SME/SEV: Cifrado de memoria en el microprocesador y máquinas virtuales

Una de las nuevas funciones que va a incluir AMD en su próxima microarquitectura (Zen) es la posibilidad de cifrar usando el algoritmo AES los datos antes de escribirlos en memoria con una clave que se generada dentro del chip. AMD ha publicado un artículo, AMD MEMORY ENCRYPTION donde se describe esta nueva funcionalidad así como una serie de parches para Linux que habilitan el cifrado

Cuando se activa el cifrado de memoria, existe un nuevo bit en las tablas que describen las páginas de memoria. Si ese bit está activo, cuando se escriban datos desde la CPU hacía la memoria física que describe ese marco de página, será cifrada internamente por la CPU y descifrada al leerla. El controlador de memoria integrado en la CPU es el encargado de gestionar el cifrado y descifrado de la misma. La clave de cifrado para AES es aleatoria y se genera en cada arranque de la CPU. Nunca es visible para los programas que ejecuta la CPU y se maneja desde el AMD Secure Processor, un procesador Cortex-A5 integrado en el SOC.Esta tecnología no sólo funciona con los accesos a RAM, sino que también puede usarse con los dispositivos que realizan transferencias DMA a la RAM del sistema.

Como puede verse, se necesita soporte desde el sistema operativo para que configure las tablas de páginas adecuadamente para usar el cifrado de memoria. Para los sistemas antiguos o que no tienen soporte para SME, AMD tiene un modo transparente que hace que todos los accesos a memorias sean cifrados y que puede activarse a través de la BIOS del sistema.

Este tipo de funcionalidad es útil en sistemas de virtualización, donde se quiere que las máquinas virtuales estén lo más aisladas posibles, y llegado el caso, se pueda parar ciertos ataques. Sin embargo, en un host donde se ejecutan varias máquinas virtuales bajo el control de un hipervisor, nada puede hacer que el administrador del hipervisor use sus privilegios para leer la RAM física de la máquina y por tanto obtener la información de las máquinas virtuales

Para esto AMD ha diseñado el sistema SEV: La idea es que las máquinas virtuales que corren bajo el hipervisor puedan verificar criptográficamente que están ejecutándose en un chip de AMD con estas funcionalidad y configurar el cifrado de memoria por ellas mismas,sin intervención del hipervisor, el cual no tiene acceso a ninguna de las claves de cifrado que usan las máquinas invitadas. Con este mecanismo se evita que un administrador poco honesto pueda aprovechar los privilegios del hipervisor para leer la memoria de las máquinas invitadas. Esto está implementado como una extensión a la arquitectura AMD-V

miércoles, marzo 30, 2016

MacOS X "El Capitán" y problemas de Bluetooth

Hace un par de meses empecé a tener problemas con el Macbook del trabajo: En ciertas circunstancias, los auriculares bluetooth que utilizo y el Magic Trackpad no funcionaban bien. El ratón se movía a trompicones y los auriculares reproducían el sonido de manera entrecortada. Comencé a buscar información para ver si había casos similares y encontré varias referencias a problemas de bluetooth a partir de Yosemite, específicamente problemas en la reproducción de audio a través de dispositivos bluetooth.

La solución al problema que tenía la encontré en Troubleshooting OS X Bluetooth Issues: A partir de Yosemite, OS X incluye una nueva funcionalidad llamada Handoff que permite - a través de iCloud - comenzar una tarea en un dispositivo y pasarnos a otro continuando con la misma tarea: por ejemplo, empezar a escribir un correo en el iPhone y continuar en el Mac. Esto funciona si los dispositivos están en rango de bluetooth y ambos están usando la misma cuenta iCloud. Desactivando el Handoff en el Mac, se solucionaron los problemas de audio y de saltos del track pad. Para desactivar Handoff, abrimos Ajustes del Sistema, General y desmarcamos la casilla Permitir Handoff entre este Mac y sus dispositivos iCloud.

martes, marzo 15, 2016

Que sean muchos años más, maestro Ibáñez

Hoy cumple 80 años el genial autor de cómics Francisco Ibañez. Creador de Mortadelo y Filemón, el Botones Sacarino, Rompetechos o 13 Rue del Percebe, personajes con cuyas historietas disfruté de horas de risas y diversión durante mi infancia y adolescencia. Sus personajes forman ya parte de la historia del cómic español y de la memoria de muchas personas. Aquí os dejo la portada de uno de los álbumes con los que más he disfrutado: El sulfato atómico.

Ojalá podamos disfrutar muchos años más de las creaciones de este gran maestro del cómic.

miércoles, marzo 02, 2016

Máquinas virtuales con Windows gratuitas

Llevo mucho tiempo desconectado del desarrollo en Windows, así que supongo que lo que cuento en esta entrada - a modo de agenda - debe ser conocido para muchos usuarios: Microsoft pone a disposición de los desarrolladores sin coste alguno diversas máquinas virtuales configuradas en diversos entornos de virtualización para poder usar las diferentes versiones del Internet Explorer - y del sistema operativo - para evaluarlo. En Download virtual machines Microsoft nos ofrece todo un juego de máquinas, cada una de las cuales con un sistema operativo (XP, Vista, Windows 7, Windos 8, Windows 8.1, Windows 10) y versiones de Explorer desde la 6 a la MSEdge. Las máquinas están disponibles para plataformas de virtualización que se ejecutan sobre Windows, Linux y Mac.

Todo un detalle por parte de Microsoft para atraer desarrolladores. Eso si, las máquinas tienen fecha de caducidad, a partir de la activación de las mismas de 90 días, pero lo suficiente para hacer evaluaciones o desplegar las mismas para probar software.

martes, marzo 01, 2016

Windows 10 y Android

Aunque llevo unos años desconectado de la evolución de la plataforma Windows (básicamente curro con OS X y entornos Linux), hace unos días, leía en Ars Tecnica el artículo Android-on-Windows Astoria tech is gone.Me llamó la atención que Microsoft dejara de dar soporte a una plataforma que permitía ejecutar las aplicaciones de Android sobre Windows 10 sin modificar. Estas tecnologías - también disponibles para iOS, HTML, .NET y Win32, reciben el nombre de bridges - puentes -. La diferencia entre estas últimas y la de Android es que es necesario recompilar y adaptar el código, mientras que la de Android no.

Leyendo sobre Astoria, la capa de emulación de Android sobre Windows 10, queda claro que es capaz de ejecutar una aplicación Android - apk - sin modificar. Y ahí es donde probablemente Microsoft ve el problema: No es que le falte madurez, es que cuando tienes una capa capaz de emular otra plataforma de manera sencilla, las empresas acabarán sólo desarrollando la aplicación para la plataforma mayoritaria - en este caso Android - y dejarán que la capa de emulación se encargue del resto en Windows 10, sin aprovechar las funcionalidades nativas del sistema.

Y Microsoft puede mirar a un ejemplo cercano. ¿Un Windows mejor que Windows 3.1? . Existió, se llamaba OS/2 3.x - por aquellos entonces IBM todavía tenía acceso al código Windows de Microsoft - y casi nadie quiso desarrollar para OS/2. Supongo que Microsoft tiene la lección aprendida.

Para terminar, el puente de iOS está disponible en código fuente en github.

lunes, febrero 29, 2016

Apple corrige el error 53

Apple ha dado el paso correcto y ha corregido el Error 53 que se producía durante la actualización a iOS 9.2 y que dejaba inutilizables aquellos teléfonos donde la identificación entre el sensor de huella digital y el microprocesador no era correcta. Apple ha publicado una nueva versión de iOS 9.2.1 con dicho comportamiento corregido. Hay un documento técnico (HT205628) en la web de soporte de Apple explicando como instalar esta versión corregida del sistema.

Al igual que fui muy crítico con Apple por el comportamiento de la actualización, hay que felicitarle por la rapidez de reflejos que ha tenido para dar una solución al problema.

viernes, febrero 12, 2016

Notas sobre Maven(I)

Maven es un sistema de gestión de proyectos de software que nació con el objetivo de simplificar la construcción del proyecto Apache Turbine. A partir de ahí evoluciona hacia un sistema que permite la gestión de proyectos de software de manera estándar: construcción de entregables, gestión de pruebas y publicación de los mismos. Podría verse como un sistema de construcción como las autotools, cmake o ant al que se le añade una serie de mecanismos que permiten la construcción de proyectos Java de manera sencilla, uniforme, siguiendo las guías de buenas prácticas. Maven es lo bastante flexible para extender su funcionalidad a través de un sistema de plugins.

Para instalar Maven necesitamos tener el correspondiente Java JDK en el sistema. Nos bajamos la la versión compilada de Maven, descomprimirla en un directorio y modificar el PATH de nuestro sistema para que encuentre los binarios:

$ mkdir -p /usr/local/java
$ cd /usr/local/java
$ wget http://ftp.cixug.es/apache/maven/maven-3/3.3.9/binaries/apache-maven-3.3.9-bin.tar.gz
$ # Siempre conviene verificar la correcta huella digital
$ wget http://www.apache.org/dist/maven/maven-3/3.3.9/binaries/apache-maven-3.3.9-bin.tar.gz.asc
$ gpg --verify apache-maven-3.3.9-bin.tar.gz.asc
$ tar zxvf apache-maven-3.3.9-bin.tar.gz
$ ln -s apache-maven-3.3.9 maven
$ # Borrar los ficheros bajados
$ rm apache-maven-3.3.9-bin.tar.gz
$ rm apache-maven-3.3.9-bin.tar.gz.asc
$ # Añadir al PATH la ruta /usr/local/java/maven/bin

Si se ha instalado correctamente, podremos ejecutar mavem:

$mvn --version
Apache Maven 3.3.3 (NON-CANONICAL_2015-09-23T11:40:22_root; 2015-09-23T11:40:22+02:00)
Maven home: /usr/local/java/maven
Java version: 1.8.0_65, vendor: Oracle Corporation
Java home: /Library/Java/JavaVirtualMachines/jdk1.8.0_65.jdk/Contents/Home/jre
Default locale: es_ES, platform encoding: UTF-8
OS name: "mac os x", version: "10.11.3", arch: "x86_64", family: "mac"

Los proyectos en Maven se definen en un fichero XML , pom.xml. Este fichero es la unidad básica que utiliza Maven para definir un proyecto. Como puede leer en la introducción al pom, toda instalación de Maven tiene un pom por defecto, del cual heredan el resto de los poms que se definan a menos que nosotros lo cambiemos específicamente alguna de las propiedades de ese pom.xml raíz.

La manera más sencilla de empezar a utilizar Maven es a través de un ejemplo: Un sencillo programa que quede encapsulado en un JAR y que se pueda ejecutar fácilmente con java -jar package.jar. Puesto que Maven nos fuerza a tener cierta estructura en nuestros proyecto, lo primero que vamos a tener que definir es la la misma para nuestro paquete y el nombre de nuestro proyecto. Por ejemplo, voy a usar org.ctb.maven como el identificador de grupo y el ListIfaces como identificador de artfacto. Con esta idea, usamos la opción que tiene Maven de generar nuestra estructura de proyecto:

$ mvn archetype:generate -DgroupId=org.ctb.maven -DartifactId=ListIfaces -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false

Lo primero que hará Maven será bajarse aquellos artefactos (jars) que necesite para construir nuestro programa, creará el fichero pom.xml y la estructura de directorios que las guías de buenas prácticas aconsejan. Se podrá compilar la aplicación simplemente con:

cd ListIfaces
mvn install

De nuevo, veremos a Maven bajándose los diferentes plugins que necesita, y en el directorio target nos generará el fichero jar con nuestra clase compilada. Decir que todos estos elementos quedan cacheados en nuestro sistema para su posterior utilización. En el caso de MacOS X esta en el $HOME/.m2

El fichero pom.xml que nos ha generado automáticamente Maven es el siguiente:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>org.ctb.maven</groupId>
  <artifactId>ListIfaces</artifactId>
  <packaging>jar</packaging>
  <version>1.0-SNAPSHOT</version>
  <name>ListIfaces</name>
  <url>http://maven.apache.org</url>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
</project>

En este simple pom.xml nos pone sobre la pista de varios parámetros que debemos de tener en cuenta a la hora de realizar nuestro proyecto y que nos fuerza las convenciones de Maven

groupId
Este parámetro identifica a nuestro proyecto de manera única entre todos los proyectos. Lo ideal es que aprovechemos la estructura de nuestros propios paquetes para seleccionar el groupId correcto.
artifactId
Nos da el nombre del JAR (u otro entregable) sin la versión
version
La versión de nuestro entregable

lunes, febrero 08, 2016

Error 53

Hace unos días empecé a leer rumores sobre la última actualización de Apple iOS - 9.2 - la cual bloqueaba aquellos teléfonos iPhone 6 y 6 plus que habían sido modificados por servicios no oficiales. Comocencé a buscar información y llegué a un Error 53’ fury mounts as Apple software update threatens to kill your iPhone 6 un artículo de The Guardian donde narran la historia.

En los dispositivos Apple iPhone ,en el botón home se encuentra el sensor de huella digital y toda la circuitería necesaria para comunicar los datos con un coprocesador llamado Secure Enclave encargado de almacenar la información de la huella que ha captado el sensor y de las operaciones de criptográficas necesarias (puede leerse sobre el tema en iOS Security). Parece ser que ciertos elementos hardware de los últimos iPhone están emparejados de manera única con el microprocesador A7 que utilizan estos teléfonos.

La última actualización de iOS, al menos en los modelos 6 y 6 Plus, comprueba el emparejamiento entre los diferentes componentes hardware, en especial el Touch-ID. Si dicha comprobación falla - por ejemplo: reparar el iPhone en una tienda no oficial - , la actualización simplemente deja el iPhone inservible, convertido en un bonito y caro ladrillo.

La respuesta oficial de Apple, como por ejemplo puede leerse en Apple habla del Error 53: es para proteger nuestra información, es un mecanismo para proteger nuestra información: Si alguien no autorizado cambia el botón - o se cambia en un servicio no autorizado - , te expones a que te roben el contenido seguro. Entonces, nada mejora que bloquear el móvil y dejarlo inservible. Supongo haber desactivado el Touch ID no habría bastado no entraba en los planes de Apple.

Varias preguntas respecto a este mecanismo:

  • ¿No bastaba con deshabilitar el Touch ID si se detecta una reparación de este tipo?
  • De verdad alguien piensan que en los servicios técnicos de Apple, llegado el momento, ¿no te pueden robar la información?
  • No estaremos, como ya pasó en el caso del sector del automóvil estableciendo barreras de entrada para que no se hagan reparaciones fuera de los canales oficiales?

Hablamos de teléfonos móviles que en España cuestan de 700 euros para arriba. Al menos, si lo vas a convertir en un ladrillo con una actualización software, lo mínimo que podría decir la actualización de Apple es que puede ocurrir.

He tenido tres iPhones, un 3G, un 4 y un 5s. Tengo bastante claro, que salvo cambio de políticas, el próximo dispositivo será un Android, probablemente un Samsumg A5. A fin de cuentas, tanto el 4 como el 5s empezaron a fallar por el mismo sitio , el botón home y tampoco estoy dispuesto a pagar el equivalente a un Samsumg de gama media por repararlo (en UK, reparar el botón home viene a costar unas 236 Libras, un teléfono que cuando salió a la venta costaba una 550 libras). Y no será porque no le he sacado provecho a estos móviles, pero ya la relación coste / beneficio empieza a no compensar.

jueves, febrero 04, 2016

MAFO y el supervisor perdido

Esta tarde estaba leyendo algunos tweets de los asistentes al diálogo Economistas, políticos y otros animales que se estaba celebrando en la Fundación Rafael del Pino con el ex-gobernador del Banco de España, Mariano Fernández Ordóñez y John Müller, uno de los pesos pesados durante mucho tiempo de El Mundo y actualmente en El Español como protagonistas. Aunque no lo he seguido por streaming, me interesaba saber que se estaba comentando, ya que Fernández Ordóñez era el responsable de supervisar todo el sistema financierio español entre el año 2006 y 2012, periodo en el que se llegó al pico de la burbuja inmobiliaria, se aprobaron las fusiones de Cajas de Ahorro, se autorizaron la emisión de preferentes o se permitió la salida a bolsa de Bankia.

Una de las preguntas que le realizó Müller a Fernández Ordóñez y su respuesta se pueden encontrar en este tweet

-Fue correcto sacar #Bankia a bolsa?, dice @cultrun
-No te contesto, responde MAFO
-Pues me he quedado sin preguntas, lamenta @cultrun

No hay más preguntas, es más probablemente sea la única pregunta que habría que haberle hecho a Fernández Ordóñez. En esta crisis económica de la que apenas estamos asomando la cabeza, siempre me he planteado como el Banco de España, con el acceso que tiene a toda la información del sistema financiero no fue capaz de dectectar los más que evidentes síntomas que avisaban sobre los problemas de la economía española, especialmente en la banca pública - cajas de ahorro -. Como el supervisor, bajo la dirección de Fernández Ordoñez permitió la creación de Bankia. Es más, ha tenido que escribir un libro, en el cual, por todos los comentarios que he leído sobre el mismo, parece olvidar que él era uno de los principales protagonistas del sistema financiero español durante los años de la burbuja. Es mucho más cómodo culpar al de enfrente.

Muchos han decido mirar para otro lado sobre el papel del Banco de España en esos años y especialmente el papel de su gobernador.

jueves, enero 28, 2016

Suricata 3.0

Acaba de publicarse la nueva versión 3.0 Suricata, un sistema de detección de intrusiones de fuentes abiertas publicado con licencia GPL. Entre las principales mejoras:

  • Mayor escalabilidad, robustez y rendimiento
  • Soporte del framework netmap en FreeBSD para una mayor velocidad de captura de paquetes.
  • Mejora en el uso de LUA como sistema de scripting
  • Nuevo engine de inspección de SMTP y extración de ficheros.

Pueden verse todas las nuevas funcionalidades añadidas en Features added in 3.0

Si se tienen todas las librerías instaladas, se compila en MacOS 10.11 con

env LIBRARY_PATH=/usr/local/lib CPATH=/usr/local/include  ./configure --prefix=/usr/local
env LIBRARY_PATH=/usr/local/lib CPATH=/usr/local/include make
# Como root
env LIBRARY_PATH=/usr/local/lib CPATH=/usr/local/include make install

La necesidad de especificar paths en OS X 10.11 es porque ya por defecto el compilador no busca archivos includes y librerías en /usr/local

jueves, enero 07, 2016

Deuda pública

De vez en cuando, aparece un mi TL de Twitter la polémica de la reforma del artículo 135 de la Constitución Española. Especialmente la discusión suele estar centrada en el siguiente párrafo de dicho artículo:

Los créditos para satisfacer los intereses y el capital de la deuda pública de las Administraciones se entenderán siempre incluidos en el estado de gastos de sus presupuestos y su pago gozará de prioridad absoluta. Estos créditos no podrán ser objeto de enmienda o modificación, mientras se ajusten a las condiciones de la ley de emisión.

Básicamente, dicha modificación de prioridad al pago del capital e intereses de la deuda pública por encima de otros gastos del Estado. La habitual crítica simplona que suelo leer es que se van a pagar acreedores antes que servicios del Estado del Bienestar ( Sanidad, Educación , etc). Lo que mucha gente desconoce es que sin las emisiones de deuda pública, simplemente no habria Estado del Bienestar. Busquemos las cifras: Si consultamos el capitúlo de gastos de los Presupuestos Generales del Estado del año 2015 puede verse que el gasto total presupuestado es de 440.076 millones de euros. El problema es que el Estado no recauda esa cantidad. Es más, los ingresos previstos en los presupuestos del año pasado fueron de 298.319 millones de euros. Es decir, esa diferencia entre los ingresos y los gastos implican, que alguien nos tiene que prestar dinero. Y para que nos presten dinero, deben de tener la suficiente confianza en que vamos a ir amortizando la deuda que contraigamos en los plazos previstos. En caso contrario, o no nos lo dejarán o pedirán intereses muy elevados. Los gastos presupuestados para el servicio de la deuda en el 2015 fueron de 35.490 millones de euros.

Aquellos que dicen que si pagamos a nuestros acreedores, nos vamos a quedar sin servicios públicos me temo que yerran el tiro: Si nos dejan de prestar esos 140.000 millones de euros será cuando nuestro estado del bienestar tenga que realizar un amplio programa de recortes. Y no, no se van a recaudar 140.000 millones de euros anuales más. Los partidos políticos a los que más disparates les he leído sobre recaudación con fuerte subidas de impuestos hablan de como mucho 25.000 millones anuales. Y eso asumiendo, que la actividad económica no se va a ver resentida por la subida de impuestos.

Por supuesto, muchos me dirán que lo que debe de hacer el Banco Central Europeo es monetizar todas las emisiones de deuda de los Estados, digamos a un interés bajo y que así se acabarían todos los problemas. Dicha técnica la usó España durante años 70 y principio de los 80. No sirvió de mucho.

Sobrevolando Picos de Europa

Hace dos años y medio que no subo al Norte de España y reconozco que tengo cierta morriña por visitar esa zona a caballo entre Asturias, León y Cantabria que son los Picos de Europa. El Macizo de los Urrieles o Macizo central de los Picos de Europa, para disfrutar de sus paísajes y de su gastronomía . Entre el Cares y el Duje se extiende esta maravillosa región de montañas, donde se encuentran lugares tan hermosos como el Valle de Valdeón, el Valle de la Líebana, la zona de Cabrales, Ponzebos, ...

Hoy me he encontrado este vídeo publicado en el 2009 de un sobrevuelo del Macizo Central. Lo interesante del mismo es que va señalando la toponimia de la zona que van sobrevolando. Que lo disfrutéis :)

sábado, enero 02, 2016

Compiladores

Por lo que siempre me han comentado mis amigos ingenieros informáticos, compiladores es una de las asignaturas más complicadas de la carrera. Libros clásicos que hablen de esta complicada rama de la informática los hay muy buenos como el clásico del Dragón, Compilers: Principles, Techniques and Tools. Existen herramientas como yacc o lex que ayudan en esta tarea. Sin embargo esto no quita que estemos ante una materia complicada si se quiere conocer este área de conocimiento.

Hace unos días, en Reddit, encontré un artículo titulado Want to Write a Compiler? Just Read These Two Papers.. En el mismo hay dos referencias muy interesantes sobre compiladores. La primera es a una serie de quince artículos escritos por Jack Crenshaw titulada Let's Build a Compiler. La segunda referencia es A Nanopass Framework for Compiler Education. Estos dos artículos pueden servir como una introducción para quien tenga curiosidad por conocer esta rama de la informática.

Los artículos de Jack Crenshaw construyen un compilador de una sola pasada, con el análisis de código fuente y la generación de código mezcladas y con optimizaciones básicas. El segundo artículo, intenta implementar un compilador como un conjunto de transformaciones sencillas. Tendré que mirarlos, aunque sólo sea por curiosidad de este mundillo (y si, tengo el libro del dragón, desde finales de los 90 sirviendo de un caro pisapapeles :) )