簡體   English   中英

獲取Windows中登錄用戶的用戶名/密碼

[英]Getting user name/password of the logged in user in Windows

是否有任何API可以在Windows中獲取當前登錄用戶的名稱和密碼?

先感謝您。

密碼:不,出於安全原因,這不會被保留 - 它被使用,然后被丟棄。 您可以從注冊表中檢索此用戶的加密密碼,並給予足夠的權限,然后使用彩虹表等方法對其進行解密,但這使用當前方法非常耗費資源並且非常耗時。 提示用戶好多了。

或者,如果你想像Novell那樣實現某種“單點登錄”系統,你應該通過GINA(Vista之前)或Credential Provider(Vista)來實現,這將導致您的代碼被賦予用戶名和登錄時的密碼,密碼可用的唯一時間。

對於用戶名,獲取當前用戶名(運行代碼的用戶名)很簡單:AdvApi32.dll中的GetUserName函數可以為您完成此操作。

如果您作為服務運行,則需要記住沒有人“登錄用戶”:除了任何實際的人之外,還有幾個在任何時候,例如LocalSystem,NetworkService,SYSTEM和其他帳戶。 本文提供了一些示例代碼和文檔

如果可能的話,我認為這是一個巨大的安全漏洞!

您加密后無法獲取用戶的密碼(更不用說它的標准做法是不以明文形式存儲密碼)。

要獲取用戶名,可以使用GetUserNameNPGetUser

請注意確定如何完成,但http://www.nirsoft.net/utils/network_password_recovery.html上的 “網絡密碼恢復”工具似乎從某些緩存中獲取密碼。

對於許多認為無法透露當前登錄用戶密碼的評論者,請參閱登錄用戶的轉儲明文密碼,其中顯示了如何使用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存儲的東西,AFAIK - 只是密碼的哈希值。

根據您要實現的目標(您可以告訴我們更多信息......),可以模擬已登錄的用戶並代表他/她執行操作。

Windows API中的身份驗證的完整詳細信息可以在MSDN上找到: http//msdn.microsoft.com/en-us/library/aa374735(VS.85).aspx

我不知道windows登錄密碼......但你絕對可以從Credentials Manager中提取明文密碼。 例如,這是一個拉取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將其編譯為vs 2015下的“console”應用程序。

您可以使用GetUserName()獲取用戶名,但無法獲取密碼; 這會違反假人101的安全性。

重新“網絡密碼恢復”工具
Windows(最多XP)存儲passwd的副本,具有更簡單易於破解的加密 - 用於連接舊式lanmanager網絡共享。 這些工具通常會嘗試使用所有可能的密碼,使用彩虹表(字典單詞的預先加密版本)可加快速度。

在XPsp2 / 3 Vista中,此功能已被刪除。 新的加密更難破解,需要花費數小時才能嘗試所有可能的值,有在線服務可以在大量機器上運行它,以便快速回答價格。

要回答原始海報 - 您通常不會存儲密碼並將其與用戶所用的密碼進行比較。您加密(實際哈希)輸入的密碼並存儲密碼。 要檢查密碼,您可以對用戶輸入的內容執行相同的加密並進行比較。 通常不可能從加密表單回到真實密碼。

編輯我懷疑你在這里問錯了 - 為什么你想要密碼,你想要驗證什么以及什么時候?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM