宝峰科技

 找回密码
 注册

QQ登录

只需一步,快速开始

智能终端设备维修查询系统注册会员邮箱认证须知!
查看: 11332|回复: 40

[页游辅助图文教程] C#网页辅助制作 第二节 登陆密码的加密方法

  [复制链接]
  • TA的每日心情
    开心
    2023-11-30 08:27
  • 签到天数: 120 天

    [LV.7]常住居民III

    admin 发表于 2009-12-18 13:40:46 | 显示全部楼层 |阅读模式

    欢迎您注册加入!这里有您将更精采!

    您需要 登录 才可以下载或查看,没有账号?注册

    x
    讲这节之前先讲讲农场,QQ农场分为QQ校友农场和QQ空间农场,两个农场的农场数据是关联的(共用同一份数据),但两个农场之间的好友是不同的,也就是说在QQ校友农场里看不到QQ空间农场里的好友,同理QQ空间农场的好友列表里也看不到QQ校友农场里的好友。除些之外两个农场的数据都是共用的,也就是说你的QQ空间农场是怎么样的,在QQ校友农场里也是怎么样的,反之亦然。在我这里的文章中,所有数据都是从QQ校友登陆农场抓包而得的数据(有特别说明的除外)。
           再谈谈开发农场辅助的流程,1、分析QQ登陆密码的加密方法得到密文 2、读取QQ服务器上的验证码  3、使用QQ密码密文、QQ号、验证码登陆QQ服务器  4、登陆QQ校友  5、登陆QQ农场并读取自己的农场数据  6、读取好友列表  8、对好友的农场进行操作   好了,就这么多了,有个大整体的印象了吧,下面开始第一步的工作了哦。  
              呵呵,接下来呀,咱来分析QQ密码的加密方法。这节里呢,咱要做的就是把http://xiaoyou.qq.com这张页面保存到本地。这都不会??(就是在IE地址栏上输入http://xiaoyou.qq.com当页面完全打开后,单击IE菜单栏上的  文件->另存为  选择个文件夹保存就行了)。
        好了,页面保存到本地了,咱找到  “ QQ校友.files” 文件夹下的  “login.htm” 这个文件,用记事本打开这个文件。文件代码我就不贴出来了,下面贴出一些要用到的代码哈。
    注意,login.htm文件的代码格式不是规范的, 我们可以把代码复制到http://tool.chinaz.com/Tools/JsFormat.aspx这个网站进行格式化一下,这样看起来就舒服些了,呵呵
    <SCRIPT language=javascript src="login.files/comm.js">
    有这样一句哦,知道什么意思吧,就是表示调用了login.files文件夹下的comm.js这个脚本文件啦
    下面一段是数据的提交方法,在这段代码里可以看到数据提交到哪里去了。
    <FORM id=loginform style="MARGIN: 0px" name=loginform
                    action=http://ptlogin2.qq.com/login
                    method=post target=_self autocomplete="off">
                        <UL>
                            <LI>
                                <SPAN>
                                    <U id=label_uin>
                                    </U>
                                </SPAN>
                                <INPUT class=inputstyle id=u
                                style="IME-MODE: disabled; COLOR: #cccccc"
                                tabIndex=1 name=u>
                                <LABEL>
                                    <A id=label_newreg tabIndex=7 href="http://xiaoyou.qq.com/emailreg.html"
                                    target=_top>
                                    </A>
                                </LABEL>
                                <LI>
                                    <SPAN>
                                        <U id=label_pwd>
                                        </U>
                                    </SPAN>
                                    <INPUT class=inputstyle id=p tabIndex=2 type=password maxLength=16 name=p>
                                    <LABEL>
                                        <A id=label_forget_pwd onclick=onClickForgetPwd() tabIndex=8 href="http://ptlogin2.qq.com/ptui_forgetpwd"
                                        target=_top>
                                        </A>
                                    </LABEL>
                                    <LI>
                                        <SPAN for="code">
                                            <U id=label_vcode>
                                            </U>
                                        </SPAN>
                                        <INPUT class=inputstyle id=verifycode style="IME-MODE: disabled" tabIndex=3
                                        maxLength=4 name=verifycode>
                                        <LI id=verifytip>
                                            <SPAN>
                                                 
                                            </SPAN>
                                            <U id=label_vcode_tip>
                                            </U>
                                            <LI>
                                                <SPAN for="pic">
                                                    
                                                </SPAN>
                                                <SCRIPT type=text/javascript>
                                                    document.write("<img id=imgVerify width='130' height='53'  src='http://ptlogin2.qq.com/getimage?aid=15000102&", Math.random(), "' onload='ptui_setSpeed(3)'>");
                                                </SCRIPT>
                                                <LABEL>
                                                    <A id=changeimg_link tabIndex=6>
                                                    </A>
                                                </LABEL>
                                            </LI>
                        </UL>
                        <DIV class=login_button>
                            <INPUT class=btn id=login_button disabled tabIndex=5 type=submit>
                        </DIV>
                        <DIV class=lineright>
                            <A id=label_switch_qlogin href="javascript:switchPage(false,%20true)">
                            </A>
                        </DIV>
                        <INPUT type=hidden value=15000102 name=aid>
                        <INPUT type=hidden value=http://xiaoyou.qq.com/index.php?mod=login&adtag=from_index
                        name=u1>
                        <INPUT type=hidden name=fp>
                        <INPUT type=hidden value=1 name=h>
                        <INPUT type=hidden value=1 name=ptredirect>
                        <INPUT type=hidden value=0 name=ptlang>
                        <INPUT type=hidden value=1 name=from_ui>
                        <INPUT type=hidden name=dumy>
                    </FORM>
    呵呵,看到红色部份没?数据提交时把数据传到了一个叫ptui_onLoginEx 的函数里进行处理。好,下面我们找到这个函数看到底是怎么处理数据的。
            这个函数在login.htm页面内没有定义,那一定是在comm.js这个文件里了,记事本打开comm.js这个文件,查找下ptui_onLoginEx,呵呵看到了吧。函数找到了。(comm.js的代码格式也是不规范的,也可以把代码复制到上面提到的那个网站上去格式化一下)
    function ptui_onLoginEx(B, C) {
        if (ptui_onLogin(B)) {
            var A = new Date();
            A.setHours(A.getHours() + 24 * 30);
            setCookie("ptui_loginuin", B.u.value, A, "/", "ui.ptlogin2." + C);
            return true
        }
        return false
    }
              在这里可以看到又调用了ptui_onLogin 这个函数,嘿嘿,一直追踪下去吧,接下来查找一下ptui_onLogin 这个函数,老规矩搜索一下很快就可以找到这个函数,代码如下:
    function ptui_onLogin(A) {
        try {
            if (parent.ptlogin2_onLogin) {
                if (!parent.ptlogin2_onLogin()) {
                    return false
                }
            }
            if (parent.ptlogin2_onLoginEx) {
                var D = A.u.value;
                var B = A.verifycode.value;
                if (ptui_str(STR_UINTIP) == D) {
                    D = ""
                }
                if (!parent.ptlogin2_onLoginEx(D, B)) {
                    return false
                }
            }
        } catch(C) {}
        return ptui_checkValidate(A)
    }
          别的代码不要管咯,主要是验证输入的信息是否合法,与加密无关,我们主要看看红色部分的函数,很明显数据又被搞到ptui_checkValidate
    这个函数里去了,要有耐心啊,继续追下去,搜索下ptui_checkValidate 呵呵,函数又找到了,代码如下:
    function ptui_checkValidate(B) {
        var A = B.u;
        var C = B.p;
        var D = B.verifycode;
        if (A.value == "" || ptui_str(STR_UINTIP) == A.value) {
            alert(ptui_str(STR_NO_UIN));
            A.focus();
            return false
        }
        if (C.value == "") {
            alert(ptui_str(STR_NO_PWD));
            C.focus();
            return false
        }
        if (D.value == "") {
            alert(ptui_str(STR_NO_VCODE));
            D.focus();
            return false
        }
        A.value = ptui_trim(A.value);
        if (!ptui_checkQQUin(A.value)) {
            alert(ptui_str(STR_INV_UIN));
            A.focus();
            A.select();
            return false
        }
        if (D.value.length != 4) {
            alert(ptui_str(STR_INV_VCODE));
            D.focus();
            D.select();
            return false
        }
        C.setAttribute("maxlength", "32");
        preprocess(B);
        return true
    }
        呵呵,老规矩,别的代码都不管,一看就是知道是做验证,从这里可以看出QQ的验证功能还真强哦。接着找preprocess(B)这个函数吧,下面是这个函数的代码:
    function preprocess(A){
        var B = "";
        B += A.verifycode.value;
        B = B.toUpperCase();
        A.p.value = md5(md5_3(A.p.value) + B);
        return true
    }
      嘿嘿,你是不是想说又调用了md5这个函数,又要跟下去呀,哈哈,不用的啦,到这里就可以了,看这句代码“A.p.value = md5(md5_3(A.p.value) + B);
    ”知道干什么了吧,是把咱的明文密码进行了 三次MD5加密然后结合验证码再进行了一次MD5加密 。真相终于出来了。
            呵呵,到此我们知道了密码的加密方式了。

    该用户从未签到

    abs123 发表于 2009-12-24 21:48:48 | 显示全部楼层
    看看,flash游戏

    该用户从未签到

    failure 发表于 2010-3-21 19:38:58 | 显示全部楼层
    goooooooood

    该用户从未签到

    ftfaisq 发表于 2010-3-26 17:06:26 | 显示全部楼层
    flash游戏 。。我这个新手不知道从哪里入手

    该用户从未签到

    kinglife 发表于 2010-4-6 18:48:35 | 显示全部楼层
    gooooooooood

    该用户从未签到

    yang5209050 发表于 2010-4-14 21:36:28 | 显示全部楼层
    谢谢LZ

    该用户从未签到

    a434446384 发表于 2010-4-21 23:09:07 | 显示全部楼层
    fdgbdfbndfhbdfhg

    该用户从未签到

    qhgame 发表于 2010-4-27 20:55:36 | 显示全部楼层
    好是好,可惜我不懂C

    该用户从未签到

    hotool 发表于 2010-4-30 23:00:25 | 显示全部楼层
    谢谢LZ ```

    该用户从未签到

    demo235 发表于 2010-5-2 15:19:25 | 显示全部楼层
    第一篇写的有点简单了。看看这个怎么样。

    该用户从未签到

    angel888 发表于 2010-5-10 10:48:52 | 显示全部楼层
    ...收来看看啥样!!

    该用户从未签到

    loveaaddyy 发表于 2010-5-10 12:10:16 | 显示全部楼层
    dddddddddddddddddddd

    该用户从未签到

    huo2010shu 发表于 2010-5-24 11:43:12 | 显示全部楼层
    回复 1# admin


        支持.呵呵.

    该用户从未签到

    501310440 发表于 2010-5-31 22:39:19 | 显示全部楼层
    学习啊,呵呵

    该用户从未签到

    电脑白菜 发表于 2010-6-2 15:42:48 | 显示全部楼层
    回复看看。
    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    免责声明

    本站中所有被研究的素材与信息全部来源于互联网,版权争议与本站无关。本站所发布的任何软件编程开发或软件的逆向分析文章、逆向分析视频、补丁、注册机和注册信息,仅限用于学习和研究软件安全的目的。全体用户必须在下载后的24个小时之内,从您的电脑中彻底删除上述内容。学习编程开发技术或逆向分析技术是为了更好的完善软件可能存在的不安全因素,提升软件安全意识。所以您如果喜欢某程序,请购买注册正版软件,获得正版优质服务!不得将上述内容私自传播、销售或者用于商业用途!否则,一切后果请用户自负!

    QQ|Archiver|手机版|小黑屋|联系我们|宝峰科技 ( 滇公网安备 53050202000040号 | 滇ICP备09007156号-2 )

    Copyright © 2001-2023 Discuz! Team. GMT+8, 2024-3-29 17:12 , File On Powered by Discuz! X3.49

    快速回复 返回顶部 返回列表