# Java-Programm in C++ portieren



## Airwolf89 (28. Jun 2009)

Hi Leut's,

habe mal ne Frage. Hatte ja, durch Hilfe in diesem Forum nen kleinen Brute-Force-Algorithmus geschrieben. (Nix gefährliches, nur um mal den algorithmus zu verstehen.)

Nebenbei will ich mir auch noch C++ beibringen. Ich wollte nun dieses kleine Programm in C++ nochmal neu schreiben damit ich da nen kleinen Einstieg bekomme.

Ist halt so dass im Code nen Passwort festgelegt ist und das Programm dann halt das PW sucht.

Leider kriege ich einiges noch nicht hin, bzw. kriege ich vom Compiler jede Menge Fehlermeldungen. Könnte von euch vllt. mal jemand drüber gucken und mir sagen was ich da falsch gemacht habe, bzw. was in C++ so nicht geht? Mit den Fehlermeldungen vom Compiler kann ich bis jetzt noch nicht sehr viel anfangen.

IDE ist Netbeans mit C++ PlugIn und CygWin Compiler im Hintergrund, falls das wichtig ist.

In Java funktioniert das Programm tadellos, müsste nur noch nen bissl an der Performace feilen...

Algorithmus in Java:

```
package bruteforce;

//~--- JDK imports ------------------------------------------------------------

import java.util.Arrays;

public class BruteForce {
    public static char[]  hackChar   = { 'a' };
    public static String  hackString = "";
    public static int     n          = 1;
    public static char[]  password   = { 'h', 'a', 'l', 'l', 'o' };
    public static boolean isHacked   = false;

    public static void main(String[] args) {
        while ((isHacked == false)) {
            hackChar[0] = ' ';

            for (int k = 97; k < 123; k++) {
                hackChar[0] = (char) k;
                hackString  = new String(hackChar);
                System.out.println(hackString);
                isHacked = check(hackChar);

                if (isHacked == true) {
                    System.out.println("Geknackt, das Passwort lautet: " + hackString);

                    break;
                } else {
                    for (int i = 0; i < hackChar.length; i++) {
                        if (hackChar[i] == 'z') {
                            try {
                                hackChar[i + 1]++;
                            } catch (Exception e) {
                                n++;
                                hackChar = new char[n];

                                for (int j = 0; j < n; j++) {
                                    hackChar[j] = 'a';
                                }
                            }

                            hackChar[i] = 'a';
                        }
                    }
                }
            }
        }
    }

    public static boolean check(char[] hack) {
        if (Arrays.equals(hack, password)) {
            isHacked = true;
        } else {
            isHacked = false;
        }

        return isHacked;
    }
}
```

Algorithmus in C++

```
#include <ios>
#include <stdlib.h>
#include <iostream>
#include <string>


using namespace std;

//globale Variablen
bool isHacked = false;
char hackChar = 'a";
char password[] = 'abc';
string hackString = "";
int n = 1;

/*
 * Main-Funktion
 */
int main(int argc, char** argv) {

    while (isHacked == false) {
        hackChar[0] = ' ';

        for (int k = 97; k < 123; k++) {
            hackChar[0] = (char) k;
            hackString.clear();
            hackString.assign(hackChar);
            cout << hackString << "\n";
            isHacked = check(hackChar);

            if (isHacked == true) {
                cout << "Geknackt, das Passwort lautet: " << hackString;

                break;
            } else {
                for (int i = 0; i < hackChar.length; i++) {
                    if (hackChar[i] == 'z') {
                        try {
                            hackChar[i + 1]++;
                        } catch (...) {
                            n++;
                            hackChar.clear();
                            char hackChar[n];

                            for (int j = 0; j < n; j++) {
                                hackChar[j] = 'a';
                            }
                        }
                        hackChar[i] = 'a';
                    }
                }
            }
        }
    }

    return (EXIT_SUCCESS);
}

/*
 * Check-Funktion um ermitteltes Passwort zu prüfen
 */
bool check(char hack[]) {

    if (strcmp(hack, password) == 0) {
        isHacked = true;
    } else {
        isHacked = false;
    }

    return isHacked;
}
```

Fehlermeldungen:

```
Running "C:\cygwin\bin\make.exe  -f BruteForce CONF=Debug" in H:\Development\C++\BruteForce

g++     BruteForce.cpp   -o BruteForce
BruteForce.cpp:18: error: missing terminating ' character
BruteForce.cpp:19: error: expected primary-expression before "char"
BruteForce.cpp:19: error: expected `,' or `;' before "char"
BruteForce.cpp:19:19: warning: multi-character character constant
BruteForce.cpp: In function `int main(int, char**)':
BruteForce.cpp:29: error: invalid types `char[int]' for array subscript
BruteForce.cpp:32: error: invalid types `char[int]' for array subscript
BruteForce.cpp:34: error: invalid conversion from `char' to `const char*'
BruteForce.cpp:34: error:   initializing argument 1 of `std::basic_string<_CharT, _Traits, _Alloc>& std::basic_string<_CharT, _Traits, _Alloc>::assign(const _CharT*) [with _CharT = char, _Traits = std::char_traits<char>, _Alloc = std::allocator<char>]'
BruteForce.cpp:36: error: `check' undeclared (first use this function)
BruteForce.cpp:36: error: (Each undeclared identifier is reported only once for each function it appears in.)
BruteForce.cpp:43: error: request for member `length' in `hackChar', which is of non-class type `char'
BruteForce.cpp:44: error: invalid types `char[int]' for array subscript
BruteForce.cpp:46: error: invalid types `char[int]' for array subscript
BruteForce.cpp:49: error: request for member `clear' in `hackChar', which is of non-class type `char'
BruteForce.cpp:56: error: invalid types `char[int]' for array subscript
BruteForce.cpp: In function `bool check(char*)':
BruteForce.cpp:69: error: `bool check(char*)' used prior to declaration
BruteForce.cpp:71: error: `password' undeclared (first use this function)
make: *** [BruteForce] Error 1

Build failed. Exit value 2.
```

Danke im voraus.


----------



## Der Müde Joe (28. Jun 2009)

char hackChar = 'a";

geht wohl nicht so.

#include <string>
--> c++ string
C++-Programmierung: Strings ? Wikibooks, Sammlung freier Lehr-, Sach- und Fachbücher
in Gegensatz dazu der C-String:
cstring (string.h) - C++ Reference
C Standard-Bibliothek: string.h

deine Methode muss vor der main definiert werden (oder zumindest bekannt gemacht werden).

so auf die schnelle


----------



## faetzminator (28. Jun 2009)

char hackChar = *'*a*"*;


----------



## Marco13 (28. Jun 2009)

Das hat der Syntaxhighlighter auch schon richtig erkannt


----------



## 1337shaddow (20. Nov 2010)

falls du willst hätt ich hier nen Code von nem selfcoded-Brutergibt nur aus. man kann auch alles andere damit anstellen(bsp md5-crypten und mit hash vergleichen =D)
//start
#include <iostream>
#include <conio.h>
#include <Windows.h>
using namespace std;

bool isz_char(char *wort, short aktuelles_zeichen);

int main(void)
  {
     SetConsoleTitle("1337shaddow´s Bruter");
     short aktuelles_zeichen, anzahl_zeichen, counter = -1, taste;
     cout<<"Wie viel Zeichen sollen die W\224rter haben?: ";
     cin>>anzahl_zeichen;
     aktuelles_zeichen = anzahl_zeichen;
     aktuelles_zeichen--;
     char wort[anzahl_zeichen], abbruch[anzahl_zeichen];
     while(counter != anzahl_zeichen)
       {
          counter++;
          wort[counter] = 'a';
       }
     wort[anzahl_zeichen] = '\0';
     strcpy(abbruch, wort);
     cout<< wort << endl;
     isz_char((char*) &wort, (short) aktuelles_zeichen);
     while(strcmp(abbruch, wort) != 0)
       {
          //Wort ausgeben/verarbeiten
          cout<< wort << endl;
          isz_char((char*) &wort, (short) aktuelles_zeichen);
       }
       cin.get();
     return 0;
  }


bool isz_char(char *wort, short aktuelles_zeichen)
  {
          if(wort[aktuelles_zeichen] == 'a') wort[aktuelles_zeichen] = 'b';
     else if(wort[aktuelles_zeichen] == 'b') wort[aktuelles_zeichen] = 'c';
     else if(wort[aktuelles_zeichen] == 'c') wort[aktuelles_zeichen] = 'd';
     else if(wort[aktuelles_zeichen] == 'd') wort[aktuelles_zeichen] = 'e';
     else if(wort[aktuelles_zeichen] == 'e') wort[aktuelles_zeichen] = 'f';
     else if(wort[aktuelles_zeichen] == 'f') wort[aktuelles_zeichen] = 'g';
     else if(wort[aktuelles_zeichen] == 'g') wort[aktuelles_zeichen] = 'h';
     else if(wort[aktuelles_zeichen] == 'h') wort[aktuelles_zeichen] = 'i';
     else if(wort[aktuelles_zeichen] == 'i') wort[aktuelles_zeichen] = 'j';
     else if(wort[aktuelles_zeichen] == 'j') wort[aktuelles_zeichen] = 'k';
     else if(wort[aktuelles_zeichen] == 'k') wort[aktuelles_zeichen] = 'l';
     else if(wort[aktuelles_zeichen] == 'l') wort[aktuelles_zeichen] = 'm';
     else if(wort[aktuelles_zeichen] == 'm') wort[aktuelles_zeichen] = 'n';
     else if(wort[aktuelles_zeichen] == 'n') wort[aktuelles_zeichen] = 'o';
     else if(wort[aktuelles_zeichen] == 'o') wort[aktuelles_zeichen] = 'p';
     else if(wort[aktuelles_zeichen] == 'p') wort[aktuelles_zeichen] = 'q';
     else if(wort[aktuelles_zeichen] == 'q') wort[aktuelles_zeichen] = 'r';
     else if(wort[aktuelles_zeichen] == 'r') wort[aktuelles_zeichen] = 's';
     else if(wort[aktuelles_zeichen] == 's') wort[aktuelles_zeichen] = 't';
     else if(wort[aktuelles_zeichen] == 't') wort[aktuelles_zeichen] = 'u';
     else if(wort[aktuelles_zeichen] == 'u') wort[aktuelles_zeichen] = 'v';
     else if(wort[aktuelles_zeichen] == 'v') wort[aktuelles_zeichen] = 'w';
     else if(wort[aktuelles_zeichen] == 'w') wort[aktuelles_zeichen] = 'x';
     else if(wort[aktuelles_zeichen] == 'x') wort[aktuelles_zeichen] = 'y';
     else if(wort[aktuelles_zeichen] == 'y') wort[aktuelles_zeichen] = 'z';
     else if(wort[aktuelles_zeichen] == 'z') wort[aktuelles_zeichen] = 'A';
     else if(wort[aktuelles_zeichen] == 'A') wort[aktuelles_zeichen] = 'B';
     else if(wort[aktuelles_zeichen] == 'B') wort[aktuelles_zeichen] = 'C';
     else if(wort[aktuelles_zeichen] == 'C') wort[aktuelles_zeichen] = 'D';
     else if(wort[aktuelles_zeichen] == 'D') wort[aktuelles_zeichen] = 'E';
     else if(wort[aktuelles_zeichen] == 'E') wort[aktuelles_zeichen] = 'F';
     else if(wort[aktuelles_zeichen] == 'F') wort[aktuelles_zeichen] = 'G';
     else if(wort[aktuelles_zeichen] == 'G') wort[aktuelles_zeichen] = 'H';
     else if(wort[aktuelles_zeichen] == 'H') wort[aktuelles_zeichen] = 'I';
     else if(wort[aktuelles_zeichen] == 'I') wort[aktuelles_zeichen] = 'J';
     else if(wort[aktuelles_zeichen] == 'J') wort[aktuelles_zeichen] = 'K';
     else if(wort[aktuelles_zeichen] == 'K') wort[aktuelles_zeichen] = 'L';
     else if(wort[aktuelles_zeichen] == 'L') wort[aktuelles_zeichen] = 'M';
     else if(wort[aktuelles_zeichen] == 'M') wort[aktuelles_zeichen] = 'N';
     else if(wort[aktuelles_zeichen] == 'N') wort[aktuelles_zeichen] = 'O';
     else if(wort[aktuelles_zeichen] == 'O') wort[aktuelles_zeichen] = 'P';
     else if(wort[aktuelles_zeichen] == 'P') wort[aktuelles_zeichen] = 'Q';
     else if(wort[aktuelles_zeichen] == 'Q') wort[aktuelles_zeichen] = 'R';
     else if(wort[aktuelles_zeichen] == 'R') wort[aktuelles_zeichen] = 'S';
     else if(wort[aktuelles_zeichen] == 'S') wort[aktuelles_zeichen] = 'T';
     else if(wort[aktuelles_zeichen] == 'T') wort[aktuelles_zeichen] = 'U';
     else if(wort[aktuelles_zeichen] == 'U') wort[aktuelles_zeichen] = 'V';
     else if(wort[aktuelles_zeichen] == 'V') wort[aktuelles_zeichen] = 'W';
     else if(wort[aktuelles_zeichen] == 'W') wort[aktuelles_zeichen] = 'X';
     else if(wort[aktuelles_zeichen] == 'X') wort[aktuelles_zeichen] = 'Y';
     else if(wort[aktuelles_zeichen] == 'Y') wort[aktuelles_zeichen] = 'Z';
     else if(wort[aktuelles_zeichen] == 'Z') wort[aktuelles_zeichen] = '1';
     else if(wort[aktuelles_zeichen] == '1') wort[aktuelles_zeichen] = '2';
     else if(wort[aktuelles_zeichen] == '2') wort[aktuelles_zeichen] = '3';
     else if(wort[aktuelles_zeichen] == '3') wort[aktuelles_zeichen] = '4';
     else if(wort[aktuelles_zeichen] == '4') wort[aktuelles_zeichen] = '5';
     else if(wort[aktuelles_zeichen] == '5') wort[aktuelles_zeichen] = '6';
     else if(wort[aktuelles_zeichen] == '6') wort[aktuelles_zeichen] = '7';
     else if(wort[aktuelles_zeichen] == '7') wort[aktuelles_zeichen] = '8';
     else if(wort[aktuelles_zeichen] == '8') wort[aktuelles_zeichen] = '9';
     else if(wort[aktuelles_zeichen] == '9') wort[aktuelles_zeichen] = '0';
     else if(wort[aktuelles_zeichen] == '0') wort[aktuelles_zeichen] = ' ';
     else if(wort[aktuelles_zeichen] == ' ') 
       {
          wort[aktuelles_zeichen] = 'a';
          if(aktuelles_zeichen != 0) isz_char(wort, aktuelles_zeichen - 1);
          else return false;
       }
     if(aktuelles_zeichen != 0) return true;
  }
//end


----------

