Msn contat list grabber problem

PHP programming forum. Ask questions or help people concerning PHP code. Don't understand a function? Need help implementing a class? Don't understand a class? Here is where to ask. Remember to do your homework!

Moderator: General Moderators

Post Reply
casanovar
Forum Newbie
Posts: 2
Joined: Tue May 31, 2005 1:52 am

Msn contat list grabber problem

Post by casanovar »

Hallo PHPers,

Here a script for grabbing a contact list from msn accounts, it still doesn't work, does anyone know what the problem is?

Thank you!


Iemand die mij kan helpen?

Code: Select all

<?php 
error_reporting(E_ALL); 
class msnlistgrab { 
    var $user='ne*****e1'; 
    var $password='5***' ; 
    var $server ='messenger.hotmail.com'; 
    var $port = 1863; 
    var $version = 'MSNMSGR 6.2'; 
    var $buffer; 
    var $socket; 
    var $startcom; 
    var $error=""; 
    function msnlistgrab() { 

    } 
    function GetRecords(){ 
        if ($this->msn_connect($this->server, $this->port)) 
        { 
            return $this->res; 
        } 
        else 
        { 
            return $this->error; 
        } 
    } 

    function getData() { 
        $this->buffer=""; 
        while (!feof($this->socket)) { 
            $this->buffer .= fread($this->socket,1024); 
            if (preg_match("/\r/",$this->buffer)) { 
                break; 
            } 
        } 
        $this->checkData($this->buffer); 
    } 
    function getData2() {; 
    //$container=""; 
    $buffer=""; 
    while (!feof($this->socket)) { 
        if ($this->i>1) { 
            if ($this->i==$this->total) { 
                fclose($this->socket); 
                $this->res; 
                break; 
            } 
        } 
        $buffer = fread($this->socket,8192); 
        $this->check_buffer($buffer); 
    } 
    } 

    function check_buffer($buffer) { 
        if (eregi("^SYN",$buffer)) { 
            list($junk, $junk, $junk, $this->total) = explode(" ", $buffer); 
            //    echo '<h1>Number of Records: '.$this->total.'</h1>'; 
        } 
        $this->grabber($buffer); 
    } 

    function grabber ($buffer) 
    { 
        $g = preg_split("/[\n]+/", $buffer); 
        for ($n=0;$n<count($g);$n++) { 
            if (strstr($g[$n], 'LST')) { 
                $this->i++; 
                //echo $i.','; 
                list($junk, $email) = explode(" ", $g[$n]); 
                $this->res[] = $email; 
            } 
        } 

    } 

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

            $this->challenge = "lc=" . $matches[1]; 

        } 

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

        } 

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

            $this->nexus_connect($matches[1]); 
        } 
        /* 
        $split = explode("\n",$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>"; 
        } 
        } 
        */ 



    } 

    function msn_connect($server, $port) { 

        if (IsSet($this->socket)) { 
            fclose($this->socket); 
        } 

        $this->socket = fsockopen($server,$port);       //stream_set_timeout($GLOBALS["socket"], 20000); 
        if (!$this->socket) { 
            return "Could not connect"; 
        } else { 
            $this->startcom++; 
            $this->send_command("VER " . $this->startcom . " MSNP8 CVR0",1); 
            $this->send_command("CVR " . $this->startcom . " 0x0409 win 4.10 i386 ". $this->version ." MSMSGS " . $this->user . "@hotmail.com",1); 
            $this->send_command("USR " . $this->startcom . " TWN I " . $this->user . "@hotmail.com",1); 

        } 
    } 

    function send_command($command) 
    { 
        $this->startcom++; 
        //      echo "<font color=blue> >> $command<br>"; 
        fwrite($this->socket,$command . "\r\n"); 
        $this->getData(); 


    } 


    function nexus_connect($tpf) 
    { 

        $arr[] = "GET /rdr/pprdr.asp HTTP/1.0\r\n\r\n"; 

        $curl = curl_init(); 
        curl_setopt($curl, CURLOPT_URL, "https://nexus.passport.com:443/rdr/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("\n","<br>",$data); 
        //              echo $data; 

        //echo "<br><br>"; 

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

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

        $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("\n","<br>\n",$data); 
        //              echo $data; 

        curl_close($curl); 

        //echo "</font>"; 

        preg_match("/t=(.+?)'/",$data,$matches); 
        $this->send_command("USR " . $this->startcom . " TWN S t=" . trim($matches[1]) . "",2); 
        $this->send_command("SYN " . $this->startcom . " 0",2); 
        $this->getData2(); 



    } 

} 
//end of the file 
?> 











//// example.php 

<?php error_reporting(E_ALL); 
include('msnlistgrab.php'); 
$gm = new msnlistgrab(); 
$gm->GetRecords(); 
foreach ($gm->res as $val) 
{ 
    echo $val .'<BR>'; 
} 
echo '<hr>'.$gm->total; 
?>
// errors
Warning: fsockopen(): unable to connect to messenger.hotmail.com:1863 in /home/freestyl/public_html/msn/msnlistgrab.php on line 117

Notice: Undefined property: res in /home/freestyl/public_html/msn/msnlistgrab.php on line 19

Warning: Invalid argument supplied for foreach() in /home/freestyl/public_html/msn/example.php on line 5

Notice: Undefined property: total in /home/freestyl/public_html/msn/example.php on line 9
thanks

Ruud

d11wtq | Please use

Code: Select all

tags to post PHP code[/color]
timvw
DevNet Master
Posts: 4897
Joined: Mon Jan 19, 2004 11:11 pm
Location: Leuven, Belgium

Post by timvw »

Warning: fsockopen(): unable to connect to messenger.hotmail.com:1863 in /home/freestyl/public_html/msn/msnlistgrab.php on line 117
Are you sure you are allowed the socket functions?
Warning: Invalid argument supplied for foreach() in /home/freestyl/public_html/msn/example.php on line 5

Notice: Undefined property: total in /home/freestyl/public_html/msn/example.php on line 9
This is the same output that i recieve. My first guess would be that the MSN protocol has changed.
casanovar
Forum Newbie
Posts: 2
Joined: Tue May 31, 2005 1:52 am

Post by casanovar »

How can I see if my host supports sockets? in my phpinfo() is it all allowed so far as I can see.

The script is very actual, I think a month old and you can find it at phpclasses.org.

Anyone who can tell me more about it?
User avatar
neophyte
DevNet Resident
Posts: 1537
Joined: Tue Jan 20, 2004 4:58 pm
Location: Minnesota

Post by neophyte »

If you can find it at phpclasses.org, I would contact the author of the script. There should be contact information on the script's page. He would be able to help you the best. IMHO
Post Reply