ale_suc 0 Denunciar post Postado Junho 16, 2008 Olá, estou tentando criar um sistema que entre na conta Hotmail do usuário e baixe todos os contatos do mesmo. Achei o script abaixo, mas ele não funciona (aparece uma janela para fazer o download, e esse arquivo está em branco). Alguem pode dar uma ajuda? abraços!!!! index.php <?php if(isset($_GET['mod']) == 'request'){ //pega dados postados $login = $_POST['txtmail']; $senha = $_POST['txtsenha']; //altera o safe mode ini_set(SAFE_MODE,1); //inclusão da classe include('msnlistgrab.php'); //conexao e request de dados $gm = new msnlistgrab(); $gm->user = $login; $gm->password = $senha; $gm->GetRecords(); //lista resultado foreach ($gm->res as $val){ echo $val .'<BR>'; } //mostra a quantidade de registros echo '<hr/>'.$gm->total.' registros identificados de cadastrados no seu MSN.'; } else{ ?> <html> <body> <form action="<?=$_SERVER['PHP_SELF']?>?mod=request" method="post"> e-mail do msn :<br/> <input type="text" name="txtmail"/><br/> senha do msn :<br/> <input type="password" name="txtsenha"/><br/> <input type="submit" value="envia"/> <input type="reset" value="limpar campos"/> </form> </body></html> <? } ?> msnlistgrab.php <?php /******************************************************************************** ******** * MSN CONTACT LIST GRAB CLASS * * ©2005 Ghulam Mustafa, mustafa.pk@gmail.com, Pakistan * * ver 1.0 (04.02.2005) * ******************************************************************************** ********/ class msnlistgrab { var $user; var $password; 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 "Falha na conexão com o servidor."; } 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,1); $this->send_command("USR " . $this->startcom . " TWN I " . $this->user,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=" . str_replace("@","%40",$this->user) . ",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 ?> Compartilhar este post Link para o post Compartilhar em outros sites
ale_suc 0 Denunciar post Postado Junho 17, 2008 Parece que o problema é no "messenger.hotmail.com". Fiz o teste com o script abaixo e sempre dá erro: <?php $server = 'messenger.hotmail.com'; $port = '1863'; if (@fsockopen($server, $port, $errno, $errstr, 2)) { echo 'Sucesso'; } else { echo 'Erro'; } ?> Tentei no prompt do windows "ping messenger.hotmail.com" e aparece "Esgotado o tempo limite." em todos testes. Alguém pode me ajudar? Existe outro servidor ao invés de "messenger.hotmail.com"? Abraços!!! :mellow: Compartilhar este post Link para o post Compartilhar em outros sites
hinom 5 Denunciar post Postado Junho 18, 2008 testei essa outra classe e está funcionando.. http://flumpcakes.co.uk/files/php/msnp.zip Compartilhar este post Link para o post Compartilhar em outros sites