mirror of
https://github.com/NetSPI/PowerHuntShares.git
synced 2025-05-04 19:28:42 +02:00
Create parser-remmina.ps1
This commit is contained in:
parent
81c28662f0
commit
e0e475745c
152
Scripts/ConfigParsers/parser-remmina.ps1
Normal file
152
Scripts/ConfigParsers/parser-remmina.ps1
Normal file
@ -0,0 +1,152 @@
|
|||||||
|
|
||||||
|
# Author: Scott Sutherland, NetSPI (@_nullbind / nullbind)
|
||||||
|
# Intended input: .remmina file
|
||||||
|
function Get-PwRemmina {
|
||||||
|
param (
|
||||||
|
[string]$ComputerName = $null,
|
||||||
|
[string]$ShareName = $null,
|
||||||
|
[string]$UncFilePath = $null,
|
||||||
|
[string]$FileName = $null,
|
||||||
|
[string]$FilePath # Required
|
||||||
|
)
|
||||||
|
|
||||||
|
# Array to hold individual records
|
||||||
|
$outputArray = @()
|
||||||
|
|
||||||
|
# Check if the file exists
|
||||||
|
if (-not (Test-Path -Path $FilePath)) {
|
||||||
|
Write-Host "File not found at path: $FilePath"
|
||||||
|
return $outputArray
|
||||||
|
}
|
||||||
|
|
||||||
|
# Read the file content and parse for each protocol setting
|
||||||
|
$fileContent = Get-Content -Path $FilePath
|
||||||
|
|
||||||
|
# Initialize variables for each record type
|
||||||
|
$vncSettings = @{
|
||||||
|
ComputerName = $ComputerName
|
||||||
|
ShareName = $ShareName
|
||||||
|
UncFilePath = $UncFilePath
|
||||||
|
FileName = $FileName
|
||||||
|
Section = "NA"
|
||||||
|
ObjectName = "VNC"
|
||||||
|
TargetURL = "NA"
|
||||||
|
TargetServer = "NA"
|
||||||
|
TargetPort = "NA"
|
||||||
|
Database = "NA"
|
||||||
|
Domain = "NA"
|
||||||
|
Username = "NA"
|
||||||
|
Password = "NA"
|
||||||
|
PasswordEnc = "NA"
|
||||||
|
KeyFilePath = "NA"
|
||||||
|
}
|
||||||
|
|
||||||
|
$sshSettings = @{
|
||||||
|
ComputerName = $ComputerName
|
||||||
|
ShareName = $ShareName
|
||||||
|
UncFilePath = $UncFilePath
|
||||||
|
FileName = $FileName
|
||||||
|
Section = "NA"
|
||||||
|
ObjectName = "SSH"
|
||||||
|
TargetURL = "NA"
|
||||||
|
TargetServer = "NA"
|
||||||
|
TargetPort = "NA"
|
||||||
|
Database = "NA"
|
||||||
|
Domain = "NA"
|
||||||
|
Username = "NA"
|
||||||
|
Password = "NA"
|
||||||
|
PasswordEnc = "NA"
|
||||||
|
KeyFilePath = "NA"
|
||||||
|
}
|
||||||
|
|
||||||
|
# Parse each line and fill in the appropriate settings
|
||||||
|
foreach ($line in $fileContent) {
|
||||||
|
if ($line -match "^protocol=(.+)") {
|
||||||
|
$protocol = $matches[1].Trim()
|
||||||
|
if ($protocol -eq "VNC") {
|
||||||
|
$vncSettings["ObjectName"] = "VNC"
|
||||||
|
} elseif ($protocol -eq "SSH") {
|
||||||
|
$sshSettings["ObjectName"] = "SSH"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
elseif ($line -match "^server=(.+)") {
|
||||||
|
$vncSettings["TargetServer"] = $matches[1].Trim()
|
||||||
|
} elseif ($line -match "^listenport=(\d+)") {
|
||||||
|
$vncSettings["TargetPort"] = $matches[1].Trim()
|
||||||
|
} elseif ($line -match "^username=(.+)") {
|
||||||
|
$vncSettings["Username"] = $matches[1].Trim()
|
||||||
|
} elseif ($line -match "^password=(.+)") {
|
||||||
|
$vncSettings["Password"] = $matches[1].Trim()
|
||||||
|
}
|
||||||
|
elseif ($line -match "^ssh_server=(.+)") {
|
||||||
|
$sshSettings["TargetServer"] = $matches[1].Trim()
|
||||||
|
} elseif ($line -match "^ssh_username=(.+)") {
|
||||||
|
$sshSettings["Username"] = $matches[1].Trim()
|
||||||
|
} elseif ($line -match "^ssh_privatekey=(.+)") {
|
||||||
|
$sshSettings["KeyFilePath"] = $matches[1].Trim()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
# Add each filled record to the output array
|
||||||
|
$outputArray += [PSCustomObject]$vncSettings
|
||||||
|
$outputArray += [PSCustomObject]$sshSettings
|
||||||
|
|
||||||
|
# Return the array of records
|
||||||
|
return $outputArray
|
||||||
|
}
|
||||||
|
|
||||||
|
# Example command
|
||||||
|
# Get-PwRemmina -ComputerName "MyComputer" -ShareName "MyShare" -UncFilePath "\\MyComputer\MyShare\.remmina" -FileName ".remmina" -FilePath "C:\temp\.remmina"
|
||||||
|
|
||||||
|
<# .remmina example config
|
||||||
|
|
||||||
|
[remmina]
|
||||||
|
name=myvnc
|
||||||
|
group=RemoteServers ; Group label for organization, such as "RemoteServers"
|
||||||
|
server=192.168.1.10
|
||||||
|
protocol=VNC
|
||||||
|
username=myusername
|
||||||
|
password=mysecretpassword ; Avoid storing passwords in cleartext; keyring storage is recommended
|
||||||
|
domain=demo.com
|
||||||
|
clientname= ; Leave empty to use the default client name
|
||||||
|
|
||||||
|
# Display settings
|
||||||
|
resolution=AUTO ; Use AUTO for adaptive resolution
|
||||||
|
keymap=default ; Default keymap for the connection
|
||||||
|
gkeymap= ; Global keymap if different from the default
|
||||||
|
colordepth=16 ; Color depth setting
|
||||||
|
quality=9 ; Set connection quality, 0 to 9 (9 = best quality)
|
||||||
|
viewmode=1 ; Set view mode: 1 for full screen, 4 for windowed
|
||||||
|
|
||||||
|
# Connection and scaling
|
||||||
|
listenport=5500 ; Port Remmina listens on for reverse connections
|
||||||
|
hscale=100 ; Horizontal scale in percent, e.g., 100% = no scaling
|
||||||
|
vscale=100 ; Vertical scale in percent, e.g., 100% = no scaling
|
||||||
|
bitmapcaching=false ; Bitmap caching to improve speed at cost of memory
|
||||||
|
compression=true ; Enable compression to improve speed (especially on slower networks)
|
||||||
|
showcursor=true ; Show remote cursor in VNC sessions
|
||||||
|
viewonly=false ; Set true for view-only mode (no interaction)
|
||||||
|
console=false ; Use this as a console session
|
||||||
|
disableserverinput=false ; Allow server to receive input events
|
||||||
|
aspectscale=false ; Maintain aspect ratio while scaling
|
||||||
|
|
||||||
|
# Advanced features
|
||||||
|
shareprinter=false ; Set to true to share printers
|
||||||
|
once=false ; Connect only once if true
|
||||||
|
|
||||||
|
# SSH tunneling settings
|
||||||
|
ssh_enabled=true ; Enable SSH tunneling
|
||||||
|
ssh_server=192.168.1.20 ; SSH server address for tunneling
|
||||||
|
ssh_auth=1 ; SSH authentication method (1 = private key, 0 = password)
|
||||||
|
ssh_username=sshuser ; SSH username for tunneling
|
||||||
|
ssh_privatekey=/home/user/.ssh/id_rsa ; Path to SSH private key (if using key-based auth)
|
||||||
|
ssh_charset=UTF-8 ; Character set for SSH if necessary
|
||||||
|
|
||||||
|
# Window settings
|
||||||
|
scale=false ; Auto scale window to screen resolution
|
||||||
|
keyboard_grab=false ; Allow keyboard grabbing for shortcuts
|
||||||
|
window_width=1024 ; Window width in pixels
|
||||||
|
window_height=808 ; Window height in pixels
|
||||||
|
window_maximize=false ; Start maximized if true
|
||||||
|
toolbar_opacity=0 ; Opacity of the toolbar when visible (0 = transparent)
|
||||||
|
#>
|
Loading…
x
Reference in New Issue
Block a user