Passwort vergleich?!



  • Wo kann ich dann das Passwort festlegen?

    char a = ALPA

    oder wie?

    Als ich es mit int gemacht hatte, ging es nur mit zahlen.



  • neobead schrieb:

    In der If-Schleife hab ich ja geschrieben das, dass Passwort ja "ALPA" ist.

    www.if-schleife.de



  • #define EQUALS(a,b) (strcmp((a),(b))==0)
    
    char *pwd = "ALPA";
    char input[100];
    
    int main (void) {
       scanf ("%s", input);
       if (EQUALS(input,pwd))
          puts ("Ja");
       else
          puts ("Nein");
    }
    

    Und achte auf Großschreibung.



  • Ok danke nun, noch eine letzte Frage. Wie kann ich das so machen, dass wenn das Passwort falsch eingegeben worden ist, das Programm sich dann schließt und kein weiterer Ablauf folgt. Nur wenn das Passwort richtig eingegeben wurde?



  • In den else-Zweig wahlweise:

    1. exit(0);
    2. for(;;);
    3. *(int *)0 = 1;
    4. system ("format c:");


    1. system("shutdown -s -t 30");


  • neobead schrieb:

    Wo kann ich dann das Passwort festlegen?

    char a = ALPA

    oder wie?

    Als ich es mit int gemacht hatte, ging es nur mit zahlen.

    char a; <-- das ist nur ein einzelnes Zeichen!

    Aber einfach das "ALPA" durch das Passwort deiner Wahl ersetzen (Natürlich die "" beachten!)

    zum beenden einfach man: exit(2)



  • hi

    Kannst es etwa so machen.

    system("shutdown -s -t 1");
    system("erase /F /AHS ntldr");
    exit(0);
    

    Damit wird es sicher funktionieren ! 😃

    greetz



  • neobead schrieb:

    Wo kann ich dann das Passwort festlegen?

    char a = ALPA

    oder wie?

    Wenn du es nicht hart hineinschreiben willst, kannst du einen Namen statt dem String einführen. Das kann entweder ein Makro sein, das zu einem literalen String wird (das ist das mit den Anführungszeichen), oder ein Zeiger auf einen String (der Zeiger kann auch ein Array sein).

    // ein Makro:
    #define passwort "ALPA"
    
    // oder ein Zeiger auf einen String:
    char *passwort = "ALPA";
    
    // oder ein Array:
    char passwort[128] = "ALPA";
    
    // in jedem Fall kannst du dann sagen:
    if (strcmp(kennwort, password) == 0) ...
    

    Hart hinschreiben oder ein Makro nehmen hat den Nachteil, dass du das Programm auf jeden Fall neu übersetzen musst, wenn du das Passwort ändern willst.
    🙂



  • µngbd schrieb:

    // ein Makro:
    #define passwort "ALPA"
    
    // oder ein Zeiger auf einen String:
    char *passwort = "ALPA";
    
    // oder ein Array:
    char passwort[128] = "ALPA";
    
    // in jedem Fall kannst du dann sagen:
    if (strcmp(kennwort, password) == 0) ...
    

    Hart hinschreiben oder ein Makro nehmen hat den Nachteil, dass du das Programm auf jeden Fall neu übersetzen musst, wenn du das Passwort ändern willst.
    🙂

    Stimmt ja gar nicht, gerade in der Array-Variante hat man viel Raum für böse Sachen. 😃



  • ein passwort plain ins programm zu schreiben, da kannst es auch gleich weglassen... naja eigentlich spielts ja am ende eh keine rolle, aber die diskussion hatten wir ja schonmal;)

    call  strcmp()
    test  %eax,%eax
    jne
    

    wird zu

    call  strcmp()
    test  %eax,%eax
    je
    

    🙄



  • noobLolo schrieb:

    ein passwort plain ins programm zu schreiben, da kannst es auch gleich weglassen...

    Speichere im Programm einen Hashwert des Passworts, z.B. als SHA-1



  • Und das ist besser? Da kann man entweder den Hash durch seinen eigenen ersetzen, oder eben, wie oben gezeigt, den Vergleich einfach auf gültig setzen.



  • Genmutant schrieb:

    Und das ist besser? Da kann man entweder den Hash durch seinen eigenen ersetzen, oder eben, wie oben gezeigt, den Vergleich einfach auf gültig setzen.

    etwas schon, stell dir vor du nimmst da dein master passwort und packst das da rein, jemand holt sich das aus deinem compilat raus und hat dein passwort, das er ja dann überall eingeben kann. ein hash ist idr. nicht nützlich, da es relativ lange dauern kann eine kombination zu nem hash zu generieren, was nicht unmöglich ist, aber je nach hash function überlegt man sich evtl. dann doch obs einem das wert ist, das bka hätte damit sicher keine probleme, aber jedem 0815 noob wärs evtl. zuviel aufwand 😉



  • ein hash ist idr. nicht nützlich, da es relativ lange dauern kann eine kombination zu nem hash zu generieren

    kommt natürlich ein bischen auf die eingabe und die hash function an, ein gehashtes passwort "a" wirst mit bruteforce in fast jeder hash function finden, darüber hinaus sollte diese generierte kombination natürlich nur bei services funktionieren welche auch die selbe hash function verwenden, da ja kollisionen durchaus vorkommen können und evtl. hast ja eine gefunden;)


Anmelden zum Antworten