Har du nogle gange ønsket at kunne skjule din PowerShell kode fra andre? Det kan du med PS Protector. Nemt og hurtigt er din kode kompilet.
Når man udvikler et modul i PowerShell, bør løsningen (så vidt muligt) frigives som open-source. Microsoft gør selv en stor indsats i at udvikle og dele deres PowerShell moduler til os IT-professionelle.
Nogle gange kan det være nødvendigt at slører koden i dit PowerShell modul. Dette kan være nødvendigt hvis du f.eks. sælger din kode videre til betalende kunder, eller koden kun er beregnet til internt brug og andre ikke skal få fingrene i det.
Fordi PowerShell er beregnet til at være et open-source sprog, er der ingen indbygget funktioner til at skjule eller konvertere din kode så den skjules eller beskyttes. Det er her PS Protector kommer til undsætning!
PS Protector er et værktøj der gør det nemt at konvertere dit PowerShell modul (.psm) til en DLL-fil (dynamic-link library assembly). Programmet er udviklet af den schweiziske udvikler Stefan Soller. Lad os komme igang med at bruge værktøjet!
Lad os begynde med at lave en simpel PowerShell funktion som vi kan bruge som eksempel. Følgende funktion returnere hvornår en computer sidst blev tændt (last boot up time).
Function Get-LastBootUpTime
{
$LastBootUpTime = Get-CimInstance -ClassName win32_operatingsystem;
Return [datetime]($LastBootUpTime.LastBootUpTime);
}
Export-ModuleMember -Function *
Overstående PowerShell kode gemmer vi i filen “MyPowerShellModule.psm1” på skrivebordet.
PS Protector koster pt. 49€ (euro) pr. år, i denne guide bruger vi prøveprogrammet. Begrænsningen i prøveprogrammet er at PowerShell modulet ikke må være på mere end 200 tegn.
Hent programmet her. Programmet fylder i alt 350 KB, og består af 2 filer:
Placer disse filer et sted på din computer (i dette tilfælde på skrivebordet), og åben “PS Protector.exe“.
Når programmet først åbnes, bliver du bedt om at indtaste et “UserID” og et “Password“. Da vi bruger prøveprogrammet har Stefan Soller (udvikleren) lavet en test bruger og nøgle.
Skriv overstående UserID og Password, tryk herefter “Login“.
Nu er det tid til at beskytte vores test modul. Efter du er logget ind i PS Protector (se overstående), skal vi udfylde informationen i “Output Settings” fanen.
Der er også mulighed for at udnytte PS Protectors kommando linje interface, så vi kan automatisere beskyttelsen af vores PowerShell moduler. Det kommer vi dog ikke ind på i denne omgang.
Under fanen “License Settings” kan vi sætte en udløbs dato på .DLL-filen. Når denne dato bliver overskrevet, vil det ikke længere være muligt at bruge den kompilerede .DLL-fil.
Sæt hak i “Enable Licensing” samt “Enable Expire Date“, skriv dit navn i “Registered to (Company or User)” og sæt en dato i fremtiden.
Tilbage på fanen “Output Settings” er vi nu klar til at beskytte vores PowerShell modul. Tryk på “Protect (F7)“.
Åben en PowerShell terminal og kør følgende kommando. Kommandoen vil importere dit PowerShell modul via din .DLL-fil. Husk at ændre stien til hvor PS Protector placerede din beskyttede .DLL-fil.
Import-Module "C:\Users\zwable\Desktop\MyPowerShellModule.dll";
Nu kan vi prøve og eksekvere PowerShell funktionen “Get-LastBootUpTime” som er placeret i modulet via .DLL-filen. Kør følgende i samme kommando i samme terminal som overstående.
Get-LastBootUpTime;
Dette burde returnere en dato og et tidspunkt på hvornår computeren sidst blev startet.
I følge PS Protector er .DLL-filen beskyttet med den højeste kryptering, og kan beskytte mod .NET decompilers såsom Jetbrains dotPeek eller Redgate .NET Reflector.
PS Protector bruger kode beskyttelse og sløring i form af:
Man skal dog ikke se denne som 100% sikker. Der findes helt sikkert avancerede værktøjer eller højt kvalificerede personer som kan bryde denne beskyttelse.
PS Protector er simpelt og virker efter hensigten. Jeg ser værktøjet som et godt match for firmaer, hvis forretningsmodel, kræver at kildekoden beskyttes. PowerShell virker efterhånden på flere platforme (macOS, Linux og Windows), jeg så gerne at PS Protector tog disse overvejelser med i deres produkt, så de udnyttede .NET Core (PowerShell 6+) frameworket.
Giv PS Protector en prøvetur. Softwaren har en konkurrencedygtig pris, og så slipper du selv for en større udvikling i C# eller lign. programmerings sprog.