Papelera de reciclaje: uso de recyclebin

En la version 10g oracle introdujo el concepto de papelera de reciclaje ( recicle bin ), cuando hacemos un "drop" de una tabla, la tabla y los indices son arrojados a esta papelera. En realidad únicamente se renombra el objeto, por lo que sigue ocupando el mismo espacio que antes:

1) Para ver el contenido de la papelera:

SELECT * FROM recyclebin;
SHOW RECYCLEBIN;
SELECT object_name, original_name, ts_name, type FROM user_recyclebin;


2) Para borrar el contenido de la papelera

PURGE RECYCLEBIN;


3) Para activar/desactivar la papelera (usar ON/OFF):
ALTER SESSION SET recyclebin = OFF;
ALTER SYSTEM SET recyclebin = OFF;


4) Para borrar una tabla que está en la papelera:
PURGE TABLE mitabla

Aircrack-NG con una tarjeta Intel 3945 en opensuse 11.0

Esta es una guía para configurar nuestra maquina linux con opensuse 11 de modo que seamos capaces de crackear redes WEP. La guía consta de dos partes configurar nuestra distro linux para que pueda usar la tarjeta 3945ABG para sniffar e inyectar paquetes. Los driver que trae por defecto las distribuciones para el uso de la tarjeta de red no nos sirven para hackear redes, por lo que es necesario sustituirlo por otros driver para el escaneo.La segunda del proceso de escaneado de una red wifi propiamente dicho que dejaremos para un post posterior

(I) Cónfiguración de la tarjeta intel 3945ABG
a) Comprobamos que tenemos una tarjeta intel
sudo lspci | grep 3945

b)
Instalamos paquetes necesarios para la compilación (quizá falte alguno más relacionado con la compilación o el núcleo):
sudo zypper install gcc
sudo zypper install libopenssl-devel
sudo zypper install kernel-source

c)
Descargamos los drivers de aircrack (con wget o lo que queramos):
wget http://dl.aircrack-ng.org/drivers/ipwraw-ng-2.3.4-04022008.tar.bz2

d)
Descomprimimos y compilamos los drivers
tar -xjf ipwraw-ng*
cd ipwraw-ng
make
sudo make install
sudo make install_ucode

e)
Hacemos que el módulo no se cargue en el arranque del sistema y generamos los símbolos para el módulo:
echo "blacklist ipwraw" | sudo tee /etc/modprobe.d/ipwraw
sudo depmod -ae

f)
Para cargar los driver usaremos el siguiente script que podemos colocar en ~root. En dicho script, en primer lugar se descargan el módulo que controla la tarjeta, en mi caso es el "iwl3945", pero en otros casos puede ser el ipw3945. Por razones de compatibilidad en el script he dejado los dos módulos,dado que en el peor de los caso el único efecto será mostrar un mensaje de error indicando que no se puede cargar/descargar el módulo ipw3945.En la última linea se carga el módulo
f.0) Logueamos como root ejecutando : su -
f.1)ejecutamos : cat > ~root/bin/cargarAir.sh
f.2) escribimos/pegamos y luego pulsamos control D:
#!/bin/sh
modprobe -r ipw3945
modprobe -r iwl3945
modprobe ipwraw

f.3)Damos permisos de ejecución al script. Ejecutamos: chmod u+x ~root/bin/cargarAir.sh

g) si ejecutamos el script (como root): cargarAir.sh y ejecutamos el comando iwconfig deben aparecer dos dispositivos: wifi0 y rtap0 . Si aparecen todo ha ido correctamente.

h) El problema de estos driver es que mientras estén cargados no podremos navegar normalmente por lo que para volver al estado normal es necesario descargarlos. Para eso vamos a crear otro script similar al anterior que descargue el módulo ipwraw y cargue el módulo normal de la tarjeta.
h.0) Logueamos como root ejecutando : su -
h.1)ejecutamos : cat > ~root/bin/descargarAir.sh
h.2) escribimos/pegamos y luego pulsamos control D:
#!/bin/sh
modprobe -r ipwraw
modprobe ipw3945
modprobe iwl3945


h.3)Damos permisos de ejecución al script. Ejecutamos: chmod u+x ~root/bin/descargarAir.sh
h.4)Para descargar los driver ejecutaremos: descargaAir.sh


Tras esta primera parte tendremos configurados correctamente los drivers ipwraw, así como dos script para la carga (cuando vayamos a sniffar una red) y descarga (cuando queramos volver al modo normal ). En ambos casos tendremos que hacerlo como root o con sudo y la ruta completa del script
1.- cargar drivers ipwraw -> cargarAir.sh o sudo ~root/bin/cargarAir.sh
2.- descargar drivers ipwraw -> descargarAir.sh o sudo ~root/bin/descargarAir.sh

LINUX: Accediendo al home de cualquier usuario

Para acceder a nuestro home podemos hacerlo de varias maneras:
cd ~
cd $HOME
cd /home/usuario

Para acceder al home de CUALQUIER usuario, incluso a uno distinto del nuestro podemos utilizar el siguiente comando:
cd ~usuario

Con ~usuario representamos el path al home del usuario (Usualmente /home/usuario). Esto es muy util para script, o para acceder a home no estándares (por ejemplo que esten divididos en varias carpetas /home /home1). Podemos usar cualquier comando normal de linux como:
ls ~dieguz2
find ~root -iname "*.xml" | xargs more
ls ~dieguz2/Documents/

Obviamente para acceder a directorios HOME diferentes del nuestro el propietario hemos de poseer los permisos necesarios para acceder, que usualmente nos lo dará el dueño de dicho home.

El home de los usuarios está en el archivo /etc/passwd. Podemos ver el home de cualquier usuario con alguno de estos comandos:
pwd ~usuario
salida: /home/usuario
o con el siguiente comando que nos aportará información extra:
grep usuario /etc/passwd
salida: usuario:x:1000:100:usuario:/home/usuario:/bin/bash

La informacíon contenida en el archivo es por orden:
usuario: nombre de la cuenta. Es el login (ej:dieguz2)
x : clave, si aparece x se encuentra encryptado en el fichero /etc/shadow. Si en lugar de la x aparecen una serie de digitos, es la clave.
1000: UID, o user identification. Es el número que identifica al usuario en el sistema
100: GID, o group identification. Es el número que identifica al grupo principal al que pertenece el usuario (ej: grupo users)
usuario: nombre del usuario (ej: pollo polea)
/home/usuario: ruta del home
/bin/bash : interprete de comandos (shell) del usuario

X server crash : configuración del teclado

Hoy al pulsar cualquier tecla del teclado extendido o tambíén llamado teclado númerico. Es la zona del teclado más a la derecha, donde se encuentran los números , bloque de números, las flechas, etc... el servidor X se caía con los siguientes mensaje:

kernel: X[1969]: segfault at 1a6 ip 0819f6e9 sp bf86bc40 error 4 in Xgl[8048000+19d000]
gconfd (dieguz-2873): El ID 2415919190 de control no existe
gconfd (dieguz-2873): El ID 2432696407 de control no existe

Tras mucho trastear el problema se encontraba en la opción del teclado (comando gnome-keyboard-properties) que aparece en la imagen. Tenía activado "Permitir controlar el puntero usando el teclado". Desactivando dicha opción se solucionaron los problemas

Instalación de Conceptronic Wireless 54Mpbs C54RU

Recientemente adquirí un "tarjeta" wifi USB de la marca conceptronic dado que aparentemente es soportada por linux sin dificultades. De primeras tuve los siguientes mensajes de error en /var/log/messages:

kernel: phy1 -> rt2x00lib_request_firmware: Error - Failed to request Firmware.
firmware.sh [5319]: Cannot find firmware file 'rt73.bin'

Según el mensaje no tenía instalado el firmware del usb por lo que instale el paquete "ralink-firmware" que incluye el archivo "rt73.bin". Dicho paquete está en el repositorio "Opensuse 11 Non-Oss". De forma adicional instale el paquete madwifi, si bien este no es necesario para nada.

Para la instalación del paquete podemos usar YAST o bien desde linea de comando, debemos tener activo el repositorio "openSUSE-11.0-Non-Oss" (añadir repositorio):
sudo zypper in ralink-firmware

Instalando los paquetes mi sistema ya podía detectar correctamente el dispositivo. Desconectando el USB y volviéndolo a conectar el NetworkManager ya era capaz de detectar correctamente el dispositivo.

El dispositivo funciona perfectamente en opensuse 11.0.

SSH: llave privada y pública

En el lado del cliente, en primer lugar tenemos que generar nuestras llaves: la pública, que es la que podemos compartir y la privada, que sólo debemos tener nosotros.
Ejecutamos el comando ssh-keygen :
ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/home/usuario/.ssh/id_rsa): (1)
Enter passphrase (empty for no passphrase): (2)
Enter same passphrase again:
Your identification has been saved in /home/usuario/.ssh/id_rsa.
Your public key has been saved in /home/usuario/.ssh/id_rsa.pub.
The key fingerprint is:
eb:1f:e7:30:9b:1c:f8:4b:b1:2f:3b:2b:4e:ab:4b:db

En el paso (1) se nos pedirá la ruta donde se almacenarán las llaves, por defecto será en ~/.ssh/id_rsa (privada) y en ~/.ssh/id_rsa.pub la llave publica. En principio dejaremos que se generen en las rutas por defecto.
En el paso (2) y (3) se pide si queremos introducir una "frase de paso". Esto significa que cada vez que se vaya a usar la llave, se nos pedirá esta contraseña. Es recomendable introducir una frase de paso, para asegurar que sólo nosotros podemos usar la llave privada, y por ejemplo aunque perdamos el ordenador o alguien consigua nuestra llave privada, no pueda usarla. Es recomendable usar una contraseña fuerte(carácteres extraños y sobre todo longitud),dado que podrían reventarla por fuerza bruta (existen programas para ello).

En el lado del servidor, presuponiendo que tenemos el servidor ssh correctamente instalado (ver algunos consejos aqui). Supondremo que nos vamos a conectar a usario@miservidorssh
1) En el servidor pondremos los permisos adecuados:
$ chmod 700 $HOME/.ssh
$ chmod 600 $HOME/.ssh/authorized_keys

2)En el servidor, para autorizar a un cliente para que se conecte con ssh, copiaremos la llave publica que nos facilitará el cliente en el archivo $HOME/.ssh/authorized_keys del servidor:
a)Si tenemos acceso al servidor con ssh (usando el password de usuario ):
ssh usario@miservidorssh 'cat $HOME/.ssh/id_dsa.pub >> .ssh/authorized_keys'
b)Si solo hay acceso físico: cat id_dsa.pub >> .ssh/authorized_keys
c)Si no tenemos acceso, facilitaremos el archivo con la llave publica ( id_dsa.pub) al "root" del servidor para que nos la coloque él en su sitio.

Como se puede ver usamos cat archivo_con_llave publica >> . Donde >> indica que se insertará al final del archivo.

Si en el servidor queremos que únicamente se autentiquen usuarios mediante llaves publica/privada en el archivo /etc/ssh/sshd_config buscaremos la opcíón PasswordAuthentication y la pondremos en no:
PasswordAuthentication no

SQLLOADER: unicode (UTF8)

Si cargamos un archivo con carácteres UTF-8 txt o csv a través de sqlloader (Cómo convertir archivos a UTF-8) puede ocurrir que al ver la tabla donde la insertamos no se hayan insertado correctamente algunos carácteres. Para solucionarlo, si nuestra base de datos fue creada con unicode podemos cargarlos correctamente añadiendo la sentencia CHARACTERSET UTF8. Por ejemplo:

LOAD DATA
CHARACTERSET UTF8
INFILE *
INTO TABLE "PATRONESUNICODE"
FIELDS TERMINATED BY ';' OPTIONALLY ENCLOSED '"'
TRAILING NULLCOLS
(IDP,CC,ORGANIZACION,ORIGEN)
begindata
8008;"ES";"Universidad de Granada";"UNESCO";14027
8009;"ES";"Universidad de Huelva";"UNESCO";14270
8010;"ES";"Universidad de Jaén";"UNESCO";14319

SAMBA: como ver los archivos de otros ordenadores

En opensuse 11.0 podemos encontrarnos con el problema de no poder ver los otros ordenadores de la red, a pesar de haber configurado correctamente el servidor Samba. Sin embargo cuando desactivamos el cortafuegos a través de Yast2/cortafuegos si podremos listarlos.

Para navegar a través de nuestra red samba / netbios podemos abrir un navegador Nautilus (alt F2 nautilus) y escribir en la barra de direcciones smb:// . Con este comando deberia listarnos todas las maquinas conectadas a nuestro grupo de trabajo, pero si está el cortafuegos no funcionara, ni tampoco podremos navegar a atraves de las carpetas compartidas de otros ordenadores. Si desactivamos el cortafuegos debería funcionar (a través de yast2).

Vamos a autorizar a Samba como cliente para que podamos ver los otros ordenadores:
1) Vamos a yast/cortafuegos
2) En la parte de la izquierda pulsamos en "Difusión"
3) Pulsamos "añadir"
4) Seleccionamos obligatoriamente "zona externa" y en servicio "Exploracion de SAMBA". La red la dejamos por defecto en 0/0 (todas las redes) o bien podemos restringirla con la nomemclatura normal. Por ejemplo podríamos limitarla a nuestra red local de la forma 192.168.1.0/255.255.255.0
5) Le damos a aceptar.

Con estos pasos ya deberiamos poder ver otros ordenadores y carpetas compartidas a través de nautilus de la forma: smb://nombreordenador o smb:///

Pidgim: pestañas que parpadeen

Normalmente cuando alguno de nuestros contactos habla a través del pidgim, el único cambio apreciable es que el icono del pidgim cambia. Dicho icono está situado en la zona inferior de la pantalla, alejado de nuestra áera de visión normal, por lo que en la mayoría de los casos no nos enteramos de que nos hablaron hasta mucho rato después. Para aumentar la visibilidad de estos cambios podemos hacer lo siguiente:

A) Hacer que el icono del pidgim parpadee.
a.1) Pulsamos con el boton derecho en el icono del pidgim (habitualmente situado en la esquina inferior derecha, junto al reloj)
a.2)Pulsamos en "Parpadear con nuevo mensaje

B)Hacer que las ventanas de conversaciones parpadeen (blink). Para conseguir esto se tiene que realizar a través de un complemento.
b.1) Pulsamos Control+U, o vamos a la ventana de contactos del pidgim/ menu Heramientas / Complementos
b.2) Buscamos el complemento "Notificación de Mensaje" y pulsamos sobre configurar complemento
b.3) Marcamos en Notificar de: "Ventanas de MI" "Ventanas de chat" "Ventanas enfocadas"
b.4) Marcamos en Métodos de notificación: "Establecer pista URGENTE en el gestor de ventanas"

vncserver: cambiar puerto por defecto

Para cambiar el puerto por defecto del vncserver tenemos que hacer los siguiente:
1) Abrimos con un editor y como root el archivo /usr/bin/vncserver
2) buscamos la linea $vncPort = 5900 + $displayNumber;
3) cambiamos el valor 5900 por otro puerto

Para cambiar el puerto de escucha java tendremos que usar por ejemplo:
1)vncserver -httpport 50000


PD: en suse enterprise 9 /usr/X11R6/bin/vncserver