Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » frage zu pbreaker

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
24.12.2004, 20:02 Uhr
morbid



ich hab einen password breaker geschrieben der einen vier stelligen zahlen code knakt leider funktioniert dieser nicht wirklich kann mir einer sagen was dran falsch ist?


C++:

//passwordbreaker

#include <iostream>
#include <string>
#include <conio.h>
#include <morbid_cls.h>                         //cls header
#include <time.h>
#include <math.h>

using namespace std;

/*Prinzip:
           Es werden 4 zufallszahlen generiert die je nach reihenfolge...mal 1000 mal 100 mal 10
           oder mal 1 genommen werden. Diese werden dann zusammengezählt zu einer zahl die dann an
           der stelle der Passwort eingabe eingesetzt wird. Was eigentlich funktionieren müsste
           was es aber nicht tut....
*/


int breaker(int, int);

int main() {
    int pass, kor, d;
    kor=8345;
while(pass!=kor) {
    cout << "\n\tBitte Passwort eingeben: ";                 //passworteingabe
    
    for(pass; pass=!kor; breaker(pass, kor)) {
    }
    d=breaker(pass, kor);
    pass=d;
    cout << d;
    clrscr();                                               //kann man weglassen nur der schönheit halber
}
    cout << "\n\tRichtig drueck was!";
    getch();
    return 0;
}

int breaker(int a, int b) {
     srand(time(NULL));
     int d,e,f,g,h;
     char c[10]={'1','2','3','4','5','6','7','8','9','0'};
     for(a; a!=b; a++) {
            c[0]=rand()%9;                                   //zufallszahlen maximalwert 9
            c[1]=rand()%9;
            c[2]=rand()%9;
            c[3]=rand()%9;
     }
    
     //ifs ganz viele verdamt^^:
     //___________________________________________
    
     //für [0] stelle

     if(c[0] == '0') {
            e=0;
     }
     if(c[0] == '1') {
            e=1000;
     }
     if(c[0] == '2') {
            e=2000;
     }
     if(c[0] == '3') {
            e=3000;
     }
     if(c[0] == '4') {
            e=4000;
     }
     if(c[0] == '5') {
            e=5000;
     }
     if(c[0] == '6') {
            e=6000;
     }
     if(c[0] == '7') {
            e=7000;
     }
     if(c[0] == '8') {
            e=8000;
     }
     if(c[0] == '9') {
            e=9000;
     }
    
     //für [1] stelle
    
     if(c[1] == '0') {
            f=0;
     }
     if(c[1] == '1') {
            f=100;
     }
     if(c[1] == '2') {
            f=200;
     }
     if(c[1] == '3') {
            f=300;
     }
     if(c[1] == '4') {
            f=400;
     }
     if(c[1] == '5') {
            f=500;
     }
     if(c[1] == '6') {
            f=600;
     }
     if(c[1] == '7') {
            f=700;
     }
     if(c[1] == '8') {
            f=800;
     }
     if(c[1] == '9') {
            f=900;
     }
    
     //für [2] stelle
    
      if(c[2] == '0') {
            g=0;
     }
     if(c[2] == '1') {
            g=10;
     }
     if(c[2] == '2') {
            g=20;
     }
     if(c[2] == '3') {
            g=30;
     }
     if(c[2] == '4') {
            g=40;
     }
     if(c[2] == '5') {
            g=50;
     }
     if(c[2] == '6') {
            g=60;
     }
     if(c[2] == '7') {
            g=70;
     }
     if(c[2] == '8') {
            g=80;
     }
     if(c[2] == '9') {
            g=90;
     }
    
     //für [3] stelle
    
      if(c[3] == '0') {
            h=0;
     }
     if(c[3] == '1') {
            h=1;
     }
     if(c[3] == '2') {
            h=2;
     }
     if(c[3] == '3') {
            h=3;
     }
     if(c[3] == '4') {
            h=4;
     }
     if(c[3] == '5') {
            h=5;
     }
     if(c[3] == '6') {
            h=6;
     }
     if(c[3] == '7') {
            h=7;
     }
     if(c[3] == '8') {
            h=8;
     }
     if(c[3] == '9') {
            h=9;
     }
    
     d=e+f+g+h;                    //zusammenzählen der 4 zahlen
    
     return d;                     //damit man eine zahl erhält
}

          



ich bin für vorschläge dankbar

Dieser Post wurde am 24.12.2004 um 20:14 Uhr von morbid editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
24.12.2004, 21:10 Uhr
virtual
Sexiest Bit alive
(Operator)



Zitat von morbid:
ich hab einen password breaker geschrieben der einen vier stelligen zahlen code knakt leider funktioniert dieser nicht wirklich kann mir einer sagen was dran falsch ist?


Keine Ahnung, ich habe das Programm vermutlich nicht verstanden:



Zitat von morbid:


C++:
//passwordbreaker
#include <iostream>
#include <string>
#include <conio.h>
#include <morbid_cls.h>                         //cls header
#include <time.h>
#include <math.h>

using namespace std;

/*Prinzip:
           Es werden 4 zufallszahlen generiert die je nach reihenfolge...mal 1000 mal 100 mal 10
           oder mal 1 genommen werden. Diese werden dann zusammengezählt zu einer zahl die dann an
           der stelle der Passwort eingabe eingesetzt wird. Was eigentlich funktionieren müsste
           was es aber nicht tut....
*/





Anders ausgedrückt: Du willst eine vierstellige Zahl durch Zufall bestimmen und deren Quersumme berechnen. Ich schlage für eine solche Funktion in etwa das hier vor:

C++:
/* Ermittelt eine vierstellige Zufallszahl, also eine Zahl 1000...9999 */
unsigned vierstellige_zufallszahl() {
   return rand()%9000 + 1000;
}

/* Ermittelt die Quersumme einer zahl */
unsigned quersumme(unsigned zahl) {
    unsigned qs = 0;
    while (zahl) {
        qs += zahl%10;
        zahl /= 10;
    }
    return qs;
}


Mit diesen beiden Funktionen kann man nun ca. 90% der breaker Routine von Dir erschlagen...


Zitat von morbid:


C++:
int breaker(int, int);

int main() {
    int pass, kor, d;
    kor=8345;
while(pass!=kor) {
    cout << "\n\tBitte Passwort eingeben: ";                 //passworteingabe
    for(pass; pass=!kor; breaker(pass, kor)) {
    }
    d=breaker(pass, kor);
    pass=d;
    cout << d;
    clrscr();                                               //kann man weglassen nur der schönheit halber
}
   cout << "\n\tRichtig drueck was!";
    getch();
    return 0;
}




I am lost:
kor ist das korrekte Password und du willst, daß jemand ein Password eingibt in pass? - Die Eingabe fehlt. Die while Schleife ist schrott, weil pass nicht initialisiert ist, die for schleife ist falsch angewendet. Wofür brauchst Du dann Zufallszahlen?


Zitat von morbid:


C++:
int breaker(int a, int b) {
     srand(time(NULL));
     int d,e,f,g,h;
     char c[10]={'1','2','3','4','5','6','7','8','9','0'};
     for(a; a!=b; a++) {
            c[0]=rand()%9;                                   //zufallszahlen maximalwert 9
            c[1]=rand()%9;
            c[2]=rand()%9;
            c[3]=rand()%9;
     }




Siehe mein Beispiel vierstellige_zufallszahl. Darüber hinaus:
1. rand()%9 lieft Zufallszahlen zwischen 0 und 8, nicht 9
2. Sprechende Variablennamen verwenden!
3. srand an den Anfang von main ziehen, siehe FAQ.


Zitat von morbid:


C++:
     //ifs ganz viele verdamt^^:
     //___________________________________________
    
     //für [0] stelle

     if(c[0] == '0') {
            e=0;
     }
     if(c[0] == '1') {
            e=1000;
     }
     if(c[0] == '2') {
            e=2000;
     }
     if(c[0] == '3') {
            e=3000;
     }
     if(c[0] == '4') {
            e=4000;
     }
     if(c[0] == '5') {
            e=5000;
     }
     if(c[0] == '6') {
            e=6000;
     }
     if(c[0] == '7') {
            e=7000;
     }
     if(c[0] == '8') {
            e=8000;
     }
     if(c[0] == '9') {
            e=9000;
     }
    
     //für [1] stelle
    
     if(c[1] == '0') {
            f=0;
     }
     if(c[1] == '1') {
            f=100;
     }
     if(c[1] == '2') {
            f=200;
     }
     if(c[1] == '3') {
            f=300;
     }
     if(c[1] == '4') {
            f=400;
     }
     if(c[1] == '5') {
            f=500;
     }
     if(c[1] == '6') {
            f=600;
     }
     if(c[1] == '7') {
            f=700;
     }
     if(c[1] == '8') {
            f=800;
     }
     if(c[1] == '9') {
            f=900;
     }
    
     //für [2] stelle
    
      if(c[2] == '0') {
            g=0;
     }
     if(c[2] == '1') {
            g=10;
     }
     if(c[2] == '2') {
            g=20;
     }
     if(c[2] == '3') {
            g=30;
     }
     if(c[2] == '4') {
            g=40;
     }
     if(c[2] == '5') {
            g=50;
     }
     if(c[2] == '6') {
            g=60;
     }
     if(c[2] == '7') {
            g=70;
     }
     if(c[2] == '8') {
            g=80;
     }
     if(c[2] == '9') {
            g=90;
     }
    
     //für [3] stelle
    
      if(c[3] == '0') {
            h=0;
     }
     if(c[3] == '1') {
            h=1;
     }
     if(c[3] == '2') {
            h=2;
     }
     if(c[3] == '3') {
            h=3;
     }
     if(c[3] == '4') {
            h=4;
     }
     if(c[3] == '5') {
            h=5;
     }
     if(c[3] == '6') {
            h=6;
     }
     if(c[3] == '7') {
            h=7;
     }
     if(c[3] == '8') {
            h=8;
     }
     if(c[3] == '9') {
            h=9;
     }
    
     d=e+f+g+h;                    //zusammenzählen der 4 zahlen
    
     return d;                     //damit man eine zahl erhält
}





Siehe meine funktion quersumme, die das gleiche macht.

Ich habe leider das Programm nicht begriffen, weil breaker etwas macht, was ich zwar begreife, aber main nicht begriffen habe.
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
25.12.2004, 11:35 Uhr
morbid



äähm wie erklär ich das am besten also es ist so:


C++:

int breaker(int, int);

int main() {
    int pass, kor, d;
    kor=8345;
while(pass!=kor) {
    cout << "\n\tBitte Passwort eingeben: ";                 //passworteingabe
    
    for(pass; pass=!kor; breaker(pass, kor)) {
    }
    d=breaker(pass, kor);
    pass=d;
    cout << d;
    clrscr();                                               //kann man weglassen nur der schönheit halber
}
    cout << "\n\tRichtig drueck was!";
    getch();
    return 0;
}




kor ist das korekte passwort es steht auch da:


C++:

kor=8345;




und was die passworteingabe angeht es soll das passwort das in breaker generiert wurde
dort eingegeben werden und zwar solang bist das zufällig generierte passwort genau mit kor übereinstimmt....
das mit der zufälligen vierstelligen zahl ist gut^^ bin ich nicht darauf gekommen^^:


C++:

return rand()%9000 + 1000;




muss ich reinbauen quersumme brauch ich nicht was meine ganzen ifs machen ist simpel gesagt:

ich hab ja ne 4 stellige zahl die aus 4 zahlen zusammengesetzt wird. wenn man die zahlen einfach mit einander adiert dann kriegt man ja ne völlig falsche zahl es soll nur von links nach rechts die erste zahl mal 1000 da sie ja 4 stelle ist die zweite mal 100 3 stelle und die 3 mal 10 ist ja 2 stelle und die erste bleibt.

aber da du mir jetz den tipp mit random gegeben hast müsste es gehen es gibt blos ein prob wenn das passwort kleiner als 1000 ist aber das ist jetz wurscht...

ähhm wenn ich mir das so anseh dann müsste es aber immernoch den eingabe bug geben und zwar will ich das es immerwieder die funktion ablaufen lässt bis das richtige passwort kommt aber es geniert irgenwie immer die selbe zahl.....

puh ahja meine while und for schleife ich weis das da was nicht stimmt ich glaub dir ist der zweck dieses progs nicht ganz kla^^ also was es machen soll ist:

das passwort knaken es soll ne art primitiver password breaker sein... naja vom prinzip her^^

deshalb gibt es für pass auch keine ausgabe da immer ein zufälliges passwort in
int breaker generiert wird und eingentlich eingegeben werden sollte ich will das extern machen also nicht in der main funktion da es sonst nicht den zweck erfüllen würde sagen wir ich will ne hook machen der irgenwelche programme hackt die in einer konsole laufen und ein passwort haben....
und das kann ich schlecht machen indem das program decompiliere und da das zeug reinschreib...


p.s. ich will nix illegales machen also nicht das du jetz was falsches denkst oda so^^

ah mir fällt grad auf es funzt jetz perfekt^^ ist jetz auch viel simpler:


C++:

//passwordbreaker

#include <iostream>
#include <string>
#include <conio.h>
#include <morbid_cls.h>                         //cls header

using namespace std;

int breaker(int, int);
unsigned vierstellige_zufallszahl() {
   return rand()%9000 + 1000;
}

int main() {
    int pass, kor, d;
    kor=8345;
while(pass!=kor) {
    cout << "\n\tBitte Passwort eingeben: ";                 //passworteingabe
    
    d=vierstellige_zufallszahl();
    pass=d;
    cout << d;
    clrscr();                                               //kann man weglassen nur der schönheit halber
}
    cout << "\n\tRichtig drueck was!";
    getch();
    return 0;
}



Dieser Post wurde am 25.12.2004 um 11:52 Uhr von morbid editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
25.12.2004, 22:07 Uhr
virtual
Sexiest Bit alive
(Operator)


Dir ist klar, daß Dein programm absoluter Nonsense ist?

C++:
    cout << "\n\tBitte Passwort eingeben: ";                 //passworteingabe


Anders als Dich der Kommentar vermuten läßt, wird hier nix eingegeben!
Du setzt in der Schleife d auf eine Zufallszahl zwischen 1000-9999, setzt pass dann auf diese Zahl und läßt die Schleife solange durchlaufen, bis irgendwann pass==kor ist. Toll, aber das Prograsmm macht de facto nix außer deben nachweisen, daß 8345 (also kor) entweder softort oder nach einigen (tausend) Schleifendurchläufen gefunden wurde. Im Prinzip testest Du damit, ob der Zufallgenerator auch 8345 erzeugen kann.

Nein, ich habe keine Angst, daß Du was illegales machst. Du bist noch sehr weit entfernt davon...

Frohes Nadelfest.
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
26.12.2004, 11:24 Uhr
morbid



jo^^ ne ich überlege blos grad wegen dem prinzip weist
und dir auch guten rutsch
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


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: