In alcuni contesti, per passare "inosservati" e superare restrizioni e controlli, può essere utile trasformare temporaneamente un file eseguibile in un innocuo file di testo per poi eseguire l'operazione inversa in un secondo momento. Tale conversione può essere eseguita tramite un semplice script PowerShell.
La conversione può essere effettuata con poche righe di codice come quelle mostrate di seguito
[CmdletBinding()] Param(
[Parameter(Position = 0, Mandatory = $True)]
[String]
$FileEXE,
[Parameter(Position = 1, Mandatory = $False)]
[String]
$FileTXT = "$pwd\EseguibileConvertito.txt"
)
[byte[]] $dump = Get-Content -encoding byte -path "$FileEXE" -ReadCount 0
[System.IO.File]::WriteAllLines($FileTXT, ([string]$dump))
Write-Output "Il file e' stato convertito in $FileTXT"
Innanzitutto andiamo a caricare i parametri passati durante la chiamata dello script. Nella variabile $FileEXE andiamo a caricare il primo parametro passato, obbligatorio, che corrisponde al file eseguibile da convertire.
Il secondo parametro, facoltativo, verrà caricato nella variabile $FileTXT e rappresenta il nome del file di testo in cui verrà salvata la conversione. Nel caso in cui tale parametro non venisse specificato, il file di testo verrà creato nel percorso corrente ($pwd) e gli verrà assegnato il nome EseguibileConvertito.txt.
Le due istruzioni più interessanti sono
[byte[]] $dump = Get-Content -encoding byte -path "$FileEXE" -ReadCount 0
[System.IO.File]::WriteAllLines($FileTXT, ([string]$dump))
Con la prima, attraverso il cmdlet Get-Content e il parametro -encoding byte, andiamo a caricare tutti i byte che compongono il file eseguibile in un array di byte. Il parametro -ReadCount 0 permette di leggere tutto il contenuto del file eseguibile in una singola operazione.
Nell'istruzione successiva i byte vengono trasformati in testo per essere scritti all'interno del file di output. Il file di output avrà una dimensione superiore a quella del file eseguibile di partenza.
Dal seguente link è possibile scaricare lo script Exe2Txt.ps1
|
FIG 1 - Script PowerShell Exe2Txt.ps1 |