hi, ich schreib immoment nen MD5 cracker, eig. nicht weil ich ihn brauchen oder sonstwas, geht nur darum dass ich wenigstens irgendwas code...
ich hab schon von vielen gelesen dass ihre md5 cracker mit ca 1,2mio hashs/s cracken und meiner macht ca. 8mio/minute was mir um ehrlich zu sein etwas zu langsam is... ich weis nicht wie die anderen cracker die hashs erstellen aber ich hab eine funktion geschrieben die alle kombinationen aus groß/klein buchstaben,zahlen und sonderzeichen berechnet, diese strings wandel ich dann in hashs um... somit ist es zwar langsam aber dafür hab ich komplett alle möglichkeiten durch.
da diese funktion aber sehr groß und ich vermute auch umständlich ist würd ich gern hier mal fragen wie ihr das lösen würdet...

Code:
string ausgabe(int a, int b, int c,int d, int e, int f,int g, int h, int i, int j,int k,int l,int m, valarray<string> &arr)
{
    string passwort;
    if(i==-1)
    {
        passwort=arr[m]+arr[l]+arr[k]+arr[j];
        return passwort;
    }
    else if(h==-1)
    {
       passwort=arr[m]+arr[l]+arr[k]+arr[j]+arr[i];
       return passwort;
    }
    else if(g==-1)
    {
       passwort=arr[m]+arr[l]+arr[k]+arr[j]+arr[i]+arr[h];
       return passwort;
    }
    else if(f==-1)
    {
       passwort=arr[m]+arr[l]+arr[k]+arr[j]+arr[i]+arr[h]+arr[g];
       return passwort;
    }
    else if(e==-1)
    {
       passwort=arr[m]+arr[l]+arr[k]+arr[j]+arr[i]+arr[h]+arr[g]+arr[f];
       return passwort;
    }
    else if(d==-1)
    {
       passwort=arr[m]+arr[l]+arr[k]+arr[j]+arr[i]+arr[h]+arr[g]+arr[f]+arr[e];
       return passwort;
    }
    else if(c==-1)
    {
       passwort=arr[m]+arr[l]+arr[k]+arr[j]+arr[i]+arr[h]+arr[g]+arr[f]+arr[e]+arr[d];
       return passwort;
    }
    else if(b==-1)
    {
       passwort=arr[m]+arr[l]+arr[k]+arr[j]+arr[i]+arr[h]+arr[g]+arr[f]+arr[e]+arr[d]+arr[c];
       return passwort;
    }
    else if(a==-1)
    {
       passwort=arr[m]+arr[l]+arr[k]+arr[j]+arr[i]+arr[h]+arr[g]+arr[f]+arr[e]+arr[d]+arr[c]+arr[b];
       return passwort;
    }
    else
    {
       passwort=arr[m]+arr[l]+arr[k]+arr[j]+arr[i]+arr[h]+arr[g]+arr[f]+arr[e]+arr[d]+arr[c]+arr[b]+arr[a];
       return passwort;
    }
das hier ist die funktion

valarray sieht so aus:
Code:
valar[0]="a";
    valar[1]="b";
    valar[2]="c";
    valar[3]="d";
    valar[4]="e";
    valar[5]="f";
    valar[6]="g";
    valar[7]="h";
    valar[8]="i";
    valar[9]="j";
    valar[10]="k";
    valar[11]="l";
    valar[12]="m";
    valar[13]="n";
    valar[14]="o";
    valar[15]="p";
    valar[16]="q";
    valar[17]="r";
    valar[18]="s";
    valar[19]="t";
    valar[20]="u";
    valar[21]="v";
    valar[22]="w";
    valar[23]="x";
    valar[24]="y";
    valar[25]="z";
    valar[26]="1";
    valar[27]="2";
    valar[28]="3";
    valar[29]="4";
    valar[30]="5";
    valar[31]="6";
    valar[32]="7";
    valar[33]="8";
    valar[34]="9";
    valar[35]="0";
    valar[36]="!";
    valar[37]="<";
    valar[38]="§";
    valar[39]="$";
    valar[40]="%";
    valar[41]="&";
    valar[42]="/";
    valar[43]="(";
    valar[44]=")";
    valar[45]="=";
    valar[46]="?";
    valar[47]="`";
    valar[48]="´";
    valar[49]="@";
    valar[50]="+";
    valar[51]="*";
    valar[52]="~";
    valar[53]="'";
    valar[54]="#";
    valar[55]="-";
    valar[56]="_";
    valar[57]=".";
    valar[58]=":";
    valar[59]=",";
    valar[60]=";";
    valar[61]="{";
    valar[62]="[";
    valar[63]="]";
    valar[64]="}";
    valar[66]="A";
    valar[67]="B";
    valar[68]="C";
    valar[69]="D";
    valar[70]="E";
    valar[71]="F";
    valar[72]="G";
    valar[73]="H";
    valar[74]="I";
    valar[75]="J";
    valar[76]="K";
    valar[77]="L";
    valar[78]="M";
    valar[79]="N";
    valar[80]="O";
    valar[81]="P";
    valar[82]="Q";
    valar[83]="R";
    valar[84]="S";
    valar[85]="T";
    valar[86]="U";
    valar[87]="V";
    valar[88]="W";
    valar[89]="X";
    valar[90]="Y";
    valar[91]="Z";
und so wird die funktion (dummerweise auf gewisse weise) aufgerufen:
Code:
int arr_len = valar.size();

    for(int a = -1;a < arr_len;a++)
    {
        for(int b = -1;b < arr_len;b++)
        {
            for(int c = -1;c < arr_len;c++)
            {
                for(int d = -1;d < arr_len;d++)
                {
                    for(int e = -1;e < arr_len;e++)
                    {
                        for(int f = -1;f < arr_len;f++)
                        {
                            for(int g = -1;g < arr_len;g++)
                            {
                                for(int h = -1;h < arr_len;h++)
                                {
                                   for(int i = -1;i < arr_len;i++)
                                    {
                                        for(int j = 0;j < arr_len;j++)
                                        {
                                            for(int k = 0;k < arr_len;k++)
                                            {
                                                for(int l = 0;l < arr_len;l++)
                                                {
                                                     for(int m = 0;m < arr_len;m++)
                                                    { 

ausgabe(a,b,c,d,e,f,g,h,i,j,k,l,m,valar);
                                                        
                                                      }

                                                    }
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }
das ganze funktioniert echt gut und die trefferquote ist ja auch nicht schlecht, aber ich vermute dass sich das ganze extrem optimieren lässt, ich möchte hier eig. nicht unbedingt code oder sonst was, (falls ihr welchen habt ist er natürlich dennoch erwünscht) sondern reine logische denkanstöße würden mir eig. schon reichen.