我想写一个网页的自动登陆程序,我要登陆的网页没有验证码,只要提交账号和密码即可,但是那个提交的密码是经过加密后提交的,
我看了源文件,是用MD5加的密,这样我提交的密码和要求的肯定就不一样了,因而也就登陆不了,这怎么解决呢,难道说知道密码还
登陆不了?或者我想知道是否能够自动获取变化完后的密码?我知道经过md4或md5加密是不可逆

解决方案 »

  1.   

    呵呵,我想你可能没有明白问题所在。
    1:如果你知道它是用MD5加密的,那么问题很好处理。尽管你不可能解密MD5,但是你是知道真实密码的,你只需要按MD5算法加密你的密码,然后当成密码发给服务器即可,有什么问题呢?2:一般来说像你说的对密码有加密的情况,可能有几种:
    *使用脚本做了些简单处理,但这基本没有意义。
    *使用一些浏览器插件在发送密码之前就加密密码,使用这种方案,你看到的密码输入框根本就不是普通的文本框,一般情况下你也不可能使用的是什么加密算法。
    *使用SSL协议对整个通信过程加密对于方案一我觉得只是技术上有可能,但应该没有人会这样做;
    对于方案三我觉得你不太可能能够分析出任何有价值的东西,呵呵。因为SSL非常难处理;
    对于方案二才是重点。其实你要登录系统,重点就是发出正确的GET或者POST数据包,你可以使用一些httpWatch之类的软件监视你在登录时发出的数据包,然后写程序模拟这个数据包的发送即可。
      

  2.   

    md5是一个加密解密一起的程序机制
    所以你肯定不知道他如何加密的,你只要在调用的时候加密一下
    然后再解密一下就可以了
    我现在就是用的这个md5
      

  3.   

       [size=11px]感谢专家的精彩回答!
       我还想问一下,现在我知道那个网页确实是使用md5加的密,但它用md5对密码进行了连续两次的加密,一次是对密码字符串本身,
    后面一次是对加密后的字符串再加上一个叫共享数值的东西,那个数每次刷新网页都变化的,不知道怎么回事,这样难道最后提交的
    md5会是样吗,所以现在存在的关键问题是如何确定那个共享数值,我不知道那个数值是怎么生成的,请问专家是否可以直接从网页
    上获取呢?给我说一下方法吧
    [/size]
      

  4.   

    补充一下,
    网页的加密函数外壳如下:
    <script language="javascript">var sharedValue = 1182108206
    function change(){
         var pw = document.form1.password.value;
         
     pw = hex_md5(pw);
     //alert(pw+sharedValue);
     pw = hex_md5(pw+sharedValue); //用共享数值再次加密
     //document.write(pw);
     document.form1.password.value = pw ;
    // return true;
    }
    另外我附上输入框
    <td width="286" height="124" ><div align="center"><span class="style10"><img src="../resources/images/dot.gif" width="7" height="7"> 用 户:
                              
    </span>
                              <input type="text" name="uid" class="text" size="15" >
                          </div>
                            <br>
                            <div align="center"><span class="style10"><img src="../resources/images/dot.gif" width="7" height="7"> 密 码:</span>
                                <input type="password" name="password" class="text" size="15">
                          </div>
                            <br>
                            <div align="center">
                              <input type="hidden" name="command" value="studentLogin">
                              <input type="submit" name="Submit" value="提交" onclick="change();" class="button">
    请大家不厌其烦地再帮我看看吧,感谢啊!!!
      

  5.   

    这个我明白了,它的share_value值是由网页每次访问时随机(或者根据某种规律)生成的,所以每次都会不同。
    这类似于验证码,要解决它也非常简单,每次实现自动登录之前你先访问这个网页,从返回的网页中取出这个share_value的值,它是明文的!!
    比如你给我的这个网页就是:
    var sharedValue = 1182108206;
    你用正则表达式或者直接用search从返回的HTML中把这个值读出来,然后你再自己做两次MD5,再用一般的规则发给服务器了。
      

  6.   

    感谢phy的回答,看样子今天可以结帖了hoho