viernes, 27 de noviembre de 2009

Como hacer las imagenes que ponen ip, navegador...

Para esto necesitaremos un servidor HTTP ( como apache ) y PHP, las dos cosas es lo tipico que se encuentra en un hosting gratuito ( aqui hay una lista )

Si lo vamos a alojar nosotros mismos necesitaremos habilitar el paquete php-gd para esto edita el php.ini, descomenta la linea de ";extension=php_gd2.dll" (quitale el ';'... en algunos casos es un '#')
En debian/ubuntu se hace con "sudo apt-get install php5-gd"

Vamos alla...

Buscamos una imagen, la imagen sera la base, conviene que sea lo mas uniforme posible para que quede bien, yo escogi esta, aun que no sea la mas apropiada



Preparamos el codigo en PHP

El siguiente codigo es el que escribira en la imagen


<?php
 // Escrito por Kenkeiras

function navegador($ua){ // Devuelve el navegador ...bastante simple ;)
 $nav="";
 if (strstr($ua,"Firefox"))
  $nav="Firefox";
 elseif (strstr($ua,"MSIE 6"))
  $nav="IExplorer 6";
 elseif (strstr($ua,"MSIE 7"))
  $nav="IExplorer 7";
 elseif (strstr($ua,"MSIE 8"))
  $nav="IExplorer 8";
 elseif (strstr($ua,"Opera"))
  $nav="Opera";
 elseif (strstr($ua,"Safari"))
  $nav="Safari";
 return $nav;
}
function os($ua){ // lo mismo, pero para el SO
 $os="";
 if (strstr($ua,"Linux"))
  $os="Linux";
 elseif (strstr($ua,"Windows"))
  $os="Windows";
 elseif (strstr($ua,"Mac"))
  $os="Mac";
 return $os;
}

$back="esfera.png";     //Imagen de fondo

$img=imagecreatefrompng($back);   //Se crea la imagen (desde un png)

$fcolor=ImageColorAllocate($img,255,120,0); // El color de las letras ($img,r,g,b)

// Ejemplo: ImageString($img,Tamaño de letra,Longitud,Altura,"Texto",$fcolor);

$ip=$_SERVER['REMOTE_ADDR'];    //La ip esta en la variable $_SERVER['REMOTE_ADDR']

ImageString($img,5,65,75,"IP: $ip",$fcolor); // Escribimos la IP en la imagen
$lang=$_SERVER['HTTP_ACCEPT_LANGUAGE'];
$i=stripos($lang,";");
if ($i)
 $lang=substr($lang,0,$i);
if ($lang!="")
 ImageString($img,5,50,100,"Lenguaje: $lang",$fcolor); 
$ua=$_SERVER['HTTP_USER_AGENT'];
$os=os($ua);
$nav=navegador($ua);
if ($nav!="")
 ImageString($img,5,40,125,"Navegador: $nav",$fcolor);
if ($os!="")
 ImageString($img,5,35,150,"Sistema Operativo: $os",$fcolor);
// ----------------
Header("Content-Type: image/png");  // Avisamos que es una imagen png
ImagePNG($img);             // Convertimos a png

//Si prefieres un JPEG cambia las dos ultimas lineas por

//Header("Content-Type: image/jpeg");

//ImageJPEG($img);

// ----------------

ImageDestroy($img);    // Liberamos el espacio

?> 

Como funciona? (Para l@s que no les guste leer los comentarios del codigo)

Se usan dos funciones (navegador y os), que buscan en la cadena del "User-Agent", alguna parte conocida (Firefox, MSIE, etc...), y que devuelven el navegador y el sistema operativo del usuario

El resto es PHP,

$back="esfera.png"; //Imagen de fondo
$img=imagecreatefrompng($back); //Se crea la imagen (desde un png)

Como indican los comentarios, la primera linea es saber donde esta la imagen base, la segunda es para importarla como PNG, tambien se puede hacer para jpg

imagecreatefromjpeg

o con gif

imagecreatefromgif

(aqui hay mas funciones parecidas: http://us3.php.net/manual-lookup.php?pattern=imageCreateFrom&lang=es)

$fcolor=ImageColorAllocate($img,255,120,0); // El color de las letras ($img,r,g,b)

Prepara el color de las letras en la imagen (recuerda que la imagen esta en $img), el color se asigna en rgb, de 0 a 255 (esta combinacion, "255,120,0", seria naranja)

$ip=$_SERVER['REMOTE_ADDR']; //La ip esta en la variable

Guarda la ip (que esta en la variable $_SERVER['REMOTE_ADDR'])

ImageString($img,5,65,75,"IP: $ip",$fcolor);

Escribe en la imagen, con tamaño de letra 5, desde el pixel 65 (horizontal) y el 75 (vertical), la cadena "IP: $ip",en el color $fcolor

El resto es hacer lo mismo con lo que nos interesa (lenguaje, navegador,etc...)

Y despues

Header("Content-Type: image/png"); // Avisamos que es una imagen png

Avisamos al navegador para que reconozca lo que viene ahora como una imagen png (si es jpg, habria que poner "image/png")

Y los dos ultimos pasos

ImagePNG($img); // Convertimos a png
ImageDestroy($img); // Liberamos el espacio

Resultado:



Suerte y hasta otra

lunes, 23 de noviembre de 2009

Un par de scripts perl

Uno para lanzar comandos de consola/programas como daemon (se usa como el comando time ):
./daemonize.pl [comando]
Por ejemplo, si queremos hacer un ./configure;make;make install...
./daemonize.pl "./configure;make;make install"
Daemonize

Y otro para extraer los elinks de una pagina web y pasarlos al aMule ( via comando ed2k ), con cambiar la funcion link_mngr , se puede adaptar para links http, o para usar otro comando: 
getMule

Suerte

jueves, 19 de noviembre de 2009

Y... empezamos fuerte

Con un programa para distribuir el aircrack... no esta acabado del todo, no distribuye los archivos .cap (hay que hacerlo a mano) ni soporta el uso de diccionarios, pero por lo demas funciona perfectamente.

Solo hay que hacer make;make install

Descargar

Suerte y hasta otra.

Hola Mundo!

Pues aqui empieza este blog dedicado a algunos experimentos de programacion y demas cosas que puedan parecer utiles.

Suerte y hasta otra