从摘要式访问身份验证导入登录名和密码

本文关键字:登录 密码 导入 身份验证 访问 | 更新日期: 2023-09-27 18:22:08

我想从这个文本中获取登录名和密码,但密码可能是加密的MD5?

此文本"字符串":

username="Domain''ik_r.test",realm="Digest",nonce="+Upgraded+v16223a53d44f99beb7dfaf10bf5738392669956ca1a21d01e949e262b02c7a7e268e9699b5824cd55c05d7bb900059b7b8985ca00174ace",uri="/Service1.svc",cnonce="+Upgraded+v1e07752581e4417aaefb76c90bca4fef0d9e03d4cb882c74cc04f2e95704b31",nc=00000000 1,算法=MD5-sess,response="6acc0f7e891fe4daa4174da35f098764",qop="auth",charset=utf-8,hashed dirs="服务名称,通道绑定",服务名称="HTTP/test.eu",通道绑定="05439c3422ef9779e232067358231137"

结果:

string login = "Domain''ik_r.test";
string password = ?;

示例:https://en.wikipedia.org/wiki/Digest_access_authentication

从摘要式访问身份验证导入登录名和密码

正如您在问题中所链接的,这就是HTTP摘要身份验证。响应值由MD5散列中的MD5散列构造而成;在您的情况下(MD5-sess,auth)

  • 一个"user:realm:password"的散列,然后输入到第二个散列中,其中包含请求中的两个nonce字符串
  • 根据HTTP请求行构造的哈希
  • 最后,由其中一个nonce字符串分隔的这两个散列输出被再次散列以构造响应

从响应哈希中恢复密码的唯一方法是对每个可能的密码重复该过程,直到找到匹配的密码;由于请求是恒定的,即每个候选密码有三个MD5散列。这可能在计算上过于昂贵,无法实际实现

如果你真的需要这个密码,而不能只是更改帐户上的密码或询问知道的人,你最好的办法是尝试从服务器上恢复它:在最坏的情况下,服务器需要存储"user:realm:password"的第一个哈希,这将只是一个使用暴力恢复密码的哈希。如果幸运的话,服务器将拥有纯文本的密码,这样它就可以为任何任意领域字符串构造此哈希。

最后,如果你的用户有一个"域"部分,这可能是一个Windows帐户?有一些工具可以帮助你恢复或重置Windows帐户密码,尽管我不知道它们是否需要域管理员访问权限,也不推荐使用。

您无法从提供的数据中获取密码。您应该找到另一种验证的方法