0% found this document useful (0 votes)
59 views2 pages

PowerShell Script for MAS Activation

The document provides instructions for using a new command to retrieve a script from a specified URL, replacing an older command that will be retired. It includes checks for third-party antivirus interference, script integrity verification, and potential issues with CMD due to Autorun registry settings. Additionally, it outlines the creation and execution of a temporary script file while ensuring proper cleanup afterwards.

Uploaded by

brenovendasof2
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
59 views2 pages

PowerShell Script for MAS Activation

The document provides instructions for using a new command to retrieve a script from a specified URL, replacing an older command that will be retired. It includes checks for third-party antivirus interference, script integrity verification, and potential issues with CMD due to Autorun registry settings. Additionally, it outlines the creation and execution of a temporary script file while ensuring proper cleanup afterwards.

Uploaded by

brenovendasof2
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 2

# Check massgrave.

dev for more details

write-host
Write-Host "The current command (irm https://massgrave.dev/get | iex) will be
retired in the future."
Write-Host -ForegroundColor Green "Use the new command (irm
https://get.activated.win | iex) moving forward."
write-host

if ($ExecutionContext.SessionState.LanguageMode.value__ -ne 0) {
$ExecutionContext.SessionState.LanguageMode
Write-Host "Windows PowerShell is not running in Full Language Mode."
Write-Host "Help - https://massgrave.dev/fix_powershell" -ForegroundColor White
-BackgroundColor Blue
return
}

function Check3rdAV {
$avList = Get-CimInstance -Namespace root\SecurityCenter2 -Class
AntiVirusProduct | Where-Object { $_.displayName -notlike '*windows*' } | Select-
Object -ExpandProperty displayName
if ($avList) {
Write-Host '3rd party Antivirus might be blocking the script - ' -
ForegroundColor White -BackgroundColor Blue -NoNewline
Write-Host " $($avList -join ', ')" -ForegroundColor DarkRed -
BackgroundColor White
}
}

function CheckFile {
param ([string]$FilePath)
if (-not (Test-Path $FilePath)) {
Check3rdAV
Write-Host "Failed to create MAS file in temp folder, aborting!"
Write-Host "Help - https://massgrave.dev/troubleshoot" -ForegroundColor
White -BackgroundColor Blue
throw
}
}

[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
$URLs = @(
'https://raw.githubusercontent.com/massgravel/Microsoft-Activation-Scripts/
37ec96504a2983a5801c43e975ab78c8f9315d2a/MAS/All-In-One-Version-KL/MAS_AIO.cmd',
'https://dev.azure.com/massgrave/Microsoft-Activation-Scripts/_apis/git/
repositories/Microsoft-Activation-Scripts/items?path=/MAS/All-In-One-Version-KL/
MAS_AIO.cmd&versionType=Commit&version=37ec96504a2983a5801c43e975ab78c8f9315d2a',
'https://git.activated.win/massgrave/Microsoft-Activation-Scripts/raw/commit/
37ec96504a2983a5801c43e975ab78c8f9315d2a/MAS/All-In-One-Version-KL/MAS_AIO.cmd'
)

foreach ($URL in $URLs | Sort-Object { Get-Random }) {


try { $response = Invoke-WebRequest -Uri $URL -UseBasicParsing; break } catch
{}
}

if (-not $response) {
Check3rdAV
Write-Host "Failed to retrieve MAS from any of the available repositories,
aborting!"
Write-Host "Help - https://massgrave.dev/troubleshoot" -ForegroundColor White -
BackgroundColor Blue
return
}

# Verify script integrity


$releaseHash = '49CE81C583C69AC739890D2DFBB908BDD67B862702DAAEBCD2D38F1DDCEE863D'
$stream = New-Object IO.MemoryStream
$writer = New-Object IO.StreamWriter $stream
$writer.Write($response)
$writer.Flush()
$stream.Position = 0
$hash =
[BitConverter]::ToString([Security.Cryptography.SHA256]::Create().ComputeHash($stre
am)) -replace '-'
if ($hash -ne $releaseHash) {
Write-Warning "Hash ($hash) mismatch, aborting!`nReport this issue at
https://massgrave.dev/troubleshoot"
$response = $null
return
}

# Check for AutoRun registry which may create issues with CMD
$paths = "HKCU:\SOFTWARE\Microsoft\Command Processor", "HKLM:\SOFTWARE\Microsoft\
Command Processor"
foreach ($path in $paths) {
if (Get-ItemProperty -Path $path -Name "Autorun" -ErrorAction SilentlyContinue)
{
Write-Warning "Autorun registry found, CMD may crash! `nManually copy-paste
the below command to fix...`nRemove-ItemProperty -Path '$path' -Name 'Autorun'"
}
}

$rand = [Guid]::NewGuid().Guid
$isAdmin = [bool]([Security.Principal.WindowsIdentity]::GetCurrent().Groups -match
'S-1-5-32-544')
$FilePath = if ($isAdmin) { "$env:SystemRoot\Temp\MAS_$rand.cmd" } else
{ "$env:USERPROFILE\AppData\Local\Temp\MAS_$rand.cmd" }
Set-Content -Path $FilePath -Value "@::: $rand `r`n$response"
CheckFile $FilePath

$env:ComSpec = "$env:SystemRoot\system32\cmd.exe"
Start-Process -FilePath $env:ComSpec -ArgumentList "/c """"$FilePath"" $args""" -
Wait
CheckFile $FilePath

$FilePaths = @("$env:SystemRoot\Temp\MAS*.cmd", "$env:USERPROFILE\AppData\Local\


Temp\MAS*.cmd")
foreach ($FilePath in $FilePaths) { Get-Item $FilePath | Remove-Item }

You might also like