Me he pasado unas cuantas horas intentando descargar un vídeo en Flash para no depender de mi conexión a Internet cuando quiera volver a verlo. Con Firefox no suelo tener mayor problema en hacerlo gracias a Video Download Helper, una extensión que a golpe de click te resuelve la papeleta casi siempre. Pero el caso de esta tarde quedaba fuera de los dominios de Video Download Helper, porque no se trataba de un vídeo en Flash (FLV) descargado desde la web (HTTP), sino del típico esquema reproductor multimedia en Flash + streaming de vídeo por RTMP.

En concreto, mi “reto” era descargar la entrevista de Stephen Colbert a Lawrence Lessig (os la recomiendo, muy buena ;-) ).

Buscando en gúguel llegué a páginas bastante desactualizadas que me hablaban de infinidad de programas para Win32 como GetFLV o ReplayAV que terminé probando en Wine y en una máquina Windows con VirtualBox, con poco éxito.

Cada vez que pulsaba el botón de play, mi frustración iba en aumento, porque tenía claro que “si se puede ver, se puede descargar”. Así que con el típico enfoque “moscas a cañonazos” que predomina en el recetario de este humilde blog, terminé dando con lo obvio (aunque como dijo Lacan: “Lo obvio suele pasar desapercibido, precísamente por obvio”, también procede el más castizo refrán: “vistos los cojones, toro”): capturar todo, buscar URLs en la captura y descargarlas.

Manos a la obra:

1. Captura de tráfico

Para capturar el tráfico, nada como el viejo tcpdump a todo trapo:

tcpdump -i eth0 -p -s 0 -w captura.pcap
tcpdump: listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
^C7042 packets captured
7042 packets received by filter
0 packets dropped by kernel

2. Búsqueda en la captura

Para buscar, probamos con grep:

grep -i rtmp captura.pcap
Coincidencia en el fichero binario captura.pcap

Sabemos que estás ahí…

strings captura.pcap | grep rtmp
rtmp://cp9950.edgefcs.net/ondemand/mtvnorigin/gsp.comedystor/com/colbert/season_05/episode_004/cr_05004_05_240.flv
rtmp://cp9950.edgefcs.net/ondemand/mtvnorigin/gsp.comedystor/com/colbert/season_05/episode_004/cr_05004_05_480.flv
@rtmp://88.221.92.180:1935/ondemand?_fcs_vhost=cp9950.edgefcs.net

Perfecto, a por ello…

3. Descarga del stream de vídeo

Para bajar un flujo de datos en RTMP, rtmpdump o flvstreamer son nuestros aliados:

flvstreamer -r "rtmp://cp9950.edgefcs.net/ondemand/mtvnorigin/gsp.comedystor/com/colbert/season_05/episode_004/cr_05004_05_240.flv" -o colbert.flv
FLVStreamer v1.8e
(c) 2009 Andrej Stepanchuk, The Flvstreamer Team, license: GPL
Connecting ...
Starting download at 0.000 kB
Metadata:
duration 370.94
width 240
height 180
videodatarate 250
audiodatarate 80
framerate 14.98
creationdate Fri Jan 9 01:01:09 2009
lasttimestamp 370.91
lastkeyframetimestamp 368.97
videocodecid 4
audiocodecid 2
audiodelay 0
canSeekToEnd FALSE
filesize 12810455
videosize 8851208
audiosize 3879788
datasize 19758
ERROR: ReadPacket, failed to read RTMP packet body. len: 65812
Download may be incomplete (downloaded about 8.30%), try --resume
Closing connection.

Vaya, parece que se corta cada pocos bytes, probaremos usando la fuerza bruta y la opción “resume”:

while true; do flvstreamer --resume -r "rtmp://cp9950.edgefcs.net/ondemand/mtvnorigin/gsp.comedystor/com/colbert/season_05/episode_004/cr_05004_05_240.flv" -o colbert.flv; done

¡Genial! El FLV ya está en nuestro disco duro a buen recaudo. Ahora a remezclaro y vitaminarlo :-)


Hackit 2009

24Dic09

Tarde, muy tarde, mucho más tarde de lo razonable… pero bueno, aquí está, el hackit del 2009 disponible para que wannabes, hax0rz y demás calaña se entretengan en estas entrañables fiestas. Esta edición ha sido coordinada por el inefable Hey_neken, al que le hemos ayudado entre topo[LB], Futur3, roman – el gallego, thEpOpE / Nocturns, Jonbaine, OntzA, sourcerer, Juanan y otra gente que conformamos la lista creade después del Call for levelz de 2008.

Podéis jugar online desde http://hackit2009.txipinet.com, bajaros el tarball con los niveles y configurar un servidor local o crear un mirror propio en Internet. Si elegís esta última opción, avisadme para referenciar vuestro mirror en la página de hackits ;-)

Happy hacking! ;-)

PD: Hay dos niveles (11 y 12) que se han quedado fuera del tarball: uno requiere de un servicio de red y el otro es un dump de memoria enorme que no hemos podido traer fácilmente al servidor. Intentaremos colgar este último más adelante, de todas formas.


No quiero perder la ocasión de sumarme a la iniciativa del Proyecto Sandia de convertir el 20 de diciembre en el “Día mundial del escepticismo y contra el avance de las pseudociencias”:

Como aportación personal, me limitaré a enlazar las entradas de este blog que tienen relación con este día:

Aprovecho también para mostrar el vídeo sobre “Open-mindedness” (Apertura Mental) de QualiaSoup (tienen un canal de Youtube buenísimo con muchos otros vídeos):

PD: En esta entrada del Proyecto Sandía tenéis enlaces a otros blogs que han secundado esta iniciativa ;-)


Este artículo va de saltarse restricciones, de forma manual y un poco chapucera, pero efectiva O:-)

Restricciones que quizá estén ahí por algo, pero que personalmente me tocan la moral porque no me gusta nada depender de la conexión a Internet y de que los hados de la Cloud Computing se apiaden de mí cuando los necesite.

El caso es que cuando encuentro una presentación en Slideshare que me gusta, suelo descargármela y archivarla en mi PC (muy 1.0, ya sé, pero es que se ven muchos sopapos 2.0 y tampoco estamos para perder el tiempo :-D ).

Bueno, al tema. Como os digo, todo esto es un poco manual, quizá se pueda automatizar algo más (animaos a hacer sugerencias en los comentarios ;-) ):

  1. Instalamos GreaseMonkey en nuestro Mozilla Firefox.
  2. Instalamos y activamos el script “SlideShare Downloader” de GreaseMonkey.
  3. Instalamos el complemento DownThemAll! de Mozilla Firefox.
  4. Accedemos a una presentación en Slideshare que no permita la descarga (ésta, por ejemplo). Si hemos hecho los pasos anteriores bien, nos aparecerá un enlace “Download” al lado de la presentación (fijaos que es diferente del original “Get File”): Download Slideshare
  5. Pulsamos en el enlace y nos generará tantos enlaces a ficheros flash como transparencias tenga la presentación: Slideshare download all
  6. En esa ventana, botón derecho > DownThemAll! y nos bajamos todos los SWFs: Slideshare downthemall
  7. Pasamos los SWFs a JPG con SWF2JPG (quizá venga bien un bucle tipo: for F in *.swf; do swf2jpg $F $F.jpg; done).
  8. Con todos los JPGs, hacemos un PDF: convert *jpg presentación.pdf
  9. Profit! ;-)

Julen, el consultor artesano, nos ha pedido colaboración para dotar de contenido al Woka Virtual centrado en medidas concretas para afrontar la crisis económica.

Como dice RMS, “mi bola de cristal tiene nubes”, y encima soy un profano en cuestiones macroeconómicas o de organización, así que no se me ocurre qué aportar. Ante este brete, me he acordado del Fénix de los ingenios enfrentándose a otro encargo y he tratado (pobremente, eso sí) de “revisitarlo“:

Un post me manda hacer el artesano
con medidas concretas que preparen,
que formen y ante la crisis amparen
a la persona, no al recurso humano.

Una que aplicaría bien temprano,
sin dar mucho tiempo a que otros la paren,
es impedir a quienes acaparen
continuar explotando a mi hermano.

Precariado del mundo a la deriva
aplaudiría a rabiar la medida,
escapando al fin, de su hiel nociva.

No faltará quien gritando nos pida
un cambio, una acción más agresiva,
suya es la voz, úsela sin medida.

En Zemos98 lo cuentan mucho mejor con un vídeo.


¡Qué curioso!, ¿no? Hablando desde uno de los medios más antiguos de retransmisión de información de uno de los más modernos. Internet killed TV Star? Probablemente. Lo que no tengo tan claro es que haya hecho lo propio con la radio, parece que se llevan bastante bien :-)

Así que esta mañana, gracias a una invitación de Javier Vizcaino vía Julen, he participado junto a Iratxe Molinuevo en Más que Palabras de Radio Euskadi hablando sobre este día.

No he dicho nada del otro jueves, pero parece que ha gustado, así que me han pasado esa parte del programa:

Luego en los informativos, han dado un corte de este programa:

A mi amama no le ha gustado que me llamaran “txipi” por la radio, me ha dicho que sonaba muy poco serio. Ser poco serio es algo que a amama le parece mal, pero a mí me parece de maravilla :-)


Bueno, realmente esta receta sirve para cualquier plataforma en la que funcionen Gnash y scrot (bonito nombre, LMAO! :-D ).

El caso es que ayer me pasé toda la tarde buscando una solución decente para pasar SWFs (ShockWave Flash) a cualquier formato de imagen. Google está repleto de miles de programas cutre-shareware que no funcionan con Wine y la única orientación que veía en los foros de ayuda era usar las swftools, que son geniales, pero no hacen lo que necesitaba (renderizar una animación SWF y sacar un pantallazo de la misma).

Así que pensé: en UNIX se sigue el principio KISS (Keep It Simple, Stupid), cada aplicación pretende hacer pocas cosas y hacerlas bien. Tenemos una aplicación que reproduce SWF desde la línea de comandos y otra que saca pantallazos desde la línea de comandos. Las juntamos con un poco de pegamento shell script y arreglado :-)

El resultado es un script que hace lo que promete, aunque tiene algunas limitaciones importantes:

  1. Tarda 1 segundo por animación SWF (no es muy lento, pero tampoco es que sea una maravilla).
  2. No te permite hacer nada más con el ordenador mientras se está utilizando (es un segundo por SWF, pero si son muchas… welcome back to the batch-world!!).
  3. Las imágenes generadas tienen la misma resolución que tu escritorio. Si las quieres en otra resolución, cambia la de tu escritorio :-D

Las limitaciones están causadas por el método troglodita para extraer el pantallazo. El script básicamente lanza la animación en pantalla completa, saca el pantallazo y mata el reproductor Flash. Ya sé que no es profesional, pero funciona O:-)

Aquí tenéis el código, quizá a alguien le sea de ayuda:

#!/bin/sh

GNASH="/usr/bin/gtk-gnash"
SCROT="/usr/bin/scrot"
OUTPUTFORMAT="jpg"

if [ $# -ne 1 ]
then
  echo "error, usage: $(basename $0) file.swf"
  exit 1
else
  $GNASH --fullscreen $1 &
  GNASHPID=$!
  $SCROT -d 1 $1.$OUTPUTFORMAT
  kill $GNASHPID
fi

Como podéis observar, es necesario indicar las rutas a Gnash y scrot para que funcione. Si queréis un SWF2PNG o similares, basta con cambiar el OUTPUTFORMAT.

Happy hacking ;-)


No hace falta ser Peter Pan para creer en las Adas, porque ellas están ahí aunque nadie crea en ellas (muy al contrario que las hadas).

Hoy es el día de día de Ada Lovelace (llevábamos perpetrándolo en el libro del mal hace tiempo) y este artículo va dedicado a ella, la primera programadora de la historia, y la primera hacker de la “máquina analítica” de Babbage. Pero en lugar de hacer un resumen de su vida y milagros, extraído de la Wikipedia, he preferido hablar de las Adas que siguen su senda 200 años después.

Ada Lovelace

Ada Lovelace

Lo malo de nombrar a unas es que siempre quedan en el tintero otras. Que me perdonen las ausentes, ésta no es una lista exhaustiva:

  • Valery Aurora: desarrolladora del núcleo Linux, ahí es nada. También ha escrito bastante sobre las mujeres dentro de la comunidad del Software Libre, LinuxChix, etc.
  • Joanna Rutkowska: especialista en seguidad informática de primer nivel, famosa por sus rootkits, covert channels, Blue Pill, hack al hypervisor… 100% l33t
  • Amaya Rodrigo: primera desarrolladora de Debian e impulsora de Debian Women
  • Miriam Ruiz: otra Debian Developer, metida en mil fregaos relacionados con mujeres y tecnología (LinuxChix, Ubuntu-Women, WikiChix, ChicasLinux, Indymedia Women o Systers).
  • Mercè Mollist: periodista especializada en tecnología y cultura hacker. Lleva muchos años en esto, pero sigue con las mismas ganas que al principio :-)
  • Olga Berrios: cibervoluntaria y educadora, además de formadora en comunicación, consultora tecnológica para ONG, periodismo social, ciberperiodismo y creación de redes y periodismo local… bloguea sobre todo esto casi a diario.
  • Dolores Reig: como su propio blog dice, e-learning, web 2.0, web 3.0, web semantica, knowledge management, cops, futuros, cibercultura, net-art… contado de forma amena :-)
  • Tíscar Lara: profesora de Producción Audiovisual y Tratamiento de la Información en Televisión, en la UC3. En su blog suele hablar de cultura digital, aportando una certera visión de los cambios que se avecinan.
  • Las Adas de los hackmeetings: Rosa, Carolina, Amaia, Marga, Marais, Pisoni, etc. Verdaderas alma mater del movimiento :-)
  • Las Adas del e-ghost: Aida, LadyPain, Loretahur, etc.

Me dejo a muchas, Maria pqtk, Montserrat Boix (interesante la lista de sus chicas favoritas en su blog), Beatriz Busaniche

Bufff, ahora mismo me he dado cuenta de que esta lista es muuucho más larga de lo que en un principio pensaba. Lo siento, no quiero hacer un directorio exhaustivo de chicas hacker. Solamente escribiendo esto ya me ha servido para darme cuenta de la cantidad de Adas que día a día siguen desbrozando el camino que abrió Lady Lovelace.

Feliz día de Ada a todas ;-)

PD: Lista de posts y su Geolocalización.


Mi colega Ender, rompiendo las reglas en Qatar, con un par…

breaking-the-law


Si fuera una atolondrada miss respondería que “ha ganado la Ciencia” (¿a los misters les hacen preguntas trampa también? no sé, no veo concursos de belleza), pero la verdad es que me he quedado más feliz que una perdiz ganando el primer premio en el concurso de fotografía “Reflejos de la Ciencia – Zientziaren Islak” :-)

Entre dos mares / Itsaso biren artean

Entre dos mares / Itsaso biren artean

La foto que envié no es per se merecedora de ningún premio, sacada en automático, a mano alzada, en mitad de un paseo por Azkorri (hay fotos con una calidad muy superior). Pero como ocurre en los exámenes, hay que leer bien el enunciado, y en este concurso no se premiaba la calidad artística de la foto (que solamente influía en el 20% de la calificación), sino la composición del mensaje científico (el 40% de la calificación) y ahí es donde intenté dar el do de pecho explicando algunas cotidianidades interesantes:

También envié un vídeo que gustó al jurado, pero me dijeron que no podía optar a dos premios, algo que vi normal. Aún así, me alegró que les pareciera interesante:

Así que lo dicho, estoy encantado con el premio, sobre todo porque tiene que ver con algo que me apasiona: la ciencia :-)

Desde aquí mi agradecimiento al jurado, los organizadores y los patrocinadores ;-)