Ergebnis 1 bis 8 von 8
  1. #1
    Stanley Jobson
    Registriert seit
    09.12.2006
    Beiträge
    671

    Standard php bot befehle erkennen

    PHP-Code:
    $privmsg strpos($connection['READ_BUFFER'],'PRIVMSG '.$cuser.' :');


    if(
    $privmsg!== false)
    {

    $msg=explode('PRIVMSG '.$cuser.' :',$connection['READ_BUFFER']);

    echo
    "$msg[1]<br>\n\r";


    if(
    $msg[1]=="hiho")
    {
    echo
    "ok<br>\n\r";
    }


    $msg[1] hat inhalt. es wird also richtig getrennt durch explode.
    nur das $msg[1] wird in der unteren schleife irgendwie ignoriert d.h. das "hiho" wird ausgegeben aber in der schleife nicht erkannt das "ok" ausgegeben wird.

    warum?! was mach ich falsch... ich brauche das für einen späteren login wie z.b

    !login 1234





    PHP-Code:
    if($msg[1]=="hiho")
    {
    echo
    "ok<br>\n\r";


  2. #2
    Der mit Anatidaephobie Avatar von blackberry
    Registriert seit
    11.07.2008
    Beiträge
    2.350

    Standard

    Ich würde mal behaupten, dass du explode falsch benutzt...
    Füg doch mal ein print_r($msg); unter dem explode hinzu und schau dir die Ausgabe an

    PS: IF ist _keine_ Schleife

    PDFTT cr3w a.E. — ReiDC0Re, lindor, Sera, berry
    please do feed the trolls crew and elk
    Ehrenwerte Mitglieder im Ruhestand: OpCodez, SFX.
    "Was sich blackberry gerade denkt" — Vorsicht! Frei laufender Wahnsinn!
    Zitat von fuckinghot19: "PS: Blackberry ist auf FH der Trollkönig ^^."
    An dieser Stelle danke ich all meinen Fans und Hatern gleichermaßen ^.^

  3. #3
    Stanley Jobson
    Registriert seit
    09.12.2006
    Beiträge
    671

    Standard

    ok... sorry für die falsche definition. war mir natürlich klar.. aber ich war grad mit dem fehler beschäftigt und bissl genervt durch arbeit usw...


    Code:
    [RECIVE] :echoslider!~echoslide@XXXXXXXXXXXX PRIVMSG localhost170 :test 
     Array (     [0] => :echoslider!~echoslide@XXXXXXXXXXXX      [1] => test  ) test
    also die antwort sieht eigendlich ok aus. deswegen verstehe ichs ja auch nicht... was der fehler sein soll.

  4. #4
    Bad Times Virus
    Registriert seit
    14.03.2009
    Beiträge
    579

    Standard

    probier mal
    Code:
     echo "$msg[1]. <br>\n\r"; 

    ob nich vielleicht nen leerzeichen oder so dahinter ist

  5. #5
    Der mit Anatidaephobie Avatar von blackberry
    Registriert seit
    11.07.2008
    Beiträge
    2.350

    Standard

    Könntest du uns mal den ganzen Code geben, damit wir das auch selber testen können?

    PDFTT cr3w a.E. — ReiDC0Re, lindor, Sera, berry
    please do feed the trolls crew and elk
    Ehrenwerte Mitglieder im Ruhestand: OpCodez, SFX.
    "Was sich blackberry gerade denkt" — Vorsicht! Frei laufender Wahnsinn!
    Zitat von fuckinghot19: "PS: Blackberry ist auf FH der Trollkönig ^^."
    An dieser Stelle danke ich all meinen Fans und Hatern gleichermaßen ^.^

  6. #6
    Stanley Jobson
    Registriert seit
    09.12.2006
    Beiträge
    671

    Standard

    Zitat Zitat von wacked Beitrag anzeigen
    probier mal
    Code:
     echo "$msg[1]. <br>\n\r"; 

    ob nich vielleicht nen leerzeichen oder so dahinter ist

    jo war eins drin. hattest recht. allerdings funktioniert das trotzdem nicht wenn ich in der abfrage das leerzeichen zusätzlich in die überprüfung reinschreibe..

    PHP-Code:
    <?php

    set_time_limit
    (0); 
    error_reporting(E_ALL);

    $randomcodecrypto=rand(1,5);

    switch (
    $randomcodecrypto)
    {
    case 
    1:
    $codecryptokey='69';
        break;
    case 
    2:
    $codecryptokey='474';
        break;
    case 
    3:
    $codecryptokey='31';
        break;
    case 
    4:
    $codecryptokey='843';
        break;
    case 
    5:
    $codecryptokey='221';
        break;
    }

    $authkey='45bb7';

    $server=array('irc.quakenet.org:6667','irc.abjects.net:6667','irc.rizon.net:6667','irc.ashnet.org:6667','irc.abbaddon.net:6667','irc.1st-assylum.org:6667');
    $anzserver=count($server);
    $randomserver=rand(0,($anzserver 1));
    $cserver=$server[$randomserver];

    $channel=array('#croto','#likni','#odabi','#snipliklu');
    $anzchannel=count($channel);
    $randomchannel=rand(0,($anzchannel 1));
    $cchannel=$channel[$randomchannel];

    $randomuser=rand(30,700);
    $cuser=''.$_SERVER['SERVER_NAME'].''.$randomuser.'';

    $port=explode(':',$cserver);
    $cport=$port[1];


    /*
    function connect($cserver,$cport,$cuser,$cchannel)
    {
    */

    echo"$cserver $cchannel $cuser<br>\n\r";

    $connection = array();
    $connection['SOCKET'] = @fsockopen($cserver$cport$errno$errstr2);

    if(
    $connection['SOCKET'])
    {

    SendCommand("PASS NOPASS\n\r");
    SendCommand("NICK $cuser\n\r");
    SendCommand("USER $cuser $cuser $cuser $cuser\n\r");
    while(!
    feof($connection['SOCKET']))
    {
    $connection['READ_BUFFER'] = fgets($connection['SOCKET'], 1024);

    echo 
    "[RECIVE] ".$connection['READ_BUFFER']."<br>\n\r";

    if(
    strpos($connection['READ_BUFFER'], "376"))
    {
    SendCommand("JOIN $cchannel\n\r");
    }

    if(
    substr($connection['READ_BUFFER'], 06) == "PING :")
    {
    SendCommand("PONG :".substr($connection['READ_BUFFER'], 6)."\n\r");
    SendCommand("QUOTE PONG :".substr($connection['READ_BUFFER'], 6)."\n\r");
    }


    //------------------------

    $string=$connection['READ_BUFFER'];
    $privmsg stripos($string,'PRIVMSG '.$cuser.' :');

    if(
    $privmsg)
    {

    $cmd=explode('PRIVMSG '.$cuser.' :',$string);

    echo 
    "$cmd[1].<br>\n\r"

    if(
    $cmd[1]=='\'login 45bb7 ')
    {
    echo
    'command found and correct';
    }

    }

    //------------------------

    flush();
    }
    }



    /*
    }
    */

    function SendCommand ($cmd)
    {
    global 
    $connection;
    @
    fwrite($connection['SOCKET'], $cmdstrlen($cmd));
    echo 
    "[SEND] $cmd <br>";
    }






    function 
    codecrypt($string$key)
    {
    $finalcrypt='';
        for(
    $i 0$i strlen($string); $i++)
        {
            
    $finalcrypt .= chr(ord($string{$i})+$key);
        }

        return 
    $finalcrypt;
    }

    function 
    codedecrypt($string$key)
    {
    $finaldecrypt='';
        for(
    $i 0$i strlen($string); $i++)
        {
            
    $finaldecrypt .= chr(ord($string{$i})-$key);
        }

        return 
    $finaldecrypt;
    }


    ?>

  7. #7
    Der mit Anatidaephobie Avatar von blackberry
    Registriert seit
    11.07.2008
    Beiträge
    2.350

    Standard

    Ok habs!

    Ab Zeile 83 (oder so...)
    PHP-Code:
    $string=trim($connection['READ_BUFFER']); // trim löscht Leerzeichen und andere "Whitespaces" wie \n oder \r am Anfang und am Ende eines Strings

    // Die Bedingung tritt nur ein, wenn du privat mit dem Bot chattest... ich habe das jetzt mal allgemein auf den channel ausgeweitet (privmsg an den Bot sollte immernoch funktionieren)
    // $privmsg = stripos($string,'PRIVMSG '.$cuser.':');

    // finde ich besser... ".*" ist ein Wildcast - besser wäre natürlich alles was der Server sendet direkt zu parsen und dann du vergleichen: ist der Befehl = PRIVMSG, usw. - siehe RFC 1459 für eine IRC Protokoll Spezifikation: http://tools.ietf.org/html/rfc1459
    if(preg_match('|PRIVMSG .* :|'$string))
    {

    // TODO: cmd richtig parsen!! - sollte eigentlich schon vorher geschehen sein

    // auch hier wieder Wildcasts... - NUR PROVISORISCH!!!! ÄNDERN!!!!!
    $cmd=preg_split('|PRIVMSG .* :|'$string, -1);
    // Debug Ausgabe
    print_r($cmd);

    // klappt jetzt
    if($cmd[1]=='!login 45bb7')
    {
    echo
    'command found and correct';

    mfG. BlackBerry

    PS: ein paar Tabs würden dem Sourcecode echt gut tun... ich hab leider nur HTMLValidator Lite zum Highlighten und der macht das nicht sehr schön - echt schwierig herauszufinden welches if in welchem if verzweigt ist.........

    PDFTT cr3w a.E. — ReiDC0Re, lindor, Sera, berry
    please do feed the trolls crew and elk
    Ehrenwerte Mitglieder im Ruhestand: OpCodez, SFX.
    "Was sich blackberry gerade denkt" — Vorsicht! Frei laufender Wahnsinn!
    Zitat von fuckinghot19: "PS: Blackberry ist auf FH der Trollkönig ^^."
    An dieser Stelle danke ich all meinen Fans und Hatern gleichermaßen ^.^

  8. #8
    Stanley Jobson
    Registriert seit
    09.12.2006
    Beiträge
    671

    Standard

    einen sehr großen dank an dich BlackBerry. es funktioniert.

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •