mirror of
https://github.com/NetSPI/PowerHuntShares.git
synced 2025-06-29 06:08:43 +02:00
Add files via upload
This commit is contained in:
74
Scripts/ConfigParsers/parser-.pgpass.ps1
Normal file
74
Scripts/ConfigParsers/parser-.pgpass.ps1
Normal file
@ -0,0 +1,74 @@
|
||||
# Author: Scott Sutherland, NetSPI (@_nullbind / nullbind)
|
||||
|
||||
function Get-PgPassCredentials {
|
||||
param (
|
||||
[Parameter(Mandatory = $true)]
|
||||
[string]$FilePath
|
||||
)
|
||||
|
||||
# Ensure the file exists
|
||||
if (-Not (Test-Path $FilePath)) {
|
||||
Write-Error "File not found: $FilePath"
|
||||
return
|
||||
}
|
||||
|
||||
# Read the .pgpass file
|
||||
$pgpassEntries = Get-Content -Path $FilePath
|
||||
|
||||
# Array to store the extracted credentials
|
||||
$credentialsList = @()
|
||||
|
||||
# Loop through each line in the .pgpass file
|
||||
foreach ($entry in $pgpassEntries) {
|
||||
# Skip comments and empty lines
|
||||
if ($entry -match '^\s*#' -or $entry -match '^\s*$') {
|
||||
continue
|
||||
}
|
||||
|
||||
# Split the line by colon, expecting the format: hostname:port:database:username:password
|
||||
$fields = $entry -split ':'
|
||||
|
||||
if ($fields.Length -eq 5) {
|
||||
# Create a custom object for each entry
|
||||
$credential = [PSCustomObject]@{
|
||||
Hostname = $fields[0]
|
||||
Port = $fields[1]
|
||||
Database = $fields[2]
|
||||
Username = $fields[3]
|
||||
Password = $fields[4]
|
||||
}
|
||||
|
||||
# Add the credential object to the list
|
||||
$credentialsList += $credential
|
||||
}
|
||||
else {
|
||||
Write-Warning "Invalid format in entry: $entry"
|
||||
}
|
||||
}
|
||||
|
||||
# Output the results as a PowerShell object
|
||||
return $credentialsList
|
||||
}
|
||||
|
||||
# Example usage:
|
||||
$pgpassCredentials = Get-PgPassCredentials -FilePath "c:\temp\configs\.pgpass"
|
||||
$pgpassCredentials
|
||||
|
||||
<# .pgpass file - used for postgres
|
||||
|
||||
# Format: hostname:port:database:username:password
|
||||
|
||||
# Local database connection
|
||||
localhost:5432:mydatabase:myuser:mypassword
|
||||
|
||||
# Remote database connection
|
||||
remote.server.com:5432:anotherdb:anotheruser:anotherpassword
|
||||
|
||||
# Default connection for any database on localhost
|
||||
localhost:*:*:defaultuser:defaultpassword
|
||||
|
||||
# Wildcard example: Any database and any user connecting to localhost
|
||||
localhost:*:*:*:supersecretpassword
|
||||
|
||||
|
||||
#>
|
Reference in New Issue
Block a user