Hi,
ich beschäftige mich zur Zeit mit der Programmierung eines BruteForcers.
Diesbezüglich will ich lernen, wie C++ Code auf Geschwindigkeit optimiert wird.
Allerdings habe ich nur wenig Ahnung, welche Anweisungen in C++ z.B. viel Zeit und welche wenig brauchen.
Mir ist klar, dass z.B. Aufrufe von Methoden, zB der STL einiges an Zeit kosten können und das man möglichlist lowlevel (im sinne von Benutzung weniger fertiger Klassen) programmieren sollte.
Ich habe folgenden Code im Internet gefunden:
Der Vorteil dieses Algorithmus ist seine Variablität. Er mit jeder gewünschten Länge von Zeichen umgehen.
Wäre es (für feste Zeichenlängen) besser einfach alles in mehrere Schleifen zu packen?
Natürlich müsste man dann mehrere Funktionen für unterschiedliche Längen proggen, aber wenn man dadurch eine Geschwindigkeitsvorteil hat wäre das doch von Nutzen?
Schließlich müssen beim oberen Beispiel immer char[] code, int maxsize, int pos usw im Speicher reserviert und beschrieben werden...
Das kostet doch Zeit oder?
Wäre nett wenn jemand das kurz erörtern könnte.
MFG
Ace
ich beschäftige mich zur Zeit mit der Programmierung eines BruteForcers.
Diesbezüglich will ich lernen, wie C++ Code auf Geschwindigkeit optimiert wird.
Allerdings habe ich nur wenig Ahnung, welche Anweisungen in C++ z.B. viel Zeit und welche wenig brauchen.
Mir ist klar, dass z.B. Aufrufe von Methoden, zB der STL einiges an Zeit kosten können und das man möglichlist lowlevel (im sinne von Benutzung weniger fertiger Klassen) programmieren sollte.
Ich habe folgenden Code im Internet gefunden:
Code:
public void GenPasswords ()
{
char[] code = new char[10]; // Einmal mit maximal grösse anlegen
for (int TestSize = 1 ; TestSize < 11 ; TestSize++)
{
for (int Index = 0 ; Index < TestSize ; Index++)
code[Index] = 'a';
do
{
TestPassword (code, TestSize);
} while (OneUp (code, TestSize, 0));
}
}
public bool OneUp (char[] code, int maxsize, int pos)
{
if (pos == maxsize)
return false;
code[pos]++;
if (code[pos] <= 'z')
return true;
code[pos] = 'a';
return OneUp (code, pos+1);
}
Wäre es (für feste Zeichenlängen) besser einfach alles in mehrere Schleifen zu packen?
Code:
int main(void)
{
for (int a = 0;a <= 99;a++)
for(int b = 0;b <= 99;b++)
std::cout << a << b << std::endl;
return 0;
}
Schließlich müssen beim oberen Beispiel immer char[] code, int maxsize, int pos usw im Speicher reserviert und beschrieben werden...
Das kostet doch Zeit oder?
Wäre nett wenn jemand das kurz erörtern könnte.
MFG
Ace