Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: danny920825 en 30 Marzo 2017, 15:48 pm



Título: [Resuelto] Crear Licencia en PHP
Publicado por: danny920825 en 30 Marzo 2017, 15:48 pm
Hola a todos. Estoy haciendo un proyecto simple para un cliente pero me gustaría ponerle un sistema de expiración por ejemplo anual (porque no voy a tener acceso, sería local en la pc del cliente y solo me llamarían en caso de presentar algun problema y para renovar la licencia) . O sea, que a los 365 días el proyecto expire y no deje al usuario loguearse ni ver el contenido. He pensado en crear una session con el período de expiración y esas cosas, pero no se... si el usuario borra el historial se reiniciaría el contador. También pensé en crear un archivo de texto en el servidor donde establezco el límite de días y voy reescribiendo el contenido al comparar la fecha. Pero me gustaría escuchar otras ideas y si a alguien le gusta alguna de las que he pusto aqui, trabajar para hacerla lo más seguro posible ya que el objetivo es que el usuario no pueda cambiar los datos tan facilmente. Salu2


Título: Re: [Ayuda] Crear Licencia en PHP
Publicado por: RevolucionVegana en 30 Marzo 2017, 16:00 pm
Podrías hacer que el código haga un SELECT de una base de datos externa con una columna y fila de tipo boleana, una vez hecho el SELECT lo almacenas en una variable y metes todo el código en un IF que diga si la variable almacena el valor 1 que haga todo lo que tiene que hacer el código y si la variable almacena el valor 0 pues le muestras un mensaje diciendole que ya se ha terminado, pero de la forma que yo lo planteo serías tu quien al año entrarías y cambiarías el numerito de la base de datos por un 0, o usar fechas no se xD es que puede hacerse de cualquier forma eso sí tampoco es muy buena idea la mía porque si está desconectado de internet pues le daría un error y no le funcionaría nada del código, o si trabaja con una base de datos en el propio ordenador o en plan con un servidor local lo que puedes hacer es le pones una fila y columna con una fecha, y cada vez que se vaya a ejecutar el código la recoges y la comparas con la fecha actual y si todavía no ha llegado a esa fecha pues le dejas usar el código y si no pues ha expirado, se puede hacer de muchas formas, el problema sería que te modificasen el archivo xD

Saludos


Título: Re: [Ayuda] Crear Licencia en PHP
Publicado por: engel lex en 30 Marzo 2017, 16:36 pm
Podrías hacer que el núcleo esté cifrado (aes) llame a tu página de licencia y por https pase los datos de tu licencia, si es válida, le manda la clave de descifrado, y lo ejecutas en memoria


Título: Re: [Ayuda] Crear Licencia en PHP
Publicado por: danny920825 en 30 Marzo 2017, 20:07 pm
Pensaba que todos los métodos de cifrados usados en PHP eran en un solo sentido. No sabía que AES se pudiera descifrar. Lo de cifrar el nucleo a que se refiere? A cifrar TODA el proyecto? o alguna funcion especifica? Y como cargo el sitio en memoria?


Título: Re: [Ayuda] Crear Licencia en PHP
Publicado por: engel lex en 30 Marzo 2017, 20:45 pm
Citar
Pensaba que todos los métodos de cifrados usados en PHP eran en un solo sentido

¿¿¿¿????

cifradom definición
Citar
Que está escrito con letras, símbolos o números que solo pueden comprenderse si se dispone de la clave necesaria para descifrarlos.

si un cifrado no se puede descifrar, no es cifrado... creo que hablas de hash, que son de un solo sentido...

AES está hecho para descifrarse

lo de cifrar el nucreo me refiero a que agarras la parte importante de tu programa, lo cifras y guardas en un archivo, para usarlo, lo lees, lo abres con su contraseña y lo ejecutas


las funciones (conseguí unas en esta pagina (https://www.comdigitalpro.com/php/como-cifrar-en-php-encriptacion-cifrado-con-el-algoritmo-aes_179.html)... ojo necesitas el modulo de mcrypt)

Código
  1. function encriptar_AES($string, $key)
  2. {
  3.    $td = mcrypt_module_open(MCRYPT_RIJNDAEL_128, '', MCRYPT_MODE_CBC, '');
  4.    $iv = mcrypt_create_iv(mcrypt_enc_get_iv_size($td), MCRYPT_DEV_URANDOM );
  5.    mcrypt_generic_init($td, $key, $iv);
  6.    $encrypted_data_bin = mcrypt_generic($td, $string);
  7.    $encrypted_data_hex = bin2hex($iv).bin2hex($encrypted_data_bin);
  8.    return $encrypted_data_hex;
  9. }
  10.  
  11. function desencriptar_AES($encrypted_data_hex, $key)
  12. {
  13.    $td = mcrypt_module_open(MCRYPT_RIJNDAEL_128, '', MCRYPT_MODE_CBC, '');
  14.    $iv_size_hex = mcrypt_enc_get_iv_size($td)*2;
  15.    $iv = pack("H*", substr($encrypted_data_hex, 0, $iv_size_hex));
  16.    $encrypted_data_bin = pack("H*", substr($encrypted_data_hex, $iv_size_hex));
  17.    mcrypt_generic_init($td, $key, $iv);
  18.    $decrypted = mdecrypt_generic($td, $encrypted_data_bin);
  19.    return $decrypted;
  20. }

para correrlo, depende de como lo almacenes
Código
  1. $codigo = 'for($i=0;$i<10;$i++){
  2.  echo "contar $i\n";
  3. }
  4. ';
  5. eval($codigo);




ahora que lo pienso... podrías transferir en lugar de una contraseña de descifrado, el modulo directamente y ejecutarlo XD


Título: Re: [Ayuda] Crear Licencia en PHP
Publicado por: danny920825 en 30 Marzo 2017, 21:04 pm
Primero que todo:
Gracias por la diferencia entre
Código:
cifrar
y
Código:
hash
Luego gracias por el trabajo de buscar las funciones. No soy muy bueno todavía como para entender ese código, pero me llevo una idea. Seria:
Mientras que la licencia sea válida: ejecuta la funcion eval() con el programa dentro. Si no, muestra un error de licencia y termina el programa.
Como decía al inicio del post, estaba dispuesto a escuchar sobre mejoras a mi idea, ya que mi idea era cuando más un archivo txt en el servidor que tuviera la fecha de la ultima ejecucion y un numero a descontar. Si la fecha actual era mayor que la fecha de caducidad, entonces restaba tantos numeros como diferencia hubiera.
Pero ese método es mucho más efectivo. Gracias Engel Lex por la ayuda como siempre. Tema Solucionado parcialmente hasta que encuentre la forma de hacerlo por mi mismo, pero pueden cerrarlo. Ahora mismo lo marco como resuelto


Título: Re: [Resuelto] Crear Licencia en PHP
Publicado por: engel lex en 30 Marzo 2017, 22:00 pm
para evitarte tanto problema podrías hacerlo por mi ultima forma pensada XD


tu creas tu web con una sección que reciba post, si recibe el usuario y la contraseña y la fecha es valida, retornará la sección de codigo que haga alguna función principal (procura que sea pequeña, menos de 100 lineas para que sea rapida la transferencia)

en el programa, si la sesión es valida, llama a tu pagina mandando los datos necesarios, t si es valida, guarda el codigo en una variable de sesión y lo "carga en memoria" (con eval a la veriable) cuando lo necesite


Título: Re: [Resuelto] Crear Licencia en PHP
Publicado por: danny920825 en 31 Marzo 2017, 13:20 pm
OK, Cuando tenga la respuesta confeccionada regreso y la posteo. Gracias por la ayuda