<頭>
# ファイル名: fm.php
# 目的: MSN 連絡先リストを取得する
# 著者: http://qartis.com/?qmsn はDruggoによって修正されました
$ユーザー名 = $_POST[ユーザー名];
$password = $_POST[パスワード];
$デバッグ = 0;
$trid = 0;
$proto = "MSNP10";
#ここから始めましょう
echo "通讯协议 $proto
";
echo "开始登录
";
# 今すぐログイン
$sbconn = fsockopen("messenger.hotmail.com",1863) または die("MSN サーバーに接続できません");
フラッシュ();
data_out("VER $trid $proto CVR0");
data_in();
data_out("CVR $trid 0x0409 winnt 5.1 i386 MSNMSGR 8.0.0812 MSMSGS $username");
data_in();
data_out("USR $trid TWN I $username");
$temp = data_in();
if (!stristr($temp,":")){
if (substr($temp,0,3)==601){
#echo "エラー: MSN サーバーは現在利用できません。";
echo "很不幸,MSN のサービス务器また挂了 >.<
";
死ぬ();
} その他 {
echo "接続失敗!
";
fclose($sbconn);
死ぬ();
}
}
@fclose($sbconn);
$temp_array =explode(" ",$temp);
$temp_array =explode(":",$temp_array[3]);
フラッシュ();
$sbconn = fsockopen($temp_array[0],$temp_array[1]) または die("error -_-#");
data_out("VER $trid $proto CVR0");
data_in();
フラッシュ();
data_out("CVR $trid 0x0409 winnt 5.1 i386 MSNMSGR 8.0.0812 MSMSGS $username");
data_in();
data_out("USR $trid TWN I $username");
$temp = data_in();
$temp_array =explode(" ",$temp);
フラッシュ();
$TOKENSTRING = トリム(end($temp_array));
#echo "認証中";
echo "身份验证中……
";
フラッシュ();
$nexus_socket = fsockopen("ssl://nexus.passport.com",443);
fputs($nexus_socket,"GET /rdr/pprdr.asp HTTP/1.0
");
while ($temp != "
"){
$temp = fgets($nexus_socket,1024);
if (substr($temp,0,12)=="パスポートURL"){
$urls = substr($temp,14);
}
}
$temp_array =explode(",",$urls);
$temp = $temp_array[1];
$temp = substr($temp,8);
$temp_array =explode("/",$temp);
@fclose($nexus_socket);
$ssl_conn = fsockopen("ssl://".$temp_array[0],443);
fputs($ssl_conn,"GET /{$temp_array[1]} HTTP/1.1
");
fputs($ssl_conn,"認証: Passport1.4 OrgVerb=GET,OrgURL=http%3A%2F%2Fmessenger%2Emsn%2Ecom,sign-in=".urlencode($username).",pwd=$password,$TOKENSTRING
");
fputs($ssl_conn,"ユーザーエージェント: MSMSGS
");
fputs($ssl_conn,"ホスト: {$temp_array[0]}
");
fputs($ssl_conn,"接続: キープアライブ
");
fputs($ssl_conn,"キャッシュ制御: キャッシュなし
");
$temp = fgets($ssl_conn,512);
if (rtrim($temp) == "HTTP/1.1 302 が見つかりました"){
#echo "リダイレクト";
echo "开始重定方向
";
フラッシュ();
while ($temp != "
"){
$temp = fgets($ssl_conn,256);
if (substr($temp,0,9)=="場所:"){
$temp_array =explode(":",$temp);
$temp_array =explode("/",trim(end($temp_array)));
休憩;
}
}
@fclose($ssl_conn);
$ssl_conn = fsockopen("ssl://".$temp_array[2],443);
fputs($ssl_conn,"GET /{$temp_array[3]} HTTP/1.1
");
fputs($ssl_conn,"認証: Passport1.4 OrgVerb=GET,OrgURL=http%3A%2F%2Fmessenger%2Emsn%2Ecom,sign-in=".urlencode($username).",pwd=$password,$TOKENSTRING
");
fputs($ssl_conn,"ユーザーエージェント: MSMSGS
");
fputs($ssl_conn,"ホスト: {$temp_array[2]}
");
fputs($ssl_conn,"接続: キープアライブ
");
fputs($ssl_conn,"キャッシュ制御: キャッシュなし
");
elseif (rtrim($temp)=="HTTP/1.1 401 権限がありません"){
#echo "無効なcreds";
echo "验证失败!
";
@fclose($ssl_conn);
死ぬ();
} その他 {
if (rtrim($temp) != "HTTP/1.1 200 OK"){
#echo "不明な HTTP ステータス コード: $temp
";
echo "未知状態态码 $temp
";
フラッシュ();
死ぬ();
} その他 {
#echo "set_bar_len30?";
}
}
while ($temp != "
"){
$temp = fgets($ssl_conn,1024);
if (substr($temp,0,19)=="認証情報"){
$auth_info = $temp;
$temp = fgets($ssl_conn,1024);
if (substr($temp,0,14)!="コンテンツの長さ"){
$auth_info.= fgets($ssl_conn,1024);
&