CreQQ Code-SNEEZRY

写此类插件最难的莫过于协议,腾讯的协议一直很封闭,虽然有人已经通过抓包的方法摸清了Web QQ的协议,但愿意拿出来和大家共享的却不多,能把自己写好的程序拿出来并帮助大家进行分析的更是没有,这也更加激励我把这篇日志写完,当然我最终的目的就是希望那些和曾经的我一样在Google上苦苦寻找答案的人省些力气,不要因为找不到资料而泄气。

那么好了,言归正传,我们现在就开始窥探下CreQQ的秘密吧!请注意,CreQQ是用JavaScript语言编写的,对于JavaScript不是很熟悉的同学看起代码来可能会有些困难,不过我会用尽量详细的语言帮助大家进行分析的。

CreQQ的源码大家可以通过https://clients2.google.com/service/update2/crx?response=redirect&x=id%3Dehgdacjejmbklleccjegbbaklhhoedlh%26uc下载(请不要使用Chrome浏览器,否则您无法得到文件,而会被直接安装)。您会得到一个后缀名为.crx的文件,将crx改为zip,之后解压缩即可得到CreQQ的源码。

其中background.html是我们今天要讲解的问题,其他的文件我们可以不去看。

涉及到WebQQ协议的部分,第一个执行的函数是check()函数。

function check(){
    localStorage.webqqdetails = "正在获取验证码……";
    chkbk();
    chrome.browserAction.setBadgeBackgroundColor({"color":[30,144,255,255]});
    chrome.browserAction.setBadgeText({"text":"..."});
    islogin = 1;
    u = localStorage.webqqu;
    pw = localStorage.webqqp;
    if(u && pw){
        var url = "http://ptlogin2.qq.com/check?appid=1003903&uin="+u+"&r="+Math.random();
        var el = document.createElement("script");
        el.setAttribute('src',url);
        document.body.appendChild(el);
    }
    else{
        u = localStorage.webqqu;
        pw = localStorage.webqqp;
        setTimeout(check, 1000);
    }
}

上面就是check函数的全部源码。此函数的核心功能就是得到u和pw这两个变量后,动态创建一个src为“http://ptlogin2.qq.com/check?appid=1003903&uin=u&r=随机数”这样的一个script标签。通过引用前述的url后,腾讯服务器会返回诸如 ptui_checkVC(’0′,’!6SG’); 的响应,其中第一个参数可能是0也可能是1,如果是0表示不用验证,第二个参数,即!6SG就是验证码,如果第一个参数是1,代表需要进行验证,并且第二个参数是验证码相关信息,这个判断过程我们是通过ptui_checkVC()函数处理的….Continue to read–>

By CreQQ代码详细解析 — SNEEZRYhttp://sneezry.com/

This entry was posted in Computer science and tagged , , , , . Bookmark the permalink.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s