Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

 
 
Herramientas Buscar en Tema Desplegado
  #5  
Antiguo 21-10-2014
Avatar de escafandra
[escafandra] escafandra is offline
Miembro Premium
 
Registrado: nov 2007
Posts: 2.211
Poder: 22
escafandra Tiene un aura espectacularescafandra Tiene un aura espectacular
Fíjate en este código usando char* y funciones C:

Código PHP:
bool FuerzaBruta(char* Serial, char* Salida, char* Rango)
{
  
int L = strlen(Serial);
  
int R = strlen(Rango);
  
int n;
  for(
n=0; n<L; n++) Salida[n] = *Rango;
  
Salida[n] = 0;
  for(
n=0; n<L; n++){
    for(
int r=0; r<R; r++){
      
Salida[n] = Rango[r];
      if(
Salida[n] == Serial[n]) break;
    }
  }
}
//--------------------------------------------------------------

void __fastcall TForm1::Button2Click(TObject *Sender)
{
   
char* Rango = "0123456789ABCDEF";
   
char* Serial = "FAAF"; //Cadena hexa a buscar. No puede ser mayor que "FFFFFFFF"
   
char* Salida = new char[strlen(Serial)+1];

   
bool retval;
   
bool error=false; //bandera para la verificacion de la cadena
   
double tiempoInicial, tiempoFinal;

   
//Podemos asegurarnos de que el valor de cadena es hexa antes de seguir para evitar problemas
   
for(int i = 0; i < strlen(Serial) && error != true; i++)
   {
      if(!
isalnum(Serial[i])){
         
ShowMessage(AnsiString().sprintf("La cadena %s no es hexadecimal", Serial));
         
error = true;
      }
   }

   
//Tambien deberiamos asegurarnos de que el largo de la cadena no exceda del maximo
   
if(strlen(Serial) > 8)
   {
      
ShowMessage(AnsiString().sprintf("El largo de cadena excede del largo máximo.\nLargo actual: %d\nLargo máximo permitido: %d", strlen(Serial),8));
      
error = true;
   }

   if(
error != true) //Si no se produjo ningun error seguimos adelante
   
{
      
Form1->WindowState = wsMinimized; //Minimizamos el form para que el usuario no pueda pulsar el boton ni nada

      
tiempoInicial = GetTickCount(); //Obtenemos el tiempo de entrada

      
retval = FuerzaBruta(Serial, Salida, Rango);

      if(
retval == false){ //Si no se encontró avisamos
         
ShowMessage("No se encontró el valor");
      }else{
         
tiempoFinal = GetTickCount(); //obtenemos el tiempo de salida

         
ShowMessage( AnsiString().sprintf( "Valor hexadecimal: %s\n"
                                            "Se han tardado %s segundos en encontrarlo."
,
                                            
Salida, FormatFloat("0.000",(tiempoFinal - tiempoInicial) /1000)));
      }
      
Form1->WindowState = wsNormal; //volvemos a restaurar el form
   
}
   
delete [] Salida;
} 

Saludos.
Responder Con Cita
 


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Seleccionar un determinado rango de caracteres en un memo ErikMdqqq C++ Builder 7 02-08-2013 03:51:49
Es posible crear bucle controlado José Luis Garcí Varios 5 05-07-2011 10:04:54
Crear codigo de Fuerza Bruta kurono Varios 12 31-01-2011 16:46:26
Como crear un bucle con TEdit's axlrafael OOP 12 08-05-2008 19:22:48
Cerrar Form "fuerza bruta" MaMu Varios 3 22-05-2007 19:59:50


La franja horaria es GMT +2. Ahora son las 12:07:33.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi