Trước hết là 1 class yahoo() trong class yahoo có 2 packet chính là Webpacket (header) và packet w_login() (hàm login) và hàm curl(), find().
Phiên bản YMSG: 102
Server yahoo: webcs122.msg.sp1.yahoo.com
Port: 5050
Nguồn phpbasic.com!
Hàm curl và find mình không cần giải thích, sẽ post trong code full bên dưới. Nguyên tắc hoạt động của hàm curl là dùng lấy cookie khi đăng nhập vào http://login.yahoo.com/config/login?
Hàm find dùng để tìm chuỗi cần thiết ở đây là chuỗi cookie khi login vào yahoo ở trên.
Tiếp theo là các YMSG packet (capture được):
PHP Code:
public function w_packet($PacketData,$ServiceType,$SessionID,$StatusType){
$ProtVer="102";
$PacketData=preg_replace('/À€/', '^$', $PacketData);
$Packet="<Ymsg Command=".chr(34).$ServiceType.chr(34)." Status=".chr(34).$StatusType.chr(34)." Version=".chr(34).$ProtVer.chr(34)." VendorId=".chr(34)."406".chr(34)." SessionId=".chr(34).$SessionID.chr(34).">".$PacketData."</Ymsg>";
$w_packet="Content-Length: ".strlen($Packet).chr(13).chr(10).chr(13).chr(10).$Packet;
return $w_packet;
}
public function w_login($username,$Cookie,$inv=false){
if($inv) $inv="À€244À€3075À€6À€";
else $inv="À€6À€";
$packet="0".$username."2".$username."1".$username.$inv.$Cookie."98us1921878631949";
$login=$this->w_packet($packet, 550, 0,"1515563605");
return $login;
}
}
Vậy là đã đủ các yếu tố để thực hiện đăng nhập vào yahoo rồi, bây giờ mình dùng fsockopen để kết nối với server và gửi packet lên đó rồi xem coi có phản ứng gì hem

đầu tiên gọi cái class:
PHP Code:
$yahoo=new yahoo;
PHP Code:
$login=$yahoo->curl("GET","","http://login.yahoo.com/config/login?.src=my&logout=1&.direct=1&.done=",0,1,0);
$login=$yahoo->curl("GET","","http://login.yahoo.com/config/login?login=w2art&passwd=******",0,1,0);
PHP Code:
$Y="Y=v=".$yahoo->find($login,"Y=v=",";");$T="T=z=".$yahoo->find($login,"T=z=",";");$Encrypt=$Y."; ".$T;
Tiếp đó là tạo kết nối với server:
PHP Code:
$fp=fsockopen('tcp://webcs122.msg.sp1.yahoo.com', 5050, $errno, $errstr, 20);
PHP Code:
fwrite($fp,$yahoo->w_login("w2art",$Encrypt,true));
xem ở trên đầu bài.đấy giờ xem packet trả về như thế nào, nếu trả về là list nick ảo, và list friend thì là login thành công, else thì sai pwd hay user gì gì đó.
Giờ post full code nè:
PHP Code:
<?php
@set_time_limit(0);
class yahoo{
public function curl($method = 'GET',$vars,$url,$fl = 0,$head = 0,$nobody = 0)
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
if ($method == 'POST') {
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $vars);
}
curl_setopt($ch, CURLOPT_USERAGENT,$_SERVER['HTTP_USER_AGENT']);
@curl_setopt($ch, CURLOPT_FOLLOWLOCATION,$fl);
curl_setopt($ch, CURLOPT_HEADER,$head);
curl_setopt($ch, CURLOPT_NOBODY,$nobody);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_COOKIEFILE, $cookie);
curl_setopt($ch, CURLOPT_COOKIEJAR, $cookie);
ob_start();
$result = curl_exec($ch);
curl_close($ch);
ob_end_clean();
return $result;
}
public function find($s,$s1,$s2){
$p1=strpos($s,$s1);
if($p1===FALSE)return $p1;
$p1+=strlen ($s1);
$p2=strpos($s,$s2,$p1+1);
if($p2===FALSE)return $p2;
return substr($s,$p1,$p2-$p1);
}
public function w_packet($PacketData,$ServiceType,$SessionID,$StatusType){
$ProtVer="102";
$PacketData=preg_replace('/À€/', '^$', $PacketData);
$Packet="<Ymsg Command=".chr(34).$ServiceType.chr(34)." Status=".chr(34).$StatusType.chr(34)." Version=".chr(34).$ProtVer.chr(34)." VendorId=".chr(34)."406".chr(34)." SessionId=".chr(34).$SessionID.chr(34).">".$PacketData."</Ymsg>";
$w_packet="Content-Length: ".strlen($Packet).chr(13).chr(10).chr(13).chr(10).$Packet;
return $w_packet;
}
public function w_login($username,$Cookie,$inv=false){
if($inv) $inv="À€244À€3075À€6À€";
else $inv="À€6À€";
$packet="0".$username."2".$username."1".$username.$inv.$Cookie."98us1921878631949";
$login=$this->w_packet($packet, 550, 0,"1515563605");
return $login;
}
public function w_pm($username,$friends,$msg){
$packet="1À€".$username."À€5À€".$friends."À€241À€0À€14À€".$msg."À€";
$pm=$this->w_packet($packet, 6, 0,"1515563605");
return $pm;
}
}
$yahoo=new yahoo;
$user="w2art";
$pwd="******";
$cookie=md5($user.$pwd).'_cookie.txt';
$login=$yahoo->curl("GET","","http://login.yahoo.com/config/login?.src=my&logout=1&.direct=1&.done=",0,1,0);
$login=$yahoo->curl("GET","","http://login.yahoo.com/config/login?login=".$user."&passwd=".$pwd,0,1,0);
sleep(1);
if(strpos($login,"Invalid ID or password")){
$login=$yahoo->curl("GET","","http://login.yahoo.com/config/login?login=".$user."&passwd=".$pwd,0,1,0);
}
$Y="Y=v=".$yahoo->find($login,"Y=v=",";");$T="T=z=".$yahoo->find($login,"T=z=",";");$Encrypt=$Y."; ".$T;
$fp=fsockopen('tcp://webcs122.msg.sp1.yahoo.com', 5050, $errno, $errstr, 20);
fwrite($fp,$yahoo->w_login("w2art",$Encrypt,true));
stream_set_timeout($fp,1);
$b=trim(stream_get_contents($fp));
if(strpos($b,"Command=\"85\"")){
$n=strtolower($yahoo->find($b,"^$216^$","^$275^$"));
$n=split("254",$n);
$n1=substr($n[0],0,-2);
$n2=substr($n[1],2);
$p=$yahoo->find($b,"^$89^$","^$90^$");
echo $n1." ".$n2.";".$p;
exit;
}
?> Nguồn phpbasic.com
| URI Routing < Lùi | Tiếp theo > Viết chương trình download manager đơn giản |
|---|
Tin mới hơn:
- 15/08/2009 21:11 - Website Monitoring PHP
- 24/07/2009 18:28 - ooeLite Web application development framework
- 08/07/2009 08:58 - Hàm XSS Clean chống Cross Site Scripting Hacks
- 06/07/2009 10:48 - Hàm str_replace trong PHP
- 05/07/2009 16:16 - URI Routing
Tin cũ hơn:
- 28/06/2009 21:15 - Viết chương trình download manager đơn giản
- 10/06/2009 16:00 - Lập trình PHP - Đếm số người trực tuyến
- 09/06/2009 23:50 - Chuỗi (xâu) và các hàm xử lý chuỗi trong PHP
- 09/06/2009 16:53 - Hàm PHP: substr_compare
- 08/06/2009 22:24 - Lập trình PHP - Mã hóa file bằng md5
Download Game bóng đá PES8 Việt Nam
Tải game bóng đá FiFa 09
Tải game Dragon ball Z - 7 viên ngọc rồng
Tải Game Bóng Đá Pro Evolution Soccer 6 Việt Nam
Download PES 2011 patch Việt Nam PESVN
Tải Game Bóng Đá FIFA 2009 RIP 1 CD
Download Pro Evolution Soccer 2011
Download Game THE SIMS 3
Tải Game bóng đá PES 2009
Download PES 2011 demo
Thay đổi màn hình đăng nhập Windows 7 bằng tay
Một số hàm hay dùng trong JavaScript
Kiểm soát hoàn toàn trỏ chuột bằng bàn phím với NeatMouse
Choáng với concept của Windows Phone 8
Những đặc điểm ưu việt của Windows Phone
Ứng dụng gọi điện VoIP Viber sắp có mặt trên Windows Phone
Game Diablo 3 sắp có mặt trên Windows Phone Marketplace
37 trang css & xhtml web template miễn phí tuyệt đẹp
Những điều cơ bản cần biết về bàn phím chơi game - Gaming Keyboard
L.A. Noire: The Complete Edition - THETA [Full ISO/Action/2011] [13.37GB]
Download 7554 demo
Download Game PC, cập nhật liên tục (torrent)
PES 2012 ra mắt bản mở rộng đầu tiên vào 11/10
PES2012 - Full version - Ngôn ngữ và bình luận tiếng Anh
PES2012 - Blurry disable làm mịn đồ họa
PES 2011 PATCH 4.1 - TRANSFER UPDATE - RELEASED
Bộ sưu tập free PrestaShop Themes phần 3
Bộ sưu tập theme Prestashop miễn phí phần 2
Top 10 Free PrestaShop Themes
Download Prestashop 1.5
Download PrestaShop 1.4
Bổ sung Memcached vào PrestaShop 1.4
Hướng dẫn tích hợp Ngân Lượng vào PrestaShop
Sửa lỗi invalid carrier or no carrier selected trong PrestaShop
Cài đặt PrestaShop
Thiết kế giao diện PrestaShop Theme
Hướng dẫn cài đặt themes trong PrestaShop
Hướng dẫn cách thêm ngôn ngữ cho PrestaShop
Bộ sưu tập Giao diện Premium PrestaShop Themes chuyên nghiệp
Giới thiệu về website thương mại điện tử 2.0 Prestashop
Hướng dẫn chơi Grand Theft Auto: Vice City phần 1
Nero Burning Rom 9.4.26 Portable - Phần mềm ghi đĩa tốt nhất


