Firma dinámica (Detección ip real y Sistema operativo) PHP

Iniciado por el-brujo, 16 Mayo 2012, 11:40 AM

0 Miembros y 1 Visitante están viendo este tema.

el-brujo

Código (php) [Seleccionar]

<?php
#
# file: JZOsig.php
# author: AnimAlf
#
# This lines are under the GNU General Public License.
# http://www.gnu.org/copyleft/gpl.html
#
# cph.keldenauto.com
#

header"Content-type: image/PNG" );

function 
RealIPget() {   
  if ( 
$_SERVER'HTTP_X_FORWARDED_FOR' ] != '' ) {
    
$client_ip =
      ( !empty( 
$_SERVER['REMOTE_ADDR' ]) ) ?
        
$_SERVER'REMOTE_ADDR' ]
          :
        ( ( !empty(
$_ENV'REMOTE_ADDR' ]) ) ?
        
$_ENV'REMOTE_ADDR' ]
           :
        
"unknown" );   
      
// los proxys van añadiendo al final de esta cabecera
      // las direcciones ip que van "ocultando". Para localizar la ip real
      // del usuario se comienza a mirar por el principio hasta encontrar
      // una dirección ip que no sea del rango privado. En caso de no
      // encontrarse ninguna se toma como valor el REMOTE_ADDR
      
$entries split'[, ]' $_SERVER 'HTTP_X_FORWARDED_FOR' ] );
   
      
reset$entries );
      while ( list( , 
$entry ) = each$entries ) )
      {
         
$entry trim$entry );
         if ( 
preg_match"/^([0-9]+.[0-9]+.[0-9]+.[0-9]+)/"$entry$ip_list ) )
         {
            
// http://www.faqs.org/rfcs/rfc1918.html
            
$private_ip = array(
                  
'/^0./',
                  
'/^127.0.0.1/',
                  
'/^192.168..*/',
                  
'/^172.((1[6-9])|(2[0-9])|(3[0-1]))..*/',
                  
'/^10..*/');
   
            
$found_ip preg_replace $private_ip$client_ip$ip_list ] );
   
            if ( 
$client_ip != $found_ip )
            {
               
$client_ip $found_ip;
               break;
            }
         }
      }
   }
   else
   {
      
$client_ip =
         ( !empty ( 
$_SERVER 'REMOTE_ADDR' ] ) ) ?
            
$_SERVER 'REMOTE_ADDR' ]
            :
            ( ( !empty ( 
$_ENV 'REMOTE_ADDR' ] ) ) ?
               
$_ENV 'REMOTE_ADDR' ]
               :
               
"unknown" );
   }
   return 
$client_ip;   
}

function 
DetectOs () {
  if(
eregi"linux",$_SERVER 'HTTP_USER_AGENT' ])){
    
$rtnStr "[GNU/Linux] Saludos a oOOoo TuXeR oOOoo";
  } elseif ( 
eregi "win32"$_SERVER 'HTTP_USER_AGENT' ] ) ||
      
eregi "Win 9x 4.90"$_SERVER 'HTTP_USER_AGENT' ] ) ||
      
eregi "windows 2000",$_SERVER ['HTTP_USER_AGENT' ] ) ||
      
eregi "(windows nt)( ){0,1}(5.0)"$_SERVER 'HTTP_USER_AGENT' ] ) ||
      
eregi "(windows nt)( ){0,1}(5.1)"$_SERVER 'HTTP_USER_AGENT' ] ) ||
      
eregi "(win)([0-9]{2})"$_SERVER 'HTTP_USER_AGENT' ], $regs ) ||
      
eregi "(windows) ([0-9]{2})"$_SERVER 'HTTP_USER_AGENT' ], $regs ) ||
      
eregi "(winnt)([0-9]{1,2}.[0-9]{1,2}){0,1}"$_SERVER 'HTTP_USER_AGENT' ], $regs ) ||
      
eregi "(windows nt)( ){0,1}([0-9]{1,2}.[0-9]{1,2}){0,1}"$_SERVER 'HTTP_USER_AGENT' ], $regs ) ) {
        
$rtnStr "Un Microsoftista por estos lares :))";
  } elseif ( 
eregi "mac"$_SERVER 'HTTP_USER_AGENT' ] ) ) {
    
$rtnStr "(¯`·._.·-oOOoo-<[ Macintosh ]>-oOOoo-·._.·´¯)";
  } else {
    if ( 
eregi "(sunos) ([0-9]{1,2}.[0-9]{1,2}){0,1}",$_SERVER ['HTTP_USER_AGENT'],$regs ) ) {
      
$rtnStr "SunOS $regs[2]";
    } elseif ( 
eregi "(beos) r([0-9]{1,2}.[0-9]{1,2}){0,1}"$_SERVER 'HTTP_USER_AGENT' ], $regs ) ) {
      
$rtnStr "BeOS $regs[2]";
    } elseif ( 
eregi "freebsd"$_SERVER 'HTTP_USER_AGENT' ] ) ) {
      
$rtnStr "FreeBSD";
    } elseif ( 
eregi "openbsd"$_SERVER 'HTTP_USER_AGENT' ] ) ) {
      
$rtnStr "OpenBSD";
    } elseif ( 
eregi "irix"$_SERVER 'HTTP_USER_AGENT' ] ) ) {
      
$rtnStr "IRIX";
    } elseif ( 
eregi "os/2"$_SERVER 'HTTP_USER_AGENT' ] ) ) {
      
$rtnStr "OS/2";
    } elseif ( 
eregi "plan9"$_SERVER 'HTTP_USER_AGENT' ] ) ) {
      
$rtnStr "Plan9";
    } elseif ( 
eregi "unix"$_SERVER 'HTTP_USER_AGENT' ] ) ||
      
eregi "hp-ux"$_SERVER 'HTTP_USER_AGENT' ] ) ||
        
eregi "X11"$_SERVER 'HTTP_USER_AGENT' ] ) ) {
        
$rtnStr "Unix";
    } elseif(
eregi "osf"$_SERVER 'HTTP_USER_AGENT' ] ) ) {
      
$rtnStr "OSF";
    } else{
$rtnStr "TuMáquinA";
    
$rtnStr "CyberSurfeando con $rtnStr";
    }
  }
  return 
$rtnStr;
}

$tmpInt 1;
$linea $tmpInt ] = gethostbyaddr RealIPget () );
$tmpInt++;
$linea $tmpInt ] = DetectOs ();

$ancho 0$alto 0;
for ( 
$a=1$a<=$tmpInt$a++ ) {
  
$tmpBoximagettfbbox 13,0"./files/trebucit.ttf"$linea $a ] );
  if ( 
$tmpBox ] - $tmpBox ] > $ancho )
    
$ancho $tmpBox ] - $tmpBox ];
  if ( 
$tmpBox ] - $tmpBox ] > $alto )
    
$alto =  $tmpBox ] - $tmpBox];
}

$altoTotal =  $alto $tmpInt;

$im imagecreatefrompng "./img/fondo_banner.png" );
list ( 
$fondo_w$fondo_h ) = getimagesize "./img/fondo_banner.png" );

$im_tmp imagecreatefrompng"img/M3I4L.png" );
list ( 
$tux_w$tux_h ) = getimagesize "./img/M3I4L.png" );
imagecopy $im$im_tmp$fondo_w $tux_w 25$fondo_h $tux_h 3000$tux_w$tux_h );

$im_tmp imagecreatefrompng "./img/mosx_banner.png" );
list ( 
$mac_w$mac_h ) = getimagesize "./img/mosx_banner.png" );
imagecopy $im$im_tmp$fondo_w/$mac_w 16 $fondo_h $mac_h00$mac_w$mac_h );

$im_tmp imagecreatefrompng"img/mosx_tux.png" );
list ( 
$tux_w$tux_h ) = getimagesize "./img/mosx_tux.png" );
imagecopy $im$im_tmp$fondo_w $tux_w$fondo_h $tux_h00$tux_w$tux_h );

$im_tmp imagecreatefrompng"./img/GNU-Linux.png" );
list ( 
$tux_w$tux_h ) = getimagesize "./img/GNU-Linux.png" );
imagecopy $im$im_tmp0$fondo_h $tux_h00$tux_w$tux_h );

$semitrans imagecolorallocatealpha($im,  0x990x990x990x25);
imagefilledrectangle $im22$ancho 4$alto $tmpInt 6$semitrans );

$b=0;

for ( 
$a=1$a<=$tmpInt$a++ ) {
  
$b=!$b;
  if (
$b) {
    
$fontColor imagecolorallocate$im0255255 );
    
imagettftext $im1304$alto*$a$fontColor"./files/trebucit.ttf"$linea $a ] );
  } else {
    
$fontColor imagecolorallocate$im255255204 );
    
imagettftext $im1204$alto*$a$fontColor"./files/trebucit.ttf"$linea $a ] );
  }
}

$fontColor imagecolorallocate$im0156255 );
imagettftext $im131263$alto*$a 24$fontColor"./files/trebucit.ttf"RealIPget () );

//Mostramos el grafico en pantalla
imagepng $im );

//Liberamos memoria
imagedestroy $im );
?>