Archive for the ‘howto’ Category

HowTo: Intalar Skipfish en Ubuntu.

Skipfish es una herramienta para escaneo de vulnerabilidades en sitios web muy completa desarrollada por gente de google que al terminar el escaneo presenta los resultados en forma muy amigable (html).

Para instalarlo en ubuntu necesitaremos:

  1. Descragar sikpfish aquí.
  2. Instalar algunos paquetes ( libssl-dev y libidn11-dev ) ya sea con synaptic o en linea de comandos:

      sudo apt-get install libssl-dev libidn11-dev
     
  3. Descomprimir el paquete en alguna carpeta
    e.j.


      cd /tmp && tar -zxvf /opt/descargas/skipfish-1.13b.tgz
     
  4. Usando una terminal ir a la carpeta del skipfish y ejecutar make:

      cd /tmp/skipfish && make
     
  5. ahora necesitamos copiar un diccionario de la carpeta …/skipfish/dictionaries a …/skipfish con el nombre “skipfish.wl”:

      cp /tmp/skipfish/dictionaries/default.wl /tmp/skipfish/skipfish.wl
     
  6. Finalmente podemos correr un test:

      mkdir /tmp/results
       /tmp/skipfish/skipfish -o /tmp/results http://localhost/myweb
     

Es importante revisar los readme’s que están tanto en la carpeta skipfish como en la dictionaries.

Happy Testing !!

Por petición.. algunas screenshots:
skipfish corriendo

Reporte generado por skipfish (HTML)

HowTo: Explorar un equipo remoto por medio de ssh y nautilus (sftp)

Una de las funcionalidades más interesantes del escritorio gnome es sin duda el gvfs (gnome virtual file system – Sistema virtual de archivos de gnome) por medio del cual podemos explorar gráficamente distintos equipos remotos de una forma simple y como si fuera local.

Para realizar la exploración es necesario conectarnos a estos equipos remotos mediante algún protocolo como smb (samba – comparticiones de windows), ftp, webdav, sftp (secure ftp) entre otros.

En esta ocasión veremos el caso de sftp que nos permite conectarnos a un equipo que tenga instalado el openssh y esté corriendo el servidor del mismo, esto nos permite explorar todo el contenido al que tenga acceso el usuario (del equipo remoto) con el que nos conectemos.

Para comenzar necesitamos tener instalados algunos paquetes:

Del lado del equipo remoto:


  sudo apt-get install openssh-server
 

Del lado del equipo cliente:


  sudo apt-get install sshfs openssh-client
 

Ya que tenemos estos paquetes instalados abrimos el nautilus en su modo de navegador y damos click en el botón de cambiar la barra de dirección entre botones y texto para que podamos escribir la dirección a la que queremos llegar.


Una vez que tenemos la barra de dirección editable escribimos la linea de conexión de esta forma:


  ssh://<ip>/<carpeta o direccion en el equipo remoto>
 

Tambien podemos agregar el usuario a la linea de conexión de esta forma:


  ssh://<usuario>@<ip>/<carpeta o direccion en el equipo remoto>
 

Despues damos enter y nos aparecerá una ventana en la que nos pedirá el nombre de usuario (si no lo incluimos en la linea de conexion) y contraseña y en donde podemos elejir una opción para manejar las identidades y al dar click ok.



Si los datos son correctos nautilus mostrara los archivos de la carpeta a la que nos acabamos de conectar..


En algunos casos puede aparecer un error que indica que nautilus no sabe como manejar el protocolo sftp pero puede ser un simple error del nautilus que no afecte la conexión. La forma de comprobar esto es observar los elementos de la barra lateral ya que, si se encuentra conectado, debe aparecer un elemento con la leyenda “sftp” como este:



También se puede observar el icono de la conexión en el escritorio.

Algo interesante de gvfs es q te deja hacer uso de los archivos de forma casi local, es decir, si queremos editar un archivo simplemente le damos doble click y este se abrirá y me dejara editarlo y al guardar los datos se guardaran en el equipo remoto. También podemos reproducir vídeo y audio sin mayor problema y sin necesidad de copiar el archivo a nuestro equipo.

Una vez que se a terminado de usar la conexión esta puede ser cerrada dando click al icono de “eject” que esta en la barra lateral a un lado de la carpeta montada:

Para cerrar la conexión también se puede dar click derecho a la carpeta que aparece en el escritorio y seleccionar la opción desmontar

Una vez que el elemento desaparezca de la barra lateral la conexión abra quedado cerrada.

Nota Extra:

Las conexiones establecidas quedan montadas en una carpeta con el nombre de la conexión y se crea dentro de una carpeta llamada .gvfs que esta en el directorio del usuario que hizo la conexión.

Espero que sea útil esta información.

HowTo: Realizar consultas a una base de datos sqlite desde java.

Sqlite no es un gestor de bases de datos como MySql, Oracle o PostgreSql sino que, es una librería que permite tener una base de datos transaccional en un archivo sin necesidad de un servidor o configuración alguna lo cual puede llegar a ser muy útil para cierto tipo de proyectos que no requieran un servidor dedicado de base de datos.

Para poder utilizar este tipo de bases de datos como nuestra capa de persistencia en java todo lo que necesitamos es la librería (jar) o “driver” que puede ser descargado desde aquí.

Una vez descargada la librería de sqlite para java, podemos agregarlo a nuestro buildpath si es que estamos usando una IDE como eclipse o netbeans o agregarlo al classpath al momento de compilar la aplicación.

Para realizar la conexión únicamente necesitamos agregar las siguientes lineas:


  Class.forName("org.sqlite.JDBC");
  Connection conn = DriverManager.getConnection("jdbc:sqlite:sqliteFile");
 
  • La primera linea se encarga de cargar la clase de la librería sqlite.
  • La segunda linea crea una conexión a la base de datos auto contenida (archivo).
  • “sqliteFile” es la ruta completa del archivo (ej. /opt/base1.sqlite) que contiene o contendrá la base de datos, si el archivo no existe sera creado eh inicializado y si ya existe sera usado.

Una vez creada la conexión podemos usarla para acceder a la base de datos.


  PreparedStatement ps = null;
  ps = conn.prepareStatement("insert into tabla1 values (?);");
  ps.setInt(1,10);
  ps.execute();
  ps.close();
 

Hay que tomar en cuenta que por el carácter de este tipo de bases de datos no se puede escribir cuando se tiene un flujo de lectura abierto o leer cuando se tiene un flujo de escritura abierto, es decir, al realizar una transacción en la base de datos esta se bloquea hasta que la transacción se cierra por lo que es muy importante cerrar dicha transacción tan pronto como sea posible.
Se recomienda hacer uso de los prepared statements y de los batch y realizar todas las transacciones de una sola vez.


  PreparedStatement ps = null;
  ps = conn.prepareStatement("insert into tabla1 values (?);");
  for(int i=0; i < 20 ; i++){
    ps.setInt(1,i);
    ps.addBatch();
  }
  conn.setAutoCommit(false);
  ps.executeBatch();
  conn.commit()
  ps.close();
 

Tambien hay que recordar cerrar los ResultSet en cuanto se terminen de usar.


  PreparedStatement ps = conn.prepareStatement("SELECT * FROM tabla1");
  ResultSet rs = ps.executeQuery();
  while(rs.next()){
    System.out.println(rs.getString(1));
  }
  rs.close();
 

Para finalizar dejare el codigo de un ejemplo completo:


/** @author cool2k
* fecha 05/JUN/2009
*
* Ejemplo para crear una base de datos con la libreria sqlite y crear algunas entradas.
*
*/

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;

public class sqlite {

private sqlite(){}

/**
*
* @param args
* @throws ClassNotFoundException
* @throws SQLException
*/
public static void main(String[] args)
throws ClassNotFoundException, SQLException{
Class.forName("org.sqlite.JDBC");
Connection conn = DriverManager.getConnection("jdbc:sqlite:/tmp/db1.sqlite");
PreparedStatement ps = null;

conn.prepareStatement("create table tabla1(id,nombre,apellido,telefono)").execute();
conn.prepareStatement("create table tabla2(id,usuario,password,email)").execute();

conn.setAutoCommit(false);

ps = conn.prepareStatement("insert into tabla1 values(?,?,?,?)");
ps.setInt(1, 1);
ps.setString(2, "Juan");
ps.setString(3, "Perez");
ps.setString(4, "55123456");
ps.addBatch();
ps.setInt(1, 2);
ps.setString(2, "José");
ps.setString(3, "Peres");
ps.setString(4, "55345612");
ps.addBatch();
ps.setInt(1, 3);
ps.setString(2, "Ana");
ps.setString(3, "Perez");
ps.setString(4, "55561234");
ps.addBatch();
ps.executeBatch();
conn.commit();
ps.close();

ps = conn.prepareStatement("insert into tabla2 values(?,?,?,?)");
ps.setInt(1, 1);
ps.setString(2, "jperez");
ps.setString(3, "mypass");
ps.setString(4, "j.perez@correo.com");
ps.addBatch();
ps.setInt(1, 2);
ps.setString(2, "joperes");
ps.setString(3, "mypass2");
ps.setString(4, "jose.peres@correo.com");
ps.addBatch();
ps.setInt(1, 3);
ps.setString(2, "aperez");
ps.setString(3, "mypass3");
ps.setString(4, "ana@correo.com");
ps.addBatch();
ps.executeBatch();
conn.commit();
ps.close();

conn.close();

}
}
 

Espero que esta entrada les sea de ayuda.
Saludos !!

HowTo: Cambiar la resolucion de la consola (tty)

Día con día nuestros escritorios linux van mejorando y se ven más y más impresionantes y nos permiten hacer más y más cosas con herramientas gráficas pero, ya sea por costumbre, facilidad, rapidez o por falta de una opción gráfica, algunas veces tenemos que usar la consola de linea de comandos.

Existen varios emuladores de la consola de linea de comandos en el ambiente gráfico (gnome-terminal, xterm, konsole,..) pero algunos usuarios podemos preferir o necesitar usar la consola real (ctrl+alt+[F1 o F2 o F3 …. F7]) y al pasar a ella encontramos, normalmente, que sin importar el tamaño de nuestro monitor o la capacidad de la tarjeta gráfica la consola luce exactamente igual que desde hace 20 años, es decir, nos encontramos con un numero muy reducido de lineas y columnas por pagina y letras de tamaño enorme.

Podemos cambiar esto de una forma muy sencilla cambiando la resolución de la consola siguiendo estos pasos:

1.- Abrimos el archivo con un editor en modo superusuario.


  gksu gedit /boot/grub/menu.lst

 

o


  sudo nano /boot/grub/menu.lst
 

2.- Buscamos en la parte final del archivo la entrada del kernel que usamos para iniciar linux normalmente:


  title Ubuntu 8.10, kernel 2.6.27-9-generic
  root (hd0,0)
  kernel /vmlinuz-2.6.27-9-generic root=UUID=xxxxxxx-xxx-xxxx-xxxx-xxxxxxxxxxxx ro quiet splash
  initrd /initrd.img-2.6.27-9-generic
  quiet
 

3.- editamos la linea que empieza con "kernel" y agregamos la opción vga=xxx o si ya existe cambiamos el valor por el que necesitemos de la tabla de resoluciones siguiente:

Colores 640x480 800x600 1024x768 1280x1024 1600x1200 Preguntar al inicio
8 bits vga=769 vga=771 vga=773 vga=775 vga=796 vga=ask
16 bits vga=785 vga=788 vga=791 vga=794 vga=798 vga=ask
32 bits vga=786 vga=789 vga=792 vga=795 vga=799 vga=ask

de modo que debe quedar así:


  kernel /vmlinuz-2.6.27-9-generic root=UUID=xxxxxxx-xxx-xxxx-xxxx-xxxxxxxxxxxx ro quiet splash vga=791
 

En este caso lo estoy configurando para obtener una resolución de 1024x768 con 16bits de colores.

4.- Reiniciar el equipo.

Nota:

Sí después de reiniciar el sistema manda error y no nos deja bootear podemos editar temporalmente la opción desde el menú de inicio de grub. Solo hay que seleccionar la opción a editar (del menú de inicio de grub) y presionar la tecla "e" después seleccionar la linea a editar (la que empieza con kernel) y presionar nuevamente la tecla "e". En este punto nos da un cursor con el que podemos movernos y editar la opción vga a otro valor que si sea aceptado o incluso podemos quitar la opción vga por completo.
Una vez concluida la edición salimos del modo editor con la tecla "Esc" y después presionamos la tecla "b" para iniciar nuestro sistema con las opciones editadas.

Saludos!.

How To: Descargar Torrents Via Web (ImageShack)

Algunas veces nos encontramos con que la red a la que estamos conectados no permite usar bittorrent para descargar archivos, sin importar el cliente que usemos ( vuze — antes conocido como azureus –, utorrent, deluge, transmissionbt, etc) el resultado es el mismo, no hay descargas!!

Existe una forma para solucionar este problema, se llama ImageShack TorrentDrive que no es otra cosa más que un muy util servicio web que ofrece ImageShack que nos permite descargar torrents en su servidor directamente y a partir de ahí descargarlos a nuestro equipo en forma de descarga directa.

Los torrents se descargan a muy buena velocidad y la descarga directa se puede acelerar usando un gestor de descargas vinculado al navegador (FDM) o alguno otro que soporte envío de cabecera personalizado (para enviar los datos de la sesión y así poder descargar el archivo ).

Para usar imageshack es necesario:

  1. Registrarse (solo hay que proporcionar nuestro correo y un nombre de usuario).

     
     

  2.  

  3. Ya que estamos registrados iniciamos sesión.

     

  4.  

  5. Iniciada la sesión nos dirigimos a la seccion de torrents.

     
     

  6.  

  7. En esta sección podemos comenzar las descargas de dos formas, por un lado podemos subir el archivo .torrent que tengamos almacenado en disco o podemos pegar la url de descarga de algún archivo .torrent que consigamos en algún lado como mininova.org

     
     
    En la parte superior podemos ver el estado de nuestra cuenta, es decir, el espacio de almacenamiento disponible y usado y la cantidad de bandwidth que aun tenemos disponible (el bandwidth es reseteado mensualmente).

     
     

  8.  

  9. Podemos seleccionar la opción de “Edit Selection” que nos permite seleccionar los archivos que queremos descargar.

    Al terminar la selección podemos optar por salvar y comenzar descarga o solo salvar y damos click en el botón continuar.

  10.  

  11. Si elegimos “Begin Torrent” o en la pantalla de selección de archivos optamos por guardar y comenzar, la descarga intentara iniciar pero puede ser que no ocurra debido a 2 cosas:
     

    1. El limite de descargas simultaneas se ah alcanzado (2).
    2.  

    3. El limite de descargas permitidas para usuarios de cuentas gratuitas se ah alcanzado (pool común).

     
    En el primer caso es necesario esperar a que se acabe una descarga o detenerla manualmente para poder iniciar la nueva descarga.
    En el segundo caso es necesario continuar intentando hasta que se libere un puesto de descarga y nuestra descarga pueda iniciar, para esto, se puede usar un plugin ( Reloadevery o TabMixPlus ) de firefox que permite refrescar la pantalla automáticamente.

  12.  

  13. Finalmente ya podemos ver el estado de nuestras descargas y una vez terminadas podemos descargarlas a nuestro disco duro dando click en el botón “Download”.

 
 
Espero les sea de ayuda.
 
Saludos!

HowTo: Cambiar privilegios a archivos y carpetas en linux.

En general linux administra muy bien los privilegios de archivos y carpetas de acuerdo a los usuarios y grupos pero algunas ocasiones es necesario modificarlos. Por ejemplo, si acabamos de hacer o bajar algun script que queremos ejecutar para que realise una tarea determinada, al momento de querer ejecutarlo podemos encontrarnos con el problema de queno tiene permisos de ejecucion; O imaginen que estan migrando desde otro sistema operativo y estan accediendo a informacion que ya tenian, es muy probable que esta información se encuentre en particiones de tipo fat o ntfs y que no tengamos privilegios para crear, eliminar o modificar archivos o carpetas, incluso puede ser que no podamos leerlas.

Cual quiera que sea la razon, podemos recurrir a algunos comandos muy simples:

Cambiar de Propietario:

     

  • sudo chown <usuario> (archivo o carpeta)
  • sudo chown <usuario> -R <carpeta> (carpeta y todo su contenido)
  •  

Cambiar de Grupo:

     

  • sudo chgrp <grupo> <carpeta> (archivo o carpeta)
  • sudo chgrp <grupo> -R <carpeta> (carpeta y todo su contenido)
  •  

Cambiar de Usuario y Grupo:

Sí queremos cambiar el propietario y el grupo usamos el mismo comando pero en vez de poner únicamente el usuario ponemos “usuario:grupo”. Generalmente queremos cambiar el grupo a nuestro propio grupo (normalmente del mismo nombre que nuestro usuario) así que lo mas típico seria:

     

  • sudo chown usuario:grupo <carpeta> (archivo o carpeta)
  • sudo chown usuario:grupo -R <carpeta> (carpeta y todo su contenido)
  •  

Cambiar Privilegios :

     

  • sudo chmod <permisos> <opciones> <archivo o carpeta>
  • sudo chmod +x foo.sh (dar permisos de ejecución)
  •  

Los permisos se pueden expresar en forma numérica o en forma de letras de la siguiente forma:

Privilegios con Números:

     
      (0) no lectura ni escritura ni ejecución (4) solo lectura (6) escritura y lectura (7) escritura, lectura y ejecución.

      664, 777, 764, etc…

    1. El primer dígito da los privilegios para el propietario.
    2. El segundo dígito da los privilegios para el grupo al que pertenece el propietario.
    3. El tercer dígito para los usuarios fuera del grupo del propietario.

     

Ejemplos:

     

  • sudo chmod 664 foo.sh
  • sudo chmod 777 foo.sh
  • sudo chmod 764 foo.sh
  •  

Privilegios con Literales:

     

  • (-w-r-x) no lectura ni escritura ni ejecución.
  • (-w-x+r) solo lectura.
  • (+w+x+r) escritura y lectura.
  • (+w+x+r) escritura, lectura y ejecución.
  • (u) modificador de usuario (g) modificador de grupo (o) modificador para los "otros".
  •  


Ejemplos:

     

  • sudo chmod ugo+rwx (agregar permiso de todo para todos los usuarios)
  • sudo chmod ugo-xw+r (dar permisos de solo lectura para todos los usuarios)
  • sudo chmod g+r (dar permisos de solo lectura para todos los usuarios del grupo del propietario)
  • sudo chmod o+w (dar permisos de escritura para todos los usuarios)
  • chmod +x (dar permisos de ejecución para todos si se es propietario del archivo)
  • chmod +r (dar permisos de lectura para todos si se es propietario del archivo)
  • chmod +w (dar permisos de escritura para el propietario del archivo)
  •  

How To: Montar imagenes de cd/dvd (Iso’s) en linux

Algunas veces creamos respaldos de nuestros cd’s o dvd’s y los guardamos como archivos iso en nuestro disco duro y al querer consultar el contenido del disco nos encontramos con dos alternativas, la primera es grabar la imagen en un disco (físico) y la segunda es montar virtualmente la imagen. Al montar virtualmente la imagen podemos usarlo como si tuviéramos el disco físicamente, con la excepción de que no necesitamos gastar un disco y en muchas ocaciones esto puede ser suficiente para nuestras necesidades.

Así es como se hace.


  sudo mount -o loop imagen.iso < path de la carpeta destino >
 

o


  sudo mount -o loop -t iso9660 imagen.iso <path> (para cd’s)
  sudo mount -o loop -t udf imagen.iso <path> (para dvd’s)
 

Sí estamos usando gnome o algún entorno que monte automáticamente volúmenes podría ser útil crear la carpeta destino en el directorio en el que se montan automáticamente los volúmenes.

En ubuntu los medios se montan en /media por lo que podríamos hacer esto:


  sudo mkdir /media/virtual1
  sudo mount -o loop imagen.iso /media/virtual1
 

o


  sudo mount -o loop -t iso9660 imagen.iso /media/virtual1 (para cd’s)
  sudo mount -o loop -t udf imagen.iso /media/virtual1 (para dvd’s)
 

y listo, tendremos nuestra imagen iso montada y accesible como cualquier cd o dvd normal.

nautilus

Para desmontar basta con hacer lo siguiente:


  sudo umount <path donde esta montada la imagen>
 

Tambien Podemos hacerlo usando una aplicacion en ambiente grafico como Gmount-iso:

Intalar Gmount-iso:


  sudo apt-get install gmount-iso
 

Usando Gmount-iso:
gmount-iso

Saludos.