昨天晚上,在校内网狗狗应用上用按键精灵刷骨头,每五分钟还要验证一次。我突然想是不是可以直接用程序提交呢。先准备用sniff抓包的,结果装了两次都出错了。后来发现有一个叫HTTPLook的软件。于是直接拿它来看IE的操作,了解到每点击一次飞盘,就会提交一次。其中有一个内容code每次都在变化,而且还是16进制32位的字符。我觉得像MD5密文。我试着提交相同的包,结果发现没有反应,应该有防止重放攻击的可能。我将swf的flash下载下来,然后利用SWFDecompiler对其进行反编译。然后找到了内部的数据结构和相互关系。然后用perl写了个脚本。工作得不错,但是发现骨头上不去,老是失败。到论坛一看。郁闷,原来那个作者调高了失败的概率,得到骨头的平均概率变成了0%!!!也就是说扔100次,可能你的骨头也不会有多大的变化。引起了很多人的不满,这个游戏也就失去了意义。

HTTP外挂的简单实现

      很气人吧。鄙视!!!

      没办法只好去刷老鼠了。捉老鼠是每10分钟可以吹一次号角,也就是撞一次事件。这个比原来的简单多了,不需要交互,只要每10分钟提交一次HTTP报文就可以了。

      好了下面说一下,如何做外挂。对于HTTP的外挂相对而言比较简单,就是要组织报文和提交,主要就是如何组织报文的问题。首先,你要知道IE发送了什么报文,又收到什么报文。很多内容,不是在IE上可以看到的,必须要工具。前面说到,一个工具就是HttpLook。这是一个非常简单的工具,在需要抓包时,点击绿色的开始按钮。然后操作IE。结束之后,点击红色(现在灰色)的结束按钮即可停止。

HTTP外挂的简单实现

     右边的内容就是报文。

     下一步,就是多次提交某一个动作,比较报文的前后异同。有的有Cookie,有的有时间戳等,如果是动态的,那么就需要自己构造实时的内容,当然前提是你了解这些数据的含义和生成的机理。比较文件内容可以用编辑器自带的,也可以用专门的文件比较器Araxis Merge。比如捉老鼠就是很简单的内容,没有动态内容,那么就可以直接重放。而刷骨头就比较复杂,里面有不少参数,还有加密内容,需要正确构造,否则就失败了。

     接着就是写程序。我这里使用了Perl,因为前两天看到一些,所以拿来练手。先看捉老鼠,了解一些HTTP的程序实现。

HTTP外挂的简单实现#!/usr/bin/perl
HTTP外挂的简单实现#catch mouse every 10 minites

HTTP外挂的简单实现

HTTP外挂的简单实现
use LWP;
HTTP外挂的简单实现
HTTP外挂的简单实现
#GET /soundhorn.do HTTP/1.1
HTTP外挂的简单实现#header, copy from HttpLook

HTTP外挂的简单实现
@headers = (
HTTP外挂的简单实现
"Accept"=>"image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/msword, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/x-silverlight, application/xaml+xml, application/vnd.ms-xpsdocument, application/x-ms-xbap, application/x-ms-application, */*",
HTTP外挂的简单实现
"Referer"=>"http://mouse.xiaonei.com/home.do",
HTTP外挂的简单实现
"Accept-Language"=> "en-US",
HTTP外挂的简单实现
"UA-CPU"=> "x86",
HTTP外挂的简单实现
"Accept-Encoding"=>"gzip, deflate",
HTTP外挂的简单实现
"User-Agent"=>"Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30; .NET CLR 3.0.04506.648)",
HTTP外挂的简单实现
"Host"=> "mouse.xiaonei.com",
HTTP外挂的简单实现
"Connection"=> "Keep-Alive",
HTTP外挂的简单实现
"Cookie"=> "[把抓的Cookie内容填在这里即可]",);
HTTP外挂的简单实现
HTTP外挂的简单实现
#Get URL
HTTP外挂的简单实现
$url="http://mouse.xiaonei.com/soundhorn.do";
HTTP外挂的简单实现
HTTP外挂的简单实现
while(1)
HTTP外挂的简单实现{
HTTP外挂的简单实现
#display time
HTTP外挂的简单实现
$tt = localtime(time);
HTTP外挂的简单实现
print $tt,"\n";
HTTP外挂的简单实现
HTTP外挂的简单实现
#Create Agent
HTTP外挂的简单实现
$agent = LWP::UserAgent->new;
HTTP外挂的简单实现
HTTP外挂的简单实现
#Create Request
HTTP外挂的简单实现
$request = HTTP::Request->new(GET=>$url);
HTTP外挂的简单实现
HTTP外挂的简单实现
#Add Headers
HTTP外挂的简单实现
$request->header(@headers);
HTTP外挂的简单实现
HTTP外挂的简单实现
#Request
HTTP外挂的简单实现
$res = $agent->request($request);
HTTP外挂的简单实现
HTTP外挂的简单实现
#Results
HTTP外挂的简单实现
$res->is_success or die "error:", $res->message,"\n";
HTTP外挂的简单实现
#$file = $res->content;
HTTP外挂的简单实现#print $file;
HTTP外挂的简单实现
HTTP外挂的简单实现#wait 10min

HTTP外挂的简单实现
sleep(600);
HTTP外挂的简单实现}
HTTP外挂的简单实现

    上面的代码还是比较容易看懂的,有了这个模板就可以了,要仔细研究的话就去看Perl网络编程(Addison Wesley - Network.Programming.with.Perl.2000)。其他的刷屏,提交等动作,照上面改一改就行了。刷狗骨头就更加复杂了。还是我解析了SWF之后才知道如何处理数据。

HTTP外挂的简单实现#!/usr/bin/perl
HTTP外挂的简单实现#crack dog

HTTP外挂的简单实现
use XML::Simple;
HTTP外挂的简单实现
use Data::Dumper;
HTTP外挂的简单实现
use Time::HiRes qw(gettimeofday);
HTTP外挂的简单实现
use Digest::MD5  qw(md5_hex);
HTTP外挂的简单实现
use LWP;
HTTP外挂的简单实现
HTTP外挂的简单实现
$pid=[PID];
HTTP外挂的简单实现
$actor_Fid=[AID];
HTTP外挂的简单实现
$method="pelt";
HTTP外挂的简单实现
$appurl="http://dog.xiaonei.com/";
HTTP外挂的简单实现
$xmlprourl="pet-profile.do?method=dogXML&";
HTTP外挂的简单实现
HTTP外挂的简单实现
$xmlurl=$appurl.$xmlprourl;
HTTP外挂的简单实现
$xmlurl=$xmlurl."actor%5Fid=".$actor_Fid."&";
HTTP外挂的简单实现
$xmlurl=$xmlurl."pid=".$pid."&";
HTTP外挂的简单实现
HTTP外挂的简单实现(
$seconds, $microseconds= gettimeofday();
HTTP外挂的简单实现
$milliseconds=int($microseconds/1000);
HTTP外挂的简单实现
HTTP外挂的简单实现
#load user info
HTTP外挂的简单实现
$xmlurl=$xmlurl."t=".$seconds.$milliseconds;
HTTP外挂的简单实现
HTTP外挂的简单实现
$agent = LWP::UserAgent->new;
HTTP外挂的简单实现
$request = HTTP::Request->new(GET=>$xmlurl);
HTTP外挂的简单实现
HTTP外挂的简单实现
#context
HTTP外挂的简单实现
@headers = ([HEADER]);
HTTP外挂的简单实现
HTTP外挂的简单实现
$request->header(@headers);
HTTP外挂的简单实现
$res = $agent->request($request);
HTTP外挂的简单实现
$res->is_success or die "error:", $res->message,"\n";
HTTP外挂的简单实现
#print $xmlurl;
HTTP外挂的简单实现
$file = $res->content;
HTTP外挂的简单实现
HTTP外挂的简单实现
$xs1 = XML::Simple->new();
HTTP外挂的简单实现
$doc = $xs1->XMLin($file);
HTTP外挂的简单实现
#print Dumper($doc),"\n";
HTTP外挂的简单实现
$pet = $doc->{'pet_id'}->{'content'};
HTTP外挂的简单实现
$bone = $doc->{'num_bones_available'}->{'content'};
HTTP外挂的简单实现
$key = $doc->{'key'};
HTTP外挂的简单实现
HTTP外挂的简单实现
print "init key:".$key."\tbone=".$bone."\n";
HTTP外挂的简单实现
HTTP外挂的简单实现
$xmlurl = $appurl."pet-profile.do";
HTTP外挂的简单实现
@headers = ([Another Header]);
HTTP外挂的简单实现
HTTP外挂的简单实现
$catch=0;
HTTP外挂的简单实现
$failed=0;
HTTP外挂的简单实现
$maxtime = 1000;
HTTP外挂的简单实现
for($i=0;$i<$maxtime;$i++)
HTTP外挂的简单实现{
HTTP外挂的简单实现  
$code = $key."#".$pet."#".$actor_Fid;
HTTP外挂的简单实现  
$code = md5_hex($code);
HTTP外挂的简单实现  
HTTP外挂的简单实现  
$content="code=".$code."&pid=".$pid."&actor%5Fid=".$actor_Fid."&method=".$method;
HTTP外挂的简单实现  
#print "URL: ".$content."\n";
HTTP外挂的简单实现
  
HTTP外挂的简单实现  
$agent = LWP::UserAgent->new;
HTTP外挂的简单实现  
$request = HTTP::Request->new(POST=>$xmlurl);
HTTP外挂的简单实现  
HTTP外挂的简单实现  
$request->header(@headers);
HTTP外挂的简单实现  
$request->content($content);
HTTP外挂的简单实现  
$res = $agent->request($request);
HTTP外挂的简单实现  
$res->is_success or die "error:", $res->message,"\n";
HTTP外挂的简单实现  
#print $xmlurl;
HTTP外挂的简单实现
  $file = $res->content;
HTTP外挂的简单实现
HTTP外挂的简单实现  
#returns
HTTP外挂的简单实现
  @rst=split(/[\|]/,$file);
HTTP外挂的简单实现  
$key=$rst[1];#new key
HTTP外挂的简单实现
  $goal=$rst[0];#goal
HTTP外挂的简单实现
  $num=$rst[2];#bone numbers
HTTP外挂的简单实现
  
HTTP外挂的简单实现  
if($goal>0)
HTTP外挂的简单实现  {
HTTP外挂的简单实现    
$catch++;
HTTP外挂的简单实现  }
else
HTTP外挂的简单实现  {
HTTP外挂的简单实现    
$failed++;
HTTP外挂的简单实现  }
HTTP外挂的简单实现  
HTTP外挂的简单实现  
print $catch.":".$failed."\tgoal=".$goal."\tbone=".$num."\n";
HTTP外挂的简单实现  
HTTP外挂的简单实现  
#$range = 5;
HTTP外挂的简单实现  #$random_number = 5+int(rand($range));
HTTP外挂的简单实现  #sleep($random_number);

HTTP外挂的简单实现
  sleep(5);#MUST WAIT at least 5 Sec
HTTP外挂的简单实现
}

 

 

相关文章:

  • 2021-06-16
  • 2021-12-23
  • 2022-01-07
  • 2021-12-11
  • 2022-12-23
  • 2022-12-23
  • 2021-10-16
  • 2021-10-30
猜你喜欢
  • 2022-12-23
  • 2021-08-12
  • 2021-10-13
  • 2022-01-13
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案