¡Nuevo sitio del LugCOS!: desde GNU/Linux hasta impresoras 3D (pasando por electrónica y eventos "sociales").


Piezas de una Prusa i3

Ejemplo de piezas para de una Prusa i3 impresas con una Prusa i3 hecha con materiales reciclados:

IMG-20150816-WA0003.thumbnail.jpg

Primer post

Luego de las innumerables insistencias de mis amigos del LugCOS, uso Nikola para crear este sitio :)


Limpiar WordPress infectado

Si tenés un blog con WordPress y te atrasás con las actualizaciones (o no) tarde o temprano te embocan (no es la primera vez que me pasa). Alguna herramienta automática detecta que estás corriendo una versión vulnerable a cierto fallo de seguridad reciente y otra inserta código malicioso en todos los archivos de tu sistema de blogging en los que pueda escribir.

Las consecuencias son que cuando tus visitantes intenta entrar al blog son redirigidos a un sitio porno o de venta de Viagra. Si se accede con Chrome a uno de estos sitios infectados, un enorme cartel rojo de avisa que el sitio incluye contenido de una web rumana reportada como distribuidora de malware.

Tu hosting te manda un mail diciéndote que no te sientas solo por que no lo estás, pero en realidad si lo estás. Te recomiendan cosas poco prácticas como actualizar, cambiar claves o restaurar un back-up previo a la infección. Tengo casi 1000 archivos .php llenos de código malicioso y me decís que cambié mis claves (?). Necesito una forma de arreglar esto.

Dejo aquí unos tips en base a mi experiencia personal, con la certeza de que en cualquier momento voy a volver a buscarlos por necesidad.

Muchas de las herramientas que agregan código malicioso (las más simples) agregan una línea al principio de todos los .php en los que pueden escribir. En mi caso esta línea tenía esta forma:

 <?php /**/ eval(base64_decode("aWYoZnVuY3...oZnVu"));?><?php

(código codificado que es decodificado y evaluado al ejecutar el archivo).

¿Qué archivos están infectados?

grep -l eval\(base64_decode -R *

¿Cuantos archivos hay infectados? (aprox.)

grep -l eval\(base64_decode -R * | wc -l

Limpiar todos los archivos:

for x in `grep -l eval\(base64_decode -R * | grep -v .back`; do sed -i.back '1d' $x ; sed -i '1 i <?php' $x; done

El anterior comando busca todos los archivos infectados (excepto los que tienen extensión .back), les borra la primer línea y luego les agrega una primer línea con la apertura del tag php.

Mejoras, sugerencias y correcciones bienvenidas!


Generar un video a partir de miles de fotos

Un par de noches atrás nos juntamos con los excompañeros de la facu en casa. Mi amigo Nico trajo su nuevo chiche, una camarita de alta resistencia que está haciendo furor por estos días: GoPro.

Una de las cosas que se puede hacer con la cámara es dejarla en algún lugar sacando fotos cada, por ejemplo, dos segundos. Luego, con un comando en Linux, puede generar un video. El resultado es muy bueno; muy acorde a lo acelerado que se vive en estos días y una forma de que los nerds avancemos varios casilleros en la escala social mostrando el artilugio.

Le pedí el pace mágico para tenerlo a mano si alguna vez me compro uno de estos aparatitos:

for a in $( seq -w 65 141); 
do ls /media/3837-3763/DCIM/100GOPRO/GOPR0$a.JPG >> lista.txt; done
mencoder mf://@lista.txt -mf fps=25:type=jpg  -lavcopts vcodec=mpeg4:vbitrate=3200000:mbd=2:mv0:trell:v4mv:cbp:last_pred=3:predia=2:dia=2:vmax_b_frames=2:vb_strategy=1:precmp=2:cmp=2:subcmp=2:preme=2:vme=5:naq:qns=2 -vf scale=1280:1024 -oac copy -audiofile soundtrack.mp3 -o video-1024.avi

Cómo unir videos en GNU/Linux

Ayer en Carlos Pellegrini fue el Día del Pueblo. Una de las actividades que hubo fue una carrera de autos con obstáculos. Aproveché para filmar un poco y probar mi nuevo celular, por lo que terminé con varios archivos mp4. Para subirlos a Internet quería unirlos: ¿cómo hacerlo de forma fácil? Si tenés varios archivos de texto y querés unirlos, o expresándome de forma más correcta, contactenarlos, usás el comando cat. ¿Se puede hacer lo mismo con videos? Suena algo loco cuando se escucha por primera vez, pero hay algunos formatos que SI lo soportan, como mpeg 1 y 2.

Usando ffmpeg podemos convertir los archivos mp4 a mpeg. Parados en el directorio donde estén los videos:

for i in `ls *.mp4`; do ffmpeg -i $i -sameq $i.mpeg; done

Ahora simplemente los concatenamos y redirigimos la salida de cat a un nuevo archivo:

cat *.mpeg &gt; video.mpeg

Notemos que el orden lexicográfico de los videos coincide con el orden en que fueron tomados; por eso puedo usar el * y obtener un resultado ordenado en el tiempo.

Listo, subí el resultado a YouTube.

Me hubiese gustado una transición más suave entre video y video, pero investigarlo y hacerlo excedía la ecuación costo beneficio. Se escuchan ideas!


Error plugin flash en Ubuntu 10.04

Hace un par de días me encontré que no podía acceder a los videos de Youtube porque me aparecía un mensaje diciendo que debía actualizar a la versión 10. Demás esta decir que luego de intentar varias veces actualizar el plugin usando las vias normales no lo pude hacer. Googleando me encontré con la única solución que me dio resultado, un script que baja automáticamente una de las últimas versiones del famoso plugin de Adobe para la versión de 64 bits y lo instala. Acá les dejo el enlace, me anduvo perfecto tanto para firefox como para Chrome.

http://www.myscienceisbetter.info/install-native-64bit-flash-player-10-on-linux.html

Saluditos


Teclado lento en Ubuntu 10.04 Lucid Lynx

Sin querer, no se que hice con una combinación de teclas, habilité en mi Ubuntu 10 Lucid Lynx, una función de accesibilidad que hace que el teclado se ponga lento, es decir uno apreta, por ejemplo la letra "a" y aparece luego de un segundo. Me costo un perú encontrar la solución pero he aquí la misma por si a otros les pasa lo mismo:

Ir a "Sistema" -> "Tecnologías de asistencia" -> "Accesibilidad de teclado" --> deshabilitar "Teclas lentas"

Listo


Cómo cambiar el puerto de salida por defecto de ssh

Si en una terminal tipeamos:

ssh user@domain.com

el cliente ssh intentará contactarse al puerto 22 de domain.com. Cómo cambiamos ese puerto?

ssh -p 2222 user@domain.com

Pero qué pasa si no tenemos acceso a cambiar ese parámetro? Puede pasarnos esto? Sí, por ejemplo si accedemos a un repositorio cvs por ssh; cuando ejecutamos uno de los comandos cvs, el tunel ssh se hace sin que nos demos cuenta. Si el servidor al que nos queremos conectar escucha en un puerto distinto al por defecto, tenemos un problema.

Hoy no me acordaba cómo se configuraba esto y resultó bastante tedioso buscarlo en Internet (todas las respuestas a la búsqueda era sobre como cambiar el puerto en el que un servidor ssh escucha). Lo dejo aquí para futuras referencias.

La forma de configurar un puerto por defecto para un cliente ssh en GNU/Linux es editando el archivo .ssh/config y añadiendo la línea:

Port NNNN

dónde NNNN es el número de puerto.