Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

ale_suc

Download de contatos Hotmail com PHP

Recommended Posts

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

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

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.