PHP und Zufallszahlen bis 4294967295 (FFFFFFFF)

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • PHP und Zufallszahlen bis 4294967295 (FFFFFFFF)

    Hi!

    Da die interne Funktion getrandmax() nur Zufallszahlen im Integerbereich liefert, würde ich gerne wissen, wie ich Zufallszahlen bis 4294967295 generieren kann?

    Und das ganze auf einem 32 bit Rechner! *g* Beim Umrechnen von Dezimal auf Hex musste ich bei den grösseren Zahlen (ab 7FFFFFFF) auch mit einem Trick arbeiten.

    Wie gehe ich das Problem bei den Zufallszahlen an?

    Liebe Grüsse.

  • #2
    Die Summe aus Zufallszahlen ist immernoch zufällig.

    Kommentar


    • #3
      PHP-Code:
      getrandmax(); // liefert bei mir 32767
      mt_getrandmax(); // liefert bei mir 2147483647 
      Vorschlag:multiplizier die Zufallszahl doch einfach bis sie größer ist als deine 4294967295

      Kommentar


      • #4
        Ok, an das hab ich auch schon gedacht.

        Ich dachte, vielleicht gibt es eine andere elegantere Lösung?

        Kommentar


        • #5
          Wie wäre es hiermit?
          PHP-Code:
          function mt_randOverMax($inc 0)
          {
            if ( 
          $inc 10 )
              return 
          false;

            
          $nmb_one mt_rand(100mt_getrandmax());
            
          $nmb_two mt_rand(110);

            
          $nmb_rtn = (double)($nmb_one*$nmb_two);

            if ( 
          $nmb_rtn 4294967295 )
              return 
          $nmb_rtn;
            else
              return 
          mt_randOverMax(++$inc);
          }

          $nmb mt_randOverMax();
          echo 
          "<br>";
          echo 
          '$nmb'." = '".$nmb."'<br>"
          EDIT:
          Hab gerade gelesen bis 4294967295 und nicht über
          Zuletzt geändert von reallife; 12.01.2006, 19:16.

          Kommentar


          • #6
            Hi!

            Danke allerseits. Habe es auch auf diese Art und Weise implementiert.

            Ich habe zum Spass mal probiert meinen Router zu "brute forcen" *g*

            Die fopen-Fuktion kann in der Minute 1230 Anfragen (http://userwd@IP:Port/file.htm überprüfen und liefert true oder false zurück.

            Leider braucht das bei 8 Hexadezimalen Zeichen (also bei 4294967295 Möglichkeiten) ziemlich lange (6,6 Jahre, wenn das Gerät immer läuft). Und so wie es aussieht, liegt diese Begrenzung am Router, denn wenn man es auf zwei PC's gleichzeitig probiert, halbieren sich die Anfragen jeweils.

            Denke daher, dass es hier mit einem Zufallsgenerator einfacher wäre und dass es schneller zum Ziel führen würde, oder?

            Code:
            <?php
            //Richtung: FF FF FF FF - 00 00 00 00
            
              function dec2hex($dec) { 
                if($dec > 2147483648) { 
                  $result = dechex($dec - 2147483648); 
                  $prefix = dechex($dec / 268435456); 
                  $suffix = substr($result,-7); 
                  $hex = $prefix.str_pad($suffix, 7, "0000000", STR_PAD_LEFT); 
                } else {
                  $hex = dechex($dec); 
                } 
                return($hex); 
              } 
            
              $i=4294967295; (FFFFFFFF) erledigt
            
              while ($i>0) {
                $link=@fopen("http://admin:" . dec2hex($i) . "@IP/file.htm", "r");
                if ($link==true) {
                  $fp=fopen("pwd.log","ab");
                  flock($fp,LOCK_EX);
                  fwrite($fp,dec2hex($i));
                  flock($fp,LOCK_UN);
                  fclose($fp);
                } else {
                  $counter=fopen("last_minus.log","w+");
                  flock($counter,LOCK_EX);
                  fwrite($counter,"letztes PWD: " . dec2hex($i));
                  flock($counter,LOCK_UN);
                  fclose($counter);
                }
                $i=$i-1;
              }
            
            ?>
            Meint ihr, man könnte die Versuche pro Minute noch etwas erhöhen? Die WinZIP oder WinRAR Brute-Forece Programme erledigen ja in der Sekunde 1 Million Möglichkeiten. Oder bremst das ständige Dateischreiben auch den Durchsatz ein?

            Liebe Grüsse.
            Zuletzt geändert von onlineuser; 13.01.2006, 22:22.

            Kommentar


            • #7
              Was wolltest du denn knacken, das Passwort?
              Dann wirds mit Zufall auch nicht schneller gehen, als der Reihe nach. Zumindest theoretisch nicht.
              Bei optimalen Bedingungen und schlecht implementiertem Prüfalgorithmus kannst du evtl. an der Response-Time des Router minimale Differenzen feststellen. Wenn kein Zeichen stimmt, prüft er nur das erste, wenn drei stimmen, dauerts microsekunden länger, weil er erst beim vierten ablehnt. Nur so eine Idee ...

              Hm, jetzt hast du ja noch Code dazugegeben ... und du machst es übers Web-Frontend. Gehts nicht via Telnet oder SNMP?

              Kommentar


              • #8
                Hi!

                Dein Hinweis ist garnicht schlecht. Respekt! Verzögerung bis zum false messen. *g*

                Naja wollte mal testen wie sicher eine HTTP-Authentifikation ist und da hab ich mal meinen Router hergenommen als Versuchsobjekt.

                Wenn man die ersten beiden Zeichen hätte, wäre es eigentlich eh nur mehr ein Klacks, denn dann sinken die Möglichkeiten eh schon rapide.

                PS: Aber ich denke, dass die meisten Router das Passwort mit MD5 oder RC4 (Netgear) encoden und dann sind die Wörter, die als richtig oder falsch analysiert werden gleich lang. Aber ich werde mal die Zeit messen, ob er für alle 8 gleichen Passwörter (ff ff ff ff, ee ee ee ee, usw.) verschiedene Rückgabezeiten hat. Bin gespannt! *g*

                Liebe Grüsse.
                Zuletzt geändert von onlineuser; 13.01.2006, 23:11.

                Kommentar


                • #9
                  Hi!

                  So, habe jetzt mal das Zeitmessen probiert, aber leider sieht es nicht besonders vielversprechend aus.

                  Dauer bei jeweils 10 Zugriffsversuchen

                  0.535598039627 Sekunden F0000000
                  0.533804893494 Sekunden E0000000
                  0.539669275284 Sekunden D0000000
                  0.533605098724 Sekunden C0000000
                  0.533565282822 Sekunden B0000000
                  0.533659934998 Sekunden A0000000
                  0.539676904678 Sekunden 90000000
                  0.533838748932 Sekunden 80000000
                  0.533680438995 Sekunden 70000000
                  0.53965473175 Sekunden 60000000
                  0.533594846725 Sekunden 50000000
                  0.533576250076 Sekunden 40000000
                  0.533667087555 Sekunden 30000000
                  0.539684057236 Sekunden 20000000
                  0.533683300018 Sekunden 10000000
                  0.533816814423 Sekunden 00000000

                  Dauer bei jeweils 100 Zugriffsversuchen

                  4.91619348526 Sekunden F0000000
                  4.94556331635 Sekunden E0000000
                  4.92265605927 Sekunden D0000000
                  4.91734528542 Sekunden C0000000
                  4.9330432415 Sekunden B0000000
                  4.92298865318 Sekunden A0000000
                  4.92311787605 Sekunden 90000000
                  4.91702795029 Sekunden 80000000
                  4.91705346107 Sekunden 70000000
                  4.9110057354 Sekunden 60000000
                  4.9286634922 Sekunden 50000000
                  4.91705846786 Sekunden 40000000
                  4.9529736042 Sekunden 30000000
                  4.9171693325 Sekunden 20000000
                  4.91084694862 Sekunden 10000000
                  4.92902851105 Sekunden 00000000

                  Hast du noch eine andere Idee?

                  Liebe Grüsse.

                  Kommentar


                  • #10
                    Die Zeitdifferenzen wären über Telnet oder SNMP wahrscheinlich aussagekräftiger. Außerdem bergen diese Protokollstacks oft auch echte Lücken.

                    Was für ein Router ist es denn?
                    (Bevor du auf diese Frage antwortest oder gar noch mehr Code postest, sei dir darüber im Klaren, dass dieses Board deine IP mitschneidet und falls der Router dein Gateway ist und Management-Funktionalität ins WAN verfügbar macht, könnten manche auf dumme Ideen kommen.)

                    Kommentar


                    • #11
                      Hi!

                      Ist ein Netgear VoIP TA612V Router.

                      Die Proxy-IP kann ruhig jeder wissen! *gg*

                      Telnet und SNMP unterstützt er leider nicht. Und leider sind die Zeitmessungen überhaupt nicht aussagekräftig, denn man kann keine Häufigkeit feststelen, dass eine gewisse Kombination immer länger braucht.

                      Möchte den Router für ein anderes VoIP Netz nutzen und dafür muss man die Konfiguration in versteckten Seiten im Router ändern.

                      Jetzt ist mir noch eine Idee gekommen:

                      Man könnte zum Beispiel das "Authorization: Basic YWRtaW46ZjZlNWZlN2U= Wort" des richtigen Passwortes mitsniffen, wenn der Support am Gerät rumwerkelt und dann alle 4 Milliarden Zahlen mit diesem Wort vergleichen. Wenn die beiden Wörter zusammenpassen, ist das das Passwort. Dann wäre der Durchsatz bestimmt um einiges höher. Also einen transparenten Proxy zwischen Router und Internet. Weil mit meinen 1200 Versuchen pro Minute wird das nichts.

                      Oder hat noch jemand eine andere Idee?

                      Liebe Grüsse.
                      Zuletzt geändert von onlineuser; 15.01.2006, 10:52.

                      Kommentar


                      • #12
                        Hi!

                        Mit welchem Verschlüsselungsverfahren wird eigentlich das Passwort verschlüsselt, bevor es übertragen wird?

                        Das Wort "password" wird bei der Übertragung ja zu folgendem String encoded "YWRtaW46ZjZlNWZlN2U=".

                        Gibt es dafür in PHP auch eine Funktion?

                        Liebe Grüsse.

                        Kommentar

                        Lädt...
                        X