Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - WHK

#3041
ver un blue-ray online? cuanto tendria que esperar para que cargue una pelicula de 40gb? xDDDD como una semana completa con la pc encendida para ver una pelicula  :-\

espero que no reduzcan las calidades por querer ahorrar ancho de banda.
no se como lo van a hacer pero lo veo algo medio imposible a menos que te regalen una conexión satelital t1
#3042
y que sacan si los documentos ya se publicaron  :huh: como si pudieran volver el tiempo atrás si los encuentran
#3043
PHP / Re: SuperCaptcha animada by WHK
9 Enero 2011, 00:31 AM
Cita de: raul338 en  9 Enero 2011, 00:13 AM
Wow... muy lindo y muy bueno! :)
Lo que no entiendo es porque usas session_destroy que rompe todo, y porque no unset que ahi solo liberarias el captcha? Lo digo porque si hay una pagina con uso intensivo de $_SESSION agregar este script lo romperia :xD

haces el formulario con la imágen y llamas solamente a la función mostrar() donde inicia sesión, esta función de php te crea un archivo temporal con los datos serializados.

al enviar el formulario se obtiene el valor de la imagen anterior con obtener_hash() y esto elimina el archivo temporal. se compara con $_POST del formulario y procesas lo que quieras, redireciconas o cargas algo o muestras algo.

si el texto falla mas abajo buelve a cargar la imágen y eso hará que buelva a iniciar sesion con un nuevo hash :P

si no destruyera la sesión al momento de procesar la captcha entonces quedarias con tu directorio temporal con gigas de archivos basura sin eliminar como le pasó a un amigo con un plugin de vbulletín. si no destruyes sesiones te quedas con los archivos temporales hechos.
#3044
PHP / SuperCaptcha animada by WHK
8 Enero 2011, 22:34 PM
hace tiempo hize un sistema de captcha utilizando la clase gifencoder que estuve usando en algunos sistemas mios, pero quiero compartilo xD

demo:






descarga: http://test.drawcoders.net/captcha/captcha.zip

rutas:
C:\xampp\htdocs\captcha>tree /f
Listado de rutas de carpetas
El número de serie del volumen es 00000200 BAEF:7637
C:.
│   index.php

└───includes
       captcha_fuente(bad).ttf
       captcha_fuente(beatnik).ttf
       captcha_fuente(belweb).ttf
       captcha_fuente(BERTRAMN).ttf
       captcha_fuente(butch).ttf
       captcha_fuente(cadellin).ttf
       captcha_fuente(candles).ttf
       GIFEncoder.class.php


captcha.php
Código (php) [Seleccionar]
<?php
$captcha 
= new captcha();

if((int)
$_GET['seg'] == 0){
 
$captcha->mostrar(0);
}elseif((int)
$_GET['seg'] == 2){
 
$captcha->mostrar(2);
}else{ 
/* 1 */
 
$captcha->mostrar(1);
}

class 
captcha{
 var 
$dir_data;

 function 
__construct(){
  
$this->dir_data './includes/';
 }
 
 function 
obtener_hash(){
  return 
$_SESSION['CAPTCHA'];
  
session_destroy();
 }

 function 
establecer_hash(){
  
$hash strtoupper(str_ireplace(
   array(
'o','0','i','l','1','y','s','5','8','7','t','6','b','d','u','q','2','z'),
   array(
'f','r','p','w','x','k','9','a','3','a','m','w','f','3','e','h','c','n'), 
   
substr(sha1(time().rand(0,100)), 04)
  ));
  
$_SESSION['CAPTCHA'] = $hash;
  return 
$hash;
 }

 function 
color_azar($handle){
  return 
imagecolorallocate($handlerand(0,255), rand(0,255), rand(0,255));
 }

 function 
crear_frame($buffer$fuente$seguridad 1){
  
/* Configuraciones */
  
$alto 25;
  
$ancho 160;
  
$lineas 30;
  
  
$handle imagecreate($ancho$alto);
 
  if(
$seguridad <= '1'){ /* Seguridad igual o menor a 1 */
   
$blanco imagecolorallocate($handle255255255);
   
$negro  imagecolorallocate($handle515151);
  }elseif(
$seguridad >= '2'){ /* Seguridad igual o mayor a 2 */
   
$blanco imagecolorallocate($handlerand(0255), rand(0255), rand(0255));
   
$negro  imagecolorallocate($handlerand(0255), rand(0255), rand(0255));
  }
 
  
/* Agrega las lineas */
  
if($seguridad >= '1'){ /* Seguridad igual o mayor a 1 */
   
for($cuenta 1$cuenta <= $lineas$cuenta++){
    
imageline($handlerand(0,$ancho), 0rand(0,$ancho), 25$this->color_azar($handle));
   }
  }
 
  
imagettftext($handle2002222$negro$fuentestrtoupper($buffer));
  
ob_end_clean(); /* Elimina la declaración de inicio de buffers anteriores en el motor */
  
ob_start(); /* Comienza a capturar buffer */
  
imagegif($handle); /* Crea imagen */
  
$retorno ob_get_contents(); /* Vuelca el contenido a la variable */
  
imagedestroy($handle); /* Libera memoria */
  
ob_end_clean(); /* Destruye el buffer */
  
return $retorno/* Retorna el buffer de la imagen */
 
}

 function 
mostrar($seguridad 1){
  
/* Seguridad va del 0 al 2 */
  
$string $this->establecer_hash();
  include(
$this->dir_data .'GIFEncoder.class.php');
  
$cantidad_frames 10;
  
$fuente glob($this->dir_data .'/captcha_fuente(*).ttf');
  
$fuente $fuente[(int)rand(0count($fuente) - 1)];
 
  for(
$cuenta 0$cuenta <= $cantidad_frames$cuenta++){
   
$buffer $this->crear_frame($string$fuente$seguridad);
   
$rutas_frames[$cuenta] = sys_get_temp_dir().'/'.md5(microtime().rand(10500)).'.gif';
   
file_put_contents($rutas_frames[$cuenta], $buffer);
   unset(
$buffer);
  }

  
$gif = new GIFEncoder($rutas_framesfalse02000'url');
 
  foreach(
$rutas_frames as $eliminar){
   @
unlink($eliminar);
  }
 
  
header('Content-type: image/gif');
  echo 
$gif->GetAnimation();
  exit;
 }

}

?>


GIFEncoder.class.php
Código (php) [Seleccionar]
<?php
/*
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
::
:: GIFEncoder Version 2.0 by László Zsidi, http://gifs.hu
::
:: This class is a rewritten 'GifMerge.class.php' version.
::
::  Modification:
::   - Simplified and easy code,
::   - Ultra fast encoding,
::   - Built-in errors,
::   - Stable working
::
::
:: Updated at 2007. 02. 13. '00.05.AM'
::
::
::
::  Try on-line GIFBuilder Form demo based on GIFEncoder.
::
::  http://gifs.hu/phpclasses/demos/GifBuilder/
::
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
*/

Class GIFEncoder {
var $GIF "GIF89a"; /* GIF header 6 bytes */
var $VER "GIFEncoder V2.05"; /* Encoder version */

var $BUF = Array ( );
var $LOP =  0;
var $DIS =  2;
var $COL = -1;
var $IMG = -1;

var $ERR = Array (
ERR00=>"Does not supported function for only one image!",
ERR01=>"Source is not a GIF image!",
ERR02=>"Unintelligible flag ",
ERR03=>"Does not make animation from animated GIF source",
);

/*
:::::::::::::::::::::::::::::::::::::::::::::::::::
::
:: GIFEncoder...
::
*/
function GIFEncoder (
$GIF_src$GIF_dly$GIF_lop$GIF_dis,
$GIF_red$GIF_grn$GIF_blu$GIF_mod
) {
if ( ! is_array $GIF_src ) && ! is_array $GIF_tim ) ) {
printf "%s: %s"$this->VER$this->ERR 'ERR00' ] );
exit );
}
$this->LOP = ( $GIF_lop > -) ? $GIF_lop 0;
$this->DIS = ( $GIF_dis > -) ? ( ( $GIF_dis ) ? $GIF_dis ) : 2;
$this->COL = ( $GIF_red > -&& $GIF_grn > -&& $GIF_blu > -) ?
$GIF_red | ( $GIF_grn << ) | ( $GIF_blu << 16 ) ) : -1;

for ( $i 0$i count $GIF_src ); $i++ ) {
if ( strToLower $GIF_mod ) == "url" ) {
$this->BUF [ ] = fread fopen $GIF_src $i ], "rb" ), filesize $GIF_src $i ] ) );
}
else if ( strToLower $GIF_mod ) == "bin" ) {
$this->BUF [ ] = $GIF_src $i ];
}
else {
printf "%s: %s ( %s )!"$this->VER$this->ERR 'ERR02' ], $GIF_mod );
exit );
}
if ( substr $this->BUF $i ], 0) != "GIF87a" && substr $this->BUF $i ], 0) != "GIF89a" ) {
printf "%s: %d %s"$this->VER$i$this->ERR 'ERR01' ] );
exit );
}
for ( $j = ( 13 * ( << ( ord $this->BUF $i ] { 10 } ) & 0x07 ) ) ), $k TRUE$k$j++ ) {
switch ( $this->BUF $i ] { $j } ) {
case "!":
if ( ( substr $this->BUF $i ], ( $j ), ) ) == "NETSCAPE" ) {
printf "%s: %s ( %s source )!"$this->VER$this->ERR 'ERR03' ], ( $i ) );
exit );
}
break;
case ";":
$k FALSE;
break;
}
}
}
GIFEncoder::GIFAddHeader ( );
for ( $i 0$i count $this->BUF ); $i++ ) {
GIFEncoder::GIFAddFrames $i$GIF_dly $i ] );
}
GIFEncoder::GIFAddFooter ( );
}
/*
:::::::::::::::::::::::::::::::::::::::::::::::::::
::
:: GIFAddHeader...
::
*/
function GIFAddHeader ( ) {
$cmap 0;

if ( ord $this->BUF ] { 10 } ) & 0x80 ) {
$cmap * ( << ( ord $this->BUF ] { 10 } ) & 0x07 ) );

$this->GIF .= substr $this->BUF ], 67 );
$this->GIF .= substr $this->BUF ], 13$cmap );
$this->GIF .= "!\377\13NETSCAPE2.0\3\1" GIFEncoder::GIFWord $this->LOP ) . "\0";
}
}
/*
:::::::::::::::::::::::::::::::::::::::::::::::::::
::
:: GIFAddFrames...
::
*/
function GIFAddFrames $i$d ) {

$Locals_str 13 * ( << ( ord $this->BUF $i ] { 10 } ) & 0x07 ) );

$Locals_end strlen $this->BUF $i ] ) - $Locals_str 1;
$Locals_tmp substr $this->BUF $i ], $Locals_str$Locals_end );

$Global_len << ( ord $this->BUF 0  ] { 10 } ) & 0x07 );
$Locals_len << ( ord $this->BUF $i ] { 10 } ) & 0x07 );

$Global_rgb substr $this->BUF 0  ], 13,
* ( << ( ord $this->BUF 0  ] { 10 } ) & 0x07 ) ) );
$Locals_rgb substr $this->BUF $i ], 13,
* ( << ( ord $this->BUF $i ] { 10 } ) & 0x07 ) ) );

$Locals_ext "!\xF9\x04" chr ( ( $this->DIS << ) + ) .
chr ( ( $d >> ) & 0xFF ) . chr ( ( $d >> ) & 0xFF ) . "\x0\x0";

if ( $this->COL > -&& ord $this->BUF $i ] { 10 } ) & 0x80 ) {
for ( $j 0$j < ( << ( ord $this->BUF $i ] { 10 } ) & 0x07 ) ); $j++ ) {
if (
ord $Locals_rgb $j } ) == ( ( $this->COL >> 16 ) & 0xFF ) &&
ord $Locals_rgb $j } ) == ( ( $this->COL >>  ) & 0xFF ) &&
ord $Locals_rgb $j } ) == ( ( $this->COL >>  ) & 0xFF )
) {
$Locals_ext "!\xF9\x04" chr ( ( $this->DIS << ) + ) .
chr ( ( $d >> ) & 0xFF ) . chr ( ( $d >> ) & 0xFF ) . chr $j ) . "\x0";
break;
}
}
}
switch ( $Locals_tmp } ) {
case "!":
$Locals_img substr $Locals_tmp810 );
$Locals_tmp substr $Locals_tmp18strlen $Locals_tmp ) - 18 );
break;
case ",":
$Locals_img substr $Locals_tmp010 );
$Locals_tmp substr $Locals_tmp10strlen $Locals_tmp ) - 10 );
break;
}
if ( ord $this->BUF $i ] { 10 } ) & 0x80 && $this->IMG > -) {
if ( $Global_len == $Locals_len ) {
if ( GIFEncoder::GIFBlockCompare $Global_rgb$Locals_rgb$Global_len ) ) {
$this->GIF .= ( $Locals_ext $Locals_img $Locals_tmp );
}
else {
$byte  ord $Locals_img } );
$byte |= 0x80;
$byte &= 0xF8;
$byte |= ( ord $this->BUF ] { 10 } ) & 0x07 );
$Locals_img } = chr $byte );
$this->GIF .= ( $Locals_ext $Locals_img $Locals_rgb $Locals_tmp );
}
}
else {
$byte  ord $Locals_img } );
$byte |= 0x80;
$byte &= 0xF8;
$byte |= ( ord $this->BUF $i ] { 10 } ) & 0x07 );
$Locals_img } = chr $byte );
$this->GIF .= ( $Locals_ext $Locals_img $Locals_rgb $Locals_tmp );
}
}
else {
$this->GIF .= ( $Locals_ext $Locals_img $Locals_tmp );
}
$this->IMG  1;
}
/*
:::::::::::::::::::::::::::::::::::::::::::::::::::
::
:: GIFAddFooter...
::
*/
function GIFAddFooter ( ) {
$this->GIF .= ";";
}
/*
:::::::::::::::::::::::::::::::::::::::::::::::::::
::
:: GIFBlockCompare...
::
*/
function GIFBlockCompare $GlobalBlock$LocalBlock$Len ) {

for ( $i 0$i $Len$i++ ) {
if (
$GlobalBlock $i } != $LocalBlock $i } ||
$GlobalBlock $i } != $LocalBlock $i } ||
$GlobalBlock $i } != $LocalBlock $i }
) {
return ( );
}
}

return ( );
}
/*
:::::::::::::::::::::::::::::::::::::::::::::::::::
::
:: GIFWord...
::
*/
function GIFWord $int ) {

return ( chr $int 0xFF ) . chr ( ( $int >> ) & 0xFF ) );
}
/*
:::::::::::::::::::::::::::::::::::::::::::::::::::
::
:: GetAnimation...
::
*/
function GetAnimation ( ) {
return ( $this->GIF );
}
}
?>
#3045
CitarSan Salvador arrived from google.com.sv on "» Nosotros".

from en ingles quiere decir "desde", ese es el refere no hacia donde va.

http://translate.google.cl/translate_a/t?client=t&text=San%20Salvador%20arrived%20from%20google.com.sv%20on%20%22%C2%BB%20Nosotros%22.%20&hl=es&sl=en&tl=es&multires=1&swap=1&prev=conf&psl=en&ptl=en&otf=1&it=sel.4023&sc=1

CitarSan Salvador llegó de google.com.sv sobre "» Nosotros ".

tomas el referer le haces un file_get_contents($_SERVER['HTTP_REFERER']); y calculas el ^<head>*<title>$1</title>

por políticas de seguridad ningún explorador te va a decir hacia donde va alguien y si logras saberlo es porque encontraste una vulnerabilidad en ese explorador pero a la buena no se puede, no porque no se tenga conocimiento sino porque el explorador está diseñado para que tu no lo sepas.
#3046
puedes detectar si ha salio pero no hacia donde fue.



Arrival or Departure: Llegada o de salida. indica si el visitante aun está en la web pero no indica hacia donde se ha ido.

Country: Pais del visitante.

Browser: User-Agent del explorador.

OS: Sistema Operativo.

Website: Desde donde llegó a a página (referer)

Long description: Todo lo anterior pero en texto, no en iconos de imágenes.



En ninguna parte sale hacia donde se fue, solo dice si se ha quedado o se ha ido.
esto se puede hacer de dos formas:

La mayoría de los sistemas CMS como joomla, smf, vbulletín puede saber si un usuario está conectado o no, por ejemplo cuando entro a la web aparezco como visitante pero cuando me voy ya no aparezco en el contador.

Esto sucede porque el sistema tiene una base de datos con las ips conectadas mas la hora exacta a la que se conectó por última ves, entonces si dentro de 10 minutos aproximadamente no vuelves a visitar la web o no haces petición a alguna página significa que ya te fuiste y no te cuenta como visitante.

En otras palabras hace una comparación de tiempos de accesos.

La otra forma si lo quieres hacer en tiempo real es con onblur() y onload() ya que onload es cuando alguien entra y onblur cuando alguien sale, el problema es que si alguien detiene el proceso del explorador o apaga su pc con el explorador abierto esta función no se ejecuta y te figuraría conectado para siempre a enos que hagas una mezcla con la técnica anterior y le des vencimiento en segundos.

Por ejemplo... una forma de hacerlo en tiempo real es hacer un script, cuando la persona entre dejas grabado en la base de datos que ya está conectado, o sea su ip mas la hora en que hizo la petición a la página, luego el mismo script envía unos keeps alives o sea varias peticiónes GET via ajax cada 15 segundos para reportar al servidor que aun estas conectado, si esas peticiones cesan es porque la persona ya no está conectada y para hacerlo mas rápido le dices que con onblur() envíe una petición rápida para decirle al servidor que te has desconectado.

Lo del user-agent y el sistema operativo lo puedes calcular con el header que envía el explorador y el pais con las infinitas bases de datos que hay por internet.
Lo del referer lo calculas con el header referer y ya, le calculas el host real y le pones una imagen dependiendo del host.
#3047
Cita de: sirdarckcat en  5 Enero 2011, 19:45 PM
porcierto, para estas cosas esta security@elhacker.net que aunque no damos dinero por bug, damos las gracias! xD


le debes $1337 usd a PerroFlauta3000
#3048
ya me preguntaba porque rapidshare está forzando todos sus enlaces a conexiones cifradas en ssl xD
#3049
intenta con..

<script>
function opengame(url){
window.open(URL,"Protohey games","width=640,height=480,scrollbars=NO","resizable=NO");
return false;
}
</script>

<a href="http://sites.google.com/site/protohost/DodgeIt.swf" onclick="return opengame(this.href);">jugar</a>
#3050
los servicios se inician y detienen con el comando "sc". al llamar un programa desde la consola no se cierra hasta que finalize a menos que tenga multiinstancia, esto es para poder controlar los retornos de las aplicaciones y utilizar el error level, ya que si un programa se ejecuta solo entonces la consola ya no podría manipular los retornos de cada aplicación.

para eso existen los servicios que son procesos independientes y corren en modo background.

checa que el servicio esté registrado o si no cheka el estado del servicio si está en modo automatico o manual, talves a causa de ese "error" está detenido esperando a ser iniciado de forma manual o dimplemente se desregistró.

Microsoft Windows [Versión 6.1.7600]
Copyright (c) 2009 Microsoft Corporation. Reservados todos los derechos.

C:\Users\Yan>sc
DESCRIPCIÓN:
        SC es un programa de línea de comandos usado para comunicarse con
        el Administrador de control de servicios y con los servicios.

USO:
        sc <servidor> [comando] [nombre del servicio] <opción1> <opción2>...

        La opción <servidor> tiene el formato "\\nombreDeServidor"
        Se puede obtener más ayuda acerca de los comandos si escribe
        "sc [comando]"

        Comandos:
         query----------Consulta el estado de un servicio o enumera el estado
                        para tipos de servicios.
         queryex--------Consulta el estado extendido de un servicio o enumera
                        el estado para tipos de servicios.
         start----------Inicia un servicio.
         pause----------Envía una solicitud de control PAUSE a un servicio.
         interrogate----Envía una solicitud de control INTERROGATE a un
                        servicio.
         continue-------Envía una solicitud de control CONTINUE a un servicio.
         stop-----------Envía una solicitud STOP a un servicio.
         config---------Cambia la configuración de un servicio (persistente).
         description----Cambia la descripción de un servicio.
         failure--------Cambia las acciones que emprende un servicio en caso
                        de error.
         failureflag----Cambia la marca de acciones de error de un
                        servicio.
         sidtype--------Cambia el tipo SID de servicio de un servicio.
         privs----------Cambia los privilegios requeridos de un servicio.
         qc-------------Consulta la información de configuración de un
                        servicio.
         qdescription---Consulta la descripción de un servicio.
         qfailure-------Consulta las acciones que emprende un servicio en
                        caso de error.
         qfailureflag---Consulta la marca de acciones de error de un
                        servicio.
         qsidtype-------Consulta el tipo SID de servicio de un servicio.
         qprivs---------Consulta los privilegios requeridos de un servicio
         qtriggerinfo----Consulta los parámetros de desencadenador de un
         servicio.
         qpreferrednode--Consulta el nodo NUMA preferido de un servicio
         delete---------Elimina un servicio (del Registro).
         create---------Crea un servicio (lo agrega al Registro).
         control--------Envía un control a un servicio.
         sdshow---------Muestra un descriptor de seguridad de un servicio.
         sdset----------Envía el descriptor de seguridad de un servicio.
         showsid--------Muestra la cadena de SID de servicio correspondiente a
                        un nombre arbitrario.
         triggerinfo-----Configura los parámetros de desencadenador de un
         servicio.
         preferrednode---Establece el nodo NUMA preferido de un servicio.
         GetDisplayName-Obtiene el DisplayName de un servicio.
         GetKeyName-----Obtiene el ServiceKeyName de un servicio.
         EnumDepend-----Enumera las dependencias del servicio.

        Los siguientes comandos no requieren un nombre de servicio:
        sc <servidor> <comando> <opción>
         boot-----------(ok | bad) Indica si el último arranque debe guardarse
                        como última configuración conocida de arranque correcto
         Lock-----------Bloquea la base de datos de servicio
         QueryLock------Consulta el LockStatus de la base de datos SCManager

EJEMPLO:
        sc start MiServicio

¿Desea consultar la Ayuda para los comandos QUERY y QUERYEX? [ s | n ]:
s

OPCIONES DE QUERY Y QUERYEX:
    Si el comando de consulta va seguido de un nombre de servicio, se
    devolverá el estado de dicho servicio. En este caso no son aplicables
    más opciones. Si el comando de consulta no va seguido de nada o de
    una de las opciones que aparecen abajo, se enumerarán los servicios.

    type=    Tipo de servicios que se enumerarán (controlador, servicio, todos)
             (valor predeterminado = servicio)
    state=   Estado de los servicios que se enumeran (inactivo, todos)
             (valor predeterminado = activo)
    bufsize= Tamaño (en bytes) del búfer de enumeración
             (valor predeterminado = 4096)
    ri=      El número de índice de reanudación en el que comenzará la
             enumeración (valor predeterminado = 0)
    group=   Grupo de servicio que se enumerará
             (valor predeterminado = todos los grupos)

EJEMPLOS DE SINTAXIS
sc query                - Enumera el estado de controladores y servicios
                          activos
sc query eventlog       - Muestra el estado del servicio de registro de
                          eventos
sc queryex eventlog     - Muestra el estado extendido del servicio de
                          registro de eventos
sc query type= driver   - Enumera sólo los controladores activos
sc query type= service  - Enumera sólo los servicios de Win32
sc query state= all     - Enumera todos los servicios y controladores
sc query bufsize= 50    - Enumera con un búfer de 50 bytes
sc query ri= 14         - Enumera con índice de reanudación = 14
sc queryex group= ""    - Enumera los servicios activos que no están
                          en un grupo
sc query type= interact - Enumera todos los servicios interactivos
sc query type= driver group= NDIS     - Enumera todos los controladores NDIS


C:\Users\Yan>