`

网页游戏外挂的设计与编写:QQ摩天大楼【三】(登陆准备-信息发送方式)

    博客分类:
  • C#
阅读更多

     刚刚发现腾讯修改了校友网(朋友网)登陆页面的代码,把登陆窗口的地址藏在js文件中去了,因此上篇文章中讲的部分东西就过时了,但是思路还是这个思路,我还是用别的办法找到了所需的信息,大家按照我的思路好好看看javascript代码,待会我还是会告诉大家如何找到发送的完整URL。

    上一篇文章分析了腾讯校友登陆页面的JavaScript代码,掌握了登陆所需的足够信息,其实信息掌握的并不全,我疏忽了,细心的朋友肯定会问:“现在才知道密码的处理方式,我们是不是还不知道用户名和密码的发送方式?”是的,我们需要向服务器发送一个完整的URL,现在我们不知道URL是怎么组成的,就无法向服务器发送登陆请求。

    下面我们就说如何找到腾讯家的URL。

    第一步还是像上篇文章那样,找到文件comm.js,由于腾讯改了js的代码,所以我还是说一下新的方法好了。

    我们先来到朋友网登陆首页www.pengyou.com,用浏览器查看本页源文件,发现不能像以前那样找到iframe的地址了,本页有关iframe的代码如下:

     <iframe scrolling="no" id="j_loginFrame" name="login_frame"

src="about:blank" width="356" height="138" frameborder="0"

scrolling="no"allowTransparency="true" style="margin-top:30px;">

    iframe的src那里是"about:blank"。

    仔细查看该页的源文件,可以发现如下三行:

    <script type="text/javascript" src="http://qzonestyle.gtimg.cn/campus/js/Mcommontmp.js">\<\/script>\
    <script type="text/javascript" src="http://qzonestyle.gtimg.cn/bailing/js/BMcommon.js">\<\/script>\       <script type="text/javascript" src="http://qzonestyle.gtimg.cn/bailing/js/BMindexLogin.js">\<\/script>

    这三个js文件一定有内容,下载下来看看。

    先看BMindexLogin.js,发现里面有个initLogin()的函数,

function initLogin() {
 var ptlogin_base_domain=DOMAINS.ROOT;
 //qq.com
 
var ptlogin='http://ui.ptlogin2.'+ptlogin_base_domain+'/cgi-bin/login?appid=15004601&qlogin_jumpname=&hide_title_bar=1&s_url=http://'+DOMAINS.MAIN+'/index.php%3fmod%3Dlogin2%26act%3Dqqlogin&self_regurl=http://'+DOMAINS.REG+'/emailreg.html&css=http://'+DOMAINS.MAIN+'/asset/login.css';
 var set_username_label=function () {
  try
  {
   window.frames['login_frame'].document.getElementById('label_uin').innerHTML='Email/QQ帐号:';
   window.frames['login_frame'].document.getElementById('label_pwd').innerHTML='密码:';
  }
  catch(e)
  {
  }
 };
 
var iframe=document.getElementById('j_loginFrame');
 iframe.src=ptlogin;
 if(iframe.attachEvent) {
  iframe.attachEvent("onload",set_username_label);
 }else {
  iframe.onload=set_username_label;
 }
 var query=window.location.search;
 if(query&&query.length>10&&query.indexOf('act=logout')==-1&&query.indexOf('mod=login')==-1) {
  var m=query.match(/\?([^&]{
   10,200
  })/);
  if(m) {
   var ref=unescape(m[1]);
   if(ref.indexOf('ref=')===0) {
    ref=ref.substr(4);
   }
   ref=ref.replace(/\&/gi,'%26');
   document.cookie='ref='+ref+';domain='+DOMAINS.COOKIE_DOMAIN;
  }
 }
 else {
  document.cookie='ref=deleted;domain='+DOMAINS.COOKIE_DOMAIN;
 }
 var frag=window.location.hash;
 if(frag&&frag.indexOf('qqreg=1')!=-1) {
  reg_by_qq();
 }

     红色的字体就是给iframe的src赋值语句,蓝色的字体就是我们要找的iframe的地址了。但仔细一看,这个地址还不能直接复制到地址栏,因为里头有一些DOMAINS.MAIN之类的东西,没事,我们去另两个js文件找,在Mcommontmp.js里,查找DOMAINS,记得区分大小写,因为貌似有很多domains,于是我们找到如下赋值语句:

    window.DOMAINS={
   COOKIE_DOMAIN:'pengyou.qq.com',MAIN:'pengyou.qq.com',HOME:'home.pengyou.qq.com',REG:'reg.pengyou.qq.com',FEED:'feed.pengyou.qq.com',APP:'app.pengyou.qq.com',API:'api.pengyou.qq.com',ROOT:'qq.com',IMGCACHE:'qzonestyle.gtimg.cn',OFFICE:'pengyou.qq.com',SHARE:'share.pengyou.qq.com',PROFILE:'profile.pengyou.qq.com'
  };

     把这些东西替换到我们之前找到的URL中的相应位置,然后就可以复制到IE地址栏,点击回车,就出现了我们上篇文章中找到的登陆窗口,查看本页源文件,找到<script language="javascript" src="http://imgcache.qq.com/ptlogin/ac/v8/js/comm.js?v=1.2.5"></script>,下载这个js文件。

     讲得有点跳跃性,这些都是上篇讲过的东西,所以就没讲得太详细。

     找到ajax_submit,里头有这么一句:

     C.src=E.action+"?"+B;

     一般URL都是xxx+?+参数的格式,因此我们有理由猜测这句就是我们要找的登陆URL。有人会问,里头的E是什么,B又是什么,如果大家仔细看JavaScript文件,就会知道,E就登陆时要提交的表单,B就是登陆时要提交的参数。我们在回到登陆窗口的源文件,不是www.pengyou.com,是我们从js文件中找到的那个,可以在form里看到,action=http://ptlogin2.pengyou.com/login,至于参数,大家就只能在ajax_submit里面根据程序逻辑把参数一个一个的拼起来,没有捷径,除了看我拼好的,我也是一点一点拼的,拼好就是下面这个样子:

 "u=" + 您的QQ号 + "&p=" + 您的密码 + "&verifycode=" + 验证码 + "&aid=15004601&u1=http%3A%2F%2Fxiaoyou.qq.com%2Findex.php%3Fmod%3Dlogin%26adtag%3Dfrom_index&h=1&ptredirect=1&ptlang=2052&from_ui=1&dumy=&fp=loginerroralert"

     这串是我刚刚拼好的,以后腾讯肯定还要改,大家有空自己拼一下吧,实在懒就算了,我这个暂时还能用。

     现在用户名和密码的处理方式和发送方式都知道了,心急的朋友可能会问:“是不是就可以登陆了?”。

     答案是不能,因为还要验证码。我们登陆时,有时需要一个验证码,有时又不需要。对于验证码,有种简单的处理方式,就是每次登陆都要求输入,一定不会有错的,就是用起来麻烦点,如果想做得完美点,就可以像腾讯家一样自动检查一下,检查通过就不需要输入了,这样也可以,就是写程序的时候麻烦一点。

     好我不啰嗦了,下面就说说腾讯家是如何检查是否需要验证码。

     所有都在comm.js里面,有一个ptui_needVC函数,找到这个函数,代码如下:

function ptui_needVC(C,D) {
 if(t_appid==D) {
  if((C.indexOf("@")<0)&&isNaN(C)) {
   C="@"+C
  }
 }var B="";
 if(pt.isHttps) {
  ptui_checkVC("1","");
  return
 }else {
  B="http://ptlogin2."+g_domain+"/check?uin="+C+"&appid="+D+"&r="+Math.random
()
 }var A=document.createElement("script");
 g_imgTime=new Date();
 A.src=B;
 document.body.appendChild(A);
 g_loadcheck=true;
 return
}

       红色的字就是URL了,这个比较直观,不用拼参数了,g_domain可以在登陆窗口的页面源文件中找到,

     var g_domain = "pengyou.com"

     C就是QQ帐号,D也可以在登录窗口的页面源文件中找到,

     var g_appid = 15004601

     Math.random()是JavaScript本身的一个函数,函数功能是取0到1之间的一个随机数。

     把以上内容嵌进去就是检查是否需要验证码的URL了。

 

     如果需要验证码的话,还需要获取验证码的图片,获取方法都可以在comm.js中找到。找到函数loadVC,函数如下:

function loadVC(A) {
 if(isLoadVC==A&&(lastUin==g_uin)) {
  return
 }lastUin=g_uin;
 isLoadVC=A;
 if(A==true) {
  var B=$("imgVerify");
  var F=g_uin;
  if((g_appid==t_appid)&&isNaN(g_uin)&&(g_uin.indexOf("@")<0)) {
   F="@"+g_uin
  }var E="/getimage?aid="+g_appid+"&r="+Math.random()+"&uin="+F;
  if(g_https) {
   E="."+E
  }else {
   E="http://captcha."+g_domain+E+"&vc_type="+vc_type
  }var D=new Date();
  B.src=E;
  $("verifyinput").style.display="";
  $("verifytip").style.display="";
  $("verifyshow").style.display="";
  ptui_notifySize("login");
  try{
   $("p").focus()
  }catch(C) {
  }
 }else {
  $("verifyinput").style.display="none";
  $("verifytip").style.display="none";
  $("verifyshow").style.display="none";
  ptui_notifySize("login");
  try{
   $("p").focus()
  }catch(C) {
  }
 }

  红色的字就是获取的URL了,g_domain前面讲过是pengyou.com,至于vc_type,是由ptui_needVC函数返回的,其实也可以不附加vc_type,整个URL拼起来就像这个样子:"http://captcha.pengyou.com/getimage?aid="+g_appid+"&r="+Math.random()+"&uin="+您的QQ号+"&vc_type="+vc_Type

  g_appid和Math.random()上面都说过是什么,大家找找吧,我每次都说一遍好累啊。

  好了,验证码也知道怎么检查和获取了,至此,JavaScript全部分析完了,上篇也说分析完了,哈哈,不过这次是真的啦,下篇进入实战部分了,是不是好激动的?我会先告诉大家使用一个工具,非常给力的网络抓包工具—Wireshark。    

分享到:
评论
5 楼 abc670454997 2011-11-05  
大哥你不更新了啊!!!!!!!
4 楼 zhou2008gang 2011-10-13  
貌似技术还没说到要点。。。
3 楼 mymelon 2011-07-20  
怎么不继续写了?
2 楼 chinaxhb 2011-01-19  
我以前也做过一个C#写的网页游戏外挂,不过现在游戏关掉了。现在来跟你学习一下。
1 楼 sumee 2011-01-12  
哈哈....终于出新了!!!!顶起

相关推荐

    Toxi / Oxy Pro 便携式气体检测仪参考手册 使用说明书

    Toxi Oxy Pro 便携式气体检测仪参考手册 使用说明书

    科傻模拟网优化操作-教程书

    官方的的说明书资料,部分视频说明在这里: https://www.bilibili.com/video/BV1Fz4y1d7rn/?spm_id_from=333.999.0.0&vd_source=13dc65dbb4ac9127d9af36e7b281220e

    node-v8.14.0-x64.msi

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    2023商业银行数据资产体系白皮书,主要介绍了“三位一体”数据资产体系的构成与工作机制,以及商业银行数据资产体系建设实践

    2023商业银行数据资产体系白皮书 目录 第 1 章 数据资产化与数据要素市场化相辅相成,相互促进 第 2 章 数据资产化是企业数据治理向上演进的必经之路 第 3 章 数据资产体系发展概述 第 4 章 “三位一体”数据资产体系的构思 4.1“三位一体”数据资产体系的构成与工作机制 数据资产管理 数据资产运营 数据资产评价 数据资产体系工作机制 4.2“三位一体”数据资产体系的相互作用关系 4.3“三位一体”数据资产体系的构建 4.4“三位一体”数据资产体系的优势 第 5 章 商业银行数据资产体系建设实践 5.1商业银行开展数据资产体系建设的背景和目标 5.2商业银行数据资产体系建设的工作步骤 5.3上海银行数据资产体系建设实践的主要成果 第 6 章 数据要素流通市场赋能企业数据资产化 6.1全国多层次数据要素市场的建设 6.2上海数据交易所赋能企业数据资产化 6.3数据要素流通交易市场赋能企业数据资产化的展望 第 7 章 未来演进与展望

    基于微信小程序的助农扶贫小程序

    大学生毕业设计、大学生课程设计作业

    车辆销售数据Python爬取并做数据分析,项目源码注解清晰一看就懂.zip

    车辆销售数据Python爬取并做数据分析,项目源码注解清晰一看就懂

    毕业设计:基于SSM的mysql-学生社团管理系统(源码 + 数据库 + 说明文档)

    毕业设计:基于SSM的mysql_学生社团管理系统(源码 + 数据库 + 说明文档) 第2章 主要技术和工具介绍 1 2.1 JSP语言 1 2.2 MySQL数据库 1 2.3 jsp技术 2 2.4ssm简介 3 第3章 系统分析 1 3.1可行性分析 1 3.1.1经济可行性 1 3.1.2技术可行性 1 3.1.3操作可行性 1 3.2需求分析 1 3.3业务流程分析 2 3.4数据流程分析 3 第4章 系统设计 5 4.1系统结构设计 5 4.2功能模块设计 5 4.3数据库设计 6 4.3.1数据库设计概述 6 4.3.1概念设计 6 4.3.2表设计 7 第5章 系统实现 15 5.1基本任务 15 5.2登录模块的实现 15 5.2.1首页实现 15 5.2.2管理员后台登录 16 5.3用户模块的实现 19 5.3.1注册模块及登录的实现 19 5.2.2入团模块的实现 21 5.2.3场地预约模块的实现 22 5.4管理员模块的实现 24 5.4.1系统用户管理模块的实现 24 5.4.2活动公告管理模块的实现 26 5.5社团模块的实现 28 5.5.1活动信息

    大健康零售业务O2O数字化战略规划方案.pptx

    大健康零售业务O2O数字化战略规划方案.pptx

    数据中台项目主要岗位及其职责和任务

    数据中台项目主要岗位及其职责和任务

    node-v8.0.0-linux-armv7l.tar.gz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    流程制造行业数字化智能工厂总体规划建设方案.pptx

    流程制造行业数字化智能工厂总体规划建设方案.pptx

    c语言学生成绩管理系统源码.zip

    c语言学生成绩管理系统源码.zip

    DEV-C++-5.11下载链接

    DEV-C++-5.11下载链接

    电器租赁小程序.zip

    电器租赁小程序.zip

    学生成绩管理系统 数据结构与算法课程设计 C++.zip

    学生成绩管理系统 数据结构与算法课程设计 C++

    知乎小程序算法.zip

    知乎小程序算法.zip

    基于R语言SIR传染病传播的SIR模型,很全,可直接应用仿真模拟.rar

    基于R语言SIR传染病传播的SIR模型,很全,可直接应用仿真模拟.rar

    node-v6.13.0.tar.xz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    node-v10.11.0-darwin-x64.tar.gz

    Node.js,简称Node,是一个开源且跨平台的JavaScript运行时环境,它允许在浏览器外运行JavaScript代码。Node.js于2009年由Ryan Dahl创立,旨在创建高性能的Web服务器和网络应用程序。它基于Google Chrome的V8 JavaScript引擎,可以在Windows、Linux、Unix、Mac OS X等操作系统上运行。 Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node package manager,Node包管理器),社区成员可以共享和复用代码,极大地促进了Node.js生态系统的发展和扩张。 Node.js不仅用于服务器端开发。随着技术的发展,它也被用于构建工具链、开发桌面应用程序、物联网设备等。Node.js能够处理文件系统、操作数据库、处理网络请求等,因此,开发者可以用JavaScript编写全栈应用程序,这一点大大提高了开发效率和便捷性。 在实践中,许多大型企业和组织已经采用Node.js作为其Web应用程序的开发平台,如Netflix、PayPal和Walmart等。它们利用Node.js提高了应用性能,简化了开发流程,并且能更快地响应市场需求。

    项目申报系统(Struts2+Spring+Hibernate+Jsp+Mysql5).zip

    广东工业大学工程管理

Global site tag (gtag.js) - Google Analytics