zoukankan      html  css  js  c++  java
  • 漫谈WebQQ 协议

    阅读目录       

    1,WEBQQ的登陆协议

    2,传说中的心跳包

    3,获得群,好友,

    4实战(盗号-外挂-广告)

     

     

    要说怎么突然研究起WEBQQ,也是比较偶然的机会,因为前一份工作专注于B2C商城的开发,

    经常,自己写点工具,模拟一个HTTP请求来进行秒杀之类的,然后联想到QQ的农场,牧场

    有很多辅助的小工具,自己开始研究WEBQQ,时间大概是2个双休,4天.

     

     

    1,WEBQQ登陆协议

    工具:火狐+firebug

    1, 进入WEBQQ, http://web.qq.com/,

    通过工具分析,可以知道,通过WEB登陆,会首先GET一个请求过去

    http://check.ptlogin2.qq.com/check?uin=236773862&appid=1003903&r=0.14233942252344134,我们只详细分析下这一个请求,看看,这个请求到底携带了什么样的数据

    请求头部这些内容,就是等会,模拟HTTP提交需要的,

    这个GET请求返回ptui_checkVC('0','!W61','x00x00x00x00x9bx8fxdbxab');这样的字符串,其中第一个字符串,’0’代表不需要验证码,’!w61’这个数据,是等会登陆需要的,

    第3个参数没用,

    我输入密码登陆,监控到这样一个请求

    http://ptlogin2.qq.com/login?u=236773862&p=C678AF49F29847C34BA8165EDE59C5A7&verifycode=quhw&webqq_type=10&remember_uin=1&login2qq=1&aid=1003903&u1=http%3A%2F%2Fweb.qq.com%2Floginproxy.html%3Flogin2qq%3D1%26webqq_type%3D10&h=1&ptredirect=0&ptlang=2052&from_ui=1&pttype=1&dumy=&fp=loginerroralert&action=8-38-447467&mibao_css=m_webqq&t=3&g=1

    这个不用多说了,接着用C#进行模拟就行了,其中分清哪些是不变的就行了

    String loginUrl = "http://ptlogin2.qq.com/login?u=" + qq + "&p=" + md5pass + "&verifycode=" + verifyCode + "&webqq_type=10&remember_uin=1&login2qq=0&aid=1003903&u1=http%3A%2F%2Fweb2.qq.com%2Floginproxy.html%3Flogin2qq%3D1%26webqq_type%3D10&h=1&ptredirect=0&ptlang=2052&from_ui=1&pttype=1&dumy=&fp=loginerroralert&action=6-25-303994&mibao_css=m_webqq&t=1&g=1";

    不用多说了吧, md5pass这个是密码加密后的一个参数

    加密的方式,就是QQ号,密码的明文,还有就是验证码,如果没有验证码就是,’!w61’这个参数,至于如何加密的,其实也非常简单,腾讯的加密肯定在客户端加密然后传输的,找到相应的JS文件,然后改写成C#版本就行了,至于第三个参数,就是验证码或者是’!w61’了,

    ptuiCB('0','0','http://web2.qq.com/loginproxy.html?login2qq=1&webqq_type=10','0','登录成功!', 'Zr');

    登陆成功后,返回这样的一个格式,一旦登陆成功,我就可以拿到COOKie

    有了COOKIE,可以取出PTWEBQQ,和Skey,因为接着还会有一个POST包过去

    http://d.web2.qq.com/channel/login2

    其中这个POST请求需要PTWEBQQ,我们构造一下,POST过去

    String postData = String.Format("r=%7B%22status%22%3A%22online%22%2C%22ptwebqq%22%3A%22{0}%22%2C%22passwd_sig%22%3A%22%22%2C%22clientid%22%3A%22{1}%22%2C%22psessionid%22%3Anull%7D&clientid={2}&psessionid=null", this.ptwebqq, this.clientid, this.clientid);

                    String login3 = QQ.getHtml(channelLoginUrl, "post", postData);

    其中clientid是个随机数,自己定义就行了,那么到此,登陆就完成了,我们看一下界面

    1,心跳包

    顾名思义,心跳包,就是维持一个长连接,让WEBQQ保持在线的一种机制,.这个心跳包非常简单

    http://d.web2.qq.com/channel/poll2只需要每隔几秒,或者写一个死循环也可以,,

    这个地址POST

    这样一段数据,就可以了,其中必要的参数,在登陆的时候可以全部拿到,这里值得一说的是,当POST这个数据过去后,服务器会等大概30秒左右的时间,如果30秒,QQ没有收到任何信息,那么它会自动返回,如果有信息会携带信息返回

    实际上,这个心跳包弄清楚后,后面基本就没难度了,自己完全可以写一个简单的QQ,,难道这就是所谓的长连接??

    1,获得群和好友

          获得群和好友,然后模拟HTTP请求,就可以聊天了。。。这里简单的说

    对这个地址POST,然后会返回一个JSON,自己解析吧,后面已经没有技术含量了,体力活了

    1,实战

    我记得腾讯有很多游戏。。。同样的方法,先写个简单的3366外挂,其实很简单,就是一个get请求过去,分数什么的自己写吧,,把外挂上传,其实盗个什么QQ号的,没一点技术含量,,

     

    自己尝试了下,。。。在比如说

    等等吧,盗来的QQ号,有什么用??呵呵,我个人都是拿来上传我的外挂,然后盗更多的号,其实研究WEBQQ或者PCQQ协议的人,都是为了打广告,我至今难于忘记,那个卖铁观音茶的广告,几乎每个人的群里都会有这么一个广告。。,不光是QQ.新浪微博刷粉也可以这样搞,本人精力有限,连写这篇文章,都是赶出来的,有兴趣的同事,可以找我要源码,或者一起研究都可以

    BY gitdnn        

  • 相关阅读:
    centos 7遇到的问题
    Exceptions&Files
    关于Transtion属性收藏
    游戏主循环知识积累
    display:inline、block、inline-block的区别
    Sublime text 3快捷键收藏
    业务逻辑详解随记
    探究Struts2运行机制,知识积累
    将博客搬至CSDN
    url随记
  • 原文地址:https://www.cnblogs.com/xumaojun/p/8529011.html
Copyright © 2011-2022 走看看