Op deze website gebruiken we cookies om content en advertenties te personaliseren, om functies voor social media te bieden en om ons websiteverkeer te analyseren. Ook delen we informatie over uw gebruik van onze site met onze partners voor social media, adverteren en analyse. Deze partners kunnen deze gegevens combineren met andere informatie die u aan ze heeft verstrekt of die ze hebben verzameld op basis van uw gebruik van hun services. Meer informatie.

Akkoord

Vraag & Antwoord

Webprogrammeren & scripting

[PHP] socket verbinding maken met msn messenger

Anoniem
psychonetics
3 antwoorden
  • Hey,

    ik ben bezig om wat meer over sockets te leren in php, en dacht dit te kunnen doen door een script te schrijven wat controleert of ik online ben of een webbased messenger te maken. Maar ik loop al gelijk tegen enkele problemen aan:

    Ten eerste krijg ik een foutmelding 10060: Een verbindingspoging is mislukt omdat de verbonden party niet correct heeft geantwoord na een bepaalde tijd, of de gemaakte verbinding is mislukt omdat de verbonden host niet heeft geantwoord.

    De foutmeldingen die daarna komen hangen ermee samen (denk ik): voor socket_write en socket_read krijg ik error 10057: Een aanvraag om gegevens te verzenden of te ontvangen is niet toegestaan omdat de socket niet is verbonden en omdat (tijdens het verzenden op een datagramsocket via een sendto-aanroep) geen adres is opgegeven.

    Ik gebruik de server baym-cs272.msgr.hotmail.com op port 1863 (als ik netstat uitvoer dan krijg ik dat adres). Andere hosts zoals messenger.hotmail.com of baym-cs118.msgr.hotmail.com werken ook niet. Ik gebruik MSNP8 om te testen (heb eerst MSNP11 geprobeerd).

    De code die ik tot nu toe heb geschreven is:

    <?php
    error_reporting(E_ALL);

    /* Dispatch Server */
    $DS['port'] = "1863";
    $DS['hostname'] = "baym-cs272.msgr.hotmail.com";

    $socket = socket_create(AF_INET, SOCK_STREAM, SOL_TCP);
    //$bind = socket_bind($socket, "207.46.107.72", $DS['port']);
    if ($socket < 0) {
    print '<BR />Kon geen socket creëren: reden: ' . socketstrerror($socket) . '<BR />';
    } else {
    print '<BR />Socket gecreërd<BR />';
    }

    $result = socket_connect($socket, $DS['hostname'], $DS['port']);
    if ($result < 0) {
    print '<BR />Kon geen verbinding maken met <B>' . $DS['hostname'] . '</B><BR />';
    print 'Reden: ' . $errno . ': ' . $errstr /*socketstrerror($result)*/ . '<BR />';
    } else {
    print '<BR />Verbinding gemaakt met <B>' . $DS['hostname'] . '</B><BR />';
    }

    $in = 'VER 1 MSNP8 CVR0
    ';

    print '<BR />Sending message to server…<BR />';
    socket_write($socket, $in, strlen($in));
    print '<BR />Done<BR />';

    print 'Reading response from server…<BR />';
    while ($out = socket_read($socket, 2048)) {
    if($out != 'VER 1 MSNP8 CVR0
    ') {
    print 'Versie informatie komt niet overeen. Afsluiten…<BR />';
    }else{
    continue;
    }
    }
    ?>

    Hoe kan ik nu de verbinding open maken/houden, of met welke server moet ik verbinden? :roll:
    Een ping op het gebruikte adres baym-cs272.msgr.hotmail.com geeft een time-out, net als op eerder geprobeerde adressen.

    Bij voorbaat dank!

  • Niemand? :cry:
  • [code:1:564692f5fc]
    <?PHP


    ##################################################################
    ## ##
    ## THIS IS AN UNFINISHED SCRIPT FOR LEARNING PURPOSES ##
    ## YOU MAY USE AND DISTRIBUTE IT AS LONG AS THIS ##
    ## COMMENT FIELD IS IN IT OR YOU LINK TO SOURCESHOCK.COM ##
    ## ##
    ## the main thing it does is connecting to the msn ##
    ## server and then connect to the password nexus ##
    ## when done all that it gets your msn list and changes ##
    ## your status, the rest is up to you :) ##
    ## ##
    ##################################################################

    $startcomm = 0;

    $username = "username";
    $password = "password";

    function getData() {

    $socket = $GLOBALS["socket"];

    $buffer="";

    while (!feof($socket)) {

    $buffer .= fread($socket,1024);

    if (preg_match("/\r/",$buffer)) {
    break;

    }
    }

    echo "<font color=green><< $buffer</font><br>";

    checkData($buffer);

    }

    function getData2() {

    $socket = $GLOBALS["socket"];

    $buffer="";

    while (!feof($socket)) {

    $buffer .= fread($socket,1024);

    if (preg_match("/

    /",$buffer)) {
    break;
    }
    }

    //$buffer = str_replace("
    ","<br>",$buffer);
    echo "<font color=green><< $buffer</font><br>";

    checkData($buffer);

    }


    function checkData($buffer) {

    if (preg_match("/lc\=(.+?)/Ui",$buffer,$matches)) {

    $GLOBALS["challenge"] = "lc=" . $matches[1];

    }

    if (preg_match("/(XFR 3 NS )([0-9\.\:]+?) (.*) ([0-9\.\:]+?)/is",$buffer,$matches)) {
    $split = explode(":",$matches[2]);
    $GLOBALS["startcomm"] = 1;
    msn_connect($split[0],$split[1]);

    }

    if (preg_match("/tpf\=([a-zA-Z0-9]+?)/Ui",$buffer,$matches)) {

    nexus_connect($matches[1]);
    }

    $split = explode("
    ",$buffer);

    for ($i=0;$i<count($split);$i++) {

    $detail = explode(" ",$split[$i]);

    if ($detail[0] == "LST") {
    //echo "<div OnMouseOver=\"style.cursor='hand';showTooltip('show','$detail[1]-$detail[3]')\" OnMouseMove=\"followTooltip('show')\" OnMouseOut=\"showTooltip('hide')\">" . urldecode($detail[2]) . "</div>";
    }
    }



    //echo $buffer;

    }

    function msn_connect($server,$port) {

    if (IsSet($GLOBALS["socket"])) {
    fclose($GLOBALS["socket"]);
    }

    $GLOBALS["socket"] = fsockopen($server,$port);

    if (!$GLOBALS["socket"]) {
    return "Could not connect";
    } else {
    $GLOBALS["startcomm"]++;

    send_command("VER " . $GLOBALS["startcomm"] . " MSNP8 CVR0",1);
    send_command("CVR " . $GLOBALS["startcomm"] . " 0x0409 win 4.10 i386 MSNMSGR 6.2 MSMSGS " . $GLOBALS["username"] . "@hotmail.com",1);
    send_command("USR " . $GLOBALS["startcomm"] . " TWN I " . $GLOBALS["username"] . "@hotmail.com",1);

    }
    }

    function send_command($command) {

    $GLOBALS["startcomm"]++;

    $socket = $GLOBALS["socket"];

    echo "<font color=blue> >> $command<br>";

    fwrite($socket,$command . "
    ");
    getData();


    }


    function nexus_connect($tpf) {


    echo "<font color=#a5a5a5>";

    $arr[] = "GET
    dr/pprdr.asp HTTP/1.0

    ";

    $curl = curl_init();

    curl_setopt($curl, CURLOPT_URL, "https://nexus.passport.com:443
    dr/pprdr.asp");
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($curl, CURLOPT_VERBOSE, 0);
    curl_setopt($curl, CURLOPT_HEADER,1);
    curl_setopt($curl, CURLOPT_HTTPHEADER, $arr);
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);

    $data = curl_exec($curl);
    curl_close($curl);


    preg_match("/DALogin=(.+?),/",$data,$matches);


    $data = str_replace("
    ","<br>",$data);
    echo $data;

    echo "<br><br>";

    $split = explode("/",$matches[1]);

    $headers[0] = "GET /$split[1] HTTP/1.1
    ";
    $headers[1] = "Authorization: Passport1.4 OrgVerb=GET,OrgURL=http%3A%2F%2Fmessenger%2Emsn%2Ecom,sign-in=" . $GLOBALS["username"] . "%40hotmail.com,pwd=" . $GLOBALS["password"] . ", " . trim($GLOBALS["challenge"]) . "
    ";

    $curl = curl_init();
    curl_setopt($curl, CURLOPT_URL, "https://" . $split[0] . ":443/". $split[1]);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($curl, CURLOPT_VERBOSE, 0);
    curl_setopt($curl,CURLOPT_FOLLOWLOCATION,1);
    curl_setopt($curl, CURLOPT_HTTPHEADER, $headers);
    curl_setopt($curl, CURLOPT_HEADER,1);
    curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);

    $data = curl_exec($curl);

    $data = str_replace("
    ","<br>
    ",$data);
    echo $data;

    curl_close($curl);

    echo "</font>";

    preg_match("/t=(.+?)'/",$data,$matches);

    send_command("USR " . $GLOBALS["startcomm"] . " TWN S t=" . trim($matches[1]) . "",2);

    send_command("CHG " . $GLOBALS["startcomm"] . " HDN",2);
    send_command("SYN " . $GLOBALS["startcomm"] . " 0",2);

    getData2();

    send_command("SYN " . $GLOBALS["startcomm"] . " 1 46 2",2);

    getData2();

    send_command("CHG ". $GLOBALS["startcomm"] . " BSY");

    getData();




    }

    msn_connect("messenger.hotmail.com",1863);
    ?>
    [/code:1:564692f5fc]

    http://www.sourceshock.com/details_snippet.php?id=55

    misschien heb je hier wat aan?













Beantwoord deze vraag

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.