elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a Git (Primera Parte)


+  Foro de elhacker.net
|-+  Programación
| |-+  Ingeniería Inversa (Moderadores: karmany, .:UND3R:., MCKSys Argentina)
| | |-+  [AYUDA] Script para generar seriales los crea repetidos
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: [AYUDA] Script para generar seriales los crea repetidos  (Leído 3,170 veces)
Graphixx


Desconectado Desconectado

Mensajes: 1.336


Full Stack Developer


Ver Perfil WWW
[AYUDA] Script para generar seriales los crea repetidos
« en: 16 Septiembre 2014, 17:53 pm »

Buenas, junte 3 ejemplos que encontre en la red de generar seriales en 1 solo codigo, la cosa es que si estoy cojiendo 3 datos diferentes, no entiendo por que el script me repite seriales.

Código
  1. <?php
  2. function RandomString($length=10,$uc=TRUE,$n=TRUE,$sc=FALSE)
  3. {
  4.    //$source = 'abcdefghijklmnopqrstuvwxyz';
  5.    //if($uc==1) $source .= 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
  6. if($uc==1) $source .= 'abcdefghijklmnopqrstuvwxyz';
  7.    if($n==1) $source .= '1234567890';
  8.    //if($sc==1) $source .= '|@#~$%()=^*+[]{}-_';
  9.    if($length>0){
  10.        $rstr = "";
  11.        $source = str_split($source,1);
  12.        for($i=1; $i<=$length; $i++){
  13.            mt_srand((double)microtime() * 1000000);
  14.            $num = mt_rand(1,count($source));
  15.            $rstr .= $source[$num-1];
  16.        }
  17.  
  18.    }
  19.    return $rstr;
  20. }
  21.  
  22. //echo "<font size=38>a".RandomString(6,TRUE,true,false)."</font>";
  23.  
  24.    function generateKey($webroot,$shortname,$version){
  25.  
  26.    $webroot = strtolower(trim($webroot));
  27.    for($i=0;$i<strlen($webroot);$i++){
  28.    $alpha = substr($webroot,$i,$i+1);
  29.    $key1="";
  30.    $thisS=getValue($alpha);
  31.    $key1= $key1 + $thisS;
  32.    }
  33.  
  34.    $shortname = strtolower(trim($shortname));
  35.    for($i=0;$i<strlen($shortname);$i++){
  36.    $alpha = substr($shortname,$i,1);
  37.  
  38.    $key3="";
  39.    $key3= $key3 + $thisS;
  40.    }
  41.  
  42.    $version = strtolower(trim($version));
  43.    for($i=0;$i<strlen($version);$i++){
  44.    $alpha = substr($version,$i,1);
  45.    $key4 ="";
  46.    $key4 =$key4+$thisS;
  47.    }
  48.  
  49.    $hkey1 = ($key1 + $key3 * $key4) * 9;
  50.    $hkey2 = ($key1 * $key3 - $key4) * 2;
  51.    $hkey3 = ($key1 - $key3 * $key4) * 3;
  52.    $hkey4 = ($key1 - $key3 - $key4) * 5;
  53.    $ckey1 = substr(strtoupper(crypt($hkey1,$key1)),3,4);
  54.    $ckey1 = str_replace(".","A",$ckey1);
  55.    $ckey1 = str_replace("/","Z",$ckey1);
  56.    $ckey2 = substr(strtoupper(crypt($hkey2,$key1)),3,4);
  57.    $ckey2 = str_replace(".","G",$ckey2);
  58.    $ckey2 = str_replace("/","3",$ckey2);
  59.    $ckey3 = substr(strtoupper(crypt($hkey3,$key3)),3,4);
  60.    $ckey3 = str_replace(".","6",$ckey3);
  61.    $ckey3 = str_replace("/","D",$ckey3);
  62.    $ckey4 = substr(strtoupper(crypt($hkey4,$key4)),3,4);
  63.    $ckey4 = str_replace(".","K",$ckey4);
  64.    $ckey4 = str_replace("/","W",$ckey4);
  65.  
  66.    return $ckey1."-".$ckey4;
  67.    }
  68.  
  69.    function getValue($alpha){
  70.    switch($alpha){
  71.    case 'a': return 6678 ; break;
  72.    case 'b': return 1712 ; break;
  73.    case 'c': return 5513 ; break;
  74.    case 'd': return 6648 ; break;
  75.    case 'e': return 7626 ; break;
  76.    case 'f': return 4581 ; break;
  77.    case 'g': return 7221 ; break;
  78.    case 'h': return 4891 ; break;
  79.    case 'i': return 4441 ; break;
  80.    case 'j': return 8503 ; break;
  81.    case 'k': return 7567 ; break;
  82.    case 'l': return 8028 ; break;
  83.    case 'm': return 2074 ; break;
  84.    case 'n': return 1770 ; break;
  85.    case 'o': return 2442 ; break;
  86.    case 'p': return 3321 ; break;
  87.    case 'q': return 3899 ; break;
  88.    case 'r': return 2474 ; break;
  89.    case 's': return 5313 ; break;
  90.    case 't': return 7505 ; break;
  91.    case 'u': return 9808 ; break;
  92.    case 'v': return 3571 ; break;
  93.    case 'w': return 3352 ; break;
  94.    case 'x': return 3410 ; break;
  95.    case 'y': return 7058 ; break;
  96.    case 'z': return 5847 ; break;
  97.    case '0': return 15058 ; break;
  98.    case '1': return 89739 ; break;
  99.    case '2': return 27663 ; break;
  100.    case '3': return 53044 ; break;
  101.    case '4': return 74136 ; break;
  102.    case '5': return 89338 ; break;
  103.    case '6': return 17816 ; break;
  104.    case '7': return 93186 ; break;
  105.    case '8': return 84464 ; break;
  106.    case '9': return 58450 ; break;
  107.    default: return 1419 ; break;
  108.    }
  109. }
  110.  
  111. function encrypt($string, $key) {
  112.   $result = '';
  113.   for($i=0; $i<strlen($string); $i++) {
  114.      $char = substr($string, $i, 1);
  115.      $keychar = substr($key, ($i % strlen($key))-1, 1);
  116.      $char = chr(ord($char)+ord($keychar));
  117.      $result.=$char;
  118.   }
  119.   return base64_encode($result);
  120. }
  121.  
  122.  
  123.  
  124. $link=mysql_connect("localhost","root","");
  125. mysql_select_db("seriales",$link);
  126.  
  127. for ($i = 0; $i < 90; $i++) {
  128.    $cod1 = "a".RandomString(6,TRUE,true,false);
  129. $webroot = $cod1;
  130. $shortname = strrev($cod1);
  131.  
  132. $cadena_encriptada = encrypt($cod1,$shortname);
  133. $version = $cadena_encriptada;
  134. echo $cod1." / ".$version." / ".$shortname." <br/>";
  135.  
  136. $serial = generateKey($webroot,$shortname,$version);
  137.  
  138.    mysql_query("insert into seriales(qr,serial) values('$cod1','$serial')",$link);
  139. }
  140.  
  141. mysql_close($link);
  142. ?>
  143.  

Esta convinacion de 3 ejemplos fue lo mejor que encontre, si conocen de mas ejemplos de generar serial en php, se agradece...
« Última modificación: 16 Septiembre 2014, 18:10 pm por Graphixx » En línea

Nada tiene fin solo hay pequeñas pausas, pausas que determinan el comienzo de otros. Graphixx Rōninnovation
MCKSys Argentina
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.524


Diviértete crackeando, que para eso estamos!


Ver Perfil
Re: [AYUDA] Script para generar seriales los crea repetidos
« Respuesta #1 en: 16 Septiembre 2014, 19:55 pm »

Hola!

Desconozco la sintaxis de PHP, pero si se me ocurren algoritmos para generar seriales.

En realidad, es cuestion de jugar un poco con los datos y evitar colisiones de seriales para distintos valores de entrada (lo cual solucionas facil con hashes).

La pregunta es: en base a qué quieres generar los seriales? A parametros como los del ejemplo (webroot, shortname y version)?

Saludos!
En línea

MCKSys Argentina

"Si piensas que algo está bien sólo porque todo el mundo lo cree, no estás pensando."

Graphixx


Desconectado Desconectado

Mensajes: 1.336


Full Stack Developer


Ver Perfil WWW
Re: [AYUDA] Script para generar seriales los crea repetidos
« Respuesta #2 en: 16 Septiembre 2014, 21:11 pm »

La pregunta es: en base a qué quieres generar los seriales? A parametros como los del ejemplo (webroot, shortname y version)?
Saludos!

El ejemplo traia 3 llaves, yo solo necesito en base a 1 sola llave... me parece que con este ejemplo me voy a bastar:
http://www.phpclasses.org/package/6823-PHP-Generate-serial-numbers.html#screenshots

Yo lo adapte para generar seriales en base a un string random, os dejo mi codigo por aca:
http://www.4shared.com/zip/NQrYs3kPba/cod04.html
El ejemplo generaba 4 bloques de serial, yo modifique de la libreria "Serial.php" de la linea 87:
Cambie:
      while(++$blockCount < 4)
Por:
      while(++$blockCount < 2)
Asi que ya solo genera 2 bloques, vale.

De todas formas sigo abierto a que me recomienden mas librerias de generar seriales en PHP.
En línea

Nada tiene fin solo hay pequeñas pausas, pausas que determinan el comienzo de otros. Graphixx Rōninnovation
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[Pregunta] Como generar números aleatorios no repetidos
Programación Visual Basic
Dreamaker 6 6,843 Último mensaje 20 Julio 2010, 02:24 am
por Fitoschido
AYUDA PARA GENERAR POLINOMIO
Programación C/C++
wazausky 3 3,552 Último mensaje 27 Marzo 2013, 07:51 am
por leosansan
crear script para generar codigo letras?
Java
alvarogemelo 1 1,981 Último mensaje 22 Febrero 2017, 09:34 am
por ivancea96
Ayuda para generar un sorteo
Programación C/C++
JuanTheTropper 1 1,897 Último mensaje 10 Diciembre 2018, 01:34 am
por K-YreX
¡Recompensa: 50 euros! Necesito ayuda para conseguir seriales de un software
Ingeniería Inversa
Code1Alexander 2 4,920 Último mensaje 2 Diciembre 2021, 17:43 pm
por simorg
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines