mirror of
https://github.com/NetSPI/PowerHuntShares.git
synced 2025-06-30 06:28:43 +02:00
Add files via upload
This commit is contained in:
99
Scripts/ConfigParsers/parser-tnsnames.ora.ps1
Normal file
99
Scripts/ConfigParsers/parser-tnsnames.ora.ps1
Normal file
@ -0,0 +1,99 @@
|
||||
# Author: Scott Sutherland, NetSPI (@_nullbind / nullbind)
|
||||
|
||||
function Extract-OracleCredentials {
|
||||
param(
|
||||
[string]$FilePath
|
||||
)
|
||||
|
||||
if (-Not (Test-Path -Path $FilePath)) {
|
||||
Write-Error "File path does not exist: $FilePath"
|
||||
return
|
||||
}
|
||||
|
||||
# Initialize an empty array to store the results
|
||||
$credentialsList = @()
|
||||
|
||||
# Read the file contents
|
||||
$fileContent = Get-Content -Path $FilePath
|
||||
|
||||
# Initialize variables to store temporary values
|
||||
$currentDatabase = $null
|
||||
$currentUser = $null
|
||||
$currentPassword = $null
|
||||
|
||||
foreach ($line in $fileContent) {
|
||||
# Trim the line for easier processing
|
||||
$line = $line.Trim()
|
||||
|
||||
# Match a database name (lines that don't start with a '(' and end with '=')
|
||||
if ($line -match '^\w+\s*=\s*$') {
|
||||
if ($currentDatabase -and $currentUser -and $currentPassword) {
|
||||
# Store the previous credentials
|
||||
$credentialsList += [pscustomobject]@{
|
||||
Database = $currentDatabase
|
||||
User = $currentUser
|
||||
Password = $currentPassword
|
||||
}
|
||||
}
|
||||
|
||||
# Reset the user and password for the next database entry
|
||||
$currentDatabase = $line -replace '\s*=\s*$', '' # Remove the equals sign
|
||||
$currentUser = $null
|
||||
$currentPassword = $null
|
||||
}
|
||||
|
||||
# Match the USER line
|
||||
if ($line -match 'USER\s*=\s*(.+)$') {
|
||||
$currentUser = $matches[1]
|
||||
}
|
||||
|
||||
# Match the PASSWORD line
|
||||
if ($line -match 'PASSWORD\s*=\s*(.+)$') {
|
||||
$currentPassword = $matches[1]
|
||||
}
|
||||
}
|
||||
|
||||
# Capture the last set of credentials
|
||||
if ($currentDatabase -and $currentUser -and $currentPassword) {
|
||||
$credentialsList += [pscustomobject]@{
|
||||
Database = $currentDatabase
|
||||
User = $currentUser
|
||||
Password = $currentPassword
|
||||
}
|
||||
}
|
||||
|
||||
# Output the results as a list of objects
|
||||
return $credentialsList
|
||||
}
|
||||
|
||||
# Example usage:
|
||||
$result = Extract-OracleCredentials -FilePath "c:\temp\configs\tnsnames.ora"
|
||||
$result | Format-Table
|
||||
|
||||
|
||||
|
||||
<# tnsnames.ora - oracle
|
||||
|
||||
MYDB =
|
||||
(DESCRIPTION =
|
||||
(ADDRESS = (PROTOCOL = TCP)(HOST = mydbserver.example.com)(PORT = 1521))
|
||||
(CONNECT_DATA =
|
||||
(SERVICE_NAME = mydbservice)
|
||||
)
|
||||
)
|
||||
(USER = myusername)
|
||||
(PASSWORD = mypassword)
|
||||
|
||||
MYDB_ALIAS =
|
||||
(DESCRIPTION =
|
||||
(ADDRESS_LIST =
|
||||
(ADDRESS = (PROTOCOL = TCP)(HOST = mydbserver.example.com)(PORT = 1521))
|
||||
)
|
||||
(CONNECT_DATA =
|
||||
(SERVICE_NAME = mydbservice)
|
||||
)
|
||||
)
|
||||
(USER = anotheruser)
|
||||
(PASSWORD = anotherpassword)
|
||||
|
||||
#>
|
Reference in New Issue
Block a user