sábado, 4 de diciembre de 2010

Cortar Archivos en trozos ubuntu y renombrarlos.

Hoy os voy a hablar de una utilidad bastante importante para mi. El comando split y un comando que realiza limpieza del comando split.

Los que ya sepáis inglés averiguaréis que split es cortar, dividir o como queráis decirlo, efectivamente, lo popularmente conocido como hacha.

Esta utilidad es de gran utilidad para los uploaders de rapidshare para cortar los archivos en 100 mb y luego unirlos, o en mi caso, para los amantes de las sesiones de música electrónica o los conciertos grabados, para trocear y grabarlos en un CD sin tener que rompernos el dedo rebobinando en nuestro aparato mp3.

Para ello ejecutaremos lo siguiente:
  • split -b 5m archivo.mp3
  • for file in x?? ; do mv $file `echo $file | sed 's/\(.*\.\)/\1mp3/'` ; done
En este caso nos dividiría el archivo en trozos de 5 megas. Si quisiéramos que fueran de 100 Megas, tan sólo habría que modificar el 5 por 100 y listo!

Por último si queremos cambiar el renombre a otro formato que no sea mp3 modificaremos en el segundo comando la palabra mp3 por la que queráis.

sábado, 20 de noviembre de 2010

Acelera tu UBUNTU (Mediante el parche del Kernel)

Estos días se ha estado debatiendo sobre el maravilloso Kernel que implementa una mejora en el rendimiento sustancial, en cuanto a la velocidad de la interfaz gráfica. Aparentemente el código mejora la velocidad de las prioridades de los procesos en BASH, pero extrañamente esa mejora de los TTY se refleja en una velocidad de la interfaz rapidísima.

Lo he experimentado yo mismo y el teclado va mucho más fluido y el ratón, el navegador y los programas funcionan mucho más fluidos. 

Mientras se prepara el Kernel podemos emplear el parche propuesto en BASH para ir tirando hasta que se integre en nuestra distro.

Para ello en el terminal ejecutaremos:
  • sudo gedit /etc/rc.local
y pegaremos este código antes del exit 0
mkdir -p /dev/cgroup/cpu
mount -t cgroup cgroup /dev/cgroup/cpu -o cpu
mkdir -m 0777 /dev/cgroup/cpu/user
echo "/usr/local/sbin/cgroup_clean" > /dev/cgroup/cpu/release_agent
Luego ejecutaremos:
  • sudo chmod +x /etc/rc.local
Luego:
  • gedit $HOME/.bashrc
Añadimos al final:

if [ "$PS1" ] ; then  
   mkdir -p -m 0700 /dev/cgroup/cpu/user/$$ > /dev/null 2>&1
   echo $$ > /dev/cgroup/cpu/user/$$/tasks
   echo "1" > /dev/cgroup/cpu/user/$$/notify_on_release
fi
Luego ejecutamos:
  • sudo gedit /usr/local/sbin/cgroup_clean


Añadimos esto:

#!/bin/sh
rmdir /dev/cgroup/cpu/$*

Luego ejecutamos:


  • sudo chmod +x /usr/local/sbin/cgroup_clean


Por último ejecutamos:

  • sudo /etc/rc.local


sábado, 9 de octubre de 2010

PHP: Generador de palabras por fuerza bruta.

Hoy a petición de un amigo he creado un script muy sencillo y que probablemente existan mejores maneras de hacerlo con programación genérica pero oye al que le sirva que lo use.

En este caso es un generador de todas las palabras del alfabeto Hexadecimal, es decir, del 1 al 0 y de la A a la F. No se diferencia entre mayúsculas y minúsculas pero no es un problema arreglarlo. Tan sólo hay que añadir todos los caracteres que deseemos a la cadena alpha y cambiar la variable longitud por su nuevo valor.

Por otro lado la longitud de este diccionario será siempre 7 ya que conocemos el número exacto de caracteres. Si no fuera así, existen otros métodos para generar un diccionario completo. Pedírmelo y os lo pondré.

También añadir que si quieres que tenga 10 caracteres de longitud tendrás que añadir 3 for y concatenar alpha al valor de sus contadores.

Por último, el resultado será guardado en la variable $token.

<?php
$token = "";
$longitud = 16;
$alfa = "1234567890abcdef";
for ($caracter1 = 0; $caracter1< $longitud; $caracter1++){
    for ($caracter2=0; $caracter2< $longitud; $caracter2++){
        for ($caracter3=0; $caracter3< $longitud; $caracter3++){
            for ($caracter4=0; $caracter4< $longitud; $caracter4++){
                for ($caracter5=0; $caracter5< $longitud; $caracter5++){
                    for ($caracter6=0; $caracter6< $longitud; $caracter6++){
                        for ($caracter7=0; $caracter7< $longitud; $caracter7++){
                            $token  = $alfa[$caracter1].$alfa[$caracter2].$alfa[$caracter3].$alfa[$caracter4].$alfa[$caracter5].$alfa[$caracter6].$alfa[$caracter7];
                        }
                    }
                }
            }   
        }
    }
}
?>

Espero que os sirva de utilidad.


viernes, 3 de septiembre de 2010

Historias de Software: Términos pastafarianos.

La entrada de hoy, va dedicada a todos los que hemos tenido que mantener aplicaciones desarrolladas por otros desarrolladores en las que como siempre, la estructura está mal, faltan los comentarios y como no, un clásico, ha sido llevada a cabo sin planificación ninguna y debemos descifrarlo sobre la marcha.

Los que pensabais que esta era la típica entrada sobre el Flying Spaguetti Monster, FSM, vais bastante mal, en cualquier caso en el mundo de la programación existe unos términos clásicos que no se deberían perder y que aquí procedo a explicar.


Código espagueti: Sin duda es el más famoso, difícil de entender, difícil de mantener y como no, complicado. Es un término bastante degradante, si alguien comenta que tu código es espagueti, prepararte, tu ego de programador ha sido atacado y tendrás que defenderlo.

Código lasaña: Quizá uno de los códigos que más me gusten, sencillo, muy estructurado y analítico. Algunos pensaréis que es el más fácil de mantener pero no es así ya que resulta bastante complicado mejorar lo inmejorable y sobre todo razonar como su autor original, es como jugar una partida de Jenga, hay que tener mucho cuidado.

Código ravioli: Teóricamente este es el mejor código para mantener, todo es sencillo y esta empaquetado en pequeños componentes muy específicos. Por todo esto modificar alguno de los paquetes u objetos no tendrá cambios significativos en el resto del programa.


Ya sabéis programadores / mantenedores de aplicaciones, mucha paciencia y a veces es mejor reescribir todo el código que descifrar jeroglíficos.

lunes, 23 de agosto de 2010

Linux: Montar carpetas compartidas con usuario y contraseña


Hemos hablado muchas veces de como montar carpetas compartidas en otros equipos de la red y poder utilizarlas a nuestro antojo en el pc.

En cualquier caso, para completar esta información, comentaremos como montar carpetas compartidas que requieran de un usuario y una contraseña para su acceso.

Para ello mismo emplearemos el comando mount y le añadiremos unos parámetros adicionales ejecutando el siguiente comando:
  • sudo mount //IPServidor/Carpeta /media/Carpeta  -o username=usuario,password=contraseña
 Hay que modificar IPServidor por la IP del equipo, por ejemplo, 192.168.1.130. La carpeta también hay que modificarla por el nombre de la carpeta compartida y por último el usuario y la contraseña por unos correctos que os permitan el acceso.

lunes, 3 de mayo de 2010

Reporteros Cuatro - Privacidad en Internet y FAIL


A pesar de que ya había oído hablar de este documental un compañero me pasó el enlace y me puse a visualizarlo. Por lo visto en el vídeo salían un par de expertos en seguridad, enseñando el uso de  cain y sub7.


El caso es que antes de llegar a esta parte, entrevistan al jefe de la Guardia Civil de delitos informáticos que muy amablemente les pide que no muestren a los trabajadores aunque, eso sí, le permite entrar en el almacén de decomisos donde en el minuto 24:57 si lo paramos podemos ver:
pulsar para agrandar


Muy bien, os habéis salido, tenemos el nombre y la dirección de un disco duro decomisado el 10/10/08. ¿Qué podrá tener este disco duro? Buscarlo y seguro que lo encontráis.

¡Qué cagada!

Actualización:
Se me han adelantado... el compañero de 48bits pone pixeles en la foto pero entra en la carnaza a muerte ... jajaja

domingo, 2 de mayo de 2010

Don ZeYt ft Pasku Presenta: php goear downloader v 0.1


Como muchos sabréis goear es un servicio de streaming de canciones gratuito en internet. Esta web emplea un reproductor de flash para reproducir las canciones y no "permite descargar las canciones".

Existen varias soluciones para poder "ripear" esta música pero sin duda he pensado en que la más óptima y rápida es la línea de comandos de tu sistema operativo.

El funcionamiento es bastante sencillo, tan sólo hay que ejecutar el comando:
  • goear URL [DIRECTORIO]
La URL es obligatoria, el directorio es opcional y es la ruta completa del directorio donde quieres que se guarde la canción.

INSTRUCCIONES INSTALACIÓN
Requisitos:
 PHP5
  • sudo apt-get install php5-cli
Instalación:
  • wget http://www.mma-clips.com/zeyt/goear/descargar.php?file=1
  • sudo chmod 777 goear
  • sudo cp goear /usr/bin
Ejemplo de uso:

  • goear http://www.goear.com/listen/323ab17/cuanto-cantautor-koma
  • goear http://www.goear.com/listen/38f2ed6/dreams-machine-%28downtempo-mix%29-mark-farina /home/zeyt/Escritorio/Downtempo
 Notas:
1 - Si tenéis algún problema a la hora de descargar poner la URL de la canción entre comillas. goear "URL"
2 - El tercer parámetro es el directorio de descarga. Es opcional, si no lo pones guardará la canción en tu Escritorio.
3 - El tiempo de ejecución puede variar dependiendo de tu conexión a internet.
4 - Para escoger las canciones deberéis entrar en www.goear.com y usar el buscador. Una vez lleguéis a la canción, copiar la dirección y usar el comando.

Agradecimientos:
Pasku: por el script original en el que se ha basado este. Este programa es una adaptación del suyo para utilizarlo vía línea de comandos.
Lucena: Te dedico el post con tu tema de Koma

php goear downloader v 0.1 a.k.a goear

viernes, 30 de abril de 2010

Lucid - Cambiar pantalla de inicio (Plymouth theme)


Uno de los cambios de la nueva versión ha sido quitar el antiguo sistema de carga que mostraba una bonita línea cargando, usplash por plymouth el actual usado por otras distribuciones como Fedora. Donde no acertaron tanto es el tema que escogieron para cargar. El color morado es horrendo pero tranquilos, se puede cambiar.

En este caso yo he escogido el tema solar que es el usado por Fedora y que además es mucho más bonito y está en los repositorios. Para instalarlo tan solo hay que ejecutar el siguiente comando:
  • sudo apt-get install plymouth-theme-solar
Una vez instalado lo pondremos como plantilla por defecto con el comando:
  • sudo update-alternatives --config default.plymouth
Una vez escogido el theme solar (en mi caso aparece con el 1) escribimos 1 y aceptamos.

Por último actualizamos la carga de inicio con el siguiente comando:
  •  sudo update-initramfs -u 
Por último reiniciamos y veréis la mejora!
En próximas entregas veremos como auto-motnar el fstab (que ha dejado de funcionar en Lucid)

Lucid - Opinión personal proceso de actualización.


Intentando echar una mano a Canonical para no saturar los servidores me descargué la versión de Ubuntu 10.4 desde las redes torrent p2p. Monté el CD para usarlo como espejo local de repositorios para actualizar el sistema a la 10.4 pero no me lo detectó por lo que tuve que tirar un CD y grabar la iSO para que así me lo reconociera.

Una vez montado el repositorio empecé la actualización pero no tuve los resultados que esperaba porque me faltaban gran parte de los paquetes y la única parte que actualicé fue la llamada ubuntu-minimal que contiene más o menos los programas básicos del sistema pero no era lo que buscaba.

Por todo ello procedí a hacer la actualización a través del gestor de paquetes y me dio un problema de versiones en las fuentes de los repositorios. Intenté arreglarlo mediante comandos pero la cosa no funcionó. Al final a mano dura borre todos los orígenes del software que no fueran los originales, entre ellos el CD y la cosa mejoró ya que por fin pude actualizar.

Tras media hora de rigor de descarga a 1,5 mb por segundo (me va bastante bien el internet) comenzó la actualización. La verdad que yo pensé que sería más desatendida pero no lo fue. Durante el proceso me salieron 2 errores de descarga y dos ventanas advirtiendome de los cambios que se iban a realizar en ficheros especiales como la configuración de GDM.

En cualquier caso tras casi finalizar la instalación de Lucid me encontré con un problema y es que fglrx estaba corrupto en los repositorios de Ubuntu o eso es lo que comentaba el gestor de actualización que salía anomalamente del proceso de actualización.

En cualquier caso pensando en que ya tendría que formatear porque habría perdido la configuración del XORG me tiré al río y reinicié el ordenador. Mi sorpresa fue que efectivamente ya tenía Lucid, lo pude ver por la nueva ventana de acceso de GRUB que tiene un horrendo color morado (ya diré como cambiarlo).

Sobre el tiempo de carga la verdad que ha disminuido pero tampoco se puede decir que sea una barbaridad. Antes iniciaba rápido, ahora también, luego poco hemos ganado.

Tras iniciar efectivamente había perdido la aceleración gráfica pero por lo menos funcionaba uno de los monitores aunque tenía el fondo negro porque parece que han borrado las bonitas cerezas de fondo de pantalla que tenía que me vinieron con Karmic.

Tras volver a configurar Gnome a mi gusto, borré la carpeta del antiguo driver mediante el comando sudo rm -R /usr/share/ati y comencé a hacer una instalación a capón y la sorpresa aún más grata es que funcionó.

En cualquier caso comienzo a ver los cambios en GNOME, todo más bonito y veo que me hacen un cambio en la barra de salida incluyéndome un estado en el que puedo conectarme mediante Epiphany (lo llevan claro soy de emesene) y también puedo conectarme a facebook( que no tengo).

Esto está muy bien si usas estos servicios pero desde luego yo no lo uso y no puedo quitarlo de momento (ya diremos más adelante como hacerlo).

En cuanto a los programas, podemos disfrutar del a rapidísima nueva versión de emesene, thunderbird3, firefox nuevo (estable al fin) y una sorpresa un tanto desagradable al abrir el rythmbox ya que me encontré con un feo SPAM de Ubuntu Music Store que ni me va ni me viene.

En cualquier caso la carga del sistema sigue siendo igual, los programas tienen nuevas mejoras y el ordenador parece más estable. Eso sí, no sé porque otra vez tuve problemas con el eclipse que he tenido que reinstalarlo para que todo funcionara correctamente.




Como actualizar de Karmic a Lucid


Muchos usuarios queréis actualizar ya a Lucid. El proceso es bastante fácil aunque dura aproximadamente 2 horas sin contar con el tiempo de descarga de los 1700 paquetes.
En cualquier caso,  la mejor forma de hacerlo gráficamente es pulsar sobre Sistema > Administración > Gestor de actualizaciones

Una vez realizado deberéis encontrar un anuncio de actualización y un botón sobre el que deberéis pinchar para comenzar el proceso.


Os recuerdo que es aconsejable esperar una semana de rigor porque suelen traer bastante fallos las nuevas versiones.



Lucid - Fallo con el driver privativo de ati.


Muchos usuarios que emplean el driver privativo de ATI para sus tarjetas gráficas están encontrando problemas a la hora de actualizar a Lucid ya que están perdiendo la aceleración gráfica y el proceso de actualización se cancela pudiendo tener consecuencias bastantes graves en algunos casos muy extremos.

En cualquier caso la solución es bastante fácil, los usuarios que tengan el driver privativo instalado desde los repositorios de Ubuntu no deben preocuparse pero los que lo instalaron a través de la página oficial de ATI sí y deberán corregir su fallo con un simple comando:
  • sudo rm -R /usr/share/ati
Una vez borrada la carpeta se deberá proceder a la actualización y no tendréis más problemas.


Lucid - Primer Fallo con Grub


Ayer tras el esperado lanzamiento de Lucid comenzaron los primeros fallos y es que parece que cannonical no había probado la nueva versión del GRUB que dio problemas a los usuarios que dispusieran más un sistema operativo instalado, haciendo desaparecer de la lista los otros sistemas operativos.

Un fallo más molesto que grave pero que hizo corregir al equipo a toda velocidad el CD causando que se repitieran las descargas de algunos usuarios.

En cualquier gracias al civismo de la comunidad, las redes no se saturaron ya que mucha gente usó sistemas P2P como los torrents para conseguir sus imágenes de CD.

¡Que viene el lince! - Ubuntu 10.4 Lucid Lynx lanzada


Los usuarios de la popular distribución Ubuntu, estamos de enhorabuena ya que ha sido lanzada la nueva versión 10.4, con importantes cambios. Esta vez  prometieron gran cantidad de mejoras como mayor integración con las redes sociales y mayor uso del cloud computing pero ha sido realmente así. En Karmic, Ubuntu One, en Lucid, Ubuntu Music Store, ambas herramientas útiles pero no imprescindibles.

Como siempre para los que os queráis actualizar, esperar la semana de rigor porque ya se están detectando bastantes fallos. En cualquier caso los que queráis instalarla ya adelante, los servidores no están tan cargados como dicen!

viernes, 26 de marzo de 2010

Presentación: Chivato Tuenti 0.1.1 By ZeYt

Hoy lanzo la fase beta del programa que te avisa de las actualizaciones del Tuenti. Estamos  buscando fallos y tratándolos. Deja mucho que desear pero es mi primer programa que libero para el publico en general. He intentado craer el típico DEB pero es la de Dios, literalmente, más de una hora para hacerlo...

En cualquier caso he creado un script instalador para debian y ubuntu. Las instrucciones a continuación.

  • wget http://www.mma-clips.com/zeyt/chivato-tuenti/instalador.run
  • chmod u+x instalador.run
  • ./instalador.run
Una vez introducida la contraseña nos instalará las dependencias. Procederá a crear y mover los archivos. Nos pedirá nuestro usuario y contraseña y abrirá el programa encargado de añadir las tareas programadas. Añadiremos una tarea cada minuto que ejecutará el siguiente comando: chivato-tuenti


Se aceptan, comentarios y sugerencias. Esta en fase BETA, no me hago responsable de nada.

jueves, 25 de marzo de 2010

PHP, Curl, Tuenti, Login, Parser - Notificador de tuenti.



Bueno seguimos trabajando un poco en el proyecto y vamos sacando cosillas y corrigiendo fallos. Aquí os traigo la otra versión del tuenti.php.
El archivo clase_tuenti.php no será necesario para esta implementación.

Ya no será necesario la librería zenity ya que usaremos la notificación de señales de Ubuntu y GNOME, conocida como libnotify.
Para instalarla:
  • sudo apt-get install libnotify-bin
Repasamos pues todas las dependencias:
  • sudo apt-get install php5-cli
  • sudo apt-get install php5-curl
  • sudo apt-get install gnome-scheduler
  • sudo apt-get install libnotify-bin
Archivos necesarios:
Dentro de la carpeta que quieras # Recomendadio /home/usuario/Tuenti
ico.png # Icono con imagen del tuenti o lo que quieras.
tuenti.php
Como instalarlo:
Una vez tengas los 2 archivos, (recuerda modificar los capos en rojo en tuenti.php por tus datos del tuenti y la carpeta donde lo ejecutes), creamos una tarea programada que se ejecute cada minuto en Aplicaciones > Herramientas del sistema > Tareas programadas
El comando a ejecutar es php /home/tuusuario/Tuenti/tuenti.php
Si todo ha salido bien, cada vez que recibas una visita o tengas algún mensaje nuevo, te aparecerá un mensaje por pantalla informándote de todo.
<?php
/*
*      tuenti.php
*    
*      Copyright 2010 Eduardo Ramirez Martinez-Esparza <zeyt@ZeYt>
*    
*      This program is free software; you can redistribute it and/or modify
*      it under the terms of the GNU General Public License as published by
*      the Free Software Foundation; either version 2 of the License, or
*      (at your option) any later version.
*    
*      This program is distributed in the hope that it will be useful,
*      but WITHOUT ANY WARRANTY; without even the implied warranty of
*      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
*      GNU General Public License for more details.
*    
*      You should have received a copy of the GNU General Public License
*      along with this program; if not, write to the Free Software
*      Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
*      MA 02110-1301, USA.
*/

//CONFIG
    $usermail = "example@example.com";
    $password = "example";
    $ruta = "/home/tuusuario/Tuenti/";
    $archivo_visitas = "visitas.txt";
    $cookie = "cookie.txt";
    $opcion_mostrar_visitas = TRUE;
//CONFIG

   
    function login($usermail, $password, $tcookie){
        $ch= curl_init();
        curl_setopt ($ch, CURLOPT_URL, "https://www.tuenti.com/?m=login&func=do_login");
        curl_setopt ($ch, CURLOPT_POSTFIELDS, "email=$usermail&input_password=$password&timezone=1");
        curl_setopt ($ch, CURLOPT_POST, 1);
        curl_setopt ($ch, CURLOPT_HEADER, 0);
        curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, 1);
        curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt ($ch, CURLOPT_COOKIEFILE, $tcookie);
        curl_setopt ($ch, CURLOPT_COOKIEJAR, $tcookie);
        curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt ($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (X11; U; Linux i686; es-ES; rv:1.9.1.5) Gecko/20091105 Fedora/3.5.5-1.fc11 Firefox/3.5.5");
        $res=curl_exec ($ch);
        curl_close($ch);
        return $res;
    }

    function consult($url,$tcookie){
        $ch= curl_init();
        curl_setopt ($ch, CURLOPT_URL, $url);
        curl_setopt ($ch, CURLOPT_HEADER, 0);
        curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, 1);
        curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt ($ch, CURLOPT_COOKIEFILE, $tcookie);
        curl_setopt ($ch, CURLOPT_COOKIEJAR, $tcookie);
        curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt ($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (X11; U; Linux i686; es-ES; rv:1.9.1.5) Gecko/20091105 Fedora/3.5.5-1.fc11 Firefox/3.5.5");
        $res = curl_exec ($ch);
        curl_close($ch);
        return $res;
    }
  
    $resultado = consult("http://www.tuenti.com/?m=home&func=view_home",$cookie);
  
  if ((eregi("<h1>La sesión ha caducado",$resultado)) || (eregi("Por favor, introduce tu e-mail y contrase&ntilde;a de Tuenti para entrar.",$resultado))){
        $login=login($usermail, $password,$cookie);
        $resultado = consult("http://www.tuenti.com/?m=home&func=view_home",$cookie);
    }
  
    $info = explode("<ul>",$resultado);
    $info = explode("</ul>",$info[1]);
    $info = $info[0];
    $info = str_replace("</li>","</li>\n",$info);
  
    if (eregi('<div class="eventImage"',$info)){
            $info ="";
    }
    $info = strip_tags($info);
  
    if ($opcion_mostrar_visitas){
        $trozos = explode('<div class="views"><strong>',$resultado);
        $trozos = explode('</strong>',$trozos[1]);
        $visitas = $trozos[0];
        $visitas = str_replace(".","",$visitas);
       
        if (file_exists($archivo_visitas)){
            $f = fopen($archivo_visitas,"r");
            $visitas_old = fread($f,filesize($archivo_visitas));
            fclose($f);
        }else{
            $f = fopen($archivo_visitas,"w");
            fclose($f);
            $visitas_old = 0;
        }
       
        $mostrar_visitas = FALSE;
       
        if ($visitas>$visitas_old){
            $f = fopen($archivo_visitas,"w");
            fwrite($f,$visitas);
            fclose($f);
            $total = $visitas-$visitas_old;
            $mostrar_visitas = TRUE;
            $imprime_visitas = "Has tenido ". $total ." visitas nuevas. Totales: ".$visitas;
        }
    }
        $titulo = "Notificaciones tuenti:";
    if ($info != ""){
        exec('notify-send -t 2500 "'.$titulo.'" "'. $info .'" -i "'.$ruta.'ico.png" &');
    }
    if ($opcion_mostrar_visitas && $mostrar_visitas){
        exec('notify-send -t 2500 "'.$titulo.'" "'. $imprime_visitas .'" -i "'.$ruta.'ico.png" &');
    }
?>

miércoles, 24 de marzo de 2010

PHP - Curl a Tuenti (Versión Modificada)

Necesitarás lo mismo que la versión anterior. Esta es la versión actualizada de tuenti.php que cuenta además el cambio en el número de visitas. Recuerda modificar los campos en rojo.
<?php
/*
 *      tuenti.php
 *     
 *      Copyright 2010 Eduardo Ramirez Martinez-Esparza <zeyt@ZeYt>
 *     
 *      This program is free software; you can redistribute it and/or modify
 *      it under the terms of the GNU General Public License as published by
 *      the Free Software Foundation; either version 2 of the License, or
 *      (at your option) any later version.
 *     
 *      This program is distributed in the hope that it will be useful,
 *      but WITHOUT ANY WARRANTY; without even the implied warranty of
 *      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *      GNU General Public License for more details.
 *     
 *      You should have received a copy of the GNU General Public License
 *      along with this program; if not, write to the Free Software
 *      Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
 *      MA 02110-1301, USA.
 */

    //MODIFICALO
    $usermail = "example@example.com";
    $password = "tucontraseña";
    $ruta = "/home/TuUsuario/Tuenti/";
    function login($usermail, $password){
        $tcookie="cookie.txt";
        $ch= curl_init();
        curl_setopt($ch, CURLOPT_URL, "https://www.tuenti.com/?m=login&func=do_login");
        curl_setopt ($ch, CURLOPT_POSTFIELDS, "email=$usermail&input_password=$password&timezone=1");
        curl_setopt ($ch, CURLOPT_POST, 1);
        curl_setopt ($ch, CURLOPT_HEADER, 0);
        curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, 1);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt ($ch, CURLOPT_COOKIEFILE, $tcookie);
        curl_setopt ($ch, CURLOPT_COOKIEJAR, $tcookie);
        curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (X11; U; Linux i686; es-ES; rv:1.9.1.5) Gecko/20091105 Fedora/3.5.5-1.fc11 Firefox/3.5.5");
        $res=curl_exec ($ch);
        curl_close($ch);
        return $res;
    }

    function consult($url){
        $tcookie="cookie.txt";
        $ch= curl_init();
        curl_setopt ($ch, CURLOPT_URL, $url);
        curl_setopt ($ch, CURLOPT_HEADER, 0);
        curl_setopt ($ch, CURLOPT_FOLLOWLOCATION, 1);
        curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, false);
        curl_setopt ($ch, CURLOPT_COOKIEFILE, $tcookie);
        curl_setopt ($ch, CURLOPT_COOKIEJAR, $tcookie);
        curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);
        curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (X11; U; Linux i686; es-ES; rv:1.9.1.5) Gecko/20091105 Fedora/3.5.5-1.fc11 Firefox/3.5.5");
        $res = curl_exec ($ch);
        curl_close($ch);
        return $res;
    }
   
    $login=login($usermail, $password);
    $resultado = consult("http://www.tuenti.com/?m=home&func=view_home");
    $trozos = explode('<div class="views"><strong>',$resultado);
    $trozos = explode('</strong>',$trozos[1]);
    $visitas = $trozos[0];
    if (file_exists("visitas.txt")){
        $f = fopen("visitas.txt","r");
        $visitas_old = fread($f,filesize("visitas.txt"));
        fclose($f);
    }
    else{
        $f = fopen("visitas.txt","w");
        fclose($f);
        $visitas_old = 0;
    }
    $mostrar_visitas = FALSE;
    if ($visitas>$visitas_old){
        $f = fopen("visitas.txt","w");
        fwrite($f,$visitas);
        fclose($f);
        $total = $visitas-$visitas_old;
        $mostrar_visitas = TRUE;
        $imprime_visitas = "Has tenido ". $total ." visitas: ".$visitas;
    }
    require_once("clase_tuenti.php");
    $imprime = "Notificaciones tuenti:\n";
    $con = new tuentiAPI($usermail, $password);
    $r = $con->request('getUserNotifications', array());
    $salto=FALSE;
    if ($r['unread_friend_messages']['count'] > 0){
            $imprime .= "Privados de amigos: ".$r['unread_friend_messages']['count']."\n";
            $salto=TRUE;
    }
    if ($r['unread_spam_messages']['count'] > 0){
        $imprime .= "Mensajes de desconocidos: ".$r['unread_spam_messages']['count']."\n";
        $salto=TRUE;
    }
    if ($r['new_profile_wall_posts']['count'] > 0){
        $imprime .= "Comentarios: ".$r['new_profile_wall_posts']['count']."\n";
        $salto=TRUE;
    }   
    if ($r['new_friend_requests']['count'] > 0){
        $imprime .= "Peticiones de amigo: ".$r['new_friend_requests']['count']."\n";
        $salto=TRUE;
    }
    if ($r['new_photo_wall_posts']['count'] > 0){
        $imprime .= "Comentarios en fotos: ".$r['new_photo_wall_posts']['count']."\n";
    }
    if ($r['new_tagged_photos']['count'] > 0){
        $imprime .= "Fotos etiquetadas: ".$r['new_tagged_photos']['count']."\n";
        $salto=TRUE;
    }
    if ($r['new_event_invitations']['count'] > 0){
        $imprime .= "Eventos: ".$r['new_event_invitations']['count'];
        $salto=TRUE;
    }
    if ($salto){       
        exec('zenity --info --window-icon="'.$ruta.'ico.png" --text "'. $imprime .'" --timeout 20 &');
    }
    if ($mostrar_visitas){
        exec('zenity --notification --window-icon="'.$ruta.'ico.png" --text "'. $imprime_visitas .'" --timeout 40 &');
    }
?>

lunes, 22 de marzo de 2010

PHP + Shell + Zenity = Monitor Acciones Tuenti


Perdón a todos por la falta de actualización. Los temas se me han acabado literalmente y no recibo nuevas preguntas. Podría hablar de varios juegos y temas muy dispares como las actualizaciones pero hasta Abril no hay versión nueva por lo que nos toca esperar.

En cualquier caso, he estado trasteando con varios lenguajes y aprendiendo varias cosas. Me hubiera gustado traeros un monitor de actualizaciones de tuenti a la altura pero vamos, estamos en versión alpha y hemos usado varias herramientas, todo muy rudimentario.

En cualquier caso, aquí os traigo la explicación de lo que necesitamos:
  • sudo apt-get install php5-cli
  • sudo apt-get install php5-curl
  • sudo apt-get install gnome-schedule
  • sudo apt-get install zenity
Bien, usaremos PHP para trabajar con la API privada de tuenti que han revelado con una clase muy sencilla.
Para todo esto, crearemos en nuestro directorio personal una carpeta llamada Tuenti que contendrá lo siguiente:
clase_tuenti.php
<?php
/*
* tuentiAPI Class
* Sergio Cruz aka scromega (scr.omega at gmail dot com) http://scromega.net
*
* More info:
* http://scromega.net/7-accediendo-a-la-api-cerrada-de-tuenti.html
*/

class tuentiAPI {
    private $email, $password, $userData;
    function __construct($email, $password) {
        $this->email = $email;
        $this->password = $password;
        $tmp = $this->json('getChallenge', array('type'=>'login'));
        $tmp = self::http($tmp);
        $tmp = json_decode($tmp, true);
        $passcode = md5($tmp[0]['challenge'].md5($password));
        $appkey = 'MDI3MDFmZjU4MGExNWM0YmEyYjA5MzRkODlmMjg0MTU6MC4xMzk0ODYwMCAxMjYxMDYwNjk2';
        $tmp = $this->json('getSession', array('passcode'=>$passcode,'application_key'=>$appkey,'timestamp'=>$tmp[0]['timestamp'],'seed'=>$tmp[0]['seed'],'email'=>$email));
        $tmp = self::http($tmp);
        $tmp = json_decode($tmp, true);
        $this->userData = $tmp[0];
    }
    private static function http($post) {
        $headers[] = "Content-length: ".strlen($post)."\r\n";
        $headers[] = $post;
        $ch = curl_init('http://api.tuenti.com/api/');
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
        curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
        $result = curl_exec($ch);
        if($result === false) die('Cannot execute request: '.curl_error($ch));
        $http_code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
        curl_close($ch);
        return $result;
    }
    private function json($method, $parameters) {
        $array['requests'][0][0] = $method;
        $array['requests'][0][1] = $parameters;
        if(!empty($this->userData['session_id'])) {
            $array['session_id'] = $this->userData['session_id'];
        }
            $array['version'] = '0.4';
        return json_encode($array);
    }
    public function request($method, $parameters=array()) {
        $tmp = $this->json($method, $parameters);
        $tmp = self::http($tmp);
        $tmp = json_decode($tmp, true);
        return $tmp[0];
    }
}
?>
tuenti.php
<?php

    require_once("clase_tuenti.php");
    $con = new tuentiAPI('tudirecciondemail@example.com', 'tupassword');
    $r = $con->request('getUserNotifications', array());

    $imprime = "Notificaciones tuenti:\n";
    $salto=FALSE;
    foreach ($r as $dato){
            if ($dato['count'] > 0){
                $salto=TRUE;
            }
    }
    if ($r['unread_friend_messages']['count'] > 0){
            $imprime .= "Mensajes de amigos: ".$r['unread_friend_messages']['count']."\n";
    }
    if ($r['unread_spam_messages']['count'] > 0){
        $imprime .= "Mensajes de desconocidos: ".$r['unread_spam_messages']['count']."\n";
    }
    if ($r['new_profile_wall_posts']['count'] > 0){
        $imprime .= "Comentarios: ".$r['new_profile_wall_posts']['count']."\n";
    }   
    if ($r['new_friend_requests']['count'] > 0){
        $imprime .= "Peticiones de amigo: ".$r['new_friend_requests']['count']."\n";
    }
    if ($r['new_photo_wall_posts']['count'] > 0){
        $imprime .= "Fotos etiquetadas: ".$r['new_photo_wall_posts']['count']."\n";
    }
    if ($r['new_photo_wall_posts']['count'] > 0){
        $imprime .= "Comentarios en fotos: ".$r['new_photo_wall_posts']['count']."\n";
    }
    if ($r['new_tagged_photos']['count'] > 0){
        $imprime .= "Fotos etiquetadas: ".$r['new_tagged_photos']['count']."\n";
    }
    if ($r['new_event_invitations']['count'] > 0){
        $imprime .= "Eventos: ".$r['new_event_invitations']['count'];
    }
    if ($salto){       
exec('zenity --info --window-icon="/home/TuUsuario/Tuenti/favicon.20425.png" --text "'. $imprime .'" --timeout 20');
    }
?>
Logotipo de favicon de tuenti. Podéis descargalo con el siguiente comando:
  • wget http://estaticos2.tuenti.com/layout/web2/images/favicon.20425.png
 Bien, ahora iremos a Aplicaciones > Herramientas del Sistema > Tareas programadas y añadiremos la siguiente:
Descripción: Tuenti Monitor
Comando: php "/home/TuUsuario/Tuenti/tuenti.php"
Básico: Cada minuto

Aceptaremos y a partir de ahora si lo hemos hecho bien nos aparecerá una ventana notificándonos las actualizaciones.

Si te resultara muy molesto el tipo de advertencia lo puedes cambiar por un icono en el área de notificaciones. Para ello en tuenti.php habría que modificar la línea del exec y dejarla así:
exec('zenity --notification --window-icon="/home/TuUsuario/Tuenti/favicon.20425.png" --text "'. $imprime .'" --timeout 20');
Por último recapitulemos. Necesitamos 2 archivos en php y un archivo png. Para poder ejecutar todo bien necesitaremos lo que arriba describí. Todos los archivos deberán ir dentro de la carpeta Tuenti que irá dentro de la carpeta de usuario.

Todo lo que está en color rojo tendrá que ser modificado por ti para poder usarlo. TuUsuario en mi caso por -> zeyt y en tuenti.php tu usuario y contraseña para tuenti.

Si tienes alguna pregunta no dudes en comentar y si quieres dar el salto y crear la aplicación en PyGtk, bienvenido seas!


jueves, 25 de febrero de 2010

Ubuntu - Problemas con dependencias


Un lector nuestro nos comenta que tiene problemas con las dependencias, al parecer debido a la última actualización de OpenOffice que está dando algunos problemas.

En cualquier caso si no os inicia sesión el sistema, tendremos que entrar en el famoso Recovery Mode (consola pura) y ejecutar ciertos comandos para arreglarlo.

Lo primero de todo es arreglar las dependencias con el comando:
  • sudo apt-get install -f
Si no funcionara porque hubiera algún programa que tiene problemas de dependencias podríamos matarlo con el comando kill y ps.

Una vez muerto el proceso que da problemas tan sólo tendremos que ejecutar el comando anterior de nuevo. Si siguiera dando problemas trataríamos de borrar el paquete que da problemas mediante fuerza bruta con el siguiente comando:

  • sudo dpkg -r --force-all NombrePaquete
Si esto siguiera dando problemas trataríamos de actualizar los paquetes mediante los dos siguientes comandos:
  • sudo apt-get update
  • sudo apt-get install safe-upgrade
Si aún así siguiera dando problemas, antes que formatear existe un comando que nos permite reinstalar todos los paquetes:
  • sudo dpkg-reconfigure -phigh -a

Linux - Matar Procesos por consola


Aunque el monitor de sistema sea bastante efectivo, hay veces en las que para matar un proceso se tarda menos usando la consola. También es útil la consola para ver ciertos procesos ocultos que queremos matar y para saber si tenemos algo extraño como rootkits.

Por todo esto hoy hablaremos del comando ps y de como matar un proceso desde el terminal. Para ver todos los procesos tan sólo tendremos que emplear el siguiente comando:
  • ps -ax
Una vez ejecutado, nos aparecerá una lista bastante grande con todos los procesos y su código identificador, en el cual tendremos que fijarnos para matar al proceso.


El siguiente paso es muy sencillo, sólo hay que usar el comando kill con su respectiva señal para que el proceso se finalice. Para ello ejecutaremos el siguiente comando:
  • kill -9 IDProceso
Si todo ha ido bien nos aparecerá un mensaje indicando que el proceso ha sido matado correctamente :).

lunes, 22 de febrero de 2010

Ubuntu - Ver cuando se activa la webcam.


Uno de nuestros lectores, a propósito del tema de la webcam, nos propuso un programa que nos mostrará en la barra de notificaciones si la webcam se ha activado.

Son muchas las historias que cuentan el espionaje de desconocidos a través de la webcam y como existe cierta paranoia nunca está de más tener un notificador.

El programa que usaremos se llama Camera-Monitor y su uso es realmente fácil. Para instalarlo sólo tendremos que ejecutar el siguiente comando en el terminal:
  • sudo apt-get install cameramonitor
Una vez instalado, pasaremos a configurarlo para que se autoinicie con nuestra sesión. Para ello iremos a Sistema >  Preferencias > Camera Monitor Preferences . Una vez aquí, escogeremos la entrada de vídeo de la webcam y el tiempo en segundos. Activaremos la notificación y cerraremos, como muestra la imagen.


sábado, 20 de febrero de 2010

Ubuntu - Cairo-Dock la barra de MAC


Hace tiempo hablamos de gnome-docky. El sistema es bueno pero no esta nada desarrollado, por eso hoy os recomiendo Cairo-Dock, una potentísima barra de herramientas que usa OpenGL y que no consume demasiados recursos.

Si os diga la verdad, a mi no me gustan nada estas cosas, pierdo el tiempo navegando a través de estas barras pero la verdad que queda muy espectacular ya que esta barra de herramientas contiene numerosos efectos y es muy configurable.

En cualquier caso hoy instalaremos Cairo-Dock y haremos nuestro sistema más parecido al MAC. Instalaremos Cairo-Dock con el siguiente comando de terminal:
  • sudo apt-get install cairo-dock
Una vez instalado lo encontraremos en Aplicaciones > Accesorios > GLX-Dock , lo abriremos y lo configuraremos a nuestro gusto ;)

viernes, 19 de febrero de 2010

Ubuntu - Efectos fotos Webcam


Para los que tengáis envidia de los Maqueros y su programa de hacer fotos con webcam, estáis de enhorabuena. Ubuntu y en general Linux tiene un programita para hacer esto, además es libre.


Cheese nos permite modificar la visión de la webcam con varios efectos para hacer fotos o vídeos. Además podremos descargar efectos extras y hacer el gamba con los amigos que les gusten hacer el tonto.

Para instalarlo es muy sencillo. Primero de todo necesitamos una cámara web. Lo siguiente es abrir un terminal y escribir lo siguiente:
  • sudo apt-get install cheese
Una vez instalado lo encontraremos en Aplicaciones > Sonido y Vídeo > Fotomatón Cheese de cámara Web. Lo abrimos, pulsaremos sobre efectos y tomamos unas simples instantáneas. Además víde, acepta incluso ráfagas de fotos para que puedas escoger cual subir cual auténtico posser de Internet.
 *Don ZeYt feeling like a mac user

miércoles, 17 de febrero de 2010

Ubuntu - TiVion Ver televisión en Internet


Existen muchas alternativas para ver la televisión en internet gratis. He escogido una bastante buena porque es un proyecto español, lo que permitirá ver más canales de lo normal y también porque no instala cientos de librerías innecesarias.

TiVion es fácil de instalar y funciona bastante bien aunque la verdad que la cantidad de programas que ofrece no destaca demasiado. En cualquier caso si disfrutas con algunos canales de TDT o te gusta ver Intereconomía antes de tu sesión de sado-maso, instala TiVio, no tienes nada que perder.

Para instalarlo, hay que dar algún paso extra aunque es bastante sencillo. Abre un terminal y ejecuta:
  • sudo add-apt-repository ppa:shakaran/ppa
  • sudo apt-get update
  • sudo apt-get install tivion
Una vez instalado, lo encontraremos en Aplicaciones > Internet > TiVion , Tras abrirlo podremos disfrutar de los canales de varios países, aunque yo no veo la televisión.

El disquette de la muerte - Kon Boot


Kon Boot es una herramienta potentísima escrita en ensamblador que modifica el kernel al vuelo para obtener privilegios de administrador sin romper contraseñas ni cosas extrañas.

Escrito íntegramente en ensamblador para arquitecturas x86, este sencillo programa, que cabe en un disquette, es capaz de entrar como administrador en sistemas Linux y en sistemas comerciales privativos, incluso en sus últimas versiones.

Su funcionamiento es bastante sencillo, metes el disquette o CD, lo inicias desde la unidad que elijas y listo. Iniciará el sistema operativo de la máquina con privilegios de administrador, lo que te permitirá robar información, borrar los logs e irte bailando a otro lado.

Para descargarlo es muy sencillo, simplemente hay que usar el siguiente comando:
Para disquette:
  • wget http://www.piotrbania.com/all/kon-boot/data/FD0-konboot-v1.1-2in1.zip
Para CD:
  • wget http://www.piotrbania.com/all/kon-boot/data/CD-konboot-v1.1-2in1.zip
Si estas pensando en llevar un pen drive cargadito de herramientas de seguridad, esta no debe faltarte nunca. Os invito a que lo probéis.

martes, 16 de febrero de 2010

Cine - Documental caso !Hispahack

Bueno, a pesar de que este documental es antiguo y tiene un toque retro con gente que la verdad no se que pinta ahí, se menciona el caso !Hispahack y salen algunos de sus miembros. También sale algún que otro flipado pero esta bien.
Disfrutarlo!

Privacidad 3: NoScript - Bloquea javascript y otras malas compañías.


Sin duda, poder bloquear la publicidad está muy bien. Desde mi punto de vista no es muy ético pero cada persona puede hacer con sus ciclos de ordenador lo que quiera. El problema radica principalmente en que muchos webmasters tienen que pagar las malas acciones de ciertas agencias y mayoristas de la publicidad acepten banners flash con sonidos molestos y que sólo consumen recursos. Ante este potente problema la industria busca soluciones como bloquear a los que usen AdBlockPlus.

En cualquier caso, como no creemos en estos sistemas, os recomiendo directamente que empleéis la extensión para firefox NoScript. Su funcionamiento es bastante sencillo. Puedes bloquear javascript globalmente y no tener ningún problema de ClickJacking y seguridad al navegar, o desactivar ciertas cosas que sólo sirven para molestar. No obstante, también te protegerá contra ataques XSS y ciertas actividades maléficas como los cruces de dominios ante los que cualquier usuario normal ni se daría cuenta.

Para instalarlo es muy sencillo, iremos a la página del complemento y pulsaremos sobre Añadir a Firefox. Una vez instalado y reiniciado el navegador nos encotraremos en la parte inferior con un pequeño icono parecido a este:
 
Simplemente, permitiremos JavaScript Globalmente y bloquearemos ciertos scripts que no nos interesan como el de Google Adsense, Google Analytics (para ver que sitios visitamos) y ciertas cosas que nos molesten bastante como los popups de megavideo etc...

Sí, todo esto es bloqueable. No obstante según su creador, un experto en seguridad web, de verdad de la buena, Giorgio Maone, lo mejor es tener javascript desbloqueado globalmente y permitir los scripts que nosotros queramos meter en nuestra lista blanca, youtube, megavideo, etc... 

Para permitirlo sería tan sencillo como entrar en cualquier página, y ver que nos aparece debajo de la barra de direcciones los scripts que han sido bloqueados. Permitiremos los que queramos y listo :)
 


GScan2PDF - Escanea documentos a pdf y usa el OCR


Uno de nuestros lectores nos ha propuesto un tema bastante interesante. Para los usuarios que se pregunten si un escáner funciona bajo Linux, la respuesta es sí. Sin duda una de las herramientas más potentes que se pueden recordar es el OCR (Optical Character Recognition) que nos permite escanear un documento y poder editarlo con nuestra suite ofimática favorita, muy útil para pasar apuntes a limpio con muy poco trabajo.

En cualquier caso, y dando ciertas pautas para que no haya problemas, recomiendo que las fórmulas matemáticas e imágenes las metáis en un cuadrado negro hecho a boli o rotulador. Así el sistema las escaneará como imágenes. El resto del texto, con que tengáis un poco de buena letra y seáis más o menos limpios no dará demasiados errores.


Para hacer esto usaremos el programa GScan2PDF que lo podréis encontrar en los repositorios oficiales, lo que te ahorrará algún que otro dolor de cabeza.
Para instalarlo es tan sencillo como abrir un terminal y ejecutar el siguiente comando:
  •  sudo apt-get install gscan2pdf
Una vez instalado,  lo podremos encontrar en Aplicaciones > Gráficos > GScan2Pdf.

Tras abrirlo, pulsaremos sobre el icono del escáner, buscará dispositivos y procederá a escanearlos. Si no tuvieras escáner y te corriera urgencia también podrías conectar una cámara digital y la usaría como dispositivo de entrada de imágenes aunque los resultados pueden variar según la calidad de nuestra cámara.

lunes, 15 de febrero de 2010

Caso !Hispahack


El "caso Hispahack" dio lugar a la primera sentencia en España sobre acceso ilegal a un sistema informático y fue la primera redada dirigida específicamente contra un grupo hacker.
 

La investigación policial se inició a partir de una queja, que no llegó a ser una denuncia oficial, de Telefónica. Dicha queja trataba sobre un intento de acceso mediante Internet a ordenadores de la NASA, en Estados Unidos, y a ordenadores de la Universidad de Oxford. También se suponía que el grupo estaba relacionado con la modificación de una página web del Congreso de los Diputados de España.
 
Posteriormente, el 20 de enero de 1998, un Proveedor de Servicios de Internet puso una denuncia contra dos personas apodadas Magne y Stk. La segunda era miembro de !Hispahack. Según el proveedor, habían entrado en sus máquinas y robado claves de acceso y nombres de 2.500 clientes. Meses después, el 25 de marzo, la Universitat Politècnica de Catalunya(UPC) presentaba otra denuncia, por un ataque acontecido el 11 de septiembre de 1997, que culminó con la obtención de privilegios de administrador en dieciséis ordenadores y la instalación de sniffers en cinco. Jfs, de !Hispahack, fue acusado de ello.

Según la versión del Equipo de Respuesta a Emergencias Informáticas de la UPC (esCERT), que llevó a cabo esta investigación, Jfs había instalado mal un sniffer, que grabó todos sus pasos: entraba desde un ordenador desatendido de la Universidad de Oviedo, que usaba como repositorio de programas y puente para asaltar otros sistemas. Los datos recogidos en la UPC eran transferidos al servidor del cibercafé mallorquín La Red Café, a un directorio llamado Jfs donde se accedía con el nombre de usuario hispahack.

En abril de 1998, el Grupo de Delincuencia Informática de la Unidad Central Operativa de la Guardia Civil detuvo a los dos miembros de !Hispahack: Stk y Jfs, y a dos personas más: JR y Magne. Se les acusaba de delitos de revelación de secretos y daños informáticos. Un abogado, Carlos Sánchez Almeida, fue también fue llamado a declarar porque había publicado en Mentes Inquietas un artículo sobre los derechos de los detenidos. Posteriormente, Sánchez Almeida defendería como letrado a !Hispahack en el juicio.

Anselmo del Moral, responsable entonces del Grupo de Delincuencia Informática de la Guardia Civil, explicó por su parte las razones que motivaron la redada en una comparecencia ante la Comisión Especial para Redes Informáticas del Senado, el 30 de septiembre de 1999:
La investigación se basa fundamentalmente en una serie de potenciales presuntos grupos de intrusos informáticos relacionados con una queja procedente de Telefónica sobre un intento de acceso a los ordenadores de la NASA. También se les suponía relacionados con la modificación de una página web del Congreso de los Diputados.
Del Moral se refirió a un asalto, ocurrido el 31 de octubre de 1997, a la web del Congreso de los Diputados, donde alguien dejó la pintada: Cuantos diputados y cuantas comisiones harán falta para descubrir que poner un ordenador en internet no es sólo enchufarlo [Manda Guebos!!...1-3, seguimos avanzando! (!H).
Según "El País, las detenciones de Stk y Jfs se iniciaron por un soplo a la Guardia Civil:
Un buen día les llegó una foto de un grupo de jóvenes encima de cuyos rostros estaba escrito su alias. Uno de ellos era JFS. Otro, STK, Un mensaje decían: Estos son Hispahack y son los responsables de un ataque al Congreso de los Diputados. El ataque al Congreso se había realizado desde Estados Unidos. Poco después, la NASA envió una queja a Telefónica porque alguien, desde España, había intentado asaltar sus ordenadores y había dejado la huella H!. Se verifica que el asalto venía de un proveedor de Girona, quien denuncia que le han sustraido las claves de acceso de 2.500 usuarios. Paralelamente, la Universitat POlitecnica de Catalunya denuncia con seis meses de retraso una serie de incidentes en 16 ordenadores, procedentes de la Universidad de Ovideo. JFS y STK trabajan en Gibnet, la telefónica de Gibraltar. Utilitzando un subterfugio se logra un cita con ellos en la Linea de la Concepción. Pasaron dos días en carcel."
Finalmente, de los cuatro detenidos sólo Jfs fue juzgado, por la intrusión en la UPC. El 28 de mayo de 1999, el juez Juan Carlos Llavona Calderón, del Juzgado de lo Penal 2 de Barcelona, lo absolvía. La sentencia consideraba los hechos probados pero no atribuibles a Jfs, aunque el directorio del cibercafé de Mallorca llevase su apodo:
El acceso se hallaba al alcance de cualquiera que entrase a través del usuario "hispahack" y, por lo tanto, las sospechas no alcanzan la categoría de indicios bastantes como para desvirtuar totalmente la presunción de inocencia.
En la sentencia se definió por primera vez en el ámbito judicial español el fenómeno hacking, identificándolo con el intrusismo informático, un conjunto de comportamientos de acceso o interferencia no autorizados a un sistema informático o red de comunicación electrónica de datos, y la utilización de los mismos sin autorización o más allá de lo autorizado.
El juez aprovechó la sentencia para dar también una definición moral del hacking:
Conductas que, en cuanto suponen de agresión contra el interés del titular de un determinado sistema de que la información que en él se contiene no sea interceptada, resultan tanto más reprobables y aún merecedoras de sanción moral.
El caso generó mucha polémica por la obtención irregular de algunas pruebas, ya que cuatro importantes proveedores de Internet dieron, sin orden judicial, todos los datos de las cuentas de correo que les pidió la Guardia Civil. También se criticó que el esCERT actuase como perito imparcial en el juicio y, a la vez, parte denunciante por su pertenencia a la UPC.
El Caso !Hispahack sentó jurisprudencia en diversos aspectos, por la criminalización del hacking hecha por el juez, la no reprobación a las fuerzas de la ley por obtener información de personas sin autorización judicial y el hecho de aceptar los logs como prueba.