想了会,还是把这篇文章从落伍转了过来。作者落伍如如何。(以下文字引用落伍如如何)
这个程序最早是天下一号在落伍发布的,是资源共享网络小组的作品,前一段时间126.com做了一些变化导致该程序无法使用,而原作者的一直没有更新程序,因此,如如何不揣冒昧,发布一个hack版,这个版本增加了以下功能:
修正连接问题
- 增加多用户支持
- 增加负载均衡
- 提供如如何美化的模版
授之鱼不若授之渔,虽然以往已经有不少教程介绍如何编写小偷程序,但邮箱小偷还是比较特殊,在此我打算做一下简单讲解,以便大家可以方便的使用这个程序。(不好意思,水平比较烂,配个教程估计就会差不多了)。整个小偷程序反复利用的是这个函数:
function conn($host, $predata, $subdata) {
$text = null;
$data=”user-agent: mozilla/5.0 (windows; u; windows nt 5.1; en-us; rv:1.7.7) gecko/20050414 firefox/1.0.4\r\n”;
$data.=”accept: text/xml,application/xml,application/xhtml+xml,text/html;q=0.9
,text/plain;q=0.8,image/png,*/*;q=0.5\r\n”;
$data.=”accept-language: en-us,en;q=0.5\r\naccept-encoding: gzip,deflate\r\naccept-charset: iso-8859-1,utf-8;q=0.7,*;q=0.7\r\n”;
$data.=”keep-alive: 300\r\nconnection: close\r\n”;$alldata = $predata.$data.$subdata;
// print $alldata.”\n”;
$start_time = time();
$fp=@fsockopen($host, 80, $errno, $errstr, 5);
if (!$fp) {
die(”connect timeout.\n”);
} else {
socket_set_blocking($fp, true);
socket_set_timeout($fp, 5);fputs($fp, $alldata);
while (!feof($fp)) {
$text .= fread($fp, 2000);$diff = time() - $start_time;
if ($diff > 24) {
die(”timeout!\n”);
}$status = socket_get_status($fp);
if ($status['timed_out']) {
die(”stream timeout!\n”);
}
}
}
fclose($fp);
return $text;
}
代码不做详细的解释,只要会用这个函数就可以了。以往写小偷一般都是用fopen()函数来打开网页进行字符串操作就可以了,而对于需要登陆的网站就会产生一些问题。因此,学会用conn这个函数对采集那些需要登陆的网站很用处。其实一般的网站也好,论坛也好,邮箱也好,说到底,都离不了http协议,因为http协议本身要求跨平台等诸多特点,所以也就复杂不到哪去,顶多就是些post get什么的。php里的fput()就是基于这个特点设计的,这个时候php就相当于浏览器,如果在加上curl库,估计所有的网站都可以用php来访问,所以不存在偷不了的网站的说法。
我们来看程序的第一部分:
/////// step.1 login ////////////////
$host = “entry.126.com”;
$predata = “post /cgi/login?hid=10010102&language=0&style=11 http/1.1\r\nhost: “.$host.”\r\n”;
$postdata = “domain=126.com&language=0&bcookie=&user=”.$user.”&pass=
“.$password.”&style=11&enter.x=%b5%c7%c2%bc%d3%ca%cf%e4″;
$subdata = “referer: http://www.126.com/\r\ncontent-type: application/x-www-form-urlencoded\r\ncontent-length: “.strlen($postdata).”\r\n\r\ndata found after header end:\r\n\r\n”.$postdata.”\r\n”;$gettext = conn($host, $predata, $subdata);
preg_match(”/location: http:\/\/(.*?)\.mail\.126\.com.*sid=(.*)\r\n/i”, $gettext, $match1);/////////
// array
// (
// [0] => location: http://m151.mail.126.com/cgi/ldapapp?funcid=main&sid=wayamyhpwryambzd
// [1] => m151
// [2] => wayamyhpwryambzd
// )
///////////////////////
有人要问上面的代码是什么意思,我也不好解释,你只要用嗅探软件去嗅探一下登陆信箱的过程就明白了,126这次改版主要也就是这个部分的变化,你找到以前的那个风格登陆,然后对照嗅探到的信息更改就可以了。一个网站,不论是利用cookie还是session来管理,只要你伪造这段信息就可以了。http协议没那么聪明,分不出数据是从哪里过来的。
好了,对小偷部分就解释这么多,下面讲如何使用我hack的程序。
1.如果你不需要多用户,负载均衡之类的功能
用editplus2打开程序删除48到67行,40行,44行,46行,将相应信息写好:
$user = “”; // 126.com mailbox username, exp. peter
$password = “1″; // your password.
$fid = “”; //
上传到服务器即可。
2.如果你需要本程序的功能
你确认有一个mysql数据库,假定你可以用phpmyadmin来管理,建立一个数据库,建一个表,然后建立mail,max,user,password,fid这几个列,你可以参照下面这段代码
create table `mail` (
`id` int(10) not null auto_increment,
`max` varchar(100) not null default ”,
`user` varchar(100) not null default ”,
`password` varchar(100) not null default ”,
`fid` varchar(100) not null default ‘0′,
primary key (`id`),
unique key `user` (`user`)
) type=myisam auto_increment=1 ;
解释一下,user是126的信箱名,password是密码,fid是你存放信件的文件夹的id,max表示user的数目减1。比如插入下面一句:
insert into `mail` values (‘’, ‘1′, ‘miez;mz2′, ‘zh313′, ‘1128410070;1134987011′);
这里放了两个帐号miez和mz2,用分号隔开,密码zh313,两个帐号密码一样(必须),文件夹为1128410070和1134987011,这样的话,你访问时可以轮换访问两个帐号,如果你放的下载文件相同的话,就可以实现负载均衡。如果你申请更多的密码相同的邮箱,只要把帐号用;隔开。
注意,程序的55行也要改
$sql = “select user,max,password,fid from mail where id =’”.$id.”‘ “;
mail改为你建的表名.
有人问id有什么用,这就是为实现多用户准备的。每个id对应一个帐号,在访问是加?id=x
可以访问到相应的帐号。找fid的软件可以用wpe 或 wse,都不错
不明白在下面跟贴吧,程序简陋,有待完善,不过基本上个人用是没问题的。请看演示:
http://www.veryhd.com/download/
程序下载 126_veryhd.rar
本站演示 http://www.bearlet.com/126/
作者网站已经不提供演示,本站下载在经过几次转移和换域名后也中断了。
现在重新提供下载(2008-10-6) http://www.xxlog.com/attach/1/8495138711.rar