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
|-+  Seguridad Informática
| |-+  Seguridad
| | |-+  Desafíos - Wargames (Moderador: Kasswed)
| | | |-+  Prueba Serial
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Prueba Serial  (Leído 4,133 veces)
elkiy

Desconectado Desconectado

Mensajes: 129


Porque yo soy yo.. y usted es usted.


Ver Perfil WWW
Prueba Serial
« en: 22 Febrero 2013, 19:22 pm »

Bueno aver me descarge el codigo, le puse la sangri y demás para poder enterderlo bien, tengo conocimiento en c++ y php, pero de java nada (me olvide lo poco que sabia je), igual algo se entiende, bueno me fije lo que pide y lo pase a pseudocodigo, espero que esté bien, igual en la funcion IsNumeric (sText) hay me pierdo todo.

Lo que logré saber:

1ro: es un codigo que tiene 16 caracteres.

Código
  1. function ver (cod)
  2. {
  3.  
  4.    if (cod.length != 16)
  5.    {
  6.      alert("Codigo No Valido");
  7.      return false;
  8.     }

2do: cvd tiene un solo caracter
cod tiene 15.

Código
  1. cvd = cod.substr(15,1);
  2. cod = cod.substr(0,15);

3ro: SI no es un codigo de 15 caracteres O su codigo tiene letras
                Codigo No valido.
Código
  1. if (cod.length != 15 || IsNumeric(cod) == false)
  2. {
  3. alert("Codigo No Valido");
  4. return false;
  5. }

Todo esto me cuesta, no logró entender bien, mas las cosas que nombra

Código
  1. for (i=0;i<cod.length;i++){
  2.   if (i%2 == 0){
  3.   tmp = cod.substring(i,i+1) * 1;
  4.  
  5.   }
  6.   else{
  7.   tmp = cod.substring(i,i+1) * 2;
  8.   }
  9.  
  10.  if (tmp >= 10){
  11.  tmp = tmp.toString();
  12.  tmp = tmp.substr(0,1) + tmp.substr(1,1);
  13.  }
  14.  
  15. chk = chk.concat(tmp);
  16. }
  17.  
  18. tmp = '';
  19.  
  20.  
  21. for (i=0;i<chk.length;i++){
  22. tmp = (tmp*1) + (chk.charAt(i)*1);
  23. }
  24.  
  25.  
  26. tmp = tmp.toString();
  27. chk = (tmp.substr(0,1)*1) + (tmp.substr(1,1)*1);
  28. chk = chk * 10;
  29. chk = (chk*1) - (tmp*1);
  30. cvs = chk % 10;

SI al final la variable cvs es identica a cvd
     Verdadero
Sino
    Codigo No valido

Código
  1. if (cvs == cvd)
  2.  {
  3.  return true;
  4.  }
  5.  else
  6.  {
  7.  alert("Codigo No Valido");
  8.  return false;
  9.  }
  10. }


Por las dudas codigo completo es:

Código
  1. function ver (cod) {
  2.  
  3. if (cod.length != 16){
  4. alert("Codigo No Valido");
  5. return false;
  6. }
  7.  
  8. var codx =new Array(cod);
  9. var chk = '';
  10. var tmp;
  11. var cvs;
  12. var cvd;
  13.  
  14. cvd = cod.substr(15,1);
  15. cod = cod.substr(0,15);
  16.  
  17. if (cod.length != 15 || IsNumeric(cod) == false){
  18. alert("Codigo No Valido");
  19. return false;
  20. }
  21.  
  22. for (i=0;i<cod.length;i++){
  23.   if (i%2 == 0){
  24.   tmp = cod.substring(i,i+1) * 1;
  25.  
  26.   }
  27.   else{
  28.   tmp = cod.substring(i,i+1) * 2;
  29.   }
  30.  
  31.  if (tmp >= 10){
  32.  tmp = tmp.toString();
  33.  tmp = tmp.substr(0,1) + tmp.substr(1,1);
  34.  }
  35.  
  36. chk = chk.concat(tmp);
  37. }
  38.  
  39. tmp = '';
  40.  
  41.  
  42. for (i=0;i<chk.length;i++){
  43. tmp = (tmp*1) + (chk.charAt(i)*1);
  44. }
  45.  
  46.  
  47. tmp = tmp.toString();
  48. chk = (tmp.substr(0,1)*1) + (tmp.substr(1,1)*1);
  49. chk = chk * 10;
  50. chk = (chk*1) - (tmp*1);
  51. cvs = chk % 10;
  52.  
  53.  if (cvs == cvd){
  54.  
  55.  return true;
  56.  }
  57.  else{
  58.  alert("Codigo No Valido");
  59.  return false;
  60.  }
  61. }
  62.  
  63.  
  64. function IsNumeric(sText)
  65.  
  66. {
  67.   var ValidChars = "0123456789.";
  68.   var IsNumber=true;
  69.   var Char;
  70.  
  71.  
  72.   for (i = 0; i < sText.length && IsNumber == true; i++)
  73.      {
  74.      Char = sText.charAt(i);
  75.      if (ValidChars.indexOf(Char) == -1)
  76.         {
  77.         IsNumber = false;
  78.         }
  79.      }
  80.   return IsNumber;
  81.  
  82.   }


« Última modificación: 22 Febrero 2013, 19:26 pm por 1996marioful » En línea

Epzylon

Desconectado Desconectado

Mensajes: 103



Ver Perfil WWW
Re: Prueba Serial
« Respuesta #1 en: 27 Septiembre 2013, 18:13 pm »

El serial ingresado debe tener 16 caracteres
Este serial se dividirá en dos partes:
cvd = último número del serial y es como un número de verificación
cod = es el serial que se analizará en el codigo

Aquí se recorre cod número por número
si el número es par, se lo adiciona en la variable chk,
si es impar, se lo multiplica por dos, si el resultado es mayor o igual a 10,
se suman los dos primeros dígitos del resultado y se lo adiciona en la variable chk.

Cuando digo adiciona, no quiero decir que se lo suma, si no que se lo concatena.

Código:

for (i=0;i<cod.length;i++){
   if (i%2 == 0){
   tmp = cod.substring(i,i+1) * 1;
 
   }
   else{
   tmp = cod.substring(i,i+1) * 2;
   }

  if (tmp >= 10){
  tmp = tmp.toString();
  tmp = tmp.substr(0,1) + tmp.substr(1,1);
  }
 
 chk = chk.concat(tmp);
 }

Aquí se suman número por número cada uno de los dígitos de la variable chk previamente obtenida y se guarda el resultado en tmp
Código:
tmp = '';

for (i=0;i<chk.length;i++){
tmp = (tmp*1) + (chk.charAt(i)*1);
}
 

Aquí viene lo interesante:

Se suman los dos primeros caracteres de tmp y lo guardamos en chk,
luego lo multiplicamos x 10
y restamos chk menos tmp.
Luego obtenemos cvs del módulo de chk por 10.
Código:
tmp = tmp.toString();
chk = (tmp.substr(0,1)*1) + (tmp.substr(1,1)*1);
chk = chk * 10;
chk = (chk*1) - (tmp*1);
cvs = chk % 10;

Si cvs y chk son iguales, wala!


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
el nero y su serial
Software
Badcode 4 2,279 Último mensaje 21 Noviembre 2003, 23:44 pm
por 4rm4ndo
qque nesecito estudiar para realizar la prueba serial
Dudas Generales
yamdoka 7 6,316 Último mensaje 12 Agosto 2011, 04:44 am
por CloudswX
¿Alguien entendió Serial Experiments Lain?
Foro Libre
Tachikomaia 0 580 Último mensaje 17 Agosto 2024, 03:30 am
por Tachikomaia
ERROR C2665 'Serial::Serial':ninguna función sobrecargada pudo convertir todos los tipos de argumento « 1 2 »
Programación C/C++
Meta 10 2,309 Último mensaje 28 Octubre 2024, 07:11 am
por Meta
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines