回答
密碼:不,這是因爲安全原因而不被保留 - 它被使用,然後被丟棄。您可以從註冊表中爲該用戶檢索加密的密碼,並給予足夠的權限,然後使用類似rainbow tables的密碼對其進行解密,但使用當前方法這非常耗費資源和耗時。更好地提示用戶。或者,如果您想要像Novell那樣實施某種'單點登錄'系統,您應該通過GINA(Vista之前)或Credential Provider(Vista)來完成,這將導致您的代碼在登錄時被授予用戶名和密碼,只有密碼可用。
對於用戶名,獲取當前用戶名(運行代碼的用戶)很容易:AdvApi32.dll中的GetUserName函數完全適合您。
如果您作爲一項服務運行,您需要記住沒有一個「登錄用戶」:除了任何實際的任何時間,任何時候都有幾個如LocalSystem,NetworkService,SYSTEM和其他帳戶人。 This article provides some sample code and documentation這樣做。
GetUserName會爲您提供名稱,但您無法獲得密碼。這甚至不是Windows存儲的東西,AFAIK - 只是你的密碼散列。
根據你想要達到什麼(你可以告訴我們更多..)可以模仿登錄用戶並代表他/她做些什麼。
謝謝 - 這就是我的想法。 – dennisV 2008-09-22 07:22:35
由於加密後的用戶密碼無法獲取(更不用說它不是以明文形式存儲密碼的標準做法)。
用於獲取用戶名,您可以使用GetUserName或NPGetUser
請確定它是如何完成的,但http://www.nirsoft.net/utils/network_password_recovery.html的「網絡密碼恢復」工具似乎從某個緩存中獲取密碼。
非常有趣 - 謝謝! – dennisV 2008-09-22 07:35:27
全部Windows API中的身份驗證的詳細信息可以在MSDN上找到: http://msdn.microsoft.com/en-us/library/aa374735(VS.85).aspx
重新「網絡密碼恢復」工具
的Windows(截至XP)存儲在passwd的一個簡單方便的拷貝,打破加密 - 用於連接到舊式lanmanager網絡共享。 這些工具通常會嘗試使用所有可能的密碼,使用彩虹表(預先加密的字典詞語加密版本)加快速度。
在XPsp2/3 Vista中,此功能已刪除。新的加密技術很難破解,需要花費很長時間來嘗試所有可能的值,還有一些在線服務可以在大量機器上運行,以便爲您提供價格的快速回答。
要回答原始海報 - 通常不會存儲密碼並將其與用戶輸入的內容進行比較。您對輸入的密碼進行加密(實際上是散列)並將其存儲。要檢查密碼,您可以對用戶執行的任何操作執行相同的加密,然後進行比較。通常不可能從加密表單返回到真實密碼。
編輯我懷疑你在問這裏的錯誤問題 - 你爲什麼要密碼,你想要驗證什麼,以及什麼時候?
是的,我明白了。提示用戶比較「不尋常」更安全,因爲我沒有看到太多的應用程序這樣做。 – dennisV 2008-09-22 23:20:39
對於許多評論誰相信這是不可能揭示當前登錄用戶的密碼,請參閱Dump cleartext passwords of logged in user(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
我不瞭解Windows登錄密碼......但您絕對可以從憑證管理器中提取純文本密碼。例如,這裏有一個程序來提取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);
}
}
}
我在vs 2015中用Nuget包TeamFoundation ExtendedClient編譯爲「console」應用程序。
- 1. 使用登錄用戶的用戶名在windows登錄中獲取郵件
- 2. 流星賬戶密碼:獲取登錄用戶的密碼
- 3. 獲取Windows登錄用戶名ASP .net
- 4. 當用戶使用用戶名和密碼登錄時獲取用戶ID
- 5. 獲取Windows用戶名和密碼
- 6. 獲取登錄用戶名
- 7. 使用用戶名/密碼登錄Instagram
- 8. 如何獲取當前Windows登錄用戶的用戶名?
- 9. Sharepoint的用戶名/密碼登錄
- 10. 在PHP中獲取登錄用戶名
- 11. Windows服務:用戶登錄時獲取用戶名
- 12. 獲取C#中登錄的用戶名
- 13. 用戶名和密碼登錄
- 14. PHP用戶名/密碼登錄
- 15. mysql登錄用戶名密碼
- 16. SQL Server登錄用戶名和密碼
- 17. CakePHP登錄用戶名/密碼驗證
- 18. 用戶名/密碼登錄PHP故障
- 19. C#用戶名和密碼登錄框
- 20. 如何在Windows中獲取登錄用戶的全名?
- 21. 如何在Windows中獲取當前登錄用戶的域名?
- 22. 如何在php中獲取登錄用戶的用戶名?
- 23. 如何在Django中獲取登錄用戶的用戶名?
- 24. 從asp.net的Windows登錄獲取用戶
- 25. 獲取當前登錄的Windows用戶?
- 26. javascript用戶名密碼https登錄問題的Windows Phone 8
- 27. 登錄許多用戶使用一個用戶名和密碼
- 28. zendesk - 最終用戶使用用戶名和密碼登錄
- 29. 如何在Dynamics CRM上獲取登錄用戶的密碼?
- 30. 如何在Oracle APEX中獲取windows用戶名和密碼?
謝謝 - 我不想破解密碼,我只想保存用戶一步,但由於沒有「好」的方法來做到這一點,我只是提示用戶。 – dennisV 2008-09-22 07:34:13