Announcement

Collapse
No announcement yet.

Knobelaufgabe

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Knobelaufgabe

    Guten Morgen,

    ich sitze gerade an einer Knobelaufgabe und benötige , wenn möglich, nur ein Push in die richtige Richtung. Wie sich vermutlich jeder denken kann bin ich absoluter
    Anfänger in JavaScript und Code lesen/verstehen überhaupt.

    Die Webseite ist recht simpel. Ein Textfeld zur Eingabe des Username und ein Textfeld zur Eingabe des Passwort. Dadrunter ein Button zur Bestätigung der Daten (Login-Button).
    Mehr gibt es nicht.

    Der Code sieht wie folgt aus. Ich habe Kommentare eingefügt um MEIN Verständnis (Anfängerwissen) des jeweiligen Codeabschnitt zu beschreiben:

    Code:
    pwd = [0xf8, 0xde, 0xdb, 0xce, 0xd9, 0xf8, 0xce, 0xc8, 0xd9,
              0xce, 0xdf, 0xfb, 0xca, 0xd8, 0xd8, 0xdc, 0x9b, 0xd9, 0xcf];         //ist hier das Password versteckt?
    
    function login() {
      var username = document.getElementById('username').value;
      var password = document.getElementById('password').value;
      if (username === 'admin') {                                                                 //Username müsste admin sein
        if (password.length != pwd.length) {                                                   //wenn Länge password und pwd nicht übereinstimmt dann kein login
          loginFailed();
          return;
        }
        for (var i = 0; i < password.length; i++) {
          if (password.charCodeAt(i) !== (pwd[i]^0xab)) {                                //diesen Abschnitt verstehe ich nicht
            loginFailed();
            return;
          }
        }
        window.location = password+'.html'
      }
      else loginFailed();
    }
    
    function loginFailed() {                                                                        //Funktion beschreibt das Verhalten des LogIn - Button bei falscher Eingabe der Zugangsdaten
      document.getElementById('btnLogin').classList.add('btn-danger');
      document.getElementById('username').classList.add('is-invalid');
      document.getElementById('password').classList.add('is-invalid');
      document.getElementById('spanLoginFailed').style.display = 'block';
      setTimeout(function() {
        document.getElementById('btnLogin').classList.remove('btn-danger');
        document.getElementById('username').classList.remove('is-invalid');
        document.getElementById('password').classList.remove('is-invalid');
        document.getElementById('spanLoginFailed').style.display = 'none';
      }, 1000);
    }
    
    function keydown(e) {                                                                        //ich kann die eingegebenen Zugangsdaten mit Enter bestätigen
      if (e.key === 'Enter') login();
    }
    Eine der Fragen die ich mir stelle ist, ob ich das Passwort über den Quellcode herausbekomme.
    Wie oben schon erwähnt...ich möchte keine fertige Lösung, aber ich denke ich benötige einen Schubs in eine Richtung um weiter zu kommen......


    Danke schon mal im vorraus.


  • #2
    "Eine der Fragen die ich mir stelle ist, ob ich das Passwort über den Quellcode herausbekomme."
    Ja, von versteckt kann nicht die Rede sein. Javascript läuft auf dem Client und somit kann jeder den Code sehen
    Christian

    Comment


    • #3
      Was heißt "Knobelaufgabe"?
      Ist das eine Dir gestellte Aufgabe, also eine Vorgabe?
      Wenn Du das produktiv einsetzen willst, kann ich mich nur meinem Vorredner anschließen, Benutzerdaten, respektive ein PW haben auf Client Seite nichts verloren!
      PHP rocks!
      Eine Initiative der PHP Community

      Comment


      • #4
        Hallo,

        danke schon mal für die Antworten. Es ist eine an mich gestellte Aufgabe. Es ist quasi eine Testaufgabe um die Fähigkeiten im Bereich des Code
        lesen und verstehens herauszufinden.
        Der hier präsentierte Code soll nirgendwo eingesetzt werden.

        Ich denke man könnte das ganze auch als ein Art Capture-the-flag - Aufgabe ansehen.

        Comment


        • #5
          Gute Nachrichten,

          ich konnte die Aufgabe selbstständig lösen.......für mich war es sehr tricky......aber hat Spaß gemacht

          Hinweis:

          Diese Zeile

          Code:
          pwd = [0xf8, 0xde, 0xdb, 0xce, 0xd9, 0xf8, 0xce, 0xc8, 0xd9, 0xce, 0xdf, 0xfb, 0xca, 0xd8, 0xd8, 0xdc, 0x9b, 0xd9, 0xcf];
          und diese Zeilen


          Code:
           if (username === 'admin') {
              if (password.length != pwd.length) {
                loginFailed();
                return;
              }
              for (var i = 0; i < password.length; i++) {
                if (password.charCodeAt(i) !== (pwd[i]^0xab)) {
                  loginFailed();
                  return;
          hängen zusammen.....

          Damit könnte das Thema geschlossen werden.

          Comment


          • #6
            Das Ziel deiner Aufgabe ist mir unklar.
            Du kannst auch schreiben
            passwort="start123";
            Ist genauso gut wie deine Verschlüsselung
            Man kann sich auch hier
            if (password.charCodeAt(i) !== (pwd[i]^0xab))
            einen Breakpoint setzen und sich das Passwort Buchstabe für Buchstabe ansehen
            Christian

            Comment


            • #7
              Naja, so wie ich es verstanden habe, war es eine Übungsaufgabe, rein um Code-Verständnis zu bewerten/schulen.
              Da ist nicht jede Aufgabe gleich sinnvoll oder praktikabel, hängt halt auch am Übungsleiter/Dozent.

              Du hast den Zusammenhang ja jetzt erkannt, Millhouse aber hast Du auch verstanden, was da passiert?
              PHP rocks!
              Eine Initiative der PHP Community

              Comment

              Working...
              X