comment
IRC Chat
play_arrow
Este sitio utiliza cookies propias y de terceros. Si continúa navegando consideramos que acepta el uso de cookies. OK Más Información.

[PHP] Creando una firma dinamica

  • 0 Respuestas
  • 1070 Vistas

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

Desconectado arthusu

  • *
  • Underc0der
  • Mensajes: 541
  • Actividad:
    8.33%
  • Reputación 2
  • Yo solo se que no se nada - Socrátes
    • Ver Perfil
    • Arthusu BLOG
  • Skype: arthusuxD
« en: Mayo 05, 2015, 04:05:41 pm »
Introduccion

Buenas he estado sin tiempo para postear pero en esta ocasion les mostraré como crear una firma dinamica de manera que obtengan algunos datos, muchos ya saben como realizarlo por que no tiene tanta dificultad mas que nada se trata de utilizar la libreria de No tienes permisos para ver links. Registrate o Entra con tu cuenta.

Un buen tutorial que recomiendo mucho sobre PHP GD es el siguiente: No tienes permisos para ver links. Registrate o Entra con tu cuenta el cual esta muy bien explicado.
Tratare de ser breve colocando solo los pasos.

Estructura a realizar

La estructura con la que trabajaremos sera la siguiente:



Explicando un poco que hace cada archivo.

.htaccess - Con este archivo interpretaremos imagenes png (con su extension .png) como archivos php y bloquearemos cualquier intento de acceso al archivo logs.txt

firma.php - Con este archivo generamos la imagen dinamica (pronto le cambiaremos la extension a .png)

KeepCalm-Medium.ttf - Es el tipo de letra que utilizaremos para la firma dinamica.

logs.txt - Aqui guardaremos los logs, en este caso IP, Sistema, Si usa proxy.

rVJgsdx.png - Es la imagen que utilizaremos para la firma dinamica.

view_logs.php - Este es un archivo para ver los logs online. Con un simple formulario que tiene que ingresar una clave.

Nota importante: Nada de aqui es guardado en una base de datos. Y esto es facilmente explotable haciendo peticiones desde la misma IP un sin fin de veces cargaria todo el archivo logs.txt haciendolo demasiado pesado (Esa idea la hizo un amigo No tienes permisos para ver links. Registrate o Entra con tu cuenta) entonces lo unico que podemos realizar en este caso es:

1.- Denegar las ips que realizen demasiadas peticiones
2.- No insertar IPS repetidas en el archivo logs.txt
3.- Cambiar el nombre de la carpeta para que no hagan mas peticiones.

Cualquiera de estos tres puntos no se ven en este tutorial.

Creando la firma

En este caso crearemos el archivo PHP para realizar la firma dinamica, no entrare en detalles de explicaciones ya que comente el codigo lo mas posible para que se entendiera, de todas maneras si no entienden algo, arriba deje una buena documentacion con la que pueden guiarse.

Código: PHP
  1.  <?php
  2.  // no reportamos errores
  3.  No tienes permisos para ver links. Registrate o Entra con tu cuenta(0);
  4.  // el nombre de la imagen a poner como firma
  5.  $im_name = "rVJgsdx.png";
  6.  // los datos de la imagen
  7.  $data_im = No tienes permisos para ver links. Registrate o Entra con tu cuenta($im_name);
  8.  // el tipo de imagen
  9.  No tienes permisos para ver links. Registrate o Entra con tu cuenta("Content-type: {$data_im['mime']}");
  10.  // creamos la imagen en este caso png
  11.  $im = No tienes permisos para ver links. Registrate o Entra con tu cuenta($im_name);
  12.  // creamos un color para usarlo en el texto
  13.  $color = No tienes permisos para ver links. Registrate o Entra con tu cuenta($im, 45, 196, 236);
  14.  // obtenemos la IP
  15.  $ip = $_SERVER['REMOTE_ADDR'];
  16.  // obtenemos los datos del navegador
  17.  $user_agent = $_SERVER['HTTP_USER_AGENT'];
  18.  // vemos si existe algun proxy (no es 100% fiable), y lo agregamos a la variable ip
  19.  $proxy_headers = No tienes permisos para ver links. Registrate o Entra con tu cuenta(
  20.         'HTTP_VIA',
  21.         'HTTP_X_FORWARDED_FOR',
  22.         'HTTP_FORWARDED_FOR',
  23.         'HTTP_X_FORWARDED',
  24.         'HTTP_FORWARDED',
  25.         'HTTP_CLIENT_IP',
  26.         'HTTP_FORWARDED_FOR_IP',
  27.         'VIA',
  28.         'X_FORWARDED_FOR',
  29.         'FORWARDED_FOR',
  30.         'X_FORWARDED',
  31.         'FORWARDED',
  32.         'CLIENT_IP',
  33.         'FORWARDED_FOR_IP',
  34.         'HTTP_PROXY_CONNECTION'
  35.     );
  36.     foreach($proxy_headers as $x){
  37.         if (No tienes permisos para ver links. Registrate o Entra con tu cuenta($_SERVER[$x])) {
  38.          $ip .= "/Estas usando proxy!";
  39.          break;
  40.         }
  41.     }
  42.  
  43.     // reemplazamos los datos del navegador en caso de que sea firefox por firefox o chrome por chrome, la lista es corta se pueden agregar mas
  44.  $navegador = No tienes permisos para ver links. Registrate o Entra con tu cuenta('/.*(firefox|chrome).*/i', '$1', $user_agent);
  45.  // lo mismo que arriba en este caso con el sistema, igual podemos hacer la lista personalizable
  46.  $sistema = No tienes permisos para ver links. Registrate o Entra con tu cuenta('/.*(windows|mac|linux).*/i', '$1', $user_agent);
  47.  // guardamos los datos en una variable para usarla en el texto
  48.  $string = " Tu IP: $ip \n Tu navegador: $navegador \n Tu sistema: $sistema \n Te estoy vigilando!\n";
  49.  // asignamos una variable con la fuente para usarla en el texto
  50.  $fuente = "KeepCalm-Medium.ttf";
  51.  // en caso de que no se haya detectado nada mostramos el navegador, aunque nos trolleen xD :P
  52.  if($navegador == ''){
  53.   $navegador = $_SERVER['HTTP_USER_AGENT'];
  54.  }
  55.  // what? :3, Guardamos logs
  56.  $manejador = No tienes permisos para ver links. Registrate o Entra con tu cuenta("logs.txt", 'a+');
  57.  No tienes permisos para ver links. Registrate o Entra con tu cuenta($manejador, "$string\n\n\n");
  58.  No tienes permisos para ver links. Registrate o Entra con tu cuenta($manejador);
  59.  // magia is here! Mostramos el texto en las coordenadas dadas
  60.  No tienes permisos para ver links. Registrate o Entra con tu cuenta($im, 10, 0, 300, 10, $color, $fuente, $string);
  61.  // png transparency, para la transparencia en la imagen sino se veria desfigurada
  62.  No tienes permisos para ver links. Registrate o Entra con tu cuenta($im, true);
  63.  No tienes permisos para ver links. Registrate o Entra con tu cuenta($im, true);
  64.  No tienes permisos para ver links. Registrate o Entra con tu cuenta($im);
  65.  // destroy image, liberamos la memoria
  66.  No tienes permisos para ver links. Registrate o Entra con tu cuenta($im);
  67. ?>
  68.  
  69.  

Asignar formato a la imagen y denegar acceso a los logs

En este apartado crearemos el archivo .htaccess el cual denegara acceso a los logs y interpretara nuestro archivo png como php.

Citar
AddType application/x-httpd-php .png
<FilesMatch "\.(txt)$">
  Order Deny,Allow
  Deny from all
</FilesMatch>

Creando archivo para ver los logs

Por ultimo creamos nuestro archivo view_logs.php con el cual veremos los logs.

Código: PHP
  1.  <?php
  2.  if (No tienes permisos para ver links. Registrate o Entra con tu cuenta($_POST['pass']) && !No tienes permisos para ver links. Registrate o Entra con tu cuenta($_POST['pass']) && $_POST['pass'] == 'tucontraseñae.e') {
  3.   $gestor = No tienes permisos para ver links. Registrate o Entra con tu cuenta('logs.txt', 'r');
  4.   $contenido = No tienes permisos para ver links. Registrate o Entra con tu cuenta($gestor, No tienes permisos para ver links. Registrate o Entra con tu cuenta('logs.txt'));
  5.   No tienes permisos para ver links. Registrate o Entra con tu cuenta($gestor);
  6.   echo "<pre>" . $contenido . "</pre>";
  7.  }
  8. ?>
  9. <form method="post" action="">
  10.  <p><input type="text" name="pass" /></p>
  11.  <p><input type="submit" name="enviar" /></p>
  12. </form>
  13.  

En este caso solo hay que cambiar tucontraseñae.e por la contraseña que le quieras asignar a la entrada.

Finalizando

Le cambiamos la extension al archivo firma.php y le ponemos el nombre que queramos en mi caso firma.png
Lo abrimos en el navegador para ver los resultados.



En este caso mi ip es ::1 ya que es una ip local.

Les dejo por ultimo los archivos por si quieren probarlo, igual pueden realizar el suyo propio cambiando algunas funciones como dependiendo del tipo de imagen que sea JPEG, PNG, etc. el tipo de letra, sus datos, etc. De igual manera con esto podrian crearse hasta generadores de firmas, saludos!

Archivos: No tienes permisos para ver links. Registrate o Entra con tu cuenta
« Última modificación: Mayo 05, 2015, 09:27:41 pm por arthusu »

 

¿Te gustó el post? COMPARTILO!



Creando una capa de abstraccion de base de datos

Iniciado por ~ Yoya ~

Respuestas: 5
Vistas: 2295
Último mensaje Julio 18, 2013, 12:01:27 am
por ~ Yoya ~
Creando herramientas interesantes con funciones de red en php

Iniciado por Oggy

Respuestas: 0
Vistas: 1484
Último mensaje Diciembre 17, 2012, 09:02:00 pm
por Oggy