Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » BruteForce Funktion

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
30.12.2005, 20:39 Uhr
mauralix



Hallo Welt!!!

Ich habe jetzt mal eine BruteForce-Funktion(ausprobieren aller möglichen Zeichen bei einer gewissen Laenge eines Strings) geschrieben.
Früher habe ich Probleme gehabt weil ich für unterschiedliche Laengen je nach dem eine andere Anzahl verschachtelte Schleifen benötigt habe. Jetzt habe ich dieses Problem durch Rekursion gelöst. Allerdings sollte man Rekursion ja vermeiden weil die Laufzeit länger wird, weil ja alle Parameter über den Stack oder so kopiert werden müssen.
Jetzt wäre ich über konstruktive Kritik dankbar bzw. bemängelt alles was nur geht, dann macht es aber besser.
Langer Rede gar kein Sinn hier der Code..


C++:

// Zeichen im ASCII-Code
// 48-57 = 0-9
// 65-90 = A-Z
// 97-122= a-z

void BruteForce(int n)
{
    if(n<0) return;
    
    static bool firsttime=true;
    static string current;

    if(firsttime)
    {
        firsttime=false;
        for(int a=0;a<n;a++)
            current.push_back(' ');
    }


    for(int i=65;i<=90;i++)
    {
        current[n-1]=char(i);
        cout<<current<<endl;
        BruteForce(n-1);
    }
}



--
nur olfaktorisch fassbar....
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
03.01.2006, 19:13 Uhr
mauralix



Keinem interessierd sowas ?? Wan kann damit doch alles mögliche anstellen !!!
--
nur olfaktorisch fassbar....
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
03.01.2006, 21:54 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


implementiers iterativ
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
06.01.2006, 17:43 Uhr
~void
Gast


Iterativ ist mit Schleifen, und das geht dann so nicht dynamisch
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
06.01.2006, 18:00 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)



Zitat:

Iterativ ist mit Schleifen, und das geht dann so nicht dynamisch


das ist blödsinn...
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
08.01.2006, 18:43 Uhr
~void
Gast


Naja dann zeigt mal wie ihr das gelöst hättet, ich finde die Rekursion von mauralix schon nicht so schlecht
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
08.01.2006, 20:06 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


z.b so:


C++:
  while(strcmp(this->passwortmd5, this->pmd5) != 0) // eine ist das gesuchte, das 2te das generierte
  {
    versuche = versuche + 1;
    if(pluszeichen(zeichen) == 1)
    {
      if(zeichen + 1 < this->laenge)
      {
        zeichen++;
        p[zeichen] = '0';
      }
      else
      {
        int z = zeichen-1;
        if(z >= 0)
        {
          while(pluszeichen(z) == 1)
          {
            z--;
            if(z < 0)
            {
              std::cout << "FATAL ERROR: Seltsamerweise konnte kein Schluessel gefunden werden!" << endl;
              exit(this->exit(1));
            }
          }
        }
      }
    }
    md5();
    if(this->ansicht == true)
      std::cout << "\r> " << this->p << " - " << (long)this->zeit << "s (" << versuche << "): \"" << this->pmd5 << "\"" << std::flush;
  }

inline int pluszeichen(int pos)
{
  char *z = &this->p[pos];
  (*z)++;
  if((*z) == '9'+1)
    (*z) = 'A';
  if((*z) == 'Z'+1)
    (*z) = 'a';
  if((*z) > 'z')
  {
    (*z) = '0';
    return 1;
  }
  return 0;
}



this->p ist ein char * mit der gewünschten maximalen länge
zeichen ist ein int
--
class God : public ChuckNorris { };

Dieser Post wurde am 08.01.2006 um 20:07 Uhr von FloSoft editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: