对于密码有加密保护的网页自动登陆如何用C#实现?

oyzdz1988 2008-09-29 12:33:36
我想写一个网页的自动登陆程序,我要登陆的网页没有验证码,只要提交账号和密码即可,但是那个提交的密码是经过加密后提交的,
我看了源文件,是用MD5加的密,这样我提交的密码和要求的肯定就不一样了,因而也就登陆不了,这怎么解决呢,难道说知道密码还
登陆不了?或者我想知道是否能够自动获取变化完后的密码?我知道经过md4或md5加密是不可逆
...全文
405 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
brallow 2008-09-29
  • 打赏
  • 举报
回复
这个我明白了,它的share_value值是由网页每次访问时随机(或者根据某种规律)生成的,所以每次都会不同。
这类似于验证码,要解决它也非常简单,每次实现自动登录之前你先访问这个网页,从返回的网页中取出这个share_value的值,它是明文的!!
比如你给我的这个网页就是:
var sharedValue = 1182108206;
你用正则表达式或者直接用search从返回的HTML中把这个值读出来,然后你再自己做两次MD5,再用一般的规则发给服务器了。
brallow 2008-09-29
  • 打赏
  • 举报
回复
呵呵,我想你可能没有明白问题所在。
1:如果你知道它是用MD5加密的,那么问题很好处理。尽管你不可能解密MD5,但是你是知道真实密码的,你只需要按MD5算法加密你的密码,然后当成密码发给服务器即可,有什么问题呢?

2:一般来说像你说的对密码有加密的情况,可能有几种:
*使用脚本做了些简单处理,但这基本没有意义。
*使用一些浏览器插件在发送密码之前就加密密码,使用这种方案,你看到的密码输入框根本就不是普通的文本框,一般情况下你也不可能使用的是什么加密算法。
*使用SSL协议对整个通信过程加密

对于方案一我觉得只是技术上有可能,但应该没有人会这样做;
对于方案三我觉得你不太可能能够分析出任何有价值的东西,呵呵。因为SSL非常难处理;
对于方案二才是重点。其实你要登录系统,重点就是发出正确的GET或者POST数据包,你可以使用一些httpWatch之类的软件监视你在登录时发出的数据包,然后写程序模拟这个数据包的发送即可。
oyzdz1988 2008-09-29
  • 打赏
  • 举报
回复
补充一下,
网页的加密函数外壳如下:
<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">
请大家不厌其烦地再帮我看看吧,感谢啊!!!
oyzdz1988 2008-09-29
  • 打赏
  • 举报
回复
[size=11px]感谢专家的精彩回答!
我还想问一下,现在我知道那个网页确实是使用md5加的密,但它用md5对密码进行了连续两次的加密,一次是对密码字符串本身,
后面一次是对加密后的字符串再加上一个叫共享数值的东西,那个数每次刷新网页都变化的,不知道怎么回事,这样难道最后提交的
md5会是样吗,所以现在存在的关键问题是如何确定那个共享数值,我不知道那个数值是怎么生成的,请问专家是否可以直接从网页
上获取呢?给我说一下方法吧。。。
[/size]
sxmonsy 2008-09-29
  • 打赏
  • 举报
回复
用MD5加密就行,注册和登陆的时候全用.
tinalucky 2008-09-29
  • 打赏
  • 举报
回复
楼主可以试一下把用户名、密码用MD5加密存入数据库当做真实的用户名和密码,这样网页提交的加密后字符串就能与数据库的用户名、密码匹配了
kingcsx666 2008-09-29
  • 打赏
  • 举报
回复
帮忙顶一下,前面有答案啦
格拉 2008-09-29
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 phy 的回复:]
呵呵,我想你可能没有明白问题所在。
1:如果你知道它是用MD5加密的,那么问题很好处理。尽管你不可能解密MD5,但是你是知道真实密码的,你只需要按MD5算法加密你的密码,然后当成密码发给服务器即可,有什么问题呢?

2:一般来说像你说的对密码有加密的情况,可能有几种:
*使用脚本做了些简单处理,但这基本没有意义。
*使用一些浏览器插件在发送密码之前就加密密码,使用这种方案,你看到的密码输入框根本就不是普通…
[/Quote]学习帮顶
yudi010 2008-09-29
  • 打赏
  • 举报
回复
md5是一个加密解密一起的程序机制
所以你肯定不知道他如何加密的,你只要在调用的时候加密一下
然后再解密一下就可以了
我现在就是用的这个md5
jadedm 2008-09-29
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 phy 的回复:]
呵呵,我想你可能没有明白问题所在。
1:如果你知道它是用MD5加密的,那么问题很好处理。尽管你不可能解密MD5,但是你是知道真实密码的,你只需要按MD5算法加密你的密码,然后当成密码发给服务器即可,有什么问题呢?

2:一般来说像你说的对密码有加密的情况,可能有几种:
*使用脚本做了些简单处理,但这基本没有意义。
*使用一些浏览器插件在发送密码之前就加密密码,使用这种方案,你看到的密码输入框根本就不是普通…
[/Quote]
这个说得蛮不错的, 关注中。。。。!
hangang7403 2008-09-29
  • 打赏
  • 举报
回复
帮顶
shulei521 2008-09-29
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 cl61917380 的回复:]
引用 1 楼 phy 的回复:
1:如果你知道它是用MD5加密的,那么问题很好处理。尽管你不可能解密MD5,但是你是知道真实密码的,你只需要按MD5算法加密你的密码,然后当成密码发给服务器即可.
.
[/Quote].
oyzdz1988 2008-09-29
  • 打赏
  • 举报
回复
感谢phy的回答,看样子今天可以结帖了。。。hoho
coooliang 2008-09-29
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 phy 的回复:]
1:如果你知道它是用MD5加密的,那么问题很好处理。尽管你不可能解密MD5,但是你是知道真实密码的,你只需要按MD5算法加密你的密码,然后当成密码发给服务器即可.
[/Quote].

110,561

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧