SUBE no quiere Ubuntu(s)

No hace mucho comentaba en este mismo blog sobre mis dificultades para hallar el listado de viajes realizados en el sistema web de la tarjeta SUBE. Hoy volvemos a tocar este tema a partir de lo descubierto por un gran amigo.

Para (volverlos a) poner en contexto la tarjeta SUBE, o más bien el Sistema Único de Boleto Electrónico, es: “Un servicio para abonar con una sola tarjeta viajes en colectivos, subtes y trenes adheridos, en la Región Metropolitana de Buenos Aires.

Un excelente profesional, con el que tengo el gusto de compartir el trabajo diario, me remitió el siguiente correo:

Una curiosidad. Estando en casa, quise entrar en la página de la tarjeta SUBE para ver los viajes realizados (https://gestiones.sube.gob.ar/bienvenida.aspx), y me encontré con este mensaje de error:

sin-sube-en-ubuntu
No le presté demasiada atención en ese momento (será problema del sitio, me dije a mí mismo). Al día siguiente intenté nuevamente, con idéntico resultado. Pero oh sorpresa, con otro navegador (Chromium en vez de Firefox) sí pude ingresar.

Probé cambiarle el useragent al Firefox ¡y también pude ingresar!
Y luego de un rato llegué a la conclusión de que lo que no le gusta al sitio es la palabra Ubuntu en el useragent del Firefox: quitándola, o reemplazándola por cualquier cosa como Windows, Suse, Debian o incluso la palabra ‘basura’, entra sin dramas.

Y corroboré ese hallazgo cambiando el useragent de chromium, agregándole la palabra Ubuntu. Ejecutando desde la línea de comandos $ chrome –user-agent=”Mozilla/5.0 (X11; Ubuntu; U; Linux i686; en-US) AppleWebKit/534.16 (KHTML, like Gecko) Chrome/10.0.619.0 Safari/534.16″ tampoco me dejó ingresar.

No contento con lo encontrado, se tomó unos minutos para seguir investigando:

Descubrí algo más. No es la palabra Ubuntu de por sí la que dispara el filtro, ya que lanzando el navegador con –user-agent=”Ubuntu” también deja ingresar a la página para realizar gestiones.

La cuestión parece ser “X11; Ubuntu”

Si uno suprime el X11, o si los cambia de lugar (por ej. “Ubuntu; X11”), también entra.

Ahora bien, ¿me puede explicar alguien qué tiene de malo Ubuntu como para que restrinjan ese sistema operativo en la plataforma del sistema SUBE? Como hemos visto, el error sólo ocurre con Ubuntu, con Debian funciona correctamente.

FLISOL 2012 – Festival Latinoamericano de Instalación de Software Libre

Como ya viene siendo una sana costumbre, el Grupo de Usuarios de Software Libre de la Universidad Nacional de Luján está organizando la edición local de la 8va edición del Festival Latinoamericano de Instalación de Software Libre (FLISoL), el evento simultáneo de difusión de Software Libre más grande en Latinoamérica.

El FLISOL se realiza desde el año 2005 y su principal objetivo es promover el uso del software libre, dando a conocer al público en general su filosofía, alcances, avances y desarrollo. Para tal fin, las diversas comunidades locales de software libre (en cada país, en cada ciudad/localidad), organizan simultáneamente eventos en los que se instala, de manera gratuita y totalmente legal, software libre en las computadoras que llevan los asistentes. Además, en forma paralela, se ofrecen charlas, ponencias y talleres, sobre temáticas locales, nacionales y latinoamericanas en torno al Software Libre, en toda su gama de expresiones: artística, académica, empresarial y social.

El FLISOL 2012 se llevará a cabo el sábado 28 de abril. Por quinta? sexta? séptima? vez, el UNLUX organizara la actividad en la ciudad de Luján. La jornada está dirigida a todo público, sin importar el nivel de conocimientos técnicos que se posea, y comprenderá la instalación de software libre en los equipos que acerque el público, así como también habrá charlas de variado tenor.

Agendando…

Más Info en el sitio web del UNLUX y en www.installfest.info/FLISOL2012/Argentina/Lujan

Recuerden que además, el sábado siguiente -5 de Mayo- tenemos ¡PyDay en la UNLu!

Jornada de Python en Luján: PyDay Luján 2012

Replico FYI:

PyAr, el grupo de usuarios de Python Argentina, está orgulloso de presentar una nueva Jornada del lenguaje Python 2012 (PyDay) en la Universidad Nacional de Luján, el día Sábado 5 de Mayo de 2012 de 11Hs a 18Hs.

Durante el Python Day se darán pequeños cursos y charlas relacionadas a este lenguaje, creando un espacio en donde cualquier persona interesada pueda acercarse para preguntar, aprender y experimentar con esta herramienta.

Python es un lenguaje moderno, sencillo de aprender pero muy poderoso en cuanto a la cantidad de aplicaciones en las que es usado profesional y académicamente: en sitios web, en juegos, aplicaciones de escritorio y en scripting en general, etc…

El publico al que nos dirigimos es de todos los niveles, pero estamos muy interesados en acercar Python a quienes solo lo conocen de oído o directamente no saben de que tipo de lenguaje se trata. Tendremos charlas especiales para ellos.

Con esta misma invitación damos por iniciado el Call For Charlas; aquellos interesados ya pueden proponer nuevas charlas y son bienvenidos los colaboradores y empresas/entidades interesadas en participar y auspiciar la jornada.

Cualquier duda o consulta, el mail de contacto es pydaylujan@gmail.com
El encuentro se llevará a cabo en el pabellón 400 de la sede central de la UNLu http://www.unlux.com.ar/como-llegar/

La entrada libre y gratuita (previa inscripción web), ¡los esperamos!

Open Security Training, CS:APP y gPEFile

Finalizando las vacaciones, antes de reincorporarme al trabajo diario, dediqué unos días a seguir uno de los cursos de análisis de malware que tenía agendado desde hace tiempo, en este caso, el de Open Security Training.

La gente de OST provee el material, los ejemplos y los videos en línea para que uno vaya, a su tiempo, incorporando conocimientos repartidos en las siguientes clases:

Beginner Classes

Intermediate Classes

Advanced Classes

La primera clase sirve como base para las siguientes y discurre sobre los conceptos iniciales, describe el hardware sobre el que se programa en lenguaje ensamblador, describe con varios ejemplos las instrucciones del lenguaje más comunes, y muestra cómo seguir la ejecución de un programa con en Windows con Visual Studio Debugger (u OllyDbg, que no es tan distinto) y en GNU/Linux con gdb. Como bien hace mención el instructor, con conocer algunas pocas instrucciones ya es posible leer la mayoría de los programas.

La clase finaliza dejando como tarea el análisis y la resolución del clásico ejercicio de “bomba binaria” de la asignatura Arquitectura de Computadores de la Carnegie Mellon University, la cual requiere conocer técnicas básicas de ingeniería inversa para progresar a traves de las diferentes fases de la bomba, dando las respuestas correctas y evitando “explotarla”. Sin duda es un ejercicio que me ha entretenido mucho, me ha hecho pensar bastante, y que realmente debo recomendar como un buen inicio al arte de la ingeniería inversa.

Buscando información sobre el tema dí con el libro de cabecera de tal asignatura: Computer Systems: A Programmer’s Perspective, cuya edición 2011 es altamente recomendable. Está escrito en un lenguaje claro pero detallado, con ejemplos concretos (casi diría “palpables”) para explicar las abstracciones de sistema, y con un amplio conjunto de ejercicios para realizar. El sitio web contiene algunas secciones de ejemplo que sirven como preview, así como también material adicional al texto en papel. En retrospectiva, es el libro que me tendrían que haber recomendado cuando cursé las materias de arquitectura.

La clase “The Life of Binaries” trata efectivamente sobre “la vida de los ejecutables”, desde su creación: parsing del código fuente, abstract syntax trees, estrategias de compilación, lenguajes intermedios, enlazado del binario final; hasta su carga en memoria por el loader del sistema operativo y posterior ejecución en el computador. Se dan descripciones detalladas sobre los formatos binarios Portable Executable (PE) de Windows y Executable and Linkable Format (ELF) de Linux. El recorrido por el formato PE y su estructura, basado en el trabajo realizado por Ero Carrera, es muy completo y esclarecedor. La clase abarca también algunas de las técnicas que de ocultamiento y hooking utilizadas comúnmente en el malware, cómo funcionan realmente los virus de computadora, y qué técnicas es posible utilizar fácilmente para brindar mayor seguridad a los binarios que se generan.

A partir de esta clase se me ocurrió aprovechar el excelente trabajo realizado por Carrera con la biblioteca pefile y desarrollar con python-gtk2 un visor de archivos PE para interfaz gráfica, inspirado en el utilizado en los videos de entrenamiento. Dejo algunas capturas de la primera versión que no da vergüenza mostrar. El código, como siempre, se puede descargar desde el link que sigue y las correcciones y sugerencias serán bienvenidas.

Descargar: gpefile.py (v0.19, 78 KB)

Último cambio: Agregado despliegue de recursos RT_BITMAP, RT_GROUP_CURSOR, RT_GROUP_ICON, RT_STRING, GIF y PNG.

Me queda pendiente continuar con las clases siguientes, en cuanto el tiempo me lo permita. A la gente detrás del proyecto de Open Security Training, mi sincero agradecimiento por la dedicación y por el material brindado generosamente a la comunidad.

Sin documentos

Evidentemente, o los desarrolladores de LibreOffice son fans de Los Rodríguez, o bien me ha mordido este bug [1,2,3].

Ciclo de charlas de Software Libre 2011

El Grupo de Usuarios de Software Libre de la Universidad Nacional de Luján (UNLUX) invita a toda la comunidad, profesionales e interesados en Tecnologías de la Información y la Computación al “Ciclo de charlas de Software Libre — CDC SoL” edición 2011.

Este es un evento gratuito, abierto, de interés general, orientado a toda la comunidad y destinado a la difusión y capacitación en el cual expertos en diferentes áreas hablaran sobre temáticas del Software Libre. Habrá charlas técnicas e informativas, cuyos principios fundamentales son el fomento y la difusión del software libre tanto en el uso de herramientas cotidianas, como también para el desarrollo de modelos de negocio sustentables.

El CDC SoL 2011 se llevará a cabo el día 19 de noviembre de 2011 de 10 hs. a 18 hs. en la sede central de la Universidad Nacional de Luján.

Para obtener más información o registrarse como asistentes pueden dirigirse al sitio oficial cdcsol.unlux.com.ar o bien al correo organizacion@unlux.com.ar.

¡Esperamos contar con la participación de todos!

Bashismos

Esto surgió mientras un amigo depuraba un script de backup. Supongamos que creamos un script denominado ./myscript con el contenido siguiente:

echo parametro1 es $1
echo parametro2 es $2

Y luego lo ejecutamos alternativamente con los intérpretes Dash y Bash:

mauro@yoda$ dash
$ . ./myscript
parametro1 es
parametro2 es
$ . ./myscript foo bar
parametro1 es
parametro2 es
mauro@yoda$ bash
$ . ./myscript
parametro1 es
parametro2 es
$ . ./myscript foo bar
parametro1 es foo
parametro2 es bar

¿Se nota la diferencia?

Efectivamente, al utilizar el comando “.” (dot o source) Dash no pasa ningún argumento al script, mientras Bash sí lo hace. ¿Bug o Feature? Según parece, es una implementación estricta del estándar POSIX. En cualquier caso, hasta que nos dimos cuenta, fue un dolor de cabeza.

Random wallpaper changer

La semana pasada dediqué unos minutos a buscar algún software sencillo para rotar el fondo de pantalla aleatoriamente en GNOME, porque los que tengo ya me aburren, y se me ocurrió que ir rotándolos al inicio o cada cierto tiempo estaría piola. Lamentablemente no pude encontrar nada en Gnome que me permita indicar un directorio con imágenes y vaya cambiándolas cada tanto. Curiosamente XFCE sí lo tiene y si no me equivoco KDE también lo permite desde hace bastante.

El repositorio de Debian posee aplicaciones para cambiar el fondo de pantalla, pero no encontré ninguno que me satisfaga, sea porque no realiza rotación automática, porque no está disponible en la release estable, porque el método de funcionamiento es un tanto complejo para lo que hace, o bien porque requiere un montón de dependencias para funcionar (mono, anyone?).

Lo que pido es muy sencillo, dar una carpeta con archivos de imágenes, un tiempo de duración de cada fondo y listo, no más que eso; ni siquiera hace falta un diálogo de configuración. Como sé que, afortunadamente, los entornos de escritorio en Linux se llevan bien con la línea de comandos, no tardé mucho en encontrar la forma de cambiar el fondo de Gnome desde consola. Y de allí a cambiarlo automáticamente es un paso, por lo que terminé con un pequeño script en bash que denominé, en un alarde de creatividad, wallchanger, que no es sino una versión floreada de algo extremadamente sencillo:

#!/bin/sh
while true; do
    CHOSEN=`find /usr/share/backgrounds -iname \*.jpg -print | shuf -n 1`
    gconftool-2 -s -t string /desktop/gnome/background/picture_filename $CHOSEN
    sleep 300   # 5 min
done

La versión completa soporta además algunos parámetros útiles tales como cambiar la carpeta de imágenes, el tiempo de presentación de cada una, o el entorno de escritorio sobre el cual realizar el cambio:

Usage: wallchanger [-g|-x] [-f FOLDER] [-o MODE] [-w NN]
  -g          set GNOME wallpaper
  -x          set XFCE wallpaper
  -f FOLDER   choose from wallpapers in FOLDER
  -o MODE     set wallpaper mode [scaled|zoom|centered|...]
  -w NN       change wallpaper every NN seconds

Como siempre, por si a alguno le es útil, dejo el enlace de descarga: wallchanger

tvtime + xmltv + tv_grab_ar.py

En lo que ha sido del año pasado he dedicado poco tiempo a la TV, tras advertir como se viene abajo la calidad de la programación (o como cada vez uno se pone más exquisito), me da menos ímpetu. Veo la “caja boba” por la PC, como todo el que quiere ahorrar espacio, mediante una pequeña y económica placa sintonizadora (Encore ENLTV-FM) que funciona muy bien en Linux, incluso con control remoto.

Tratando de encontrar alguna emisión como la gente por el canal de cable, hace unos meses me dediqué a hacer funcionar la información en pantalla de tvtime. Básicamente, tvtime obtiene la información de programación a partir de un archivo con formato estándar XMLTV, por lo que del lado del software de visualización está todo hecho, lo que falta es conseguir una fuente desde la cual obtener la información y entregársela de la forma adecuada (es decir, generar el archivo XML).

De eso se encargan los scripts del paquete xmltv-util. En particular, el script tv_grab_ar toma la información de mi proveedor de cable en argentina, amasa los datos y escupe un xml que se puede pasar directo a tvtime. Lamentablemente no logré hacer funcionar la versión 1.6 de tv_grab_ar tal cual viene en el paquete, y tras varios minutos haciendo debugging sobre las líneas decidí dejar de descifrar perl y comenzar a escribir un nuevo script en python.

Las primeras versiones fueron bastante sencillas, la librería BeautifulSoup lxml (BeautifulSoup ya no funciona correctamente) facilita mucho nadar en el HTML del sitio web de MC. En versiones siguientes añadí la posibilidad de descargar la reseña de cada programa de TV, una funcionalidad que según creo no estaba en el paquete original.

Básicamente los pasos son: obtener la grilla de programación de la semana actual para cada canal, y luego para cada programa obtener el título, horario, descripción, género, etc. Como la descarga de descripciones es muy tediosa y lenta (es como mínimo una petición HTTP por programa) y como muchas veces los programas se repiten (en la misma semana o entre semanas) aproveché el módulo pickle para almacenar el diccionario de emisiones entre invocaciones al script, agilizando de esta manera la actualización de los datos.

Finalmente terminé con este script que dejo en el blog por si a alguien le sirve. Las capturas de pantalla son un indicio de como tvtime presenta la información. Como siempre, cualquier consulta, sugerencia, crítica o mejora es bienvenida.

Descarga: tv_grab_ar.py [ver. 2015.03.02-1]

Últimos cambios: Fix sutil por problemas en la codificación de los títulos. Reincorporación del caché y de la descarga de descripciones de los shows. Sean pacientes pues la descarga ahora demora bastante más tiempo que antes. Si quieren la programación rápidamente, aunque no tenga las descripciones, usen –skip-descriptions. Como no tengo forma de probarlo localmente, Please Test & Give Feedback!

Instalación:

  1. Descargar tv_grab_ar.py y mover el archivo al directorio de tvtime:
    mv tv_grab_ar.py ~/.tvtime/tv_grab_ar.py
  2. Instalar la librería beautifulsoup:
    apt-get install python-beautifulsoup
  3. Instalar la librería python lxml:
    apt-get install python-lxml
  4. Ejecutar:./tv_grab_ar.py --configuree indicar la zona y los canales para los cuales se desea obtener la información. El valor de zone determina la grilla de canales según la localidad.
  5. Ejecutar:
    ./tv_grab_ar.py --verbose --output=programacion.xml

    para obtener la programación y las descripciones de los programas. Este proceso demora varios minutos, sean pacientes.

  6. Iniciar tvtime e indicar que obtenga la programación desde el archivo:
    tvtime --xmltv=programacion.xml

Para finalizar, lo ideal es colocar en el cron de usuario una entrada para ejecutar la actualización al menos una vez por semana.

usage: tv_grab_ar.py [-h] [--days N] [--offset N] [--skip-descriptions]
                     [--output FILE] [--configure] [--config-file FILE]
                     [--quiet] [--verbose] [--list-channels] [--zone N]
                     [--capabilities] [--describe] [--description]
                     [--cache FILE] [--version]

Get Argentinian television listings in XMLTV format

optional arguments:
  -h, --help           show this help message and exit
  --days N             Grab N days. The default is 3.
  --offset N           Start N days in the future. The default is to start
                       from today.
  --skip-descriptions  Do not download program descriptions.
  --output FILE        Write to FILE rather than standard output.
  --configure          Prompt for which channels and write the configuration
                       file.
  --config-file FILE   Set the name of the configuration file, the default is
                       </home/maurom/.xmltv/tv_grab_ar.conf>. This is the file
                       written by --configure and read when grabbing.
  --quiet              Suppress the progress messages normally written to
                       standard error. [not implemented]
  --verbose            Display additional information.
  --list-channels      Display only the channel listing.
  --zone N             Override user location for retrieval of channels.
  --capabilities       Show which capabilities the grabber supports. For more
                       information, see
                       <http://wiki.xmltv.org/index.php/XmltvCapabilities>
  --describe           Show a brief description of the grabber.
  --description        Show a brief description of the grabber.
  --cache FILE         Cache description data in FILE. The default is 
                       </home/maurom/.xmltv/tv_grab_ar.db>.
  --version            show program's version number and exit

Son los pequeños detalles…

Por ejemplo, que el reproductor VLC nos reciba con gorro navideño en las fiestas.

O la pantalla de inicio de ReactOS, en honor en su versión 0.3.11 “for Workgroups”.

Son pequeños detalles, guiños hacia el usuario común, los que nos hacen recordar que detrás de cada software hay gente como uno.

Felices Fiestas!!

Copyright © All Rights Reserved · Green Hope Theme by Sivan & schiy · Proudly powered by WordPress