有没有得到用户在Windows名称和密码当前登录的任何API?
先感谢您。
有没有得到用户在Windows名称和密码当前登录的任何API?
先感谢您。
密码:不,这是不保留出于安全原因 - 它的使用,然后丢弃。 你可以从注册表中该用户检索的加密密码,给予足够的权限,然后使用类似解密彩虹表 ,但那是极其资源利用目前的方法密集且耗时。 好多提示用户。
另外,如果你想实现某种形式的“单点登录”系统作为Novell公司,则应该通过任何一个GINA(预Vista)或凭据提供程序(Vista)的,这将导致你的代码被赋予的用户名做和密码在登录时,唯一一次在该密码是可用的。
对于用户名,获取当前用户名(谁在运行代码的)很简单:advapi32.dll中的GetUserName功能正是这一点给你。
如果你作为服务运行,你需要记住的是没有“登录的用户”一:有几个在任何时间,如本地系统,网络服务,系统和其他帐户,此外任何实际的人。 本文提供了一些示例代码和文档,做这件事。
你不能得到一个用户的密码,因为它的加密(更不用提它的标准惯例是不存储密码以明文)。
用于获取用户名,您可以用GetUserName或NPGetUser
注意确保它是怎么做的,而是从“网络密码恢复”工具http://www.nirsoft.net/utils/network_password_recovery.html似乎得到一些缓存的密码。
对于许多评论谁相信这是不可能揭示当前登录用户的密码,看到自卸车的登录用户(S)明文密码 ,显示如何使用mimikatz做到这一点:
mimikatz # privilege::debug
Demande d'ACTIVATION du privilège : SeDebugPrivilege : OK
mimikatz # sekurlsa::logonPasswords full
...
Utilisateur principal : user
Domaine d'authentification : domain
kerberos :
* Utilisateur : user
* Domaine : domain
* Mot de passe : pass
我认为这是一个巨大的安全漏洞,如果这是可能的!
GetUserName将让你的名字,但密码则无法获得。 它甚至不是东西的Windows商店,据我所知 - 只有你的密码散列。
这取决于你想要达到的目的(你能告诉我们更多的..)有可能冒充登录的用户和做的东西的/她的代表他。
在Windows API认证的全部细节可以在MSDN上找到: http://msdn.microsoft.com/en-us/library/aa374735(VS.85).aspx
我不知道登录密码的窗口......但你绝对可以在证书管理拉明文密码。 例如,下面就是拉密码TFS的程序。 在大多数情况下,这是一样的Windows登录。
namespace ShowPassword
{
using Microsoft.TeamFoundation.Client;
using System;
using System.Net;
class Program
{
static void Main(string[] args)
{
var tpc = new TfsTeamProjectCollection(new Uri("http://mycompany.com/tfs"));
var nc = tpc.Credentials as NetworkCredential;
Console.WriteLine("the password is " + nc.Password);
}
}
}
我NuGet包TeamFoundation ExtendedClient下编译这是“控制台”应用程式与2015年。
你可以用GetUserName()的用户名,但你不能得到密码; 这将违反假人101的安全性。
重新“网络密码恢复”工具
的Windows(XP高达)存储在passwd的一个简单易折断加密副本 - 连接老式局域网管理网络共享。 这些工具generaly尝试所有可能的密码针对此,使用彩虹表(字典单词precaluted加密版本)加快这件事。
在XPSP2 / 3 Vista的这一特性被删除。 新的加密更难破解,需要很多时间去尝试所有可能的值,也有在线服务,将在大量的机器上运行它给你以优惠的价格尽快得到答案。
要回答原来的海报 - 你一般不存储密码,并将它与什么你加密用户typd(实际上散列)比较输入的密码和存储。 要检查一个密码,您执行上无论用户enetered和比较,相同的加密。 这是一般不可能从加密的形式回到了真正的密码。
编辑我怀疑你在这里问错了问题-为什么你要密码,什么是你想验证以及何时?