ToTo: Passwordschutz mit JavaScript?

Hallo!

Meist lese ich hier nur passiv mit, ich bin aber jetzt an einer Sache dran, die mich verblüfft.
Bisher dachte ich immer, es ist nicht möglich mit JavaScript einen effektiven Passwortschutz zu realisieren.
Gestern bin ich jedoch über http://www.geocities.com/~lef/jscript.html "gestolpert", dort gibts ein Script namnes "Password Pro". Es ist mir bisher nicht richtig gelungen, dieses Teil zu "knacken".
Schaut Euch das mal und sagt mir, ob ich zu blöde bin oder ob das wirklich so raffiniert gemacht ist.

Gruß ToTo

  1. Bisher dachte ich immer, es ist nicht möglich mit JavaScript einen effektiven Passwortschutz zu realisieren.
    Gestern bin ich jedoch über http://www.geocities.com/~lef/jscript.html "gestolpert", dort gibts ein Script namnes "Password Pro". Es ist mir bisher nicht richtig gelungen, dieses Teil zu "knacken".

    Das liegt vielleicht daran, daß da nichts zu knacken ist?

    Schaut Euch das mal und sagt mir, ob ich zu blöde bin oder ob das wirklich so raffiniert gemacht ist.

    Vielleicht bin ich ja etwas einfältig, aber der ganze tolle "Passwortschutz" reduziert sich nach 15-sekündiger Betrachtung doch irgendwie auf diese einzelne Zeile:

    location.href=document.lgform.passwd.value+'.html'

    Oder wie es der werte Autor so schön in seiner Anleitung sagt:

    Now what about the name of your secret page ?
      The pages name must be the same with your password !!
      Example : You set for password Ig6rt
      Your hidden page must be named Ig6rt.html

    Na, was'n Ding! ;> Da wird also einfach auf eine Seite weitergeleitet, deren Name der des Passworts ist. Das ganze Drumherum ist nur unnützes Beiwerk, vielleicht um den bösen Hacker zu verwirren, weiterer Untersuchung jedenfalls nicht wert.

    Bleibt die Frage:
    Warum sagt man seinen Benutzern nicht gleich "Deine Seite heißt Ig6rt.html" - ohne Javascript, ohne Extra-Formular, dafür aber sogar  lesezeichenfähig?

    Bleibt die Erkenntnis:
    Mit reinem Javascript sind echte Passwortabfragen nicht möglich.

    Bleibt das ungute Gefühl:
    Ich habe die Genialität dieser Konstruktion irgendwie doch übersehen :)

    Gruß,
      soenk.e

    1. Hallihallo

      Vielleicht bin ich ja etwas einfältig, aber der ganze tolle "Passwortschutz" reduziert sich nach 15-sekündiger Betrachtung doch irgendwie auf diese einzelne Zeile:

      location.href=document.lgform.passwd.value+'.html'

      Prinzipiell schon, aber ...

      Bleibt das ungute Gefühl:
      Ich habe die Genialität dieser Konstruktion irgendwie doch übersehen :)

      ... vorher wird noch überprüft, ob das Passwort auch stimmt :-) Es ist also nicht irgendwie nur eine Weiterleitung ins endlose 404-Nirvana wenn das Passwort falsch ist.

      Bleibt die Frage: Hat sich der Harry von dem Drumherum verwirren lassen ?

      Ciao,

      Harry

      1. Hoi,

        ... vorher wird noch überprüft, ob das Passwort auch stimmt :-) Es
        ist also nicht irgendwie nur eine Weiterleitung ins endlose
        404-Nirvana wenn das Passwort falsch ist.

        Und dadurch wird das PW 'knackbar' ;-)

        Gruesse,
         C'halbe Stunde'K

        1. Holladiri

          Und dadurch wird das PW 'knackbar' ;-)

          Richtig. Trotzdem ist das Ding nicht schlecht gemacht.
          Das blabla am Anfang produziert folgende "Funktionswerte" für f[x], denen mit dem Array base jeweils ein Buchstabe zugeordnet wird:

          0:  23  0
          1:  535  1
          2:  1047 2
          3:  1559 3
          4:  2071 4
          5:  2538 5
          6:  3095 6
          7:  3607 7
          8:  4119 8
          9:  4631 9
          10: 12  A
          11: 21  B
          12: 26  C
          13: 38  D
          14: 53  E
          15: 72  F
          16: 101  G
          17: 139  H
          18: 294  I
          19: 375  J
          20: 584  K
          21: 841  L
          22: 1164 M
          23: 1678 N
          24: 2425 O
          25: 4989 P
          26: 6478 Q
          27: 10076 R
          28: 14494 S
          29: 21785 T
          30: 30621 U
          31: 69677 V
          32: 87452 W
          33: 139356 X
          34: 201113 Y
          35: 278810 Z
          36: 80  a
          37: 83  b
          38: 93  c
          39: 99  d
          40: 113  e
          41: 131  f
          42: 159  g
          43: 194  h
          44: 346  i
          45: 416  j
          46: 619  k
          47: 861  l
          48: 1165 m
          49: 1649 n
          50: 2256 o
          51: 4766 p
          52: 6077 q
          53: 9554 r
          54: 13713 s
          55: 20576 t
          56: 28894 u
          57: 65661 v
          58: 82386 w
          59: 131248 x
          60: 164801 y
          61: 262524 z

          Anschließend wird das Passwort zerlegt und Anhand der einzelnen Werte oben nach der Formel

          Zeichenwert = (Zeichenposition + 1) * (zugeordneter Wert)

          umgerechnet. Die Zeichenwerte werden addiert, am Ende muß der Wert rauskommen, der in der Script-Datei definiert ist:

          login[0]=new id("lef",14817)

          Der erste Teil "lef" ist der Login-Name, der zweite der "Wert" des Passworts. Jetzt gilt es nur noch, rückwärts aus dem Wert auf das Passwort zu schließen ...

          (das muß sein wegen der Zeile location.href=document.lgform.passwd.value+'.html';)

          Doch da hakts bei mir. Gibt's da einen einigermaßen vernünftigen Ansatz oder hilft da nur Bruteforce (natürlich unter Weglassung idiotischer Werte) ?!

          Ciao,

          Harry

          1. ReHolladiri ;)

            Zeichenwert = (Zeichenposition + 1) * (zugeordneter Wert)

            ist Zeichenpostion die Position im Passwort oder die in der Tabelle?

            (das muß sein wegen der Zeile location.href=document.lgform.passwd.value+'.html';)

            Doch da hakts bei mir. Gibt's da einen einigermaßen vernünftigen Ansatz oder hilft da nur Bruteforce (natürlich unter Weglassung idiotischer Werte) ?!

            Naja
            1. kannst du erstmal zuhause deinen Brutforceangriff starten,
            d.h. du brachst nicht jede HTMLdatei auszuprobieren.

            2. erinnerts mich an mathematische Probleme in denen du eine bestimmte
            Anordnung von Muenzen bestimmter Werte (1,2,5,10,50,...) bekommst und
            ausbaldovern sollst, auf wieviele Arten du einen bestimmten Preis zusammenstückeln
            kannst. Das wird Graphentheoretisch gelöst mit bestimmten Suchalgorithmen.

            3. Ich würd persönlich erstmal ne Primzahlzerlegung der Zahlen machen
            und sie in Restklassen einordnen.

            Nach dem Prinzip: wenn die Summe gerade ist kann nur eine gerade Anzahl
            ungerader Zahlen aufaddiert worden sein. Und dieses Prinzip von 2 auf 3,5,7,...
            verallgemeinern. Der in 2. erwähnte Graph wird wohl nach diesen Gesichtspunkten aufgebaut.

            4. Ich bin mir sicher dass diese Funktion nicht eindeutige Werte
            liefert, d.h. mehrere Passwörter ergeben den selben Kontrollwert.
            Ne Art Hashfunktion.

            Tschuess
               Rolf

            1. Holladiwaldfee

              Zeichenwert = (Zeichenposition + 1) * (zugeordneter Wert)

              ist Zeichenpostion die Position im Passwort oder die in der Tabelle?

              War wohl unklar formuliert:

              Zeichewert = ((Position des Zeichens im Passwort gezählt ab 0) + 1) * (dem Zeichen in f[x] durch base zugeordneter Wert)

              Ciao,

              Harry

              1. Holladierdgnom! ;)

                Zeichewert = ((Position des Zeichens im Passwort gezählt ab 0) + 1) * (dem Zeichen in f[x] durch base zugeordneter Wert)

                Hmm also ich bin sicher die passenden Algorithmen findet man in der mathematischen
                Literatur um nicht das Rad neu zu erfinden aber hier nur ein paar Gedanken:

                Ich hab mal überschlagen dass du alleine mit der Information wieviel
                der Kontrollwert mod 2 (d.h. gerade/ungerade) und mod 3 ist die Zahl
                der möglichen Kombinationen drastisch senken kannst.

                Nehmen wir mal an das Passwort hat 3 Buchstaben, bei 60 möglichen Zeichen
                also 60^3=216000 Möglichkeiten, nach der Restklassenanalyse mit 2,3 und 5
                nur noch 7200!

                Aber man kann ja noch mehr Primzahlen  heranziehen, pro Primzahl
                sinkt die Zahl der Kombinationen um 1/p !!! Dabei bin ich noch
                von ner Gleichverteilung ausgegangen, also die Hälfte der Tabellenwerte
                sind ungerade,je 1/3 der Tabellenwerte sind mod3 dann 0,1 oder 2 usw.

                Das kann aber nicht bei jeder Primzahl klappen, deswegen kann man sich
                Primzahlen raussuchen die je nach Tabellenwerten und Kontrollwert,
                ne erfolgreichere Suche erlauben.

                Zusätzlich kann man bei der Suche noch Größenabschätzungen einbeziehen
                und "sprachlich sinnvolle" Passwörter vorziehen.

                Ich würde im Zweifelsfall doch lieber den MD5-Algo
                http://aktuell.de.selfhtml.org/artikel/javascript/md5/index.htm
                für sowas heranziehen, da findet man auch leichter Literatur über
                Sicherheitslücken und Mindestpasswortlänge!

                Tschüss
                  Rolf

                PS: Das die Hashfunktion nicht eindeutig ist sieht man an "01"=23+2*535 und
                "20"=1047+2*23 !

        2. Re »» Hoi,

          Und dadurch wird das PW 'knackbar' ;-)

          Muss aber nicht sein, die Diskussion hatten wir aber schonmal
          http://forum.de.selfhtml.org/archiv/2001/11/1071/#m7030

          Tschau

          Rolf

    2. Na, was'n Ding! ;> Da wird also einfach auf eine Seite weitergeleitet, deren Name der des Passworts ist. Das ganze Drumherum ist nur unnützes Beiwerk, vielleicht um den bösen Hacker zu verwirren, weiterer Untersuchung jedenfalls nicht wert.

      Bleibt die Frage:
      Warum sagt man seinen Benutzern nicht gleich "Deine Seite heißt Ig6rt.html" - ohne Javascript, ohne Extra-Formular, dafür aber sogar  lesezeichenfähig?

      Da hast Du völlig Recht, das habe ich auch gemerkt, mir ging es aber mehr darum, ob es möglich ist, auf die Seite zu gelangen wenn man das Passwort (und damit den Dateinamen) nicht kennt. Und genau das ist mir bisher nicht gelungen...

      Gruß ToTo