1.7.11

BruteForce en WordPress con wpbf

Una de las aplicaciones web que mas se esta usando para armar sitios es WordPress. Como muchas otras aplicaciones web, su instalacion por defecto, es vulnerable a ataques de fuerza bruta.


Auditando contraseñas debiles

Utilizando un password "fuerte" (largo, que incluya numeros, letras y no se predecible), sumado a la latencia de la red (no pudiendo probar tantos passwords por segundo) hacemos que un ataque de fuerza bruta sea impractico. Pero la experiencia nos demuestra que muchos usuarios no suelen preocuparse mucho por la complejidad de sus contraseñas, mas bien piensan "quien va a intentar "hackear" a mi blog?". Lo cierto es que este tipo de ataques pueden automatizarse y quiza a nadie le interese "hackear" tu blog especificamente, pero si puede interesarle a alguien tener un espacio en un hosting en donde alojar scripts (malware, botnets, etc) o contenido (imagenes, musica, peliculas, etc) sin tu permiso.

Habiendo dejado en claro que para un ataque practico sea practico debemos buscar passwords cortas y predecibles, podemos utilizar la herramienta wpbf (WordPress BruteForce) con un diccionario chiquito y su opcion por defecto de utilizar keywords del blog como contraseñas.


La herramienta

El wpbf esta desarrollado en Python bajo licencia GPL y su codigo es accesible a traves del repositorio en GitHub de wpbf. Entre sus caracteristicas principales podemos destacar:

  • Soporte para threads (hilos) que hacen mas rapida las pruebas con diccionarios grandes

  • Utilizacion de palabras clave del sitio en la lista contraseñas

  • Enumeracion y deteccion de usuarios

  • Soporte para proxy HTTP

  • Utilizacion de la libreria logging de Python permitiendo registro avanzado y configurable

Una vez descargada, la descomprimimos en un directorio y ya podemos comenzar a utilizarla: no tiene dependencias mas que la libreria estandar de Python e incluye un pequeño diccionario de pruebas.

Vamos un ejemplo sobre un blog de prueba ejecutando el script sin ninguna opcion:


$ ./wpbf.py http://localhost/wordpress/
2011-07-01 18:33:03,757 - wpbf - INFO - Target URL: http://localhost/wordpress/wp-login.php
2011-07-01 18:33:03,759 - wpbf - INFO - Checking URL & username...
2011-07-01 18:33:08,139 - wpbf - INFO - Load into queue additional words using keywords from blog...
2011-07-01 18:33:08,802 - wpbf - INFO - Bruteforcing...
3 words left
2011-07-01 18:33:21,012 - wpbf - INFO - Password 'qawsed' found for username 'admin' on http://localhost/wordpress/wp-login.php

Despues de verificar la existencia del formulario de login (default: wp-login.php) y la validez del nombre de usuario (default: admin, puede cambiarse utilizando la opcion -u) se buscan palabras clave para agregar al diccionario y el script lanza threads para iniciar las pruebas. Un detalle de actividad del script puede verse en el archivo "wpbf.log" y en caso de encontrar una contraseña valida se guardara en el log y se mostrara en pantalla.


Solo la mitad del trabajo

Para este ataque necesitamos dos datos: usuario y contraseña. Debido a ciertos aspectos de WordPress podemos enumerar usuarios y comprobar que esos usuarios sean validos. La enumeracion de usuarios se puede hacer mediante la deteccion de redirecciones de la query "?author=" incrementando un entero que corresponderia al ID de usuario (ver TALSOFT-2011-0526) o mediante el analisis de la "Author's archive page" del blog. La herramienta wpbf incorpora estas dos tecnicas para buscar automaticamente un usuario valido antes de comenzar el ataque.


$ ./wpbf.py -eu http://localhost/wordpress/
2011-07-01 19:16:02,092 - wpbf - INFO - Target URL: http://localhost/wordpress/wp-login.php
2011-07-01 19:16:02,093 - wpbf - INFO - Enumerating users...
2011-07-01 19:16:03,615 - wpbf - INFO - Usernames: admin, caco, test


Un video demostrativo

En este video se muestra un ataque como el mencionado anteriormente y enumeracion de usuarios en varios blogs elegidos al azar. Hay que verlo en pantalla completa y la calidad del video deja mucho que desear... pero bueno, aqui esta:




Mitigando el ataque

Para el bruteforce existen dos plugins llamados: User Locker y Login LockDown, no probe ninguno de los dos pero si hacen bien lo que dicen hacer deberia alcanzar para evitar el ataque por fuerza bruta.

Respecto a validar que un usuario sea correcto o no, habria que modificar los mensajes de error del formulario de ingreso al administrador de WordPress unificando los mensajes de contraseña invalida con los de usuario invalido (ver post de EthicalHack3r con una propuesta de patch).

Evitar la enumeracion de usuarios por redireccion ya funciona en las ultimas versiones de WordPress, pero queda pendiente de solucion la extraccion de datos del usuario desde la pagina de archivo del usuario. Nuevamente, habria que modificar el codigo de WordPress y eliminar esta funcionalidad o evitar exponer el nombre de usuario en este tipo paginas.

24.5.11

Como cambiar/resetear el password de administrador en Django

Otra vez me olvide la contraseña del administrador de un sitio que hace meses no trabajo y necesito cambiarla por una nueva. Parados en el directorio en donde tenemos nuestra aplicacion vamos a iniciar una 'shell' y hacer uso del modelo de usuarios:


caco@particula:~/dev/subs$ ./manage.py shell
Python 2.6.6 (r266:84292, Sep 15 2010, 15:52:39)
Type "copyright", "credits" or "license" for more information.

>>> from django.contrib.auth.models import User
>>> usuarios = User.objects.all()
>>> usuarios
[<User: caco>]
>>> usuarios[0].set_password('nuev0passwowd')
>>> usuarios[0].save()


Resumiendo: instanciamos el modelo User, traemos todos los usuarios, seteamos un nuevo password para el primer usuario ([0]) y guardamos en la base de datos la informacion sobre este usuario.

23.5.11

Seguimiento del servicio gratuito de SMS Online y la Aplicacion SMS Online de Personal

Un poquito cansado de que no funcione el servicio de Personal para enviar SMS gratuitos por internet decidi investigar un poco y escribir al respecto notificando a Personal via Twitter cuando el servicio no funcionaba, por que y como detectar cuando esto pasaba.

El problema esta de tu lado

De todas las respuestas de Personal (de 9 personas diferentes que manejan su cuenta de Twitter) ninguna se hacia cargo del problema. Las soluciones que me brindaban tenian que ver con mi navegador, cosas como borrar el historial o las cookies. La mas graciosa fue "Intenta actualizar la pagina reiteradas veces": obvio, si tienen un problema de disponibilidad en algun momento que no este saturado el servicio me va a tocar pero la idea es no tener que pasar por eso (sobre todo como cliente de una compañia de comunicaciones).

Ante este tipo de respuestas, empeze a enviar la entrada en mi blog sobre el analisis del problema y comenzaron a responderme que iban a revisar el problema y al parecer lo hicieron.

Aqui no paso nada

En estos momentos, la pagina de personal para enviar mensajes por internet dejo de mostrar el error de SQL que mostraba cuando no funcionaba PERO el sitio sigue sin ser capaz de generar el CAPTCHA para enviar los mensajes desde la web.



Quiza un error no visible haga creer al usuario promedio que es su culpa, o culpa "del internet", que el sitio no funcione pero a mi me gusta investigar y estos dias tengo mucho tiempo libre!

La aplicacion online

En una de las respuestas de Personal me recomiendan utilizar la "Aplicacion SMS Online", asi que la descargue e instale en una de mis maquinas virtuales. Lamentablemnete la aplicacion no funciono y la solucion que me dio Personal fue reinstalar, el mambo de las cookies y demas.

Nuevamente, me pongo a ver en detalle que es lo que no funciona. Haciendo pasar la aplicacion de Personal por un proxy veo que la aplicacion pide la siguiente URL:

http://www.personal.com.ar/smsonline/aplicacion/config/PersonalSMSOnline.txt

Que desde la aplicacion respondia con un error pero desde el navegador respondia:

Personal SMS Online
1.1.1
1.1.2
\nHay una nueva versión de\nAplicación Personal SMS Online


Haciendo un par de pruebas, pude hacer arrancar la aplicacion eliminando el User-agent de la peticion a esa URL. Una vez pasado este paso, la aplicacion funcionaba de manera "normal". Me alegre mucho, pero la alegria me duro poco y fue muy desmoralizante ver que la aplicacion de escritorio que te bajas de personal no es nada mas ni nada menos que un parser de la web de donde se envian los mensajes (para los no-tecnicos, usa la misma web sacando los datos que necesita para funcionar). Osea que si la web no anda, tampoco anda la aplicacion online.

Estamos en la misma, es casi imposible usar el servicio de las 21.00hs a 24.00hs y en las soluciones que plantean no se reconoce el problema real. Tampoco creo que los tecnicos de una empresa como Personal no sepan lo que pasa, pero como me comento otro usuario del servicio: "no van a arreglar algo que no les representa ganancias" y pareceria que tiene toda la razon.

Quiza alguien lea esto y piense que estoy "atacando" a Personal, pero la verdad es que estoy laburandoles gratis a ver si de alguna vez por todas este servicio (que un monton de gente usa y hasta escuche casos que fue crucial para elegir una compania de celular) funcione perfecto.

6.5.11

Pesima disponibilidad del servicio SMS Online de Personal para enviar mensajes por la web

Me gusta que en Personal se pueden mandar mensajes gratis desde la web a otro Personal; pero casi siempre tengo problemas para utilizar este servicio por errores en la carga completa de esta pagina.

El error visible


El error en concreto es de conexion con una base de datos MySQL:

Can't connect to local MySQL server through socket '/tmp/mysql.sock' (11)

Cada vez que aparece este error en la pagina, no se muestra el CAPTCHA y hace imposible completar el formulario correctamente para enviar un SMS desde la web. Probablemente el CAPTCHA se guarde en una base de datos MySQL y se verifique al suscribirse el formulario.



Interaccion con Personal

Cuando comente en Twitter un vez el problema y respondieron "Hubo tareas de mantenimiento, pero ya esta solucionado. Actualiza la pagina presionando F5 que se corrige!", pero el problema persiste. En otra ocasion, me recomendaron "dsd tu explorador ingresá a Herram/opc d internet tildar eliminar el historial de exploracion al salir, aplicar, aceptar, salir y actualizar la página." pero tampoco no funciono ya que claramente es un error del servidor.

UPDATE (mas "soluciones" que ofrece personal, obviamente no entienden el problema):

- 06/06/2011: Ni bien publique este articulos, negaron nuevamente el problema y me recomendaron hacer "Borrado de cache" [@PersonalAr].
- 15/05/2011: Hola! No tenemos reportado novedades.Probaste borrar el historial d navegación? Intentá actualizar la pag reiteradas veces. LM [@PersonalAr]
- 19/05/2011: Hola! Intentá eliminar el historial de navegación. Saludos! NM @PersonalAr

Analisis del servicio

Analizando un poco como funciona el sevicio, pude ver que hay dos servidores que tienen estos formularios para enviar los mensajes: sms1.personal.com.ar y sms2.personal.com.ar; ambos servidores tiran el mismo error en los mismos periodos de tiempo. Decidi hacer un script muy basico que se compruebe cada un minuto si cada uno de estos dos servidores da error o carga el formulario completo para enviar un mensaje y generar unos graficos para que se puedan ver los problemas de disponibilidad de este servicio.

Aca vemos, por ejemplo, un grafico de sms1.personal.com.ar del 03/05/2011 desde las 20hs hasta el final del dia. Los cuadrados indican si en ese minuto hubo un error o si el formulario se cargaba correctamente. Lo ideal seria que este TODO VERDE.


El script intenta acceder a la pagina "http://sms1.personal.com.ar/Mensajes/sms.php" y buscar en su contenido indicios del error de MySQL que se encuentra al principio de la pagina. Si el error existe no se muestra el CAPTCHA, por lo tanto no es posible completar el formulario para enviar el SMS y mi grafico lo muestra en rojo. Cuando no encuentra el error, asume que vamos a poder enviar un SMS y lo marca en verde.

Otro ejemplo del mismo servidor durante todo el dia 04/05/2011:




Que nos dicen los grafiquitos chulos?

Podemos ver que desde las 00hs hasta las 12hs el servicio es usable y estable. A partir de las 12hs comienza a tener problemas menores de disponibiliad y desde las 20hs hasta las 00hs es practicamente inusable.

Se podra implementar el mismo sistema sin utilizar una base de datos (solo datos en la sesion de usuario)? Agregando un servidor mas a los dos que tienen, alcanzara para resolver los problemas de disponibilidad de la noche?


Algunos usuarios afectados

Cuando empeze a buscar en Twitter y Google encontre un monton, algunos como para tener de referencia:

* https://twitter.com/aldulovato/status/66325916665655296
* https://twitter.com/lucianita88/status/66310154454433792
* https://twitter.com/dreamcoders/status/65945527312850944
* http://twitoaster.com/ea00d009/el-cant-connect-to-local-mysql-server-through-socket-tmpmysqlsock-11-de-la-web-de-personal-me-tiene-podrido-personal-fail/
* http://www.taringa.net/posts/ebooks-tutoriales/5539478/No-anda-la-pagina-de-sms-personal-_Solucion_.html

Vuelta a Babylon

Despues de 9 meses de viaje en bicicleta (y mas de 6000Km!) en lo que denominamos Bikelab, ya estoy de vuelta en Buenos Aires. Resumiendo el viaje (el detalle en la pagina): salimos de Buenos Aires, pasamos por Santa Fe, Cordoba, Catamarca, Tucuman, Salta, Jujuy, Santiago del Estero, Chaco, Corrientes, Entre Rios y cruzamos a Uruguay. Uruguay lo atravesamos de oeste a este hasta la costa y bordeamos la costa hasta Colonia. Salvo Colonia-BuenosAires, todo el viaje fue a puro pedal y la estadia carpa/bolsa.

Ahora me aburro, no soporto la franja entre las 17hs y las 19hs en donde todos los autos roncan un drone de la ciudad horrible. No duermo bajo los arboles, ni me lavo la cara en el rio. Por suerte ya me encontre con mis amigos y con amigos que hice durante el viaje; y ya estoy planeando otra gran aventura quien sabe por donde y en que.

Haganlo.

10.12.10

Como desactivar bluetooth en el Nokia E63

Para hacer durar mas la bateria del telefono y evitar problemas de privacidad, es importante tener bluetooth apagado en nuestros telefonos celulares o computadoras. En el Nokia E63 se puede apagar bluetooth haciendo lo siguiente:

- Menu
- Conectividad
- Bluetooth
- Cambiar la opcion Bluetooth a APAGADO

Esto va a hacer que la bateria de nuestro telefono dure mas, ademas de prevenir el seguimiento de nuestro movil por parte de algunos programas que almacenan informacion sobre dispositivos bluetooth. En caso de querer utilizar bluetooth, siempre pueden prenderlo, usarlo y volverlo a apagar cuando terminen.

How to disable bluetooth on Nokia E63

In order to extend battery and avoid privacy issues (tracking) it's important to have bluetooth turned off on your cellphone. On the Nokia E63 you can do it following this steps:

- Menu
- Connectivity
- Bluetooth
- Swith Bluetooth option to OFF

This will extend the battery life of your cellphone and prevent your phone of been tracked by bluetooth information gathering software. If you have to use bluetooth you can allways turn it ON, use it, and turn it OFF again.

28.6.10

De viaje (Bikelab)

Como algunos de ustedes sabran (que mal si no!) estoy haciendo un viaje en bicicleta desde Buenos Aires hasta Humahuaca con mi primo y un amigo, ambos entusiastas del cicloturismo como yo.

Venimos usando internet en las estaciones de servicio que estan en la ruta o por los pueblos, pero no el tiempo suficiente como para actualizar varios blogs o mantener funcionando las toneladas de simbolos input/output.

Si les interesa ir siguiendo mi viaje, tenemos un blog que vamos actualizando bastante seguido. Ademas del blog, voy a ir publicando algunas fotos en un album de Picasa.

Ahora ahora estamos en una estacion de servicio por Santa Fe, a unos kilometros de Hugues. Sonreimos a cada pedaleada y nos cagamos de frio todas las manianas y noches!

4.5.10

Como seguir usando una heladera rota si tenes Freezer

Se te rompe la heladera: insultos y desesperanza. Y tenes el Freezer que es demasiado para pasar todas las cosas de la heladera y querrias usar ese fresco, pasarlo de un aparato al otro. Necesitas 6 botellas de plastico (si son de mas de 2 litros, mejor), congelarlas y una vez congeladas las pones en 3 puntos de la heladera. Cada aproximadamente 12 horas, cambias las 3 botellas de la heladera que van a estar todavia con un poco de hielo flotando en agua por las que estan congeladisimas en el Freezer.

Es un poco molesto tener que andar acordandose de cambiar las botellas pero hacen que la heladera al menos conserve leche, quesos, salsitas locas, mayonesas y casi todo lo de la puerta, etc.

[Otro desarrollo tecnologico fomentado por la Linyer Transuniversal Innovation, desarrollado en los laboratorios de Memecorp y, ahora, parte del patrimonio de lo que queda de la humanidad]

25.3.10

10mil+ y las nuevas ciclovias

10mil+
Hace unos cuantos meses publique un post conmemorativo por los primeros 4.000 KM de mi bici, ahora me veo obligado a festejar mas de 10.000 KM en mi amada Zenith Andes. Le sume viajes a Neuquen, Cordoba y muchas idas/vueltas de 80KM a Ministro Rivadavia durante muchos domingos del anio.

Las nuevas ciclovias
Estos ultimos dias se hizo mucho mucho ruido con el tema de las ciclovias y se adopto un discurso PRO-bicicleta, mencionando incansablemente los ya conocidos beneficios de la bicicleta como transporte ya sea urbano para distancias cortas o commuting.

No quiero criticar las obras ni la iniciativa del proyecto, me parece excelente tener ciclovias y la manera en que se contruyeron las nuevas ciclovias supera ampliamente a las viejas. Pero, sinceramente, no creo que ayude mucho poner los kilometros que sean de ciclovias o carriles preferenciales para bicicletas si tanto los agentes de transito como los policias no castigan objetivamente a los automovilistas que faltan el respeto y pisotean constantemente a los ciclistas.

Que funcion cumple una ciclovia o un carril preferencial si en la practica los automovilistas las ignoran? Antes de que se construyeran las nuevas ciclovias, ya existian varios kilometros de ellas y varios carriles preferenciales para bicicletas (en Corrientes, Belgrano, Independencia, etc) que todavia esperan que al menos un policia o agente de transito las tenga en cuenta e instruya/castigue (el modo del capitalismo, lo que mas duele: multas! dinero!) a quienes no las respetan.

Si el Gobierno de la Ciudad cree que es tan importante la bicicleta, deberia en un principio encargarse que los automovilistas respeten al ciclista antes de contruir nuevas ciclovias. Ya habia ciclovias y nunca nadie las respeta, ya hay carriles preferenciales y nadie les da bola, ya hay policias y agentes de transito pero nunca hacen nada. No hacen falta NUEVAS cosas, hacen falta que las cosas que estan funcionen BIEN. No poder hacer uso eficiente de los recursos actuales de la ciudad denota una pesima administracion que se traduce en mas gastos para la ciudad y una peor calidad de vida para los ciudadanos.

Tambien estuve buscando algun lugar en donde enviar fotos de infracciones y poder realizar un seguimiento de las multas para asegurarme de que las personas que ponen mi vida en peligro todos los dias (estacionando en doble fila o en los carriles preferenciales, transitando por las ciclovias, etc) y le joden la vida a los demas (en Belgrano la mayoria de las bajadas para discapacitados en las esquinas estan obstruidas por autos, no me digan que nadie lo ve!) estan aprendiendo como se vive de a muchos. Obviamente no encontre un recurso asi.

Si el ciclista se siente amenazado por el transito y la ciudad no hace nada por ayudarlo, como quieren que los ciudadanos dejen el auto (una jaula de metal con ruedas, que otorga una peligrosa sensacion de seguridad) por la bici?

Otra cosa que intente es, si veo un policia u oficial de transito, indicarle que autos/motos/camiones/colectivos estan en falta (SIEMPRE hay alguien en falta, abran los ojos y van a poder encontrarlos en cualquier cuadra de capital) pero es inutil (el policia, el oficial de transito e indicarles la falta). Por que es inutil indicar la falta? Por que no les interesa, te ignoran e ignoran la falta.

Que nos queda: "Eduque un automovilista: patee un espejito!".

14.1.10

Como borrar un video con unos subtitulos en linux

Lo hice mas de una vez, el proceso es simple y doloroso. Para hacerlo vamos a necesitar:

  • Una pelicula que querramos ver desesperadamente
  • Los subtitulos para esa pelicula (nos tiene que haber costado mucho conseguirlos)

De seguro los subtitulos, ni bien los hayamos bajado, no van a tener el mismo nombre que la pelicula. Lo que vamos a hacer a continuacion es intentar renombrarlos haciendo uso intensivo de la tecla tab, mv sub[TAB], [SPACE], peli[TAB] aca viene la parte dificil que consiste en olvidarse de reemplazar la extension de la pelicula por la de los subtitulos y terminamos con algo parecido a esto:

mv subs_peli.srt pelicula.avi

Demas esta decir que no deben probar esto en sus casas.

23.9.09

Error 'Directory .svn containing working copy admin area is missing"

Elimine accidentalmente un directorio ".svn" de una workingcopy y el error "svn: Directory .svn containing working copy admin area is missing" empezo a quemarme el coco.

La solucion fue hacer un checkout del directorio al que le borre el ".svn" en un directorio temporal y luego copiar el nuevo directorio ".svn" a mi working copy para reemplazar el que borre.

$ svn checkout http://devserver/myproject/trunk/direjemplo dirtemporal
$ mv dirtemporal/.svn /mnt/myproject/direjemplo

3.9.09

Redireccionar direccion sin www a direccion con www

Algunas personas se sienten incompletas sin las tres doble-v adelante de cualquier dominio a la hora de ver una pagina (no es mi caso) y para suplir esa irracional necesidad tenemos unas reglas de apache.

Supongamos que tenemos el dominio "direccion.com.ar" y queremos que cuando se ingresa la direccion "direccion.com.ar" o "www.direccion.com.ar" ambas apunten a "www.direccion.com.ar". La regla que necesitamos es:

RewriteEngine on
RewriteCond %{http_host} ^direccion.com.ar [NC]
RewriteRule ^(.*)$ http://www.direccion.com.ar/$1 [R=301,NC]

La podemos poner en el .htaccess o sobre la configuracion de apache para este dominio en particular. Ademas de cuestiones esteticas (con www, sin www), cuestiones de costumbre (esos bichos raros: "sin las www? creo que esta mal!") podemos usar esta regla para centralizar/unificar y evitar que un mismo contenido este en dos direcciones distintas. Entre otras cosas (que me da pereza comentar).

18.8.09

El Caballo Flogger

Especimen encontrado en las cercanias de un camping en la provincia de Entre Rios durante un fin de semana de kayak y bicicleta.

Se presume que el caballo flogger, cuyo nombre es un misterio, tiene amorios varios con caballos de otros campings cercanos. Durante nuestra estadia, y mientras posaba para la foto, ofrecio claras seniales de apareamiento. Estamos en vias de organizar un tour para que todos lo puedan visitar y queremos que la aun inexistente Floggerconf tenga como mascota oficial a este amiguin.

22.7.09

Colores en el diff de Subversion

Hay varias maneras de tener colores cuando hacemos 'svn diff', una de las mas simples y que no requiere instalar software adicional (como colordiff) es utilizando 'vim' de la siguiente forma:

svn diff | vim -R -

El resultado de este comando deberia resultar en algo parecido a esto:

14.7.09

TTYtter, un cliente de consola para Twitter

Siendo las funciones basicas de Twitter enviar y recibir texto, no me parecio que amerite instalar algun cliente que funcione en X y decidi buscar uno de terminal que consuma pocos recursos de sistema. Empeze a usar TTYtter hace unas semanas y no esta en mis planes cambiarlo.


TTYtter es un script hecho en Perl, puede usarse de manera interactiva o pasarle directamente comandos para integrarlo con otros scripts o llamarlo desde cron. El script pesa solo 80K y requiere, ademas de Perl, tener curl o lynx. Ademas, el soporte para SSL, nos permite encriptar los datos que intercambiamos contra el servidor de Twitter dandonos seguridad y privacidad.

29.6.09

AFIP: ignorancia, inutilidad y baja tecnologia

Dentro de todos los ambitos en donde la AFIP se desenvuelve, el marco digital es uno de los peores. Empezando por su pagina web (que no funciona en todos los navegadores) y siguiendo por los odiadisimos aplicativos que solo funcionan en sistemas operativos privativos (el que uso estos aplicativos -SIAP & Friends- sabe de lo que estoy hablando). A continuacion, un correo no solicitado (SPAM) que me envia la AFIP a mi direccion personal de e-mail:



Asi que, ya saben, mas informacion http:// internet / !

30.4.09

Backup/dump y restore de MySQL comprimido

Una tarea frecuente para todo desarrollador o administrador es hacer copias de resguardo de MySQL para posteriormente restaurarlas. Generalmente se hace un dump y luego se comprime el archivo (siendo este texto plano y con muchos caracteres repetidos, suele comprimirse *mucho*). Vamos a hacerlo de un tiron con el siguiente comando:

$ mysqldump -h localhost -u usuario -p basededatos | gzip > basededatos-2009-04-30.sql.gz

En caso de querer restaurar el backup tenemos que hacer:

$ gunzip < basededatos-2009-04-30.sql.gz | mysql -h localhost -u usuario -p basededatos

En los ejemplos anteriores localhost simboliza al hostname de la base de datos, usuario al nombre de usuario que utilizaremos para conectarnos a MySQL, basededatos al nombre de la base de datos y basededatos-2009-04-30.sql.gz al archivo en donde vamos a guardar la copia de resguardo de la base de datos.

Si tienen instalados otros compresores, como bzip2 o lzma, pueden utilizarse de la misma manera (bzip2/bunzip2 y lzma/unlzma respectivamente).

16.4.09

Eliminando directorios .svn con bash

Si tenemos una working copy de Subversion y queremos eliminar los directorios '.svn' que quedan cuando hacemos un checkout podemos ejecutar la siguiente linea parados en el directorio que queremos limpiar:

find . -name ".svn" -exec rm -rf {} \;

En caso de querer hacer un checkout sin los directorios '.svn' utilizen el comando export de svn.

7.4.09

Havaianas Radioactivas

Me regalaron unas hojotas glow-in-the-dark!