PowerHuntShares/Scripts/ConfigParsers/parser-bootstrap.ini.ps1
2024-09-23 10:35:53 -05:00

80 lines
1.9 KiB
PowerShell

# Author: Scott Sutherland, NetSPI (@_nullbind / nullbind)
function Get-BootstrapConfig {
param (
[string]$FilePath
)
# Read all lines from the provided file path
$iniContent = Get-Content -Path $FilePath
# Initialize a hash table to store key-value pairs
$fields = @{
Username = $null
Password = $null
Public = $null
Private = $null
Key = $null
Secret = $null
}
# Loop through each line and look for the required fields
foreach ($line in $iniContent) {
if ($line -match 'username\s*=\s*(.*)') {
$fields['Username'] = $matches[1].Trim()
}
if ($line -match 'password\s*=\s*(.*)') {
$fields['Password'] = $matches[1].Trim()
}
if ($line -match 'public\s*=\s*(.*)') {
$fields['Public'] = $matches[1].Trim()
}
if ($line -match 'private\s*=\s*(.*)') {
$fields['Private'] = $matches[1].Trim()
}
if ($line -match 'key\s*=\s*(.*)') {
$fields['Key'] = $matches[1].Trim()
}
if ($line -match 'secret\s*=\s*(.*)') {
$fields['Secret'] = $matches[1].Trim()
}
}
# Convert the hash table into a custom PowerShell object
$configObject = [PSCustomObject]$fields
# Output the custom object
return $configObject
}
# Example call using the example file path
$bootstrapIniPath = "c:\temp\configs\bootstrap.ini"
$config = Get-BootstrapConfig -FilePath $bootstrapIniPath
# Output the result
$config
<# bootstrap.ini
[GeneralSettings]
username=adminUser
password=P@ssw0rd123
timeout=30
loglevel=info
public=public
private=mysecret
secret=mysecret
key=mykey
[DatabaseSettings]
db_name=my_database
db_host=localhost
db_port=3306
[NetworkSettings]
protocol=http
port=8080
#>