Octubre 2008


Linux & Mis cosas & Programación & Proyectos25 Oct 2008 01:26 am

Hace algun tiempo programé un bot para IRC en PHP, este bot tenia varias caracteristicas y opciones, usaba una base de datos mysql para almacenar lo que iba “aprendiendo”. Dentro de ellas están:

  • Distintos niveles de privilegios (administrador, owner de un canal, access de un canal)
  • Funcion para realizar busquedas en Google (!google <palabra>)
  • Function para buscar definiciones en Google (!define <termino>)
  • Distintas funciones de administracion de usuarios (!admin|access add|del|list)
  • etc

Algunas de las caracteristicas de este bot es su proteccion anti flood que se define por el owner del canal y el Oráculo (Oracle; término puesto por mi a esta funcionalidad) que permite enseñar al bot definiciones de palabras para luego ser consultadas (!learn palabra significado, ?? palabra).
Este bot corre bajo php-cli (command line interface), es decir, por consola y tambien puede ser ejecutado desde la web. Queda trabajando como un demonio.

Version Actual:
La version actual es la misma desde enero del año 2007, no he vuelto a tocar el codigo (aunque sigo usando el bot), funciona todo menos las busquedas de terminos y definiciones en Google que, me imagino, hay que hacerle un par de modificaciones al codigo para que parsee bien las busquedas.

Changelog

VERSION 1.0.4 - 26 ENE 2007

- Cambiado el sistema de autentifiacion. Se verifica que el usuario
este identificado con NickServ.

VERSION 1.0.3 - 19 ENE 2007

- Se agrego a la clase Bot el metodo TXTflood( … ) que verifica
el flood de texto de un usuario en un canal especifico, esta opcion
puede ser habilitada o desactivada por usuarios con privilegios mediante
!flood on|off en el canal.
- Se ha reescrito la clase que permite la identificacion y permite que los usuarios
tengan distintos privilegios. (CHAdmin.)
- Corregido el bug que expulsaba de manera distinta a !k o !kick (0 nick o [spacio] nick)
- Agregada la clase Google con los metodos !define y !google.

VERSION 1.0.2 - 16 ENE 2007

- El bot corre en segundo plano (fork).
- Agregada una funcion extra en la clase del bot usando el binario ‘numerador’
ubicado en el directorio extras, la funcion es !num NUMERO.
- Fixeado bug que causaba la caida del bot al enviar dos veces el comando
para setear una clave. (reportado por Pons)
- Agregado soporte para unrealircd (antes solo habia sido probado en bahamut).
- Testeado en dancer-ircd, bahamut, Hyperion y unrealircd.

VERSION 1.0.0 - 15 ENE 2007

- Corregido el fallo que cerraba la conexion a la base de datos por idle.

Descargar:
Version 1.0.4: zip | tar.gz | tar.bz2

Hacking & Linux & Programación & Seguridad18 Oct 2008 02:27 am

En Linux las password o claves de los usuarios (incluyendo root) se almacenan en el fichero /etc/shadow, encriptadas y con un salt, que nos complica el descifrado. En pocas palabras una shadow password es un hash del password mas un salt (hashed and salted password).
Un ejemplo de una clave shadow es root:$1$xOqq7NEt$vDOA0jbLcaiRbGsj3ddz30:13911::::::, si la analizamos podemos darnos cuenta de lo siguiente:

  • Lo que nos interesa es solamente root:$1$xOqq7NEt$vDOA0jbLcaiRbGsj3ddz30.
  • Lo que esta antes de “:” corresponde al usuario: root; y lo que sigue es la password.
  • Si descomponemos la password podemos obtener:
  • $1$: Nos indica que corresponde a una encriptacion md5.
  • xOqq7NEt: Es el SALT que se usa para generar el hash del password
  • vDOA0jbLcaiRbGsj3ddz30.: Es el hash salteado de nuestra password.

Si analizamos todos estos datos podemos darnos cuenta que teniendo el salt podemos encriptar una palabra o frase y generar un hash similar al que estaba en el fichero /etc/shadow, por lo que solo nos queda crear un script y tener un diccionario de palabras a mano para empezar a crackear o descifrar las password en shadow.

El comando mkpasswd nos permite generar un password segun un salt especificado.
Ejemplo:

machine:~$ mkpasswd -H md5 miPassword -S DSfdsdaA
$1$DSfdsdaA$kOxgZsSAshG4W.dgGp28Y/

He creado un script para hacer mas eficiente y automatiza un poco el proceso.

Continuar leyendo …

Documentacion & Linux15 Oct 2008 01:20 am

Me di la libertad de hacer un ranking top 5 de gestores de ventanas (window manager) mas ligeros para Linux, el orden no va a depender de cual es mejor o peor, me guiare en el orden en que los fui probando y que me fueron gustando. Tambien incluiré un bonus track con algunos window manager que han dejado de ser desarrollados o que simplemente no quice incluirlos dentro de este ranking top 5.

Top 5

  1. Fluxbox
  2. WindowMaker
  3. Lxde
  4. 2-Disk
  5. WindowLab

Continuar leyendo …

Linux & Tips14 Oct 2008 10:34 pm

Linux Logo es una utilidad/herramienta que nos mostrara un logo en modo de texto de nuestra distribucion e informacion del sistema.

Instalacion
En la mayoria de las distribuciones como Fedora, Debian, Archlinux, Gentoo, etc se puede encontrar bajo el nombre de linuxlogo o linux_logo, instalandolo directamente con el gestor de paquetes desde los repositorios de cada distribucion.
Tambien puedes descargar el source y compilarlo tu mismo.

Uso

$ linux_logo

Screenshots

linux_logo -a && linux_logo -b && linux_logo -c

Linux logo Debian

Linux & Tips12 Oct 2008 11:09 pm

Tengo un notebook Compaq Presario C708LA con las tipicas teclas con segundas funciones que se activan mediante la tecla [Fn] y se me ocurrio un dia configurarlas, en fluxbox.
En este caso ayudare a configurar las teclas para subir y bajar el volumen, play, stop, ff, rewind y bloquear la pantalla.

Lo haremos definiendo hotkeys. Primero debemos reconocer el numero (KeyCode) de la tecla que queremos definir o configurar, esto lo hacemos ejecutando xev, nos abrira una ventana rara donde solamente debemos presionar la tecla, podemos darnos cuenta que si presionamos la tecla que tiene el icono para subir o bajar el volumen sin presionar Fn nos marcara un codigo y si la presionamos con Fn marcara otro codigo, entendemos entonces que son distintas teclas o distintos KeyCodes. xev nos mostrara una salida asi:

KeyPress event, serial 34, synthetic NO, window 0×2200001,
root 0×69, subw 0×0, time 22118506, (485,592), root:(666,646),
state 0×0, keycode 9 (keysym 0xff1b, Escape), same_screen YES,
XLookupString gives 1 bytes: (1b) ”
XmbLookupString gives 1 bytes: (1b) ”
XFilterEvent returns: False

A nosotros solamente nos interesa lo que esta en negritas. Lo primero es el numero de tecla y lo segundo marcado es el nombre (o alias) de la tecla, si no nos aparece lo segundo nos guiamos por lo primero resaltado.
Por ejemplo, a continuacion les mostrare lo que muestra xev cuando presiono la tecla para bajar el volumen con y sin Fn:

Con Fn

KeyRelease event, serial 34, synthetic NO, window 0×2200001,
root 0×69, subw 0×0, time 22273462, (550,501), root:(749,573),
state 0×0, keycode 174 (keysym 0×0, NoSymbol), same_screen YES,
XLookupString gives 0 bytes:
XFilterEvent returns: False

Sin Fn

KeyPress event, serial 34, synthetic NO, window 0×2200001,
root 0×69, subw 0×0, time 22269330, (550,501), root:(749,573),
state 0×0, keycode 105 (keysym 0xff56, Next), same_screen YES,
XLookupString gives 0 bytes:
XmbLookupString gives 0 bytes:
XFilterEvent returns: False

El KeyCode cambia de 174 a 105.

Continuar leyendo …

Linux10 Oct 2008 10:01 pm

libcaca is a graphics library that outputs text instead of pixels, so that it can work on older video cards or text terminals.

Esta libreria nos permite cambiar los pixeles por caracteres ascii lo que nos permite ver videos en modo texto en maquinas antiguas.

Usando mplayer con libcaca

mplayer -vo caca video_example.ogg

Links
caca labs

Next Page »