Scp y C#

Hay veces que la vida te hace sentir inseguro, triste, alicaído, dolido y débil…

Then again, hay veces que… bueno, un video dice más que 1M palabras:

El código relevante:

Scp bule = new Scp(servidor, user, pass);
bule.Connect(puerto);
bule.Put(archivo origen, archivo destino);

Y la biblioteca relevante:

http://www.tamirgal.com/blog/page/SharpSSH.aspx

😀

Extraer nombres de rutinas en códigos fuente tipo C

Bien dicen que la necesidad es la madre de la invención.

Tenía que extraer todos los nombres de rutinas de las diferentes clases de C# que he estado trabajando. Después de buscar en Visual Studio por alguna opción que me permitiera hacer esto de manera sencilla – y vaya que busqué – me desesperé y pensé… finalmente son texto plano, no? Las clases, esto es.

Pues, ¡claro que lo son! Y entonces awk viene muy al caso. El siguiente script sirve para cualquier código fuente tipo C (rutinas con parámetros entre paréntesis, código de la rutina entre llaves) – siempre y cuando las llaves no estén nunca en la misma línea que el nombre de la rutina (una práctica relativamente común). Ejemplo de lo que sirve:

modificador modificador RUTINA(parámetros si los hay)
{
...
}

o también

modificador modificador RUTINA(parámetros si los hay)
{...}

o cualquier combinación entre ellas. Luego entonces, el script:

awk 'BEGIN{x=0;} {if($0 ~ /{/) x=x+1; if($0 ~ /}/) x=x-1; if(x==0 && $0 !~ /}/) print $0;}'

Nótese que esto no nos quita los modificadores, solo el código intermedio. Si queremos quitar todo lo demás, podemos utilizar sed – pero después de 10 minutos de jugar con él me doy cuenta que no es trivial (al menos ahorita ¬¬) y lo dejo para otro post – o como dijeran mis libros de la prepa: “Queda como ejercicio para el lector”.

🙂

Yujú!

Misión: rotar una imagen para su impresión en C# (counter-clockwise 90º)

Tiempo estimado de completado: 1-3 horas (dependiendo de lo que Dios Google me dijera)

Resultados preeliminares de búsqueda (re: Google):

Already done

Tiempo real de completado: 5 minutos

YUJU!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Y… me hackearon

Pues… qué puedo decir? Me descuidé, y me descuidé horriblemente.

La historia, horriblemente, es como sigue: hace un mes me ví en la necesidad de configurar un servicio de correo express, por cuestiones profesionales. Y como buen debianero, dije “pues el exim, he escuchado que es muy práctico!” Y entonces hice un sencillo apt-get, configuré algunos parámetros… y listo. No configuré un open relay (digo, tampoco soy un completo idiota) pero sí dejé muchos parámetros de manera insegura. Aún peor, y a diferencia del resto de mis servicios, no lo puse en una jaula, ni le cambié el usuario predeterminado. Total que bueno, hay cosas que uno mismo se busca…

Un par de semanas después, Javier tuvo una plática (de botnets) y lo acompañé. Durante la plática, comencé a recibir un montón de correos de sergiob, informándome que habían nuevos comentarios en el blog. Como esto es tremendamente raro (considerando que nadie *jamás* pone comentarios – vamos, casi nadie lee el blog para empezar) inmediatamente verifiqué… y ciertamente, era puro spam. Cambié la configuración predeterminada del wordpress, de manera que todos los comentarios requirieran aprobación previa, y cerré capítulo. Ni volví a pensar en ello…

…hasta hoy.

Amazon (mi amable proveedor de nubecitas) me mandó mi factura mensual, como todos los meses. Apenas y volteo a ver los correos: las cuentas suelen ser ridículamente bajas. Excepto hoy. Hoy, la cuenta reportada excedía en 10,000% (y no, no exagero) lo que normalmente pago. Lo que es… bueno, es bastante. Mi reacción fue inmediata: verifiqué el reporte de uso de Enero, observé con horror que la cuenta era correcta, bajé los reportes para un análisis posterior, y abrí una terminal para corregir los problemas. Los hallazgos fueron… terribles.

Los atacantes consiguieron acceso a través de una vulnerabilidad de exim (específicamente esta) y tomaron control del sistema. Se acomodaron felices, pusieron su bot, y descargaron… y descargaron…

860 Gigabytes.

El problema ya está controlado, y no hay hueco de exim por donde puedan volverse a colar. Al menos me llevo conmigo dos lecciones: la primera, dolorosa porque la repito (y suelo vivirla), no hagas las cosas mal, ni siquiera por hacerlas rápido. La segunda, y más importante en mi opinión, monitorea, maldita sea!. No porque sea tu servidor personal, y no un equipo de producción, te da derecho a olvidarlo a la buena de Dios. Pero en fin… echando a perder se aprende.

Al menos ya estamos de regreso. A ver que tal sale el servicio de correo de Amazon.

(Con disculpas a los profesionistas del tema, pero “me explotaron una vulnerabilidad” no tiene el mismo sonidito, o sí?)

Messenger 2011, Tweetdeck, y mi CPU: el asesino (no tan) silencioso

Como aquellos que me conocen saben, tengo una cierta costumbre de trabajar de noche. Es fabuloso para mí: nadie me molesta, no molesto a nadie (salvo por el ruido del teclado), avanzo muy rápido, la red está especialmente fluida… todo conspira para que sea mi horario de facto. Evidentemente, como me encanta la música, suelo traer puestos mis audífonos – los muy fantásticos MDR-NC7 de Sony, altamente recomendados por cierto – y evidentemente no escucho absolutamente nada de lo ocurre afuera.

Por ello, no me dí cuenta del problema inmediatamente.

Hoy en la tarde noté que tenía mucho calor. Esto es anormal en mi cuarto: desde que sergiob se mudó a Amazon, no existe un equipo de cómputo con su CPU al 100% todo el tiempo (y por ende, con ventiladores a máximo), lo que reduce muchísimo la temperatura – sin mencionar el gasto de luz eléctrica. Pero recuerdo bien la sensación… total que encontré las mismas condiciones, y me sorprendió mucho. Tenía la televisión prendida, y bueno, no me dí cuenta al inicio que los ventiladores zumbaban al máximo, prácticamente gritando “wey! Pon atención!” Llegó la noche y el calor continuaba. Con los audífonos, el ruido hubiera sido evidente – pero, afortunadamente, Elena marcó por teléfono. Y esto me forzó a quitarme los audífonos, a escuchar el ambiente… y a notar el tremendo ruido que causaba mi compu. Windows no viene con un monitor de recursos incrustable en la barra de tareas – como lo permite GNOME – de manera que no puedo echarle un ojo permanente a los recursos. OK, pero no es culpa de Windows, enteramente.

Un rápido vistazo al administrador de recursos dió con 3 aplicaciones que, alternadamente, se jugaban entre el 25% y el %60 de mi procesador. El primero es iTunes: viejo conocido de los problemas de CPU. El segundo fue Tweetdeck: entendible en que es Beta, aunque… qué demonios tiene que ocupar tanto CPU una estúpida aplicación que en resumen es un RSS reader? Ah, las maravillas de Adobe Air. El tercero, sin embargo, me sorprendió tremendamente: Windows Live Messenger.

Así es. El ubicuo mensajero, que solía ser de los programas menos demandantes (algo que contribuyó tremendamente a su adopción generalizada, por cierto – aquellos usuarios de Yahoo! Messenger o ICQ en los viejos días sabrán a lo que me refiero) – ahora resulta que es un hoyo negro para los recursos de mi sistema. Una ligera investigación reportó que, efectivamente, WLM 11 tiene un grave problema de recursos – relacionado con la “Vista completa”, donde permite recabar información de diferentes redes sociales. Al parecer, esta tarea acosa terriblemente al procesador, causando picos constantes que, a la larga, conllevan un aumento de temperatura, y todos los problemas que esto último ocasiona.

La mejor solución? Cambiar a “Vista compacta”. Por supuesto que se pierde el componente de redes sociales: pero francamente, prefiero enterarme de algo por las alertas del correo de Facebook, a que mi compu se muera prematuramente. El calor es un terrible asesino, como cualquier persona involucrada en soporte técnico puede asegurarles. Terriblemente efectivo, y lamentablemente fácil de evitar – si estamos dispuestos a controlarlo. Es por ello que me encanta mi panel de monitoreo en Debian, es por ello que pagaría buen dinero por un panel similar en Windows. Realmente lo vale.

Un último tip: otro posible problema de WLM 11 son los anuncios. Un anuncio mal programado (y créanme, los hay) puede inducir el mismo comportamiento excesivo de recursos. Así que ya lo saben: poco y bueno con el Messenger.