Vraag & Antwoord

Webprogrammeren & scripting

[PHP] socket verbinding maken met msn messenger

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 [url=http://msnpiki.msnfanatic.com/index.php/MSNP8:Example_Session#Logging_in_-_baym-cs118.msgr.hotmail.com]MSNP8[/url] 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\r\n'; 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\r\n') { 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("/\r\n\r\n/",$buffer)) { break; } } //$buffer = str_replace("\n","<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("\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>"; } } //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 . "\r\n"); getData(); } function nexus_connect($tpf) { echo "<font color=#a5a5a5>"; $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=" . $GLOBALS["username"] . "%40hotmail.com,pwd=" . $GLOBALS["password"] . ", " . trim($GLOBALS["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); 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

Weet jij het antwoord op deze vraag? Registreer of meld je aan met je account

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