Tôi có thể thực hiện điều này với một số API mà tôi đang xem hoặc tôi phải tìm ra cách chuyển the C# .NET API calls mentioned here vào PowerShell để thực hiện điều này trong tập lệnh không?Nhận thông tin xác thực được lưu trong PowerShell từ Trình quản lý thông tin xác thực của Windows 7
Q
Nhận thông tin xác thực được lưu trong PowerShell từ Trình quản lý thông tin xác thực của Windows 7
7
A
Trả lời
7
Bạn có thể sử dụng Add-Type
cmdlet để dễ dàng cổng nó tôi tin rằng:
$sig = @"
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct NativeCredential
{
public UInt32 Flags;
public CRED_TYPE Type;
public IntPtr TargetName;
public IntPtr Comment;
public System.Runtime.InteropServices.ComTypes.FILETIME LastWritten;
public UInt32 CredentialBlobSize;
public IntPtr CredentialBlob;
public UInt32 Persist;
public UInt32 AttributeCount;
public IntPtr Attributes;
public IntPtr TargetAlias;
public IntPtr UserName;
internal static NativeCredential GetNativeCredential(Credential cred)
{
NativeCredential ncred = new NativeCredential();
ncred.AttributeCount = 0;
ncred.Attributes = IntPtr.Zero;
ncred.Comment = IntPtr.Zero;
ncred.TargetAlias = IntPtr.Zero;
ncred.Type = CRED_TYPE.GENERIC;
ncred.Persist = (UInt32)1;
ncred.CredentialBlobSize = (UInt32)cred.CredentialBlobSize;
ncred.TargetName = Marshal.StringToCoTaskMemUni(cred.TargetName);
ncred.CredentialBlob = Marshal.StringToCoTaskMemUni(cred.CredentialBlob);
ncred.UserName = Marshal.StringToCoTaskMemUni(System.Environment.UserName);
return ncred;
}
}
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct Credential
{
public UInt32 Flags;
public CRED_TYPE Type;
public string TargetName;
public string Comment;
public System.Runtime.InteropServices.ComTypes.FILETIME LastWritten;
public UInt32 CredentialBlobSize;
public string CredentialBlob;
public UInt32 Persist;
public UInt32 AttributeCount;
public IntPtr Attributes;
public string TargetAlias;
public string UserName;
}
public enum CRED_TYPE : uint
{
GENERIC = 1,
DOMAIN_PASSWORD = 2,
DOMAIN_CERTIFICATE = 3,
DOMAIN_VISIBLE_PASSWORD = 4,
GENERIC_CERTIFICATE = 5,
DOMAIN_EXTENDED = 6,
MAXIMUM = 7, // Maximum supported cred type
MAXIMUM_EX = (MAXIMUM + 1000), // Allow new applications to run on old OSes
}
public class CriticalCredentialHandle : Microsoft.Win32.SafeHandles.CriticalHandleZeroOrMinusOneIsInvalid
{
public CriticalCredentialHandle(IntPtr preexistingHandle)
{
SetHandle(preexistingHandle);
}
public Credential GetCredential()
{
if (!IsInvalid)
{
NativeCredential ncred = (NativeCredential)Marshal.PtrToStructure(handle,
typeof(NativeCredential));
Credential cred = new Credential();
cred.CredentialBlobSize = ncred.CredentialBlobSize;
cred.CredentialBlob = Marshal.PtrToStringUni(ncred.CredentialBlob,
(int)ncred.CredentialBlobSize/2);
cred.UserName = Marshal.PtrToStringUni(ncred.UserName);
cred.TargetName = Marshal.PtrToStringUni(ncred.TargetName);
cred.TargetAlias = Marshal.PtrToStringUni(ncred.TargetAlias);
cred.Type = ncred.Type;
cred.Flags = ncred.Flags;
cred.Persist = ncred.Persist;
return cred;
}
else
{
throw new InvalidOperationException("Invalid CriticalHandle!");
}
}
override protected bool ReleaseHandle()
{
if (!IsInvalid)
{
CredFree(handle);
SetHandleAsInvalid();
return true;
}
return false;
}
}
[DllImport("Advapi32.dll", EntryPoint = "CredReadW", CharSet = CharSet.Unicode, SetLastError = true)]
public static extern bool CredRead(string target, CRED_TYPE type, int reservedFlag, out IntPtr CredentialPtr);
[DllImport("Advapi32.dll", EntryPoint = "CredFree", SetLastError = true)]
public static extern bool CredFree([In] IntPtr cred);
"@
Add-Type -MemberDefinition $sig -Namespace "ADVAPI32" -Name 'Util'
$targetName = "computer"
$nCredPtr= New-Object IntPtr
$success = [ADVAPI32.Util]::CredRead($targetName,1,0,[ref] $nCredPtr)
if($success){
$critCred = New-Object ADVAPI32.Util+CriticalCredentialHandle $nCredPtr
$cred = $critCred.GetCredential()
$password = $cred.CredentialBlob;
write-host -fore blue $password
}
Phỏng theo đây: http://social.technet.microsoft.com/Forums/en-US/ITCG/thread/e91769eb-dbce-4e77-8b61-d3e55690b511/
Dựa trên: http://blogs.msdn.com/b/peerchan/archive/2005/11/01/487834.aspx
1
này đã được thực hiện:
http://gallery.technet.microsoft.com/scriptcenter/PowerShell-Credentials-d44c3cde/view/Discussions
Nó cung cấp một vài phương pháp liên quan đến người có uy tín và nó đã được ghi lại.
Các vấn đề liên quan
- 1. Lưu trữ thông tin xác thực trong Dịch vụ quản lý thông tin xác thực
- 2. Làm cách nào để lưu trữ và truy xuất bằng chứng xác thực từ trình quản lý thông tin xác thực của Windows Vault?
- 3. Xóa thông tin xác thực từ UIWebView
- 4. ASP.NET chạy dọc theo thông tin xác thực Windows
- 5. Cách nhận thông tin từ trình quản lý thiết bị?
- 6. Sự khác nhau giữa Password Vault và Trình quản lý thông tin xác thực trong Windows 8 là gì?
- 7. Trang web mạng intranet ASP.NET yêu cầu thông tin xác thực - Xác thực Windows
- 8. Proxy ghi thông tin xác thực Subversion
- 9. Chuyển thông tin xác thực đến WebProxy?
- 10. Bắt đầu quy trình có thông tin xác thực từ Dịch vụ Windows
- 11. Không thể kết nối với SQL Server trong miền khác nhau bằng SSMS và Trình quản lý thông tin xác thực Windows 7
- 12. Làm cách nào để xác thực thông tin xác thực tên miền (từ mã gốc)?
- 13. Lấy thông tin xác thực mạng từ người dùng hiện tại trong ứng dụng xác thực Windows
- 14. Kiểm tra xem Trình quản lý thông tin xác thực/mật khẩu có dữ liệu ứng dụng tại tải
- 15. New-PSDrive không hỗ trợ thông tin xác thực?
- 16. Chụp thông tin lược đồ khi xác thực XDocument
- 17. Nhận thông báo lỗi xác thực mà không lưu
- 18. Gửi thông tin xác thực giữa các trang web
- 19. Đặt thông tin xác thực cho ứng dụng WCF?
- 20. Gửi thông tin xác thực đến Sql Report Server 2008
- 21. Lưu trữ mật khẩu trong bảng và xác thực thông tin
- 22. nơi lưu trữ thông tin xác thực người dùng trong ứng dụng doanh nghiệp (EAI)?
- 23. Khóa bản đồ Bing API (thông tin xác thực)
- 24. Cách lưu trữ thông tin xác thực trên mỗi phiên trong Flask
- 25. Trình tạo báo cáo 3.0 - Thông tin xác thực bộ dữ liệu không hoạt động
- 26. Lua & C++ API nhận được thông tin thực hiện
- 27. Nội suy thông số xác thực cụ thể trong thông báo xác thực đậu
- 28. Xác minh thông tin xác thực của thỏm là hợp lệ
- 29. SharePoint lưu trữ thông tin không chính xác
- 30. Xác thực thông thạo. Thừa kế các lớp xác nhận
Tôi nghĩ rằng tôi thực sự đã vượt qua điều đó một cách ngượng ngùng nhưng nghĩ rằng phải có một cách dễ dàng hơn. Tôi là loại xúc phạm không phải là một cách dễ dàng hơn để kéo thông tin bảo mật cho một kịch bản trong Windows đất, nhưng tôi đoán tôi nên ngừng ngạc nhiên. Tôi sẽ cập nhật bài đăng này khi tôi có thêm thời gian để kiểm tra nó. Cảm ơn. – songei2f
Cảm ơn anh chàng này. – songei2f