Eine Idee ! - aber umsetzung ?



  • Hallo,
    So ich hab tage lang überlegt was könnte ich programmieren was mein nieveu entspricht .
    Ich überlegte und überlegte und überlegte und JA ich überlegte ...
    Ja da kam mir die Idee .. ein cin bruter !

    Was ist das ?
    Meine Idee steckt dahinter, das man gewisse Angaben bruten kann .
    z.B. bei einem Quiz oder Administratorenbereich u.s.w.

    Wie soll das ganze funktionieren?
    Eigendlich ganz einfach
    Also nehmen wir an ein programm lautet so :

    #include <iostream>
    using namespaces std; 
    
    string pw 
    int main(){
    cout << "Hi , gib das Passwort für das Ultra geheime passwort ein!" << endl; 
    cin >> pw; 
    If (pw=a1b2c3){
    cout << "Willkommen im Ultra geheimein ACP" << endl; 
    }
    return 0;
    }
    

    Auch wenn der code nicht aufregend ist und einiges zu bemängeln hätte, es soll ja nur ein beispiel sein .

    So , dann soll ich ein externes Programm öffnen können wo ich sag :
    geheimespw.exe
    Dann schreibt er : Die eingabe wird gebrutet.
    Oke ..
    So nun soll es aber so sein , nicht wie bei den meisten Bruter.. sie bruten einfach alles .. und wen sie sehen es "geht" dann hören sie auf . Ich will das so .. das p.w. lautet ja : a1b2c3
    So nun brutet der und beginnt .. mit der ERSTEN zeichen .
    Oke er beginnt mit 0-9 so dann sieht er .. oke da ist nix .. dan macht er A - Z

    So dann sieht er :" A .. " oke . das erste zeichen stimmt.. Zum zweiten zeichen übergehen , das (finde ich) ist schneller!

    So, ich hoffe das hat man verstanden , kann man mir da irgendwie helfen ? Ich hab überlegt wie ich das umsetzen soll , aber ich hab echt keine Ahnung.

    Danke El Kassem!



  • El Kassem schrieb:

    So dann sieht er :" A .. " oke . das erste zeichen stimmt..

    Und woran soll "er" das sehen? 🙄

    Das Programm meldet ja nicht "Falsch, aber das erste Zeichen war schon richtig". Wäre auch ziemlich dämlich, wenn es das täte.



  • El Kassem schrieb:

    So ich hab tage lang überlegt was könnte ich programmieren was mein nieveu entspricht .

    Tip: Eine Rechtschreibhilfe.



  • MFK schrieb:

    El Kassem schrieb:

    So dann sieht er :" A .. " oke . das erste zeichen stimmt..

    Und woran soll "er" das sehen? 🙄

    Das Programm meldet ja nicht "Falsch, aber das erste Zeichen war schon richtig". Wäre auch ziemlich dämlich, wenn es das täte.

    Tja aber es gibt solche Bruter..(angeblich) halt.. Keine Ahnung ich hatte noch nie nen Bruter..
    Also geht das etwa nicht ?



  • Das geht nicht. Normalerweise greift man auch nicht direkt einen Login an, sondern hat ein gehashtes Passwort und lässt den Brute Force darüber laufen. Ein Hash ist am Ende immer gleich lang, egal ob du 1 Zeichen hashst oder 200. Daher kann man auch nie sehen ob ein bestimmtes Zeichen im Passwort enhalten ist.
    Und wenn du direkt den Login angfreist, kannst du das richtige Passwort nie sehen. Kein Login ist so bescheuert programmiert (wie MFK schon sagte) das er sagt welches Zeichen richtig ist oder das überhaupt ein Zeichen richtig war. Mir ist auch kein Brute Forcer bekannt der von sich behauptet sowas zu können. Es gibt aber ein Spiel, welches sowas etwa macht und das nennt sich Mastermind. 😉

    Greetz



  • OKe
    Das heißt ich muss es dann bruten ?
    Wie mach ich das ?
    Ich will aber noch immer direkt den Login angreifen !? bzw. die cin abfrage ?



  • Was hast du denn nun vor? Willst du einen Brute-Force sicheren Login programmieren oder willst du ein fremdes Programm knacken?

    (Brute Force läuft darauf hinaus, daß du nacheinander ALLE möglichen Passwörter durchtestest, bis du mit einem ins System kommst - und solange dein Programm clever genug ist, nur mit einem "passt" oder "falsches PW" zu antworten, meint das wirklich ALLE)



  • fremdes ( bzw. mein eigernen ) Programme knacken .
    Ja
    er soll alle möglichkeiten durchtesten ..
    Halt wenns eght auf ne recht schnelle variante ?! :))



  • Brute Force geht niemals schnell (außer du verwendest extrem kleine Passwörter). Und alle Passwörter erzeugen kannst du z.B. rekursiv:

    bool generateandtest(const string& pw,int max_size)
    {
      //überprüfe, ob das Passwort stimmt:
      if(check_pw(pw) == OK) return true;
    
      //zum Schutz gegen Stack-Überlauf:
      if(pw.size()>max_size) return false;
    
      for(char c=0;c<=255;++c)
        if(generateandtest(pw+c)) return true;//nächstlängeres Passwort erzeugen und rekursiver Aufruf
    }
    

    Und jetzt kannst du nur noch darauf hoffen, daß du max_size groß genug gewählt hast - und wenn es schnell gehen soll, daß das Passwort nur aus \0 besteht 😃



  • was geht dann schneller als bruteforce ?



  • die idee ist ziemlich "doof".
    wenn es praktische anwendung haben soll (sprich: du willst programm XY überlisten) vergiss es direkt wieder. da gibt es andere ansätze.
    möchtest du dich generell mit "passwörtern"/verschlüsselung auseinandersetzen lies dir doch erstmal grundlegende themen der kryptographie durch.
    ein guter anfang wäre zB die vigenere-verschlüsselung
    -> EDIT: sorry, falsches copy and paste 😉
    hier der richtige link:
    http://de.wikipedia.org/wiki/Polyalphabetische_Substitution

    wenn du dann mal etwas kontakt mit der materie hattest, werden dir wesentlich bessere konzepte unterkommen als "bruteforcing".



  • Ohne Vorkenntnisse über das Zielsystem: wohl nichts.

    Mit entsprechenden Kenntnissen könntest du Wörterbuch-Angriffe (setzt natürlich voraus, daß ein Passwort mit "Sinn" gewählt wurde) oder Heuristiken (um wahrscheinlichere Passwörter zuerst zu überprüfen) ansetzen. Wenn das Programm das PW wirklich fest als "if(pass=="xyz")..." verdrahtet hat, kannst du auch die EXE ansehen und nach verdächtigen Zeichenfolgen untersuchen.





  • El Kassem schrieb:

    was soll mir der link nützen ? http://www.c-plusplus.net/forum/viewtopic-var-t-is-182245.html ^^

    editiert, siehe oben


Anmelden zum Antworten