Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - [решено] KEEPASS из powershell

Ответить
Настройки темы
PowerShell - [решено] KEEPASS из powershell

Новый участник


Сообщения: 24
Благодарности: 0

Профиль | Сайт | Отправить PM | Цитировать


Наверное многие, для хранения паролей пользователей пользуются KeePass . Недавно наткнулся на статью, со скриптом powershell, с помощью которого можно получать необходмые строки из базы Keepass.

Код: Выделить весь код
param(

    $PathToKeePassFolder = "C:\Program Files (x86)\KeePass Password Safe 2"
)
#Load all .NET binaries in the folder
(Get-ChildItem -recurse $PathToKeePassFolder|Where-Object {($_.Extension -EQ ".dll") -or ($_.Extension -eq ".exe")} | ForEach-Object { $AssemblyName=$_.FullName; Try {[Reflection.Assembly]::LoadFile($AssemblyName) } Catch{ }} ) | out-null

<#
.Synopsis
   Finds matching EntryToFind in KeePass DB
.DESCRIPTION
   Finds matching EntryToFind in KeePass DB using Windows Integrated logon
.EXAMPLE
   Example of how to use this cmdlet
   FindPasswordInKeePassDB -PathToDB "C:\Powershell\PowerShell.kdbx" -EntryToFind "MasterPassword"
#>

Function Find-PasswordInKeePassDB
{
    [CmdletBinding()]
    [OutputType([String[]])]

    param(

        $PathToDB = "C:\Powershell\PowerShell.kdbx",
        $EntryToFind = "MasterPassword"
    )

    $PwDatabase = new-object KeePassLib.PwDatabase

    $m_pKey = new-object KeePassLib.Keys.CompositeKey
    $m_pKey.AddUserKey((New-Object KeePassLib.Keys.KcpUserAccount))

    $m_ioInfo = New-Object KeePassLib.Serialization.IOConnectionInfo
    $m_ioInfo.Path = $PathToDB

    $IStatusLogger = New-Object KeePassLib.Interfaces.NullStatusLogger

    $PwDatabase.Open($m_ioInfo,$m_pKey,$IStatusLogger)

    
    $pwItems = $PwDatabase.RootGroup.GetObjects($true, $true)
    foreach($pwItem in $pwItems)
    {
        if ($pwItem.Strings.ReadSafe("Title") -eq $EntryToFind)
        {
            $pwItem.Strings.ReadSafe("Password")
        }
    }
    $PwDatabase.Close()

}

<#
.Synopsis
   Short description
.DESCRIPTION
   Long description
.EXAMPLE
   Example of how to use this cmdlet
   FindPasswordInKeePassDBUsingPassword -EntryToFind "domain\username" -PasswordToDB myNonTopSeceretPasswordInClearText
.EXAMPLE
   Find password using Integrated logon to get master password and then use that to unlock and find the password in the big one.
   FindPasswordInKeePassDBUsingPassword -EntryToFind "domain\username" -PasswordToDB (FindPasswordInKeePassDB -EntryToFind "MasterPassword")
#>
function Find-PasswordInKeePassDBUsingPassword
{
    [CmdletBinding()]
    [OutputType([String[]])]
    Param
    (
        # Path To password DB
        $PathToDB = "\\unc-path\Passwords\Passwords.kdbx",
        # Entry to find in DB
        $EntryToFind = "mattias",
        # Password used to open KeePass DB        
        [Parameter(Mandatory=$true)][String]$PasswordToDB
    )

    $PwDatabase = new-object KeePassLib.PwDatabase

    $m_pKey = new-object KeePassLib.Keys.CompositeKey
    $m_pKey.AddUserKey((New-Object KeePassLib.Keys.KcpPassword($PasswordToDB)));

    $m_ioInfo = New-Object KeePassLib.Serialization.IOConnectionInfo
    $m_ioInfo.Path = $PathToDB

    $IStatusLogger = New-Object KeePassLib.Interfaces.NullStatusLogger

    $PwDatabase.Open($m_ioInfo,$m_pKey,$IStatusLogger)

    
    $pwItems = $PwDatabase.RootGroup.GetObjects($true, $true)
    foreach($pwItem in $pwItems)
    {
        if ($pwItem.Strings.ReadSafe("Title") -eq $EntryToFind)
        {
            $pwItem.Strings.ReadSafe("Password")
        }
    }
    $PwDatabase.Close()
    $PasswordToDB = $null

}
Но хотелось бы еще и создавать новые...
Есть метод AddEntry, как им воспользоваться?

Код: Выделить весь код
TypeName: KeePassLib.PwGroup

Name                         MemberType Definition                                                                                                                                                           
----                         ---------- ----------                                                                                                                                                           
AddEntry                     Method     void AddEntry(KeePassLib.PwEntry pe, bool bTakeOwnership), void AddEntry(KeePassLib.PwEntry pe, bool bTakeOwnership, bool bUpdateLocationChangedOfEntry)             
AddGroup                     Method     void AddGroup(KeePassLib.PwGroup subGroup, bool bTakeOwnership), void AddGroup(KeePassLib.PwGroup subGroup, bool bTakeOwnership, bool bUpdateLocationChangedOfSub)   
AssignProperties             Method     void AssignProperties(KeePassLib.PwGroup pgTemplate, bool bOnlyIfNewer, bool bAssignLocationChanged)                                                                 
BuildEntryTagsDict           Method     System.Collections.Generic.IDictionary[string,uint32] BuildEntryTagsDict(bool bSort)                                                                                 
BuildEntryTagsList           Method     System.Collections.Generic.List[string] BuildEntryTagsList(), System.Collections.Generic.List[string] BuildEntryTagsList(bool bSort)                                 
CloneDeep                    Method     KeePassLib.PwGroup CloneDeep(), KeePassLib.PwGroup IDeepCloneable[PwGroup].CloneDeep()                                                                               
CloneStructure               Method     KeePassLib.PwGroup CloneStructure()                                                                                                                                  
CreateNewItemUuids           Method     void CreateNewItemUuids(bool bNewGroups, bool bNewEntries, bool bRecursive)                                                                                          
DeleteAllObjects             Method     void DeleteAllObjects(KeePassLib.PwDatabase pdContext)                                                                                                               
Duplicate                    Method     KeePassLib.PwGroup Duplicate()                                                                                                                                       
EnableStringFieldProtection  Method     bool EnableStringFieldProtection(string strFieldName, bool bEnable)                                                                                                  
Equals                       Method     bool Equals(System.Object obj)                                                                                                                                       
EqualsGroup                  Method     bool EqualsGroup(KeePassLib.PwGroup pg, KeePassLib.PwCompareOptions pwOpt, KeePassLib.MemProtCmpMode mpCmpStr)                                                       
FindCreateGroup              Method     KeePassLib.PwGroup FindCreateGroup(string strName, bool bCreateIfNotFound)                                                                                           
FindCreateSubTree            Method     KeePassLib.PwGroup FindCreateSubTree(string strTree, char[] vSeparators), KeePassLib.PwGroup FindCreateSubTree(string strTree, char[] vSeparators, bool bAllowCrea...
FindEntriesByTag             Method     void FindEntriesByTag(string strTag, KeePassLib.Collections.PwObjectList[KeePassLib.PwEntry] listStorage, bool bSearchRecursive)                                     
FindEntry                    Method     KeePassLib.PwEntry FindEntry(KeePassLib.PwUuid uuid, bool bSearchRecursive)                                                                                          
FindGroup                    Method     KeePassLib.PwGroup FindGroup(KeePassLib.PwUuid uuid, bool bSearchRecursive)                                                                                          
FindObject                   Method     KeePassLib.Interfaces.IStructureItem FindObject(KeePassLib.PwUuid uuid, bool bRecursive, System.Nullable[bool] bEntries)                                             
GetAutoTypeEnabledInherited  Method     bool GetAutoTypeEnabledInherited()                                                                                                                                   
GetAutoTypeSequenceInherited Method     string GetAutoTypeSequenceInherited()                                                                                                                                
GetCounts                    Method     void GetCounts(bool bRecursive, [ref] uint32 uNumGroups, [ref] uint32 uNumEntries)                                                                                   
GetEntries                   Method     KeePassLib.Collections.PwObjectList[KeePassLib.PwEntry] GetEntries(bool bIncludeSubGroupEntries)                                                                     
GetEntriesCount              Method     uint32 GetEntriesCount(bool bRecursive)                                                                                                                              
GetFlatGroupList             Method     System.Collections.Generic.LinkedList[KeePassLib.PwGroup] GetFlatGroupList()                                                                                         
GetFullPath                  Method     string GetFullPath(), string GetFullPath(string strSeparator, bool bIncludeTopMostGroup)                                                                             
GetGroups                    Method     KeePassLib.Collections.PwObjectList[KeePassLib.PwGroup] GetGroups(bool bRecursive)                                                                                   
GetHashCode                  Method     int GetHashCode()                                                                                                                                                    
GetLevel                     Method     uint32 GetLevel()                                                                                                                                                    
GetObjects                   Method     System.Collections.Generic.List[KeePassLib.Interfaces.IStructureItem] GetObjects(bool bRecursive, System.Nullable[bool] bEntries)                                    
GetSearchingEnabledInherited Method     bool GetSearchingEnabledInherited()                                                                                                                                  
GetType                      Method     type GetType()                                                                                                                                                       
IsContainedIn                Method     bool IsContainedIn(KeePassLib.PwGroup pgContainer)                                                                                                                   
SearchEntries                Method     void SearchEntries(KeePassLib.SearchParameters sp, KeePassLib.Collections.PwObjectList[KeePassLib.PwEntry] listStorage), void SearchEntries(KeePassLib.SearchParam...
SetCreatedNow                Method     void SetCreatedNow(bool bRecursive)                                                                                                                                  
SortSubGroups                Method     void SortSubGroups(bool bRecursive)                                                                                                                                  
TakeOwnership                Method     void TakeOwnership(bool bTakeSubGroups, bool bTakeEntries, bool bRecursive)                                                                                          
ToString                     Method     string ToString()                                                                                                                                                    
Touch                        Method     void Touch(bool bModified), void Touch(bool bModified, bool bTouchParents), void ITimeLogger.Touch(bool bModified)                                                   
TraverseTree                 Method     bool TraverseTree(KeePassLib.TraversalMethod tm, KeePassLib.Delegates.GroupHandler groupHandler, KeePassLib.Delegates.EntryHandler entryHandler)

Отправлено: 06:28, 29-12-2014

 

Ветеран


Сообщения: 1259
Благодарности: 861

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
$general = $PwDatabase.RootGroup.FindGroup($PwDatabase.RootGroup.Groups.Uuid[0].UuidBytes,0)
		
$ent = New-Object KeePassLib.PwEntry($general , $true , $true)
	
$title = New-Object KeePassLib.Security.ProtectedString($true , "Title")
$pass = New-Object KeePassLib.Security.ProtectedString($true , "Password")
$user = New-Object KeePassLib.Security.ProtectedString($true , "UserName")
	
$ent.Strings.Set("Title",$title)
$ent.Strings.Set("Password",$pass)
$ent.Strings.Set("UserName",$user)
	
$general.AddEntry($ent,1)
$PwDatabase.Save($IStatusLogger)
Это сообщение посчитали полезным следующие участники:

Отправлено: 09:23, 29-12-2014 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 24
Благодарности: 0

Профиль | Сайт | Отправить PM | Цитировать


Работает))))) Казун вы БОГ повершелла... Как вы это сделали?
http://keepassps.codeplex.com/ может добавите сюда?

Отправлено: 12:02, 29-12-2014 | #3



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » PowerShell - [решено] KEEPASS из powershell

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
PowerShell - PowerShell: импорт данных в AD из файла Perersmeshnik Скриптовые языки администрирования Windows 2 20-02-2014 09:44
CMD/BAT - [решено] Вызов функции из скрипта powershell ferget Программирование и базы данных 0 03-06-2011 03:33
KeePass Password Safe 2.11 OSZone Software Новости программного обеспечения 0 03-07-2010 21:30
2008 R2 - Удалённое подключение к Серверу из под PowerShell dergraff Windows Server 2008/2008 R2 5 13-06-2010 21:47
KeePass Password Safe Portable 2.10 OSZone Software Новости программного обеспечения 0 06-03-2010 00:30




 
Переход