mirror of
https://github.com/NetSPI/PowerHuntShares.git
synced 2025-05-04 19:28:42 +02:00
80 lines
1.9 KiB
PowerShell
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
|
|
|
|
#>
|