Merging WizardKit PE into main project
This commit is contained in:
commit
ef9775273c
25 changed files with 6670 additions and 0 deletions
603
FAKE_PE_ROOT/.bin/Scripts/build_pe.ps1
Normal file
603
FAKE_PE_ROOT/.bin/Scripts/build_pe.ps1
Normal file
|
|
@ -0,0 +1,603 @@
|
|||
# Wizard Kit: Windows PE Build Tool
|
||||
|
||||
## Init ##
|
||||
#Requires -Version 3.0
|
||||
#Requires -RunAsAdministrator
|
||||
if (Test-Path Env:\DEBUG) {
|
||||
Set-PSDebug -Trace 1
|
||||
}
|
||||
$Host.UI.RawUI.WindowTitle = "Wizard Kit: Windows PE Build Tool"
|
||||
$WD = $(Split-Path $MyInvocation.MyCommand.Path)
|
||||
$Bin = (Get-Item $WD -Force).Parent.FullName
|
||||
$Root = (Get-Item $Bin -Force).Parent.FullName
|
||||
$Build = "$Root\BUILD"
|
||||
$LogDir = "$Build\Logs"
|
||||
$Temp = "$Build\Temp"
|
||||
$Date = Get-Date -UFormat "%Y-%m-%d"
|
||||
$Host.UI.RawUI.BackgroundColor = "Black"
|
||||
$Host.UI.RawUI.ForegroundColor = "White"
|
||||
$HostSystem32 = "{0}\System32" -f $Env:SystemRoot
|
||||
$DISM = "{0}\DISM.exe" -f $Env:DISMRoot
|
||||
|
||||
## Functions ##
|
||||
function Ask-User ($text = "Kotaero") {
|
||||
$text += " [Y/N]"
|
||||
while ($true) {
|
||||
$answer = read-host $text
|
||||
if ($answer -imatch "^(y|yes)$") {
|
||||
$answer = $true
|
||||
break
|
||||
} elseif ($answer -imatch "^(n|no|nope)$") {
|
||||
$answer = $false
|
||||
break
|
||||
}
|
||||
}
|
||||
$answer
|
||||
}
|
||||
function Abort {
|
||||
Write-Host -ForegroundColor "Red" "`nAborted."
|
||||
WKPause "Press Enter to exit... "
|
||||
exit
|
||||
}
|
||||
function MakeClean {
|
||||
$Folders = @(
|
||||
"$Build\Mount",
|
||||
"$Build\PEFiles")
|
||||
$Clean = $false
|
||||
foreach ($f in $Folders) {
|
||||
if (Test-Path $f) {
|
||||
Write-Host -ForegroundColor "Yellow" ("Found: {0}" -f $f)
|
||||
$Clean = $true
|
||||
}
|
||||
}
|
||||
if (($Clean) -and (Ask-User "Delete the above folder(s)?")) {
|
||||
foreach ($f in $Folders) {
|
||||
if (Test-Path $f) {
|
||||
Remove-Item -Path $f -Recurse -Force
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
function DownloadFile ($Path, $Name, $Url) {
|
||||
$OutFile = "{0}\{1}" -f $Path, $Name
|
||||
|
||||
Write-Host ("Downloading: $Name")
|
||||
New-Item -Type Directory $Path 2>&1 | Out-Null
|
||||
try {
|
||||
Invoke-WebRequest -Uri $Url -OutFile $OutFile
|
||||
}
|
||||
catch {
|
||||
Write-Host (" ERROR: Failed to download file." ) -ForegroundColor "Red"
|
||||
$DownloadErrors += 1
|
||||
}
|
||||
}
|
||||
function FindDynamicUrl ($SourcePage, $RegEx) {
|
||||
# Get source page
|
||||
Invoke-Webrequest -Uri $SourcePage -OutFile "tmp_page"
|
||||
|
||||
# Search for real url
|
||||
$Url = Get-Content "tmp_page" | Where-Object {$_ -imatch $RegEx}
|
||||
$Url = $Url -ireplace '.*(a |)href="([^"]+)".*', '$2'
|
||||
$Url = $Url -ireplace ".*(a |)href='([^']+)'.*", '$2'
|
||||
|
||||
# Remove tmp_page
|
||||
Remove-Item "tmp_page"
|
||||
|
||||
$Url | Select-Object -First 1
|
||||
}
|
||||
function WKPause ($Message = "Press Enter to continue... ") {
|
||||
Write-Host $Message -NoNewLine
|
||||
Read-Host
|
||||
}
|
||||
|
||||
## PowerShell equivalent of Python's "if __name__ == '__main__'"
|
||||
# Code based on StackOverflow comments
|
||||
# Question: https://stackoverflow.com/q/4693947
|
||||
# Using answer: https://stackoverflow.com/a/5582692
|
||||
# Asked by: https://stackoverflow.com/users/65164/mark-mascolino
|
||||
# Answer by: https://stackoverflow.com/users/696808/bacon-bits
|
||||
if ($MyInvocation.InvocationName -ne ".") {
|
||||
Clear-Host
|
||||
Write-Host "Wizard Kit: Windows PE Build Tool`n`n`n`n`n"
|
||||
|
||||
## Prep ##
|
||||
try {
|
||||
Import-Module -Name $Env:DISMRoot -ErrorAction "stop"
|
||||
}
|
||||
catch {
|
||||
Write-Host -ForegroundColor "Red" "ERROR: Failed to load DISM CmdLet"
|
||||
Abort
|
||||
}
|
||||
Push-Location "$WD"
|
||||
MakeClean
|
||||
New-Item -Type Directory $LogDir 2>&1 | Out-Null
|
||||
|
||||
if (Ask-User "Update Tools?") {
|
||||
$DownloadErrors = 0
|
||||
|
||||
## Download Tools ##
|
||||
$ToolSources = @(
|
||||
# 7-Zip
|
||||
@("7z-installer.msi", "http://www.7-zip.org/a/7z1701.msi"),
|
||||
@("7z-extra.7z", "http://www.7-zip.org/a/7z1701-extra.7z"),
|
||||
# Blue Screen View
|
||||
@("bluescreenview64.zip", "http://www.nirsoft.net/utils/bluescreenview-x64.zip"),
|
||||
@("bluescreenview32.zip", "http://www.nirsoft.net/utils/bluescreenview.zip"),
|
||||
# ConEmu
|
||||
@("ConEmuPack.7z", "https://github.com/Maximus5/ConEmu/releases/download/v17.11.09/ConEmuPack.171109.7z"),
|
||||
# Fast Copy
|
||||
@("fastcopy64.zip", "http://ftp.vector.co.jp/69/28/2323/FastCopy332_x64.zip"),
|
||||
@("fastcopy32.zip", "http://ftp.vector.co.jp/69/28/2323/FastCopy332.zip"),
|
||||
# HWiNFO
|
||||
@("hwinfo64.zip", "http://app.oldfoss.com:81/download/HWiNFO/hw64_560.zip"),
|
||||
@("hwinfo32.zip", "http://app.oldfoss.com:81/download/HWiNFO/hw32_560.zip"),
|
||||
# Killer Network Drivers
|
||||
@(
|
||||
"killerinf.zip",
|
||||
("http://www.killernetworking.com"+(FindDynamicUrl "http://www.killernetworking.com/driver-downloads/item/killer-drivers-inf" "Download Killer-Ethernet").replace('&', '&'))
|
||||
),
|
||||
# Notepad++
|
||||
@("npp_amd64.7z", "https://notepad-plus-plus.org/repository/7.x/7.5.2/npp.7.5.2.bin.minimalist.x64.7z"),
|
||||
@("npp_x86.7z", "https://notepad-plus-plus.org/repository/7.x/7.5.2/npp.7.5.2.bin.minimalist.7z"),
|
||||
# NT Password Editor
|
||||
@("ntpwed.zip", "http://cdslow.org.ru/files/ntpwedit/ntpwed07.zip"),
|
||||
# Prime95
|
||||
@("prime95_64.zip", "http://www.mersenne.org/ftp_root/gimps/p95v294b5.win64.zip"),
|
||||
@("prime95_32.zip", "http://www.mersenne.org/ftp_root/gimps/p95v294b5.win32.zip"),
|
||||
# ProduKey
|
||||
@("produkey64.zip", "http://www.nirsoft.net/utils/produkey-x64.zip"),
|
||||
@("produkey32.zip", "http://www.nirsoft.net/utils/produkey.zip"),
|
||||
# Python
|
||||
@("python64.zip", "https://www.python.org/ftp/python/3.6.3/python-3.6.3-embed-amd64.zip"),
|
||||
@("python32.zip", "https://www.python.org/ftp/python/3.6.3/python-3.6.3-embed-win32.zip"),
|
||||
# Python: psutil
|
||||
@(
|
||||
"psutil64.whl",
|
||||
(FindDynamicUrl "https://pypi.python.org/pypi/psutil" "href=.*-cp36-cp36m-win_amd64.whl")
|
||||
),
|
||||
@(
|
||||
"psutil32.whl",
|
||||
(FindDynamicUrl "https://pypi.python.org/pypi/psutil" "href=.*-cp36-cp36m-win32.whl")
|
||||
),
|
||||
# Q-Dir
|
||||
@("qdir64.zip", "https://www.softwareok.com/Download/Q-Dir_Portable_x64.zip"),
|
||||
@("qdir32.zip", "https://www.softwareok.com/Download/Q-Dir_Portable.zip"),
|
||||
# TestDisk / PhotoRec
|
||||
@("testdisk64.zip", "https://www.cgsecurity.org/testdisk-7.1-WIP.win64.zip"),
|
||||
@("testdisk32.zip", "https://www.cgsecurity.org/testdisk-7.1-WIP.win.zip"),
|
||||
# wimlib-imagex
|
||||
@("wimlib64.zip", "https://wimlib.net/downloads/wimlib-1.12.0-windows-x86_64-bin.zip"),
|
||||
@("wimlib32.zip", "https://wimlib.net/downloads/wimlib-1.12.0-windows-i686-bin.zip")
|
||||
)
|
||||
foreach ($Tool in $ToolSources) {
|
||||
DownloadFile -Path $Temp -Name $Tool[0] -Url $Tool[1]
|
||||
}
|
||||
|
||||
## Bail ##
|
||||
# If errors were encountered during downloads
|
||||
if ($DownloadErrors -gt 0) {
|
||||
Abort
|
||||
}
|
||||
|
||||
## Extract ##
|
||||
# 7-Zip
|
||||
Write-Host "Extracting: 7-Zip"
|
||||
try {
|
||||
$ArgumentList = @("/a", "$Temp\7z-installer.msi", "TARGETDIR=$Temp\7zi", "/qn")
|
||||
Start-Process -FilePath "$HostSystem32\msiexec.exe" -ArgumentList $ArgumentList -Wait
|
||||
$SevenZip = "$Temp\7zi\Files\7-Zip\7z.exe"
|
||||
$ArgumentList = @(
|
||||
"e", "$Temp\7z-extra.7z", "-o$Build\bin\amd64\7-Zip",
|
||||
"-aoa", "-bso0", "-bse0", "-bsp0",
|
||||
"x64\7za.exe", "*.txt")
|
||||
Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
|
||||
$ArgumentList = @(
|
||||
"e", "$Temp\7z-extra.7z", "-o$Build\bin\x86\7-Zip",
|
||||
"-aoa", "-bso0", "-bse0", "-bsp0",
|
||||
"7za.exe", "*.txt")
|
||||
Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
|
||||
Remove-Item "$Temp\7z*" -Recurse
|
||||
$SevenZip = "$Build\bin\x86\7-Zip\7za.exe"
|
||||
}
|
||||
catch {
|
||||
Write-Host (" ERROR: Failed to extract files." ) -ForegroundColor "Red"
|
||||
}
|
||||
|
||||
# Blue Screen View
|
||||
Write-Host "Extracting: BlueScreenView"
|
||||
try {
|
||||
$ArgumentList = @(
|
||||
"x", "$Temp\bluescreenview64.zip", "-o$Build\bin\amd64\BlueScreenView",
|
||||
"-aoa", "-bso0", "-bse0", "-bsp0")
|
||||
Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
|
||||
$ArgumentList = @(
|
||||
"x", "$Temp\bluescreenview32.zip", "-o$Build\bin\x86\BlueScreenView",
|
||||
"-aoa", "-bso0", "-bse0", "-bsp0")
|
||||
Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
|
||||
Remove-Item "$Temp\bluescreenview*"
|
||||
}
|
||||
catch {
|
||||
Write-Host (" ERROR: Failed to extract files." ) -ForegroundColor "Red"
|
||||
}
|
||||
|
||||
# ConEmu
|
||||
Write-Host "Extracting: ConEmu"
|
||||
try {
|
||||
$ArgumentList = @(
|
||||
"x", "$Temp\ConEmuPack.7z", "-o$Build\bin\amd64\ConEmu",
|
||||
"-aoa", "-bso0", "-bse0", "-bsp0")
|
||||
Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
|
||||
Remove-Item "$Build\bin\amd64\ConEmu\ConEmu.exe"
|
||||
Remove-Item "$Build\bin\amd64\ConEmu\ConEmu.map"
|
||||
Move-Item "$Build\bin\amd64\ConEmu\ConEmu64.exe" "$Build\bin\amd64\ConEmu\ConEmu.exe" -Force
|
||||
Move-Item "$Build\bin\amd64\ConEmu\ConEmu64.map" "$Build\bin\amd64\ConEmu\ConEmu.map" -Force
|
||||
$ArgumentList = @(
|
||||
"x", "$Temp\ConEmuPack.7z", "-o$Build\bin\x86\ConEmu",
|
||||
"-aoa", "-bso0", "-bse0", "-bsp0")
|
||||
Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
|
||||
Remove-Item "$Build\bin\x86\ConEmu\ConEmu64.exe"
|
||||
Remove-Item "$Build\bin\x86\ConEmu\ConEmu64.map"
|
||||
Remove-Item "$Temp\ConEmuPack*"
|
||||
}
|
||||
catch {
|
||||
Write-Host (" ERROR: Failed to extract files." ) -ForegroundColor "Red"
|
||||
}
|
||||
|
||||
# Fast Copy
|
||||
Write-Host "Extracting: FastCopy"
|
||||
try {
|
||||
$ArgumentList = @(
|
||||
"x", "$Temp\fastcopy64.zip", "-o$Build\bin\amd64\FastCopy",
|
||||
"-aoa", "-bso0", "-bse0", "-bsp0",
|
||||
"-x!setup.exe", "-x!*.dll")
|
||||
Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
|
||||
$ArgumentList = @(
|
||||
"e", "$Temp\fastcopy32.zip", "-o$Build\bin\x86\FastCopy",
|
||||
"-aoa", "-bso0", "-bse0", "-bsp0",
|
||||
"-x!setup.exe", "-x!*.dll")
|
||||
Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
|
||||
Remove-Item "$Temp\fastcopy*"
|
||||
}
|
||||
catch {
|
||||
Write-Host (" ERROR: Failed to extract files." ) -ForegroundColor "Red"
|
||||
}
|
||||
|
||||
# Killer Network Driver
|
||||
Write-Host "Extracting: Killer Network Driver"
|
||||
try {
|
||||
$ArgumentList = @(
|
||||
"e", "$Temp\killerinf.zip", "-o$Build\Drivers\amd64\Killer",
|
||||
"-aoa", "-bso0", "-bse0", "-bsp0",
|
||||
"Production\Windows10-x64\Eth\*")
|
||||
Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
|
||||
$ArgumentList = @(
|
||||
"e", "$Temp\killerinf.zip", "-o$Build\Drivers\x86\Killer",
|
||||
"-aoa", "-bso0", "-bse0", "-bsp0",
|
||||
"Production\Windows10-x86\Eth\*")
|
||||
Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
|
||||
Remove-Item "$Temp\killerinf*"
|
||||
}
|
||||
catch {
|
||||
Write-Host (" ERROR: Failed to extract files." ) -ForegroundColor "Red"
|
||||
}
|
||||
|
||||
# HWiNFO
|
||||
Write-Host "Extracting: HWiNFO"
|
||||
try {
|
||||
$ArgumentList = @(
|
||||
"e", "$Temp\hwinfo64.zip", "-o$Build\bin\amd64\HWiNFO",
|
||||
"-aoa", "-bso0", "-bse0", "-bsp0", "HWiNFO64.exe")
|
||||
Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
|
||||
$ArgumentList = @(
|
||||
"e", "$Temp\hwinfo32.zip", "-o$Build\bin\x86\HWiNFO",
|
||||
"-aoa", "-bso0", "-bse0", "-bsp0", "HWiNFO32.exe")
|
||||
Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
|
||||
Remove-Item "$Temp\hwinfo*"
|
||||
Move-Item "$Build\bin\amd64\HWiNFO\HWiNFO64.exe" "$Build\bin\amd64\HWiNFO\HWiNFO.exe" -Force
|
||||
Move-Item "$Build\bin\x86\HWiNFO\HWiNFO32.exe" "$Build\bin\x86\HWiNFO\HWiNFO.exe" -Force
|
||||
}
|
||||
catch {
|
||||
Write-Host (" ERROR: Failed to extract files." ) -ForegroundColor "Red"
|
||||
}
|
||||
|
||||
# Notepad++
|
||||
Write-Host "Extracting: Notepad++"
|
||||
try {
|
||||
$ArgumentList = @(
|
||||
"x", "$Temp\npp_amd64.7z", "-o$Build\bin\amd64\NotepadPlusPlus",
|
||||
"-aoa", "-bso0", "-bse0", "-bsp0")
|
||||
Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
|
||||
$ArgumentList = @(
|
||||
"x", "$Temp\npp_x86.7z", "-o$Build\bin\x86\NotepadPlusPlus",
|
||||
"-aoa", "-bso0", "-bse0", "-bsp0")
|
||||
Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
|
||||
Remove-Item "$Temp\npp*"
|
||||
Move-Item "$Build\bin\amd64\NotepadPlusPlus\notepad++.exe" "$Build\bin\amd64\NotepadPlusPlus\notepadplusplus.exe" -Force
|
||||
Move-Item "$Build\bin\x86\NotepadPlusPlus\notepad++.exe" "$Build\bin\x86\NotepadPlusPlus\notepadplusplus.exe" -Force
|
||||
}
|
||||
catch {
|
||||
Write-Host (" ERROR: Failed to extract files." ) -ForegroundColor "Red"
|
||||
}
|
||||
|
||||
# NT Password Editor
|
||||
Write-Host "Extracting: NT Password Editor"
|
||||
try {
|
||||
$ArgumentList = @(
|
||||
"e", "$Temp\ntpwed.zip", ('-o"{0}\bin\amd64\NT Password Editor"' -f $Build),
|
||||
"-aoa", "-bso0", "-bse0", "-bsp0",
|
||||
"ntpwedit64.exe", "*.txt")
|
||||
Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
|
||||
Move-Item "$Build\bin\amd64\NT Password Editor\ntpwedit64.exe" "$Build\bin\amd64\NT Password Editor\ntpwedit.exe" -Force
|
||||
$ArgumentList = @(
|
||||
"e", "$Temp\ntpwed.zip", ('-o"{0}\bin\x86\NT Password Editor"' -f $Build),
|
||||
"-aoa", "-bso0", "-bse0", "-bsp0",
|
||||
"ntpwedit.exe", "*.txt")
|
||||
Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
|
||||
Remove-Item "$Temp\ntpwed*"
|
||||
}
|
||||
catch {
|
||||
Write-Host (" ERROR: Failed to extract files." ) -ForegroundColor "Red"
|
||||
}
|
||||
|
||||
# PhotoRec / TestDisk
|
||||
Write-Host "Extracting: PhotoRec / TestDisk"
|
||||
try {
|
||||
$ArgumentList = @(
|
||||
"x", "$Temp\testdisk64.zip", "-o$Build\bin\amd64\TestDisk",
|
||||
"-aoa", "-bso0", "-bse0", "-bsp0")
|
||||
# Remove destination since Move-Item -Force can't handle this recursive merge
|
||||
Remove-Item "$Build\bin\amd64\TestDisk" -Recurse -Force 2>&1 | Out-Null
|
||||
Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
|
||||
Move-Item "$Build\bin\amd64\TestDisk\testdisk-7.1-WIP\*" "$Build\bin\amd64\TestDisk" -Force
|
||||
Remove-Item "$Build\bin\amd64\TestDisk\testdisk-7.1-WIP" -Recurse -Force
|
||||
$ArgumentList = @(
|
||||
"x", "$Temp\testdisk32.zip", "-o$Build\bin\x86\TestDisk",
|
||||
"-aoa", "-bso0", "-bse0", "-bsp0")
|
||||
# Remove destination since Move-Item -Force can't handle this recursive merge
|
||||
Remove-Item "$Build\bin\x86\TestDisk" -Recurse -Force 2>&1 | Out-Null
|
||||
Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
|
||||
Move-Item "$Build\bin\x86\TestDisk\testdisk-7.1-WIP\*" "$Build\bin\x86\TestDisk" -Force
|
||||
Remove-Item "$Build\bin\x86\TestDisk\testdisk-7.1-WIP" -Recurse -Force
|
||||
Remove-Item "$Temp\testdisk*"
|
||||
}
|
||||
catch {
|
||||
Write-Host (" ERROR: Failed to extract files." ) -ForegroundColor "Red"
|
||||
}
|
||||
|
||||
# Prime95
|
||||
Write-Host "Extracting: Prime95"
|
||||
try {
|
||||
$ArgumentList = @(
|
||||
"x", "$Temp\prime95_64.zip", "-o$Build\bin\amd64\Prime95",
|
||||
"-aoa", "-bso0", "-bse0", "-bsp0")
|
||||
Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
|
||||
$ArgumentList = @(
|
||||
"x", "$Temp\prime95_32.zip", "-o$Build\bin\x86\Prime95",
|
||||
"-aoa", "-bso0", "-bse0", "-bsp0")
|
||||
Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
|
||||
Remove-Item "$Temp\prime95*"
|
||||
}
|
||||
catch {
|
||||
Write-Host (" ERROR: Failed to extract files." ) -ForegroundColor "Red"
|
||||
}
|
||||
|
||||
# ProduKey
|
||||
try {
|
||||
$ArgumentList = @(
|
||||
"x", "$Temp\produkey64.zip", "-o$Build\bin\amd64\ProduKey",
|
||||
"-aoa", "-bso0", "-bse0", "-bsp0")
|
||||
Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
|
||||
$ArgumentList = @(
|
||||
"x", "$Temp\produkey32.zip", "-o$Build\bin\x86\ProduKey",
|
||||
"-aoa", "-bso0", "-bse0", "-bsp0")
|
||||
Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
|
||||
Remove-Item "$Temp\produkey*"
|
||||
}
|
||||
catch {
|
||||
Write-Host (" ERROR: Failed to extract files." ) -ForegroundColor "Red"
|
||||
}
|
||||
|
||||
# Python (x64)
|
||||
Write-Host "Extracting: Python (x64)"
|
||||
try {
|
||||
$ArgumentList = @(
|
||||
"x", "$Temp\python64.zip", "-o$Build\bin\amd64\python",
|
||||
"-aoa", "-bso0", "-bse0", "-bsp0")
|
||||
Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
|
||||
$ArgumentList = @(
|
||||
"x", "$Temp\psutil64.whl", "-o$Build\bin\amd64\python",
|
||||
"-aoa", "-bso0", "-bse0", "-bsp0")
|
||||
Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
|
||||
|
||||
}
|
||||
catch {
|
||||
Write-Host (" ERROR: Failed to extract files." ) -ForegroundColor "Red"
|
||||
}
|
||||
|
||||
# Python (x32)
|
||||
Write-Host "Extracting: Python (x32)"
|
||||
try {
|
||||
$ArgumentList = @(
|
||||
"x", "$Temp\python32.zip", "-o$Build\bin\x86\python",
|
||||
"-aoa", "-bso0", "-bse0", "-bsp0")
|
||||
Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
|
||||
$ArgumentList = @(
|
||||
"x", "$Temp\psutil32.whl", "-o$Build\bin\x86\python",
|
||||
"-aoa", "-bso0", "-bse0", "-bsp0")
|
||||
Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
|
||||
|
||||
}
|
||||
catch {
|
||||
Write-Host (" ERROR: Failed to extract files." ) -ForegroundColor "Red"
|
||||
}
|
||||
Remove-Item "$Temp\python*"
|
||||
Remove-Item "$Temp\*.whl"
|
||||
|
||||
# Q-Dir
|
||||
Write-Host "Extracting: Q-Dir"
|
||||
try {
|
||||
$ArgumentList = @(
|
||||
"x", "$Temp\qdir64.zip", "-o$Build\bin\amd64",
|
||||
"-aoa", "-bso0", "-bse0", "-bsp0")
|
||||
Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
|
||||
$ArgumentList = @(
|
||||
"x", "$Temp\qdir32.zip", "-o$Build\bin\x86",
|
||||
"-aoa", "-bso0", "-bse0", "-bsp0")
|
||||
Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
|
||||
Remove-Item "$Temp\qdir*"
|
||||
}
|
||||
catch {
|
||||
Write-Host (" ERROR: Failed to extract files." ) -ForegroundColor "Red"
|
||||
}
|
||||
|
||||
# wimlib-imagex
|
||||
try {
|
||||
$ArgumentList = @(
|
||||
"x", "$Temp\wimlib64.zip", "-o$Build\bin\amd64\wimlib",
|
||||
"-aoa", "-bso0", "-bse0", "-bsp0")
|
||||
Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
|
||||
$ArgumentList = @(
|
||||
"x", "$Temp\wimlib32.zip", "-o$Build\bin\x86\wimlib",
|
||||
"-aoa", "-bso0", "-bse0", "-bsp0")
|
||||
Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait
|
||||
Remove-Item "$Temp\wimlib*"
|
||||
}
|
||||
catch {
|
||||
Write-Host (" ERROR: Failed to extract files." ) -ForegroundColor "Red"
|
||||
}
|
||||
}
|
||||
|
||||
## Build ##
|
||||
foreach ($Arch in @("amd64", "x86")) {
|
||||
$Drivers = "$Build\Drivers\$Arch"
|
||||
$Mount = "$Build\Mount"
|
||||
$PEFiles = "$Build\PEFiles\$Arch"
|
||||
|
||||
# Copy WinPE files
|
||||
Write-Host "Copying files..."
|
||||
$Cmd = ("{0}\copype.cmd" -f $Env:WinPERoot)
|
||||
Start-Process -FilePath $Cmd -ArgumentList @($Arch, $PEFiles) -NoNewWindow -Wait
|
||||
|
||||
# Remove unwanted items
|
||||
foreach ($SubDir in @("media", "media\Boot", "media\EFI\Microsoft\Boot")) {
|
||||
foreach ($Item in Get-ChildItem "$PEFiles\$SubDir") {
|
||||
if ($Item.Name -inotmatch "^(boot|efi|en-us|sources|fonts|resources|bcd|memtest)") {
|
||||
Remove-Item -Path $Item.FullName -Recurse -Force
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
# Mount image
|
||||
Write-Host "Mounting image..."
|
||||
New-Item -Path $Mount -ItemType "directory" -Force | Out-Null
|
||||
Mount-WindowsImage -Path $Mount -ImagePath "$PEFiles\media\sources\boot.wim" -Index 1 -LogPath "$LogDir\DISM.log"
|
||||
|
||||
# Add drivers
|
||||
Add-WindowsDriver -Path $Mount -Driver $Drivers -Recurse -LogPath "$LogDir\DISM.log"
|
||||
|
||||
# Add packages
|
||||
Write-Host "Adding packages:"
|
||||
$WinPEPackages = @(
|
||||
"WinPE-EnhancedStorage",
|
||||
"WinPE-FMAPI",
|
||||
"WinPE-WMI",
|
||||
"WinPE-SecureStartup"
|
||||
)
|
||||
foreach ($Package in $WinPEPackages) {
|
||||
$PackagePath = ("{0}\{1}\WinPE_OCs\{2}.cab" -f $Env:WinPERoot, $Arch, $Package)
|
||||
Write-Host " $Package..."
|
||||
Add-WindowsPackage –PackagePath $PackagePath –Path $Mount -LogPath "$LogDir\DISM.log"
|
||||
$LangPackagePath = ("{0}\{1}\WinPE_OCs\en-us\{2}_en-us.cab" -f $Env:WinPERoot, $Arch, $Package)
|
||||
if (Test-Path $LangPackagePath) {
|
||||
Add-WindowsPackage –PackagePath $LangPackagePath –Path $Mount -LogPath "$LogDir\DISM.log"
|
||||
}
|
||||
}
|
||||
|
||||
# Set RamDisk size
|
||||
$ArgumentList = @(
|
||||
('/Image:"{0}"' -f $Mount),
|
||||
"/Set-ScratchSpace:512",
|
||||
('/LogPath:"{0}\DISM.log"' -f $LogDir)
|
||||
)
|
||||
Start-Process -FilePath $DISM -ArgumentList $ArgumentList -NoNewWindow -Wait
|
||||
|
||||
# Add tools
|
||||
Write-Host "Copying tools..."
|
||||
Copy-Item -Path "$Build\bin\$Arch" -Destination "$Mount\.bin" -Recurse -Force
|
||||
Copy-Item -Path "$Root\.pe_items\_include\*" -Destination "$Mount\.bin" -Recurse -Force
|
||||
if ($Arch -eq "amd64") {
|
||||
$DestIni = "$Mount\.bin\HWiNFO\HWiNFO64.INI"
|
||||
} else {
|
||||
$DestIni = "$Mount\.bin\HWiNFO\HWiNFO32.INI"
|
||||
}
|
||||
Move-Item -Path "$Mount\.bin\HWiNFO\HWiNFO.INI" -Destination $DestIni -Force
|
||||
Copy-Item -Path "$Root\Images\WinPE.jpg" -Destination "$Mount\.bin\ConEmu\ConEmu.jpg" -Recurse -Force
|
||||
Copy-Item -Path "$Bin\Scripts" -Destination "$Mount\.bin\Scripts" -Recurse -Force
|
||||
|
||||
# Add System32 items
|
||||
$HostSystem32 = "{0}\System32" -f $Env:SystemRoot
|
||||
Copy-Item -Path "$Root\.pe_items\System32\*" -Destination "$Mount\Windows\System32" -Recurse -Force
|
||||
$ArgumentList = @("/f", "$Mount\Windows\System32\winpe.jpg", "/a")
|
||||
Start-Process -FilePath "$HostSystem32\takeown.exe" -ArgumentList $ArgumentList -NoNewWindow -Wait
|
||||
$ArgumentList = @("$Mount\Windows\System32\winpe.jpg", "/grant", "Administrators:F")
|
||||
Start-Process -FilePath "$HostSystem32\icacls.exe" -ArgumentList $ArgumentList -NoNewWindow -Wait
|
||||
Copy-Item -Path "$Root\Images\WinPE.jpg" -Destination "$Mount\Windows\System32\winpe.jpg" -Recurse -Force
|
||||
|
||||
# Load registry hives
|
||||
Write-Host "Updating Registry..."
|
||||
$Reg = "$HostSystem32\reg.exe"
|
||||
$ArgumentList = @("load", "HKLM\WinPE-SW", "$Mount\Windows\System32\config\SOFTWARE")
|
||||
Start-Process -FilePath $Reg -ArgumentList $ArgumentList -NoNewWindow -Wait
|
||||
$ArgumentList = @("load", "HKLM\WinPE-SYS", "$Mount\Windows\System32\config\SYSTEM")
|
||||
Start-Process -FilePath $Reg -ArgumentList $ArgumentList -NoNewWindow -Wait
|
||||
|
||||
# Add tools to path
|
||||
## .NET code to properly handle REG_EXPAND_SZ values
|
||||
## Credit: https://www.sepago.com/blog/2013/08/22/reading-and-writing-regexpandsz-data-with-powershell
|
||||
## By: Marius Gawenda
|
||||
$Hive = [Microsoft.Win32.Registry]::LocalMachine
|
||||
$RegPath = "WinPE-SYS\ControlSet001\Control\Session Manager\Environment"
|
||||
$RegKey = $Hive.OpenSubKey($RegPath)
|
||||
$CurValue = $RegKey.GetValue(
|
||||
"Path", $false, [Microsoft.Win32.RegistryValueOptions]::DoNotExpandEnvironmentNames)
|
||||
$NewValue = "$CurValue;%SystemDrive%\.bin\7-Zip;%SystemDrive%\.bin\python;%SystemDrive%\.bin\wimlib"
|
||||
Set-ItemProperty -Path "HKLM:\$RegPath" -Name "Path" -Value $NewValue -Force | Out-Null
|
||||
$Hive.close()
|
||||
$RegKey.close()
|
||||
|
||||
# Replace Notepad
|
||||
$RegPath = "HKLM:\WinPE-SW\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\notepad.exe"
|
||||
$NewValue = 'cmd /c "%SystemDrive%\.bin\NotepadPlusPlus\npp.cmd"'
|
||||
New-Item -Path $RegPath -Force | Out-Null
|
||||
New-ItemProperty -Path $RegPath -Name "Debugger" -Value $NewValue -Force | Out-Null
|
||||
|
||||
# Run garbage collection to release potential stale handles
|
||||
## Credit: https://jrich523.wordpress.com/2012/03/06/powershell-loading-and-unloading-registry-hives/
|
||||
Start-Sleep -Seconds 2
|
||||
[gc]::collect()
|
||||
|
||||
# Unload registry hives
|
||||
Start-Sleep -Seconds 2
|
||||
Start-Process -FilePath $Reg -ArgumentList @("unload", "HKLM\WinPE-SW") -NoNewWindow -Wait
|
||||
Start-Process -FilePath $Reg -ArgumentList @("unload", "HKLM\WinPE-SYS") -NoNewWindow -Wait
|
||||
|
||||
# Unmount image
|
||||
Write-Host "Dismounting image..."
|
||||
Dismount-WindowsImage -Path $Mount -Save -LogPath "$LogDir\DISM.log"
|
||||
|
||||
# Create ISO
|
||||
New-Item -Type Directory "$Root\OUT_PE" 2>&1 | Out-Null
|
||||
$ArgumentList = @("/iso", $PEFiles, "$Root\OUT_PE\wk-winpe-$Date-$Arch.iso")
|
||||
$Cmd = "{0}\MakeWinPEMedia.cmd" -f $Env:WinPERoot
|
||||
Start-Process -FilePath $Cmd -ArgumentList $ArgumentList -NoNewWindow -Wait
|
||||
}
|
||||
|
||||
## Cleanup ##
|
||||
Remove-Item -Path "$Build\Mount" -Recurse -Force
|
||||
Remove-Item -Path "$Build\PEFiles" -Recurse -Force
|
||||
|
||||
## Done ##
|
||||
Pop-Location
|
||||
Write-Host "`nDone."
|
||||
WKPause "Press Enter to exit... "
|
||||
}
|
||||
150
FAKE_PE_ROOT/.bin/Scripts/functions/backup.py
Normal file
150
FAKE_PE_ROOT/.bin/Scripts/functions/backup.py
Normal file
|
|
@ -0,0 +1,150 @@
|
|||
# Wizard Kit PE: Functions - Backup
|
||||
|
||||
from functions.disk import *
|
||||
|
||||
# Regex
|
||||
REGEX_BAD_PATH_NAMES = re.compile(
|
||||
r'([<>:"/\|\?\*]'
|
||||
r'|^(CON|PRN|AUX|NUL|COM\d*|LPT\d*)$)'
|
||||
r'|^\s+'
|
||||
r'|[\s\.]+$',
|
||||
re.IGNORECASE)
|
||||
|
||||
def backup_partition(disk, par):
|
||||
if par.get('Image Exists', False) or par['Number'] in disk['Bad Partitions']:
|
||||
raise GenericAbort
|
||||
|
||||
cmd = [
|
||||
global_vars['Tools']['wimlib-imagex'],
|
||||
'capture',
|
||||
'{}:\\'.format(par['Letter']),
|
||||
par['Image Path'],
|
||||
par['Image Name'], # Image name
|
||||
par['Image Name'], # Image description
|
||||
'--compress=none',
|
||||
]
|
||||
dest_dir = re.sub(r'(.*)\\.*$', r'\1', par['Image Path'], re.IGNORECASE)
|
||||
os.makedirs(dest_dir, exist_ok=True)
|
||||
run_program(cmd)
|
||||
|
||||
def fix_path(path):
|
||||
return REGEX_BAD_PATH_NAMES.sub('_', path)
|
||||
|
||||
def prep_disk_for_backup(destination, disk, ticket_number):
|
||||
disk['Clobber Risk'] = []
|
||||
width = len(str(len(disk['Partitions'])))
|
||||
|
||||
# Get partition totals
|
||||
disk['Bad Partitions'] = [par['Number'] for par in disk['Partitions']
|
||||
if is_bad_partition(par)]
|
||||
num_valid_partitions = len(disk['Partitions']) - len(disk['Bad Partitions'])
|
||||
disk['Valid Partitions'] = num_valid_partitions
|
||||
if disk['Valid Partitions'] <= 0:
|
||||
print_error('ERROR: No partitions can be backed up for this disk')
|
||||
raise GenericAbort
|
||||
|
||||
# Prep partitions
|
||||
for par in disk['Partitions']:
|
||||
display = '{size} {fs}'.format(
|
||||
num = par['Number'],
|
||||
width = width,
|
||||
size = par['Size'],
|
||||
fs = par['FileSystem'])
|
||||
|
||||
if par['Number'] in disk['Bad Partitions']:
|
||||
# Set display string using partition description & OS type
|
||||
display = '* {display}\t\t{q}{name}{q}\t{desc} ({os})'.format(
|
||||
display = display,
|
||||
q = '"' if par['Name'] != '' else '',
|
||||
name = par['Name'],
|
||||
desc = par['Description'],
|
||||
os = par['OS'])
|
||||
else:
|
||||
# Update info for WIM capturing
|
||||
par['Image Name'] = par['Name'] if par['Name'] else 'Unknown'
|
||||
if 'IP' in destination:
|
||||
par['Image Path'] = r'\\{}\{}\{}'.format(
|
||||
destination['IP'], destination['Share'], ticket_number)
|
||||
else:
|
||||
par['Image Path'] = r'{}:\{}'.format(
|
||||
ticket_number, destination['Letter'])
|
||||
par['Image Path'] += r'\{}_{}.wim'.format(
|
||||
par['Number'], par['Image Name'])
|
||||
par['Image Path'] = fix_path(par['Image Path'])
|
||||
|
||||
# Check for existing backups
|
||||
par['Image Exists'] = os.path.exists(par['Image Path'])
|
||||
if par['Image Exists']:
|
||||
disk['Clobber Risk'].append(par['Number'])
|
||||
display = '+ {}'.format(display)
|
||||
else:
|
||||
display = ' {}'.format(display)
|
||||
|
||||
# Append rest of Display String for valid/clobber partitions
|
||||
display += ' (Used: {used})\t{q}{name}{q}'.format(
|
||||
used = par['Used Space'],
|
||||
q = '"' if par['Name'] != '' else '',
|
||||
name = par['Name'])
|
||||
# For all partitions
|
||||
par['Display String'] = display
|
||||
|
||||
# Set description for bad partitions
|
||||
warnings = '\n'
|
||||
if disk['Bad Partitions']:
|
||||
warnings += '{} * Unsupported filesystem{}\n'.format(
|
||||
COLORS['YELLOW'], COLORS['CLEAR'])
|
||||
if disk['Clobber Risk']:
|
||||
warnings += '{} + Backup exists on {}{}\n'.format(
|
||||
COLORS['BLUE'], destination['Name'], COLORS['CLEAR'])
|
||||
if disk['Bad Partitions'] or disk['Clobber Risk']:
|
||||
warnings += '\n{}Marked partition(s) will NOT be backed up.{}\n'.format(
|
||||
COLORS['YELLOW'], COLORS['CLEAR'])
|
||||
disk['Backup Warnings'] = warnings
|
||||
|
||||
def select_backup_destination(auto_select=True):
|
||||
# Build menu
|
||||
destinations = [s for s in BACKUP_SERVERS if s['Mounted']]
|
||||
actions = [
|
||||
{'Name': 'Main Menu', 'Letter': 'M'},
|
||||
]
|
||||
|
||||
# Size check
|
||||
for dest in destinations:
|
||||
if 'IP' in dest:
|
||||
dest['Usage'] = shutil.disk_usage(r'\\{IP}\{Share}'.format(**dest))
|
||||
else:
|
||||
dest['Usage'] = shutil.disk_usage('{}:\\'.format(dest['Letter']))
|
||||
dest['Free Space'] = human_readable_size(dest['Usage'].free)
|
||||
dest['Display Name'] = '{Name} ({Free Space} available)'.format(**dest)
|
||||
|
||||
# Bail
|
||||
if not destinations:
|
||||
print_warning('No backup destinations found.')
|
||||
raise GenericAbort
|
||||
|
||||
# Skip menu?
|
||||
if len(destinations) == 1 and auto_select:
|
||||
return destinations[0]
|
||||
|
||||
selection = menu_select(
|
||||
title = 'Where are we backing up to?',
|
||||
main_entries = destinations,
|
||||
action_entries = actions)
|
||||
if selection == 'M':
|
||||
raise GenericAbort
|
||||
else:
|
||||
return destinations[int(selection)-1]
|
||||
|
||||
def verify_wim_backup(partition):
|
||||
if not os.path.exists(partition['Image Path']):
|
||||
raise PathNotFoundError
|
||||
cmd = [
|
||||
global_vars['Tools']['wimlib-imagex'],
|
||||
'verify',
|
||||
partition['Image Path'],
|
||||
'--nocheck',
|
||||
]
|
||||
run_program(cmd)
|
||||
|
||||
if __name__ == '__main__':
|
||||
print("This file is not meant to be called directly.")
|
||||
713
FAKE_PE_ROOT/.bin/Scripts/functions/common.py
Normal file
713
FAKE_PE_ROOT/.bin/Scripts/functions/common.py
Normal file
|
|
@ -0,0 +1,713 @@
|
|||
# Wizard Kit PE: Functions - Common
|
||||
|
||||
import os
|
||||
import psutil
|
||||
import re
|
||||
import shutil
|
||||
import subprocess
|
||||
import sys
|
||||
import time
|
||||
import traceback
|
||||
import winreg
|
||||
|
||||
from subprocess import CalledProcessError
|
||||
|
||||
from settings.main import *
|
||||
from settings.tools import *
|
||||
|
||||
# Global variables
|
||||
global_vars = {}
|
||||
|
||||
# STATIC VARIABLES
|
||||
COLORS = {
|
||||
'CLEAR': '\033[0m',
|
||||
'RED': '\033[31m',
|
||||
'GREEN': '\033[32m',
|
||||
'YELLOW': '\033[33m',
|
||||
'BLUE': '\033[34m'
|
||||
}
|
||||
HKU = winreg.HKEY_USERS
|
||||
HKCU = winreg.HKEY_CURRENT_USER
|
||||
HKLM = winreg.HKEY_LOCAL_MACHINE
|
||||
|
||||
# Error Classes
|
||||
class BIOSKeyNotFoundError(Exception):
|
||||
pass
|
||||
|
||||
class BinNotFoundError(Exception):
|
||||
pass
|
||||
|
||||
class GenericAbort(Exception):
|
||||
pass
|
||||
|
||||
class GenericError(Exception):
|
||||
pass
|
||||
|
||||
class GenericRepair(Exception):
|
||||
pass
|
||||
|
||||
class MultipleInstallationsError(Exception):
|
||||
pass
|
||||
|
||||
class NotInstalledError(Exception):
|
||||
pass
|
||||
|
||||
class NoProfilesError(Exception):
|
||||
pass
|
||||
|
||||
class PathNotFoundError(Exception):
|
||||
pass
|
||||
|
||||
class UnsupportedOSError(Exception):
|
||||
pass
|
||||
|
||||
# General functions
|
||||
def abort():
|
||||
"""Abort script."""
|
||||
print_warning('Aborted.')
|
||||
sleep(5)
|
||||
exit_script()
|
||||
|
||||
def ask(prompt='Kotaero!'):
|
||||
"""Prompt the user with a Y/N question, log answer, and return a bool."""
|
||||
answer = None
|
||||
prompt = '{} [Y/N]: '.format(prompt)
|
||||
while answer is None:
|
||||
tmp = input(prompt)
|
||||
if re.search(r'^y(es|)$', tmp, re.IGNORECASE):
|
||||
answer = True
|
||||
elif re.search(r'^n(o|ope|)$', tmp, re.IGNORECASE):
|
||||
answer = False
|
||||
message = '{prompt}{answer_text}'.format(
|
||||
prompt = prompt,
|
||||
answer_text = 'Yes' if answer else 'No')
|
||||
print_log(message=message)
|
||||
return answer
|
||||
|
||||
def clear_screen():
|
||||
"""Simple wrapper for cls."""
|
||||
os.system('cls')
|
||||
|
||||
def convert_to_bytes(size):
|
||||
"""Convert human-readable size str to bytes and return an int."""
|
||||
size = str(size)
|
||||
tmp = re.search(r'(\d+)\s+([KMGT]B)', size.upper())
|
||||
if tmp:
|
||||
size = int(tmp.group(1))
|
||||
units = tmp.group(2)
|
||||
if units == 'TB':
|
||||
size *= 1099511627776
|
||||
elif units == 'GB':
|
||||
size *= 1073741824
|
||||
elif units == 'MB':
|
||||
size *= 1048576
|
||||
elif units == 'KB':
|
||||
size *= 1024
|
||||
else:
|
||||
return -1
|
||||
|
||||
return size
|
||||
|
||||
def exit_script(return_value=0):
|
||||
"""Exits the script after some cleanup and opens the log (if set)."""
|
||||
# Remove dirs (if empty)
|
||||
for dir in ['BackupDir', 'LogDir', 'TmpDir']:
|
||||
try:
|
||||
dir = global_vars[dir]
|
||||
os.rmdir(dir)
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
# Open Log (if it exists)
|
||||
log = global_vars.get('LogFile', '')
|
||||
if log and os.path.exists(log):
|
||||
try:
|
||||
extract_item('NotepadPlusPlus', silent=True)
|
||||
popen_program(
|
||||
[global_vars['Tools']['NotepadPlusPlus'],
|
||||
global_vars['LogFile']])
|
||||
except Exception:
|
||||
print_error('ERROR: Failed to extract Notepad++ and open log.')
|
||||
pause('Press Enter to exit...')
|
||||
|
||||
# Kill Caffeine if still running
|
||||
kill_process('caffeine.exe')
|
||||
|
||||
# Exit
|
||||
sys.exit(return_value)
|
||||
|
||||
def extract_item(item, filter='', silent=False):
|
||||
"""Extract item from .cbin into .bin."""
|
||||
cmd = [
|
||||
global_vars['Tools']['SevenZip'], 'x', '-aos', '-bso0', '-bse0',
|
||||
'-p{ArchivePassword}'.format(**global_vars),
|
||||
r'-o{BinDir}\{item}'.format(item=item, **global_vars),
|
||||
r'{CBinDir}\{item}.7z'.format(item=item, **global_vars),
|
||||
filter]
|
||||
if not silent:
|
||||
print_standard('Extracting "{item}"...'.format(item=item))
|
||||
try:
|
||||
run_program(cmd)
|
||||
except subprocess.CalledProcessError:
|
||||
if not silent:
|
||||
print_warning('WARNING: Errors encountered while exctracting data')
|
||||
|
||||
def get_ticket_number():
|
||||
"""Get TicketNumber from user, save in LogDir, and return as str."""
|
||||
ticket_number = None
|
||||
while ticket_number is None:
|
||||
_input = input('Enter ticket number: ')
|
||||
if re.match(r'^([0-9]+([-_]?\w+|))$', _input):
|
||||
ticket_number = _input
|
||||
with open(r'{LogDir}\TicketNumber'.format(**global_vars), 'w') as f:
|
||||
f.write(ticket_number)
|
||||
return ticket_number
|
||||
|
||||
def human_readable_size(size, decimals=0):
|
||||
"""Convert size in bytes to a human-readable format and return a str."""
|
||||
# Prep string formatting
|
||||
width = 3+decimals
|
||||
if decimals > 0:
|
||||
width += 1
|
||||
|
||||
# Convert size to int
|
||||
try:
|
||||
size = int(size)
|
||||
except ValueError:
|
||||
size = convert_to_bytes(size)
|
||||
|
||||
# Verify we have a valid size
|
||||
if size < 0:
|
||||
return '{size:>{width}} b'.format(size='???', width=width)
|
||||
|
||||
# Convert to sensible units
|
||||
if size >= 1099511627776:
|
||||
size /= 1099511627776
|
||||
units = 'Tb'
|
||||
elif size >= 1073741824:
|
||||
size /= 1073741824
|
||||
units = 'Gb'
|
||||
elif size >= 1048576:
|
||||
size /= 1048576
|
||||
units = 'Mb'
|
||||
elif size >= 1024:
|
||||
size /= 1024
|
||||
units = 'Kb'
|
||||
else:
|
||||
units = ' b'
|
||||
|
||||
# Return
|
||||
return '{size:>{width}.{decimals}f} {units}'.format(
|
||||
size=size, width=width, decimals=decimals, units=units)
|
||||
|
||||
def kill_process(name):
|
||||
"""Kill any running caffeine.exe processes."""
|
||||
for proc in psutil.process_iter():
|
||||
if proc.name() == name:
|
||||
proc.kill()
|
||||
|
||||
def major_exception():
|
||||
"""Display traceback and exit"""
|
||||
print_error('Major exception')
|
||||
print_warning(SUPPORT_MESSAGE)
|
||||
print(traceback.format_exc())
|
||||
print_log(traceback.format_exc())
|
||||
sleep(30)
|
||||
pause('Press Enter to exit...')
|
||||
exit_script(1)
|
||||
|
||||
def menu_select(title='~ Untitled Menu ~',
|
||||
prompt='Please make a selection', secret_exit=False,
|
||||
main_entries=[], action_entries=[], disabled_label='DISABLED'):
|
||||
"""Display options in a menu and return selected option as a str."""
|
||||
# Bail early
|
||||
if not main_entries and not action_entries:
|
||||
raise Exception("MenuError: No items given")
|
||||
|
||||
# Set title
|
||||
if 'Title' in global_vars:
|
||||
title = '{}\n\n{}'.format(global_vars['Title'], title)
|
||||
|
||||
# Build menu
|
||||
menu_splash = '{}\n\n'.format(title)
|
||||
width = len(str(len(main_entries)))
|
||||
valid_answers = []
|
||||
if (secret_exit):
|
||||
valid_answers.append('Q')
|
||||
|
||||
# Add main entries
|
||||
for i in range(len(main_entries)):
|
||||
entry = main_entries[i]
|
||||
# Add Spacer
|
||||
if ('CRLF' in entry):
|
||||
menu_splash += '\n'
|
||||
entry_str = '{number:>{width}}: {name}'.format(
|
||||
number = i+1,
|
||||
width = width,
|
||||
name = entry.get('Display Name', entry['Name']))
|
||||
if entry.get('Disabled', False):
|
||||
entry_str = '{YELLOW}{entry_str} ({disabled}){CLEAR}'.format(
|
||||
entry_str = entry_str,
|
||||
disabled = disabled_label,
|
||||
**COLORS)
|
||||
else:
|
||||
valid_answers.append(str(i+1))
|
||||
menu_splash += '{}\n'.format(entry_str)
|
||||
menu_splash += '\n'
|
||||
|
||||
# Add action entries
|
||||
for entry in action_entries:
|
||||
# Add Spacer
|
||||
if ('CRLF' in entry):
|
||||
menu_splash += '\n'
|
||||
valid_answers.append(entry['Letter'])
|
||||
menu_splash += '{letter:>{width}}: {name}\n'.format(
|
||||
letter = entry['Letter'].upper(),
|
||||
width = len(str(len(action_entries))),
|
||||
name = entry['Name'])
|
||||
menu_splash += '\n'
|
||||
|
||||
answer = ''
|
||||
|
||||
while (answer.upper() not in valid_answers):
|
||||
os.system('cls')
|
||||
print(menu_splash)
|
||||
answer = input('{}: '.format(prompt))
|
||||
|
||||
return answer.upper()
|
||||
|
||||
def non_clobber_rename(full_path):
|
||||
"""Append suffix to path, if necessary, to avoid clobbering path"""
|
||||
new_path = full_path
|
||||
_i = 1;
|
||||
while os.path.exists(new_path):
|
||||
new_path = '{path}_{i}'.format(i=_i, path=full_path)
|
||||
_i += 1
|
||||
|
||||
return new_path
|
||||
|
||||
def pause(prompt='Press Enter to continue... '):
|
||||
"""Simple pause implementation."""
|
||||
input(prompt)
|
||||
|
||||
def ping(addr='google.com'):
|
||||
"""Attempt to ping addr."""
|
||||
cmd = ['ping', '-n', '2', addr]
|
||||
run_program(cmd)
|
||||
|
||||
def popen_program(cmd, pipe=False, minimized=False, shell=False, **kwargs):
|
||||
"""Run program and return a subprocess.Popen object."""
|
||||
startupinfo=None
|
||||
if minimized:
|
||||
startupinfo = subprocess.STARTUPINFO()
|
||||
startupinfo.dwFlags = subprocess.STARTF_USESHOWWINDOW
|
||||
startupinfo.wShowWindow = 6
|
||||
|
||||
if pipe:
|
||||
popen_obj = subprocess.Popen(cmd, shell=shell, startupinfo=startupinfo,
|
||||
stdout=subprocess.PIPE, stderr=subprocess.PIPE)
|
||||
else:
|
||||
popen_obj = subprocess.Popen(cmd, shell=shell, startupinfo=startupinfo)
|
||||
|
||||
return popen_obj
|
||||
|
||||
def print_error(*args, **kwargs):
|
||||
"""Prints message to screen in RED."""
|
||||
print_standard(*args, color=COLORS['RED'], **kwargs)
|
||||
|
||||
def print_info(*args, **kwargs):
|
||||
"""Prints message to screen in BLUE."""
|
||||
print_standard(*args, color=COLORS['BLUE'], **kwargs)
|
||||
|
||||
def print_standard(message='Generic info',
|
||||
color=None, end='\n', timestamp=True, **kwargs):
|
||||
"""Prints message to screen and log (if set)."""
|
||||
display_message = message
|
||||
if color:
|
||||
display_message = color + message + COLORS['CLEAR']
|
||||
# **COLORS is used below to support non-"standard" color printing
|
||||
print(display_message.format(**COLORS), end=end, **kwargs)
|
||||
print_log(message, end, timestamp)
|
||||
|
||||
def print_success(*args, **kwargs):
|
||||
"""Prints message to screen in GREEN."""
|
||||
print_standard(*args, color=COLORS['GREEN'], **kwargs)
|
||||
|
||||
def print_warning(*args, **kwargs):
|
||||
"""Prints message to screen in YELLOW."""
|
||||
print_standard(*args, color=COLORS['YELLOW'], **kwargs)
|
||||
|
||||
def print_log(message='', end='\n', timestamp=True):
|
||||
time_str = time.strftime("%Y-%m-%d %H%M%z: ") if timestamp else ''
|
||||
if 'LogFile' in global_vars and global_vars['LogFile'] is not None:
|
||||
with open(global_vars['LogFile'], 'a') as f:
|
||||
for line in message.splitlines():
|
||||
f.write('{timestamp}{line}{end}'.format(
|
||||
timestamp = time_str,
|
||||
line = line,
|
||||
end = end))
|
||||
|
||||
def run_program(cmd, args=[], check=True, pipe=True, shell=False):
|
||||
"""Run program and return a subprocess.CompletedProcess object."""
|
||||
if args:
|
||||
# Deprecated so let's raise an exception to find & fix all occurances
|
||||
print_error('ERROR: Using args is no longer supported.')
|
||||
raise Exception
|
||||
cmd = [c for c in cmd if c]
|
||||
if shell:
|
||||
cmd = ' '.join(cmd)
|
||||
|
||||
if pipe:
|
||||
process_return = subprocess.run(cmd, check=check, shell=shell,
|
||||
stdout=subprocess.PIPE, stderr=subprocess.PIPE)
|
||||
else:
|
||||
process_return = subprocess.run(cmd, check=check, shell=shell)
|
||||
|
||||
return process_return
|
||||
|
||||
def set_title(title='~Some Title~'):
|
||||
"""Set title.
|
||||
|
||||
Used for window title and menu titles."""
|
||||
global_vars['Title'] = title
|
||||
os.system('title {}'.format(title))
|
||||
|
||||
def show_data(message='~Some message~', data='~Some data~', indent=8, width=32,
|
||||
info=False, warning=False, error=False):
|
||||
"""Display info with formatting."""
|
||||
message = '{indent}{message:<{width}}{data}'.format(
|
||||
indent=' '*indent, width=width, message=message, data=data)
|
||||
if error:
|
||||
print_error(message)
|
||||
elif warning:
|
||||
print_warning(message)
|
||||
elif info:
|
||||
print_info(message)
|
||||
else:
|
||||
print_standard(message)
|
||||
|
||||
def show_info(message='~Some message~', info='~Some info~', indent=8, width=32):
|
||||
show_data(message=message, data=info, indent=indent, width=width)
|
||||
|
||||
def sleep(seconds=2):
|
||||
"""Wait for a while."""
|
||||
time.sleep(seconds)
|
||||
|
||||
def stay_awake():
|
||||
"""Prevent the system from sleeping or hibernating."""
|
||||
# Bail if caffeine is already running
|
||||
for proc in psutil.process_iter():
|
||||
if proc.name() == 'caffeine.exe':
|
||||
return
|
||||
# Extract and run
|
||||
extract_item('Caffeine', silent=True)
|
||||
try:
|
||||
popen_program(global_vars['Tools']['Caffeine'])
|
||||
except Exception:
|
||||
print_error('ERROR: No caffeine available.')
|
||||
print_warning('Please set the power setting to High Performance.')
|
||||
|
||||
def get_exception(s):
|
||||
"""Get exception by name, returns Exception object."""
|
||||
return getattr(sys.modules[__name__], s)
|
||||
|
||||
def try_and_print(message='Trying...',
|
||||
function=None, cs='CS', ns='NS', other_results={},
|
||||
catch_all=True, print_return=False, silent_function=True,
|
||||
indent=8, width=32, *args, **kwargs):
|
||||
"""Run function, print if successful or not, and return dict.
|
||||
|
||||
other_results is in the form of
|
||||
{
|
||||
'Warning': {'ExceptionClassName': 'Result Message'},
|
||||
'Error': {'ExceptionClassName': 'Result Message'}
|
||||
}
|
||||
The the ExceptionClassNames will be excepted conditions
|
||||
and the result string will be printed in the correct color.
|
||||
catch_all=False will result in unspecified exceptions being re-raised."""
|
||||
err = None
|
||||
out = None
|
||||
w_exceptions = other_results.get('Warning', {}).keys()
|
||||
w_exceptions = tuple(get_exception(e) for e in w_exceptions)
|
||||
e_exceptions = other_results.get('Error', {}).keys()
|
||||
e_exceptions = tuple(get_exception(e) for e in e_exceptions)
|
||||
w_results = other_results.get('Warning', {})
|
||||
e_results = other_results.get('Error', {})
|
||||
|
||||
# Run function and catch errors
|
||||
print_standard('{indent}{message:<{width}}'.format(
|
||||
indent=' '*indent, message=message, width=width), end='', flush=True)
|
||||
try:
|
||||
out = function(*args, **kwargs)
|
||||
if print_return:
|
||||
print_standard(out[0], timestamp=False)
|
||||
for item in out[1:]:
|
||||
print_standard('{indent}{item}'.format(
|
||||
indent=' '*(indent+width), item=item))
|
||||
elif silent_function:
|
||||
print_success(cs, timestamp=False)
|
||||
except w_exceptions as e:
|
||||
_result = w_results.get(e.__class__.__name__, 'Warning')
|
||||
print_warning(_result, timestamp=False)
|
||||
err = e
|
||||
except e_exceptions as e:
|
||||
_result = e_results.get(e.__class__.__name__, 'Error')
|
||||
print_error(_result, timestamp=False)
|
||||
err = e
|
||||
except Exception:
|
||||
print_error(ns, timestamp=False)
|
||||
err = traceback.format_exc()
|
||||
|
||||
# Return or raise?
|
||||
if err and not catch_all:
|
||||
raise
|
||||
else:
|
||||
return {'CS': not bool(err), 'Error': err, 'Out': out}
|
||||
|
||||
def upload_data(path, file):
|
||||
"""Add CLIENT_INFO_SERVER to authorized connections and upload file."""
|
||||
if not ENABLED_UPLOAD_DATA:
|
||||
raise GenericError('Feature disabled.')
|
||||
|
||||
extract_item('PuTTY', filter='wizkit.ppk psftp.exe', silent=True)
|
||||
|
||||
# Authorize connection to the server
|
||||
winreg.CreateKey(HKCU, r'Software\SimonTatham\PuTTY\SshHostKeys')
|
||||
with winreg.OpenKey(HKCU, r'Software\SimonTatham\PuTTY\SshHostKeys',
|
||||
access=winreg.KEY_WRITE) as key:
|
||||
winreg.SetValueEx(key,
|
||||
'rsa2@22:{IP}'.format(**CLIENT_INFO_SERVER), 0,
|
||||
winreg.REG_SZ, CLIENT_INFO_SERVER['RegEntry'])
|
||||
|
||||
# Write batch file
|
||||
with open(r'{TmpDir}\psftp.batch'.format(**global_vars),
|
||||
'w', encoding='ascii') as f:
|
||||
f.write('lcd "{path}"\n'.format(path=path))
|
||||
f.write('cd "{Share}"\n'.format(**CLIENT_INFO_SERVER))
|
||||
f.write('mkdir {TicketNumber}\n'.format(**global_vars))
|
||||
f.write('cd {TicketNumber}\n'.format(**global_vars))
|
||||
f.write('put "{file}"\n'.format(file=file))
|
||||
|
||||
# Upload Info
|
||||
cmd = [
|
||||
global_vars['Tools']['PuTTY-PSFTP'],
|
||||
'-noagent',
|
||||
'-i', r'{BinDir}\PuTTY\wizkit.ppk'.format(**global_vars),
|
||||
'{User}@{IP}'.format(**CLIENT_INFO_SERVER),
|
||||
'-b', r'{TmpDir}\psftp.batch'.format(**global_vars)]
|
||||
run_program(cmd)
|
||||
|
||||
def upload_info():
|
||||
"""Upload compressed Info file to the NAS as set in settings.main.py."""
|
||||
if not ENABLED_UPLOAD_DATA:
|
||||
raise GenericError('Feature disabled.')
|
||||
|
||||
path = '{ClientDir}'.format(**global_vars)
|
||||
file = 'Info_{Date-Time}.7z'.format(**global_vars)
|
||||
upload_data(path, file)
|
||||
|
||||
def compress_info():
|
||||
"""Compress ClientDir info folders with 7-Zip for upload_info()."""
|
||||
path = '{ClientDir}'.format(**global_vars)
|
||||
file = 'Info_{Date-Time}.7z'.format(**global_vars)
|
||||
_cmd = [
|
||||
global_vars['Tools']['SevenZip'],
|
||||
'a', '-t7z', '-mx=9', '-bso0', '-bse0',
|
||||
r'{}\{}'.format(path, file),
|
||||
r'{ClientDir}\Info'.format(**global_vars)]
|
||||
run_program(_cmd)
|
||||
|
||||
def wait_for_process(name, poll_rate=3):
|
||||
"""Wait for process by name."""
|
||||
running = True
|
||||
while running:
|
||||
sleep(poll_rate)
|
||||
running = False
|
||||
for proc in psutil.process_iter():
|
||||
if re.search(r'^{}'.format(name), proc.name(), re.IGNORECASE):
|
||||
running = True
|
||||
sleep(1)
|
||||
|
||||
# global_vars functions
|
||||
def init_global_vars():
|
||||
"""Sets global variables based on system info."""
|
||||
print_info('Initializing')
|
||||
os.system('title Wizard Kit')
|
||||
init_functions = [
|
||||
['Checking .bin...', find_bin],
|
||||
['Checking environment...', set_common_vars],
|
||||
['Checking OS...', check_os],
|
||||
['Checking tools...', check_tools],
|
||||
['Creating folders...', make_tmp_dirs],
|
||||
['Clearing collisions...', clean_env_vars],
|
||||
]
|
||||
try:
|
||||
for f in init_functions:
|
||||
try_and_print(
|
||||
message=f[0], function=f[1],
|
||||
cs='Done', ns='Error', catch_all=False)
|
||||
except:
|
||||
major_exception()
|
||||
|
||||
def check_os():
|
||||
"""Set OS specific variables."""
|
||||
tmp = {}
|
||||
|
||||
# Query registry
|
||||
_reg_path = winreg.OpenKey(
|
||||
HKLM, r'SOFTWARE\Microsoft\Windows NT\CurrentVersion')
|
||||
for key in ['CSDVersion', 'CurrentBuild', 'CurrentBuildNumber',
|
||||
'CurrentVersion', 'ProductName']:
|
||||
try:
|
||||
tmp[key] = winreg.QueryValueEx(_reg_path, key)[0]
|
||||
if key in ['CurrentBuild', 'CurrentBuildNumber']:
|
||||
tmp[key] = int(tmp[key])
|
||||
except ValueError:
|
||||
# Couldn't convert Build to int so this should be interesting...
|
||||
tmp[key] = 0
|
||||
except Exception:
|
||||
tmp[key] = 'Unknown'
|
||||
|
||||
# Determine OS bit depth
|
||||
tmp['Arch'] = 32
|
||||
if 'PROGRAMFILES(X86)' in global_vars['Env']:
|
||||
tmp['Arch'] = 64
|
||||
|
||||
# Determine OS Name
|
||||
tmp['Name'] = '{ProductName} {CSDVersion}'.format(**tmp)
|
||||
if tmp['CurrentBuild'] == 9600:
|
||||
tmp['Name'] += ' Update' # Win 8.1u
|
||||
if tmp['CurrentBuild'] == 10240:
|
||||
tmp['Name'] += ' Release 1507 "Threshold 1"'
|
||||
if tmp['CurrentBuild'] == 10586:
|
||||
tmp['Name'] += ' Release 1511 "Threshold 2"'
|
||||
if tmp['CurrentBuild'] == 14393:
|
||||
tmp['Name'] += ' Release 1607 "Redstone 1" / "Anniversary Update"'
|
||||
if tmp['CurrentBuild'] == 15063:
|
||||
tmp['Name'] += ' Release 1703 "Redstone 2" / "Creators Update"'
|
||||
if tmp['CurrentBuild'] == 16299:
|
||||
tmp['Name'] += ' Release 1709 "Redstone 3" / "Fall Creators Update"'
|
||||
tmp['Name'] = tmp['Name'].replace('Service Pack ', 'SP')
|
||||
tmp['Name'] = tmp['Name'].replace('Unknown Release', 'Release')
|
||||
tmp['Name'] = re.sub(r'\s+', ' ', tmp['Name'])
|
||||
|
||||
# Determine OS version
|
||||
name = '{Name} x{Arch}'.format(**tmp)
|
||||
if tmp['CurrentVersion'] == '6.0':
|
||||
tmp['Version'] = 'Vista'
|
||||
name += ' (very outdated)'
|
||||
elif tmp['CurrentVersion'] == '6.1':
|
||||
tmp['Version'] = '7'
|
||||
if tmp['CSDVersion'] == 'Service Pack 1':
|
||||
name += ' (outdated)'
|
||||
else:
|
||||
name += ' (very outdated)'
|
||||
elif tmp['CurrentVersion'] in ['6.2', '6.3']:
|
||||
if int(tmp['CurrentBuildNumber']) <= 9600:
|
||||
tmp['Version'] = '8'
|
||||
elif int(tmp['CurrentBuildNumber']) >= 10240:
|
||||
tmp['Version'] = '10'
|
||||
if tmp['CurrentBuild'] in [9200, 10240, 10586]:
|
||||
name += ' (very outdated)'
|
||||
elif tmp['CurrentBuild'] in [9600, 14393, 15063]:
|
||||
name += ' (outdated)'
|
||||
elif tmp['CurrentBuild'] == 16299:
|
||||
pass # Current Win10
|
||||
else:
|
||||
name += ' (unrecognized)'
|
||||
tmp['DisplayName'] = name
|
||||
|
||||
# == vista ==
|
||||
# 6.0.6000
|
||||
# 6.0.6001
|
||||
# 6.0.6002
|
||||
# ==== 7 ====
|
||||
# 6.1.7600
|
||||
# 6.1.7601
|
||||
# 6.1.7602
|
||||
# ==== 8 ====
|
||||
# 6.2.9200
|
||||
# === 8.1 ===
|
||||
# 6.3.9200
|
||||
# === 8.1u ==
|
||||
# 6.3.9600
|
||||
# === 10 v1507 "Threshold 1" ==
|
||||
# 6.3.10240
|
||||
# === 10 v1511 "Threshold 2" ==
|
||||
# 6.3.10586
|
||||
# === 10 v1607 "Redstone 1" "Anniversary Update" ==
|
||||
# 6.3.14393
|
||||
# === 10 v1703 "Redstone 2" "Creators Update" ==
|
||||
# 6.3.15063
|
||||
# === 10 v1709 "Redstone 3" "Fall Creators Update" ==
|
||||
# 6.3.16299
|
||||
global_vars['OS'] = tmp
|
||||
|
||||
def check_tools():
|
||||
"""Set tool variables based on OS bit-depth and tool availability."""
|
||||
if global_vars['OS'].get('Arch', 32) == 64:
|
||||
global_vars['Tools'] = {
|
||||
k: v.get('64', v.get('32')) for (k, v) in TOOLS.items()}
|
||||
else:
|
||||
global_vars['Tools'] = {k: v.get('32') for (k, v) in TOOLS.items()}
|
||||
|
||||
# Fix paths
|
||||
global_vars['Tools'] = {k: os.path.join(global_vars['BinDir'], v)
|
||||
for (k, v) in global_vars['Tools'].items()}
|
||||
|
||||
def clean_env_vars():
|
||||
"""Remove conflicting global_vars and env variables.
|
||||
|
||||
This fixes an issue where both global_vars and
|
||||
global_vars['Env'] are expanded at the same time."""
|
||||
for key in global_vars.keys():
|
||||
global_vars['Env'].pop(key, None)
|
||||
|
||||
def find_bin():
|
||||
"""Find .bin folder in the cwd or it's parents."""
|
||||
wd = os.getcwd()
|
||||
base = None
|
||||
while base is None:
|
||||
if os.path.exists('.bin'):
|
||||
base = os.getcwd()
|
||||
break
|
||||
if re.fullmatch(r'\w:\\', os.getcwd()):
|
||||
break
|
||||
os.chdir('..')
|
||||
os.chdir(wd)
|
||||
if base is None:
|
||||
raise BinNotFoundError
|
||||
global_vars['BaseDir'] = base
|
||||
|
||||
def make_tmp_dirs():
|
||||
"""Make temp directories."""
|
||||
os.makedirs(global_vars['BackupDir'], exist_ok=True)
|
||||
os.makedirs(global_vars['LogDir'], exist_ok=True)
|
||||
os.makedirs(global_vars['TmpDir'], exist_ok=True)
|
||||
|
||||
def set_common_vars():
|
||||
"""Set common variables."""
|
||||
global_vars['Date'] = time.strftime("%Y-%m-%d")
|
||||
global_vars['Date-Time'] = time.strftime("%Y-%m-%d_%H%M_%z")
|
||||
global_vars['Env'] = os.environ.copy()
|
||||
|
||||
global_vars['ArchivePassword'] = ARCHIVE_PASSWORD
|
||||
global_vars['BinDir'] = r'{BaseDir}\.bin'.format(
|
||||
**global_vars)
|
||||
global_vars['CBinDir'] = r'{BaseDir}\.cbin'.format(
|
||||
**global_vars)
|
||||
global_vars['ClientDir'] = r'{SYSTEMDRIVE}\{prefix}'.format(
|
||||
prefix=KIT_NAME_SHORT, **global_vars['Env'])
|
||||
global_vars['BackupDir'] = r'{ClientDir}\Backups\{Date}'.format(
|
||||
**global_vars)
|
||||
global_vars['LogDir'] = r'{ClientDir}\Info\{Date}'.format(
|
||||
**global_vars)
|
||||
global_vars['ProgBackupDir'] = r'{ClientDir}\Backups'.format(
|
||||
**global_vars)
|
||||
global_vars['QuarantineDir'] = r'{ClientDir}\Quarantine'.format(
|
||||
**global_vars)
|
||||
global_vars['TmpDir'] = r'{BinDir}\tmp'.format(
|
||||
**global_vars)
|
||||
|
||||
if __name__ == '__main__':
|
||||
print("This file is not meant to be called directly.")
|
||||
607
FAKE_PE_ROOT/.bin/Scripts/functions/data.py
Normal file
607
FAKE_PE_ROOT/.bin/Scripts/functions/data.py
Normal file
|
|
@ -0,0 +1,607 @@
|
|||
# Wizard Kit PE: Functions - Data
|
||||
|
||||
import ctypes
|
||||
|
||||
from operator import itemgetter
|
||||
|
||||
from functions.common import *
|
||||
|
||||
# Classes
|
||||
class LocalDisk():
|
||||
def __init__(self, disk):
|
||||
self.disk = disk
|
||||
self.name = disk.mountpoint.upper()
|
||||
self.path = self.name
|
||||
def is_dir(self):
|
||||
# Should always be true
|
||||
return True
|
||||
|
||||
# Regex
|
||||
REGEX_EXCL_ITEMS = re.compile(
|
||||
r'^(\.(AppleDB|AppleDesktop|AppleDouble'
|
||||
r'|com\.apple\.timemachine\.supported|dbfseventsd'
|
||||
r'|DocumentRevisions-V100.*|DS_Store|fseventsd|PKInstallSandboxManager'
|
||||
r'|Spotlight.*|SymAV.*|symSchedScanLockxz|TemporaryItems|Trash.*'
|
||||
r'|vol|VolumeIcon\.icns)|desktop\.(ini|.*DB|.*DF)'
|
||||
r'|(hiberfil|pagefile)\.sys|lost\+found|Network\.*Trash\.*Folder'
|
||||
r'|Recycle[dr]|System\.*Volume\.*Information|Temporary\.*Items'
|
||||
r'|Thumbs\.db)$',
|
||||
re.IGNORECASE)
|
||||
REGEX_EXCL_ROOT_ITEMS = re.compile(
|
||||
r'^\\?(boot(mgr|nxt)$|Config.msi'
|
||||
r'|(eula|globdata|install|vc_?red)'
|
||||
r'|.*.sys$|System Volume Information|RECYCLER?|\$Recycle\.bin'
|
||||
r'|\$?Win(dows(.old.*|\.~BT|)$|RE_)|\$GetCurrent|Windows10Upgrade'
|
||||
r'|PerfLogs|Program Files|SYSTEM.SAV'
|
||||
r'|.*\.(esd|swm|wim|dd|map|dmg|image)$)',
|
||||
re.IGNORECASE)
|
||||
REGEX_INCL_ROOT_ITEMS = re.compile(
|
||||
r'^\\?(AdwCleaner|(My\s*|)(Doc(uments?( and Settings|)|s?)|Downloads'
|
||||
r'|Media|Music|Pic(ture|)s?|Vid(eo|)s?)'
|
||||
r'|{prefix}(-?Info|-?Transfer|)'
|
||||
r'|(ProgramData|Recovery|Temp.*|Users)$'
|
||||
r'|.*\.(log|txt|rtf|qb\w*|avi|m4a|m4v|mp4|mkv|jpg|png|tiff?)$)'
|
||||
r''.format(prefix=KIT_NAME_SHORT),
|
||||
re.IGNORECASE)
|
||||
REGEX_WIM_FILE = re.compile(
|
||||
r'\.wim$',
|
||||
re.IGNORECASE)
|
||||
REGEX_WINDOWS_OLD = re.compile(
|
||||
r'^\\Win(dows|)\.old',
|
||||
re.IGNORECASE)
|
||||
|
||||
# STATIC VARIABLES
|
||||
FAST_COPY_EXCLUDES = [
|
||||
r'\*.esd',
|
||||
r'\*.swm',
|
||||
r'\*.wim',
|
||||
r'\*.dd',
|
||||
r'\*.dd.tgz',
|
||||
r'\*.dd.txz',
|
||||
r'\*.map',
|
||||
r'\*.dmg',
|
||||
r'\*.image',
|
||||
r'$RECYCLE.BIN',
|
||||
r'$Recycle.Bin',
|
||||
r'.AppleDB',
|
||||
r'.AppleDesktop',
|
||||
r'.AppleDouble',
|
||||
r'.com.apple.timemachine.supported',
|
||||
r'.dbfseventsd',
|
||||
r'.DocumentRevisions-V100*',
|
||||
r'.DS_Store',
|
||||
r'.fseventsd',
|
||||
r'.PKInstallSandboxManager',
|
||||
r'.Spotlight*',
|
||||
r'.SymAV*',
|
||||
r'.symSchedScanLockxz',
|
||||
r'.TemporaryItems',
|
||||
r'.Trash*',
|
||||
r'.vol',
|
||||
r'.VolumeIcon.icns',
|
||||
r'desktop.ini',
|
||||
r'Desktop?DB',
|
||||
r'Desktop?DF',
|
||||
r'hiberfil.sys',
|
||||
r'lost+found',
|
||||
r'Network?Trash?Folder',
|
||||
r'pagefile.sys',
|
||||
r'Recycled',
|
||||
r'RECYCLER',
|
||||
r'System?Volume?Information',
|
||||
r'Temporary?Items',
|
||||
r'Thumbs.db',
|
||||
]
|
||||
FAST_COPY_ARGS = [
|
||||
'/cmd=noexist_only',
|
||||
'/utf8',
|
||||
'/skip_empty_dir',
|
||||
'/linkdest',
|
||||
'/no_ui',
|
||||
'/auto_close',
|
||||
'/exclude={}'.format(';'.join(FAST_COPY_EXCLUDES)),
|
||||
]
|
||||
# Code borrowed from: https://stackoverflow.com/a/29075319
|
||||
SEM_NORMAL = ctypes.c_uint()
|
||||
SEM_FAILCRITICALERRORS = 1
|
||||
SEM_NOOPENFILEERRORBOX = 0x8000
|
||||
SEM_FAIL = SEM_NOOPENFILEERRORBOX | SEM_FAILCRITICALERRORS
|
||||
|
||||
def cleanup_transfer(dest_path):
|
||||
"""Fix attributes and move extraneous items outside the Transfer folder."""
|
||||
try:
|
||||
# Remove dest_path if empty
|
||||
os.rmdir(dest_path)
|
||||
except OSError:
|
||||
pass
|
||||
if not os.path.exists(dest_path):
|
||||
# Bail if dest_path was empty and removed
|
||||
raise Exception
|
||||
|
||||
# Fix attributes
|
||||
cmd = ['attrib', '-a', '-h', '-r', '-s', dest_path]
|
||||
run_program(cmd, check=False)
|
||||
|
||||
for root, dirs, files in os.walk(dest_path, topdown=False):
|
||||
for name in dirs:
|
||||
# Remove empty directories and junction points
|
||||
try:
|
||||
os.rmdir(os.path.join(root, name))
|
||||
except OSError:
|
||||
pass
|
||||
for name in files:
|
||||
# "Remove" files based on exclusion regex
|
||||
if REGEX_EXCL_ITEMS.search(name):
|
||||
# Make dest folder
|
||||
dest_name = root.replace(dest_path, dest_path+'.Removed')
|
||||
os.makedirs(dest_name, exist_ok=True)
|
||||
# Set dest filename
|
||||
dest_name = os.path.join(dest_name, name)
|
||||
dest_name = non_clobber_rename(dest_name)
|
||||
source_name = os.path.join(root, name)
|
||||
try:
|
||||
shutil.move(source_name, dest_name)
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
def is_valid_wim_file(item):
|
||||
"""Checks if the provided os.DirEntry is a valid WIM file, returns bool."""
|
||||
valid = bool(item.is_file() and REGEX_WIM_FILE.search(item.name))
|
||||
if valid:
|
||||
extract_item('wimlib', silent=True)
|
||||
cmd = [global_vars['Tools']['wimlib-imagex'], 'info', item.path]
|
||||
try:
|
||||
run_program(cmd)
|
||||
except subprocess.CalledProcessError:
|
||||
valid = False
|
||||
print_log('WARNING: Image "{}" damaged.'.format(item.name))
|
||||
return valid
|
||||
|
||||
def mount_backup_shares():
|
||||
"""Mount the backup shares unless labeled as already mounted."""
|
||||
for server in BACKUP_SERVERS:
|
||||
# Blindly skip if we mounted earlier
|
||||
if server['Mounted']:
|
||||
continue
|
||||
|
||||
mount_network_share(server)
|
||||
|
||||
def mount_network_share(server):
|
||||
"""Mount a network share defined by server."""
|
||||
# Test connection
|
||||
try:
|
||||
ping(server['IP'])
|
||||
except subprocess.CalledProcessError:
|
||||
print_error(
|
||||
r'Failed to mount \\{Name}\{Share}, {IP} unreachable.'.format(
|
||||
**server))
|
||||
sleep(1)
|
||||
return False
|
||||
|
||||
# Mount
|
||||
cmd = r'net use \\{IP}\{Share} /user:{User} {Pass}'.format(**server)
|
||||
cmd = cmd.split(' ')
|
||||
try:
|
||||
run_program(cmd)
|
||||
except Exception:
|
||||
print_warning(r'Failed to mount \\{Name}\{Share} ({IP})'.format(
|
||||
**server))
|
||||
sleep(1)
|
||||
else:
|
||||
print_info('Mounted {Name}'.format(**server))
|
||||
server['Mounted'] = True
|
||||
|
||||
def run_fast_copy(items, dest):
|
||||
"""Copy items to dest using FastCopy."""
|
||||
if not items:
|
||||
raise Exception
|
||||
|
||||
cmd = [global_vars['Tools']['FastCopy'], *FAST_COPY_ARGS]
|
||||
if 'LogFile' in global_vars:
|
||||
cmd.append('/logfile={LogFile}'.format(**global_vars))
|
||||
cmd.extend(items)
|
||||
cmd.append('/to={}\\'.format(dest))
|
||||
|
||||
run_program(cmd)
|
||||
|
||||
def run_wimextract(source, items, dest):
|
||||
"""Extract items from source WIM to dest folder."""
|
||||
if not items:
|
||||
raise Exception
|
||||
extract_item('wimlib', silent=True)
|
||||
|
||||
# Write files.txt
|
||||
with open(r'{TmpDir}\wim_files.txt'.format(**global_vars), 'w') as f:
|
||||
# Defaults
|
||||
for item in items:
|
||||
f.write('{item}\n'.format(item=item))
|
||||
sleep(1) # For safety?
|
||||
|
||||
# Extract files
|
||||
cmd = [
|
||||
global_vars['Tools']['wimlib-imagex'],
|
||||
'extract',
|
||||
source, '1',
|
||||
r'@{TmpDir}\wim_files.txt'.format(**global_vars),
|
||||
'--dest-dir={}\\'.format(dest),
|
||||
'--no-acls',
|
||||
'--nullglob']
|
||||
run_program(cmd)
|
||||
|
||||
def scan_source(source_obj, dest_path):
|
||||
"""Scan source for files/folders to transfer."""
|
||||
selected_items = []
|
||||
|
||||
if source_obj.is_dir():
|
||||
# File-Based
|
||||
print_standard('Scanning source (folder): {}'.format(source_obj.path))
|
||||
selected_items = scan_source_path(source_obj.path, dest_path)
|
||||
else:
|
||||
# Image-Based
|
||||
if REGEX_WIM_FILE.search(source_obj.name):
|
||||
print_standard('Scanning source (image): {}'.format(
|
||||
source_obj.path))
|
||||
selected_items = scan_source_wim(source_obj.path, dest_path)
|
||||
else:
|
||||
print_error('ERROR: Unsupported image: {}'.format(
|
||||
source_obj.path))
|
||||
raise GenericError
|
||||
|
||||
return selected_items
|
||||
|
||||
def scan_source_path(source_path, dest_path, rel_path=None, interactive=True):
|
||||
"""Scan source folder for files/folders to transfer, returns list.
|
||||
|
||||
This will scan the root and (recursively) any Windows.old folders."""
|
||||
rel_path = '\\' + rel_path if rel_path else ''
|
||||
if rel_path:
|
||||
dest_path = dest_path + rel_path
|
||||
selected_items = []
|
||||
win_olds = []
|
||||
|
||||
# Root items
|
||||
root_items = []
|
||||
for item in os.scandir(source_path):
|
||||
if REGEX_INCL_ROOT_ITEMS.search(item.name):
|
||||
root_items.append(item.path)
|
||||
elif not REGEX_EXCL_ROOT_ITEMS.search(item.name):
|
||||
if (not interactive
|
||||
or ask('Copy: "{}{}" ?'.format(rel_path, item.name))):
|
||||
root_items.append(item.path)
|
||||
if REGEX_WINDOWS_OLD.search(item.name):
|
||||
win_olds.append(item)
|
||||
if root_items:
|
||||
selected_items.append({
|
||||
'Message': '{}Root Items...'.format(rel_path),
|
||||
'Items': root_items.copy(),
|
||||
'Destination': dest_path})
|
||||
|
||||
# Fonts
|
||||
if os.path.exists(r'{}\Windows\Fonts'.format(source_path)):
|
||||
selected_items.append({
|
||||
'Message': '{}Fonts...'.format(rel_path),
|
||||
'Items': [r'{}\Windows\Fonts'.format(rel_path)],
|
||||
'Destination': r'{}\Windows'.format(dest_path)})
|
||||
|
||||
# Registry
|
||||
registry_items = []
|
||||
for folder in ['config', 'OEM']:
|
||||
folder = r'Windows\System32\{}'.format(folder)
|
||||
folder = os.path.join(source_path, folder)
|
||||
if os.path.exists(folder):
|
||||
registry_items.append(folder)
|
||||
if registry_items:
|
||||
selected_items.append({
|
||||
'Message': '{}Registry...'.format(rel_path),
|
||||
'Items': registry_items.copy(),
|
||||
'Destination': r'{}\Windows\System32'.format(dest_path)})
|
||||
|
||||
# Windows.old(s)
|
||||
for old in win_olds:
|
||||
selected_items.append(
|
||||
scan_source_path(
|
||||
old.path, dest_path, rel_path=old.name, interactive=False))
|
||||
|
||||
# Done
|
||||
return selected_items
|
||||
|
||||
def scan_source_wim(source_wim, dest_path, rel_path=None, interactive=True):
|
||||
"""Scan source WIM file for files/folders to transfer, returns list.
|
||||
|
||||
This will scan the root and (recursively) any Windows.old folders."""
|
||||
rel_path = '\\' + rel_path if rel_path else ''
|
||||
selected_items = []
|
||||
win_olds = []
|
||||
|
||||
# Scan source
|
||||
extract_item('wimlib', silent=True)
|
||||
cmd = [
|
||||
global_vars['Tools']['wimlib-imagex'], 'dir',
|
||||
source_wim, '1']
|
||||
try:
|
||||
file_list = run_program(cmd)
|
||||
except subprocess.CalledProcessError:
|
||||
print_error('ERROR: Failed to get file list.')
|
||||
raise
|
||||
|
||||
# Root Items
|
||||
file_list = [i.strip()
|
||||
for i in file_list.stdout.decode('utf-8', 'ignore').splitlines()
|
||||
if i.count('\\') == 1 and i.strip() != '\\']
|
||||
root_items = []
|
||||
if rel_path:
|
||||
file_list = [i.replace(rel_path, '') for i in file_list]
|
||||
for item in file_list:
|
||||
if REGEX_INCL_ROOT_ITEMS.search(item):
|
||||
root_items.append(item)
|
||||
elif not REGEX_EXCL_ROOT_ITEMS.search(item):
|
||||
if (not interactive
|
||||
or ask('Extract: "{}{}" ?'.format(rel_path, item))):
|
||||
root_items.append('{}{}'.format(rel_path, item))
|
||||
if REGEX_WINDOWS_OLD.search(item):
|
||||
win_olds.append(item)
|
||||
if root_items:
|
||||
selected_items.append({
|
||||
'Message': '{}Root Items...'.format(rel_path),
|
||||
'Items': root_items.copy(),
|
||||
'Destination': dest_path})
|
||||
|
||||
# Fonts
|
||||
if wim_contains(source_wim, r'{}Windows\Fonts'.format(rel_path)):
|
||||
selected_items.append({
|
||||
'Message': '{}Fonts...'.format(rel_path),
|
||||
'Items': [r'{}\Windows\Fonts'.format(rel_path)],
|
||||
'Destination': dest_path})
|
||||
|
||||
# Registry
|
||||
registry_items = []
|
||||
for folder in ['config', 'OEM']:
|
||||
folder = r'{}Windows\System32\{}'.format(rel_path, folder)
|
||||
if wim_contains(source_wim, folder):
|
||||
registry_items.append(folder)
|
||||
if registry_items:
|
||||
selected_items.append({
|
||||
'Message': '{}Registry...'.format(rel_path),
|
||||
'Items': registry_items.copy(),
|
||||
'Destination': dest_path})
|
||||
|
||||
# Windows.old(s)
|
||||
for old in win_olds:
|
||||
scan_source_wim(source_wim, dest_path, rel_path=old, interactive=False)
|
||||
|
||||
# Done
|
||||
return selected_items
|
||||
|
||||
def select_destination(folder_path, prompt='Select destination'):
|
||||
"""Select destination drive, returns path as string."""
|
||||
disk = select_volume(prompt)
|
||||
if 'fixed' not in disk['Disk'].opts:
|
||||
folder_path = folder_path.replace('\\', '-')
|
||||
path = '{disk}{folder_path}_{Date}'.format(
|
||||
disk = disk['Disk'].mountpoint,
|
||||
folder_path = folder_path,
|
||||
**global_vars)
|
||||
|
||||
# Avoid merging with existing folder
|
||||
path = non_clobber_rename(path)
|
||||
os.makedirs(path, exist_ok=True)
|
||||
|
||||
return path
|
||||
|
||||
def select_source(ticket_number):
|
||||
"""Select backup from those found on the BACKUP_SERVERS for the ticket."""
|
||||
selected_source = None
|
||||
sources = []
|
||||
mount_backup_shares()
|
||||
|
||||
# Check for ticket folders on servers
|
||||
for server in BACKUP_SERVERS:
|
||||
if server['Mounted']:
|
||||
print_standard('Scanning {}...'.format(server['Name']))
|
||||
for d in os.scandir(r'\\{IP}\{Share}'.format(**server)):
|
||||
if (d.is_dir()
|
||||
and d.name.lower().startswith(ticket_number.lower())):
|
||||
# Add folder to sources
|
||||
sources.append({
|
||||
'Name': '{:9}| File-Based: [DIR] {}'.format(
|
||||
server['Name'], d.name),
|
||||
'Server': server,
|
||||
'Source': d})
|
||||
|
||||
# Check for images and subfolders
|
||||
for ticket_path in sources.copy():
|
||||
for item in os.scandir(ticket_path['Source'].path):
|
||||
if item.is_dir():
|
||||
# Add folder to sources
|
||||
sources.append({
|
||||
'Name': r'{:9}| File-Based: [DIR] {}\{}'.format(
|
||||
ticket_path['Server']['Name'], # Server
|
||||
ticket_path['Source'].name, # Ticket folder
|
||||
item.name, # Sub-folder
|
||||
),
|
||||
'Server': ticket_path['Server'],
|
||||
'Source': item})
|
||||
|
||||
# Check for images in folder
|
||||
for subitem in os.scandir(item.path):
|
||||
if REGEX_WIM_FILE.search(item.name):
|
||||
# Add image to sources
|
||||
try:
|
||||
size = human_readable_size(item.stat().st_size)
|
||||
except Exception:
|
||||
size = ' ? ?' # unknown
|
||||
sources.append({
|
||||
'Disabled': bool(not is_valid_wim_file(subitem)),
|
||||
'Name': r'{:9}| Image-Based: {:>7} {}\{}\{}'.format(
|
||||
ticket_path['Server']['Name'], # Server
|
||||
size, # Size (duh)
|
||||
ticket_path['Source'].name, # Ticket folder
|
||||
item.name, # Sub-folder
|
||||
subitem.name, # Image file
|
||||
),
|
||||
'Server': ticket_path['Server'],
|
||||
'Source': subitem})
|
||||
elif REGEX_WIM_FILE.search(item.name):
|
||||
# Add image to sources
|
||||
try:
|
||||
size = human_readable_size(item.stat().st_size)
|
||||
except Exception:
|
||||
size = ' ? ?' # unknown
|
||||
sources.append({
|
||||
'Disabled': bool(not is_valid_wim_file(item)),
|
||||
'Name': r'{:9}| Image-Based: {:>7} {}\{}'.format(
|
||||
ticket_path['Server']['Name'], # Server
|
||||
size, # Size (duh)
|
||||
ticket_path['Source'].name, # Ticket folder
|
||||
item.name, # Image file
|
||||
),
|
||||
'Server': ticket_path['Server'],
|
||||
'Source': item})
|
||||
# Check for local sources
|
||||
print_standard('Scanning for local sources...')
|
||||
set_thread_error_mode(silent=True) # Prevents "No disk" popups
|
||||
sys_drive = global_vars['Env']['SYSTEMDRIVE']
|
||||
for d in psutil.disk_partitions():
|
||||
if re.search(r'^{}'.format(sys_drive), d.mountpoint, re.IGNORECASE):
|
||||
# Skip current OS drive
|
||||
continue
|
||||
if 'fixed' in d.opts:
|
||||
# Skip DVD, etc
|
||||
sources.append({
|
||||
'Name': '{:9}| File-Based: [DISK] {}'.format(
|
||||
' Local', d.mountpoint),
|
||||
'Source': LocalDisk(d)})
|
||||
set_thread_error_mode(silent=False) # Return to normal
|
||||
|
||||
# Build Menu
|
||||
sources.sort(key=itemgetter('Name'))
|
||||
actions = [{'Name': 'Quit', 'Letter': 'Q'}]
|
||||
|
||||
# Select backup from sources
|
||||
if len(sources) > 0:
|
||||
selection = menu_select(
|
||||
'Which backup are we using?',
|
||||
main_entries=sources,
|
||||
action_entries=actions,
|
||||
disabled_label='DAMAGED')
|
||||
if selection == 'Q':
|
||||
umount_backup_shares()
|
||||
exit_script()
|
||||
else:
|
||||
selected_source = sources[int(selection)-1]['Source']
|
||||
else:
|
||||
print_error('ERROR: No backups found for ticket: {}.'.format(
|
||||
ticket_number))
|
||||
umount_backup_shares()
|
||||
pause("Press Enter to exit...")
|
||||
exit_script()
|
||||
|
||||
# Done
|
||||
return selected_source
|
||||
|
||||
def select_volume(title='Select disk', auto_select=True):
|
||||
"""Select disk from attached disks. returns dict."""
|
||||
actions = [{'Name': 'Quit', 'Letter': 'Q'}]
|
||||
disks = []
|
||||
|
||||
# Build list of disks
|
||||
set_thread_error_mode(silent=True) # Prevents "No disk" popups
|
||||
for d in psutil.disk_partitions():
|
||||
info = {
|
||||
'Disk': d,
|
||||
'Name': d.mountpoint}
|
||||
try:
|
||||
usage = psutil.disk_usage(d.device)
|
||||
free = '{free} / {total} available'.format(
|
||||
free = human_readable_size(usage.free, 2),
|
||||
total = human_readable_size(usage.total, 2))
|
||||
except Exception:
|
||||
# Meh, leaving unsupported destinations out
|
||||
pass
|
||||
# free = 'Unknown'
|
||||
# info['Disabled'] = True
|
||||
else:
|
||||
info['Display Name'] = '{} ({})'.format(info['Name'], free)
|
||||
disks.append(info)
|
||||
set_thread_error_mode(silent=False) # Return to normal
|
||||
|
||||
# Skip menu?
|
||||
if len(disks) == 1 and auto_select:
|
||||
return disks[0]
|
||||
|
||||
# Show menu
|
||||
selection = menu_select(title, main_entries=disks, action_entries=actions)
|
||||
if selection == 'Q':
|
||||
exit_script()
|
||||
else:
|
||||
return disks[int(selection)-1]
|
||||
|
||||
def set_thread_error_mode(silent=True):
|
||||
"""Disable or Enable Windows error message dialogs.
|
||||
|
||||
Disable when scanning for disks to avoid popups for empty cardreaders, etc
|
||||
"""
|
||||
# Code borrowed from: https://stackoverflow.com/a/29075319
|
||||
kernel32 = ctypes.WinDLL('kernel32')
|
||||
|
||||
if silent:
|
||||
kernel32.SetThreadErrorMode(SEM_FAIL, ctypes.byref(SEM_NORMAL))
|
||||
else:
|
||||
kernel32.SetThreadErrorMode(SEM_NORMAL, ctypes.byref(SEM_NORMAL))
|
||||
|
||||
def transfer_source(source_obj, dest_path, selected_items):
|
||||
"""Transfer, or extract, files/folders from source to destination."""
|
||||
if source_obj.is_dir():
|
||||
# Run FastCopy for each selection "group"
|
||||
for group in selected_items:
|
||||
try_and_print(message=group['Message'],
|
||||
function=run_fast_copy, cs='Done',
|
||||
items=group['Items'],
|
||||
dest=group['Destination'])
|
||||
else:
|
||||
if REGEX_WIM_FILE.search(source_obj.name):
|
||||
# Extract files from WIM
|
||||
for group in selected_items:
|
||||
try_and_print(message=group['Message'],
|
||||
function=run_wimextract, cs='Done',
|
||||
source=source_obj.path,
|
||||
items=group['Items'],
|
||||
dest=group['Destination'])
|
||||
else:
|
||||
print_error('ERROR: Unsupported image: {}'.format(source_obj.path))
|
||||
raise GenericError
|
||||
|
||||
def umount_backup_shares():
|
||||
"""Unnount the backup shares regardless of current status."""
|
||||
for server in BACKUP_SERVERS:
|
||||
umount_network_share(server)
|
||||
|
||||
def umount_network_share(server):
|
||||
"""Unnount a network share defined by server."""
|
||||
cmd = r'net use \\{IP}\{Share} /delete'.format(**server)
|
||||
cmd = cmd.split(' ')
|
||||
try:
|
||||
run_program(cmd)
|
||||
except Exception:
|
||||
print_error(r'Failed to umount \\{Name}\{Share}.'.format(**server))
|
||||
sleep(1)
|
||||
else:
|
||||
print_info('Umounted {Name}'.format(**server))
|
||||
server['Mounted'] = False
|
||||
|
||||
def wim_contains(source_path, file_path):
|
||||
"""Check if the WIM contains a file or folder."""
|
||||
_cmd = [
|
||||
global_vars['Tools']['wimlib-imagex'], 'dir',
|
||||
source_path, '1',
|
||||
'--path={}'.format(file_path),
|
||||
'--one-file-only']
|
||||
try:
|
||||
run_program(_cmd)
|
||||
except subprocess.CalledProcessError:
|
||||
return False
|
||||
else:
|
||||
return True
|
||||
|
||||
if __name__ == '__main__':
|
||||
print("This file is not meant to be called directly.")
|
||||
372
FAKE_PE_ROOT/.bin/Scripts/functions/disk.py
Normal file
372
FAKE_PE_ROOT/.bin/Scripts/functions/disk.py
Normal file
|
|
@ -0,0 +1,372 @@
|
|||
# Wizard Kit PE: Functions - Disk
|
||||
|
||||
from functions.common import *
|
||||
from functions import partition_uids
|
||||
|
||||
# Regex
|
||||
REGEX_BAD_PARTITION = re.compile(r'(RAW|Unknown)', re.IGNORECASE)
|
||||
REGEX_DISK_GPT = re.compile(
|
||||
r'Disk ID: {[A-Z0-9]+-[A-Z0-9]+-[A-Z0-9]+-[A-Z0-9]+-[A-Z0-9]+}',
|
||||
re.IGNORECASE)
|
||||
REGEX_DISK_MBR = re.compile(r'Disk ID: [A-Z0-9]+', re.IGNORECASE)
|
||||
REGEX_DISK_RAW = re.compile(r'Disk ID: 00000000', re.IGNORECASE)
|
||||
|
||||
def assign_volume_letters():
|
||||
remove_volume_letters()
|
||||
|
||||
# Write script
|
||||
script = []
|
||||
for vol in get_volumes():
|
||||
script.append('select volume {}'.format(vol['Number']))
|
||||
script.append('assign')
|
||||
|
||||
# Run
|
||||
run_diskpart(script)
|
||||
|
||||
def get_boot_mode():
|
||||
boot_mode = 'Legacy'
|
||||
try:
|
||||
reg_key = winreg.OpenKey(
|
||||
winreg.HKEY_LOCAL_MACHINE, r'System\CurrentControlSet\Control')
|
||||
reg_value = winreg.QueryValueEx(reg_key, 'PEFirmwareType')[0]
|
||||
if reg_value == 2:
|
||||
boot_mode = 'UEFI'
|
||||
except:
|
||||
boot_mode = 'Unknown'
|
||||
|
||||
return boot_mode
|
||||
|
||||
def get_disk_details(disk):
|
||||
details = {}
|
||||
script = [
|
||||
'select disk {}'.format(disk['Number']),
|
||||
'detail disk']
|
||||
|
||||
# Run
|
||||
try:
|
||||
result = run_diskpart(script)
|
||||
except subprocess.CalledProcessError:
|
||||
pass
|
||||
else:
|
||||
output = result.stdout.decode().strip()
|
||||
# Remove empty lines
|
||||
tmp = [s.strip() for s in output.splitlines() if s.strip() != '']
|
||||
# Set disk name
|
||||
details['Name'] = tmp[4]
|
||||
# Split each line on ':' skipping those without ':'
|
||||
tmp = [s.split(':') for s in tmp if ':' in s]
|
||||
# Add key/value pairs to the details variable and return dict
|
||||
details.update({key.strip(): value.strip() for (key, value) in tmp})
|
||||
|
||||
return details
|
||||
|
||||
def get_disks():
|
||||
disks = []
|
||||
|
||||
try:
|
||||
# Run script
|
||||
result = run_diskpart(['list disk'])
|
||||
except subprocess.CalledProcessError:
|
||||
pass
|
||||
else:
|
||||
# Append disk numbers
|
||||
output = result.stdout.decode().strip()
|
||||
for tmp in re.findall(r'Disk (\d+)\s+\w+\s+(\d+\s+\w+)', output):
|
||||
num = tmp[0]
|
||||
size = human_readable_size(tmp[1])
|
||||
disks.append({'Number': num, 'Size': size})
|
||||
|
||||
return disks
|
||||
|
||||
def get_partition_details(disk, partition):
|
||||
details = {}
|
||||
script = [
|
||||
'select disk {}'.format(disk['Number']),
|
||||
'select partition {}'.format(partition['Number']),
|
||||
'detail partition']
|
||||
|
||||
# Diskpart details
|
||||
try:
|
||||
# Run script
|
||||
result = run_diskpart(script)
|
||||
except subprocess.CalledProcessError:
|
||||
pass
|
||||
else:
|
||||
# Get volume letter or RAW status
|
||||
output = result.stdout.decode().strip()
|
||||
tmp = re.search(r'Volume\s+\d+\s+(\w|RAW)\s+', output)
|
||||
if tmp:
|
||||
if tmp.group(1).upper() == 'RAW':
|
||||
details['FileSystem'] = RAW
|
||||
else:
|
||||
details['Letter'] = tmp.group(1)
|
||||
# Remove empty lines from output
|
||||
tmp = [s.strip() for s in output.splitlines() if s.strip() != '']
|
||||
# Split each line on ':' skipping those without ':'
|
||||
tmp = [s.split(':') for s in tmp if ':' in s]
|
||||
# Add key/value pairs to the details variable and return dict
|
||||
details.update({key.strip(): value.strip() for (key, value) in tmp})
|
||||
|
||||
# Get MBR type / GPT GUID for extra details on "Unknown" partitions
|
||||
guid = partition_uids.lookup_guid(details['Type'])
|
||||
if guid:
|
||||
details.update({
|
||||
'Description': guid.get('Description', '')[:29],
|
||||
'OS': guid.get('OS', '')[:26]})
|
||||
|
||||
if 'Letter' in details:
|
||||
# Disk usage
|
||||
tmp = shutil.disk_usage('{}:\\'.format(details['Letter']))
|
||||
details['Used Space'] = human_readable_size(tmp.used)
|
||||
|
||||
# fsutil details
|
||||
cmd = [
|
||||
'fsutil',
|
||||
'fsinfo',
|
||||
'volumeinfo',
|
||||
'{}:'.format(details['Letter'])
|
||||
]
|
||||
try:
|
||||
result = run_program(cmd)
|
||||
except subprocess.CalledProcessError:
|
||||
pass
|
||||
else:
|
||||
output = result.stdout.decode().strip()
|
||||
# Remove empty lines from output
|
||||
tmp = [s.strip() for s in output.splitlines() if s.strip() != '']
|
||||
# Add "Feature" lines
|
||||
details['File System Features'] = [s.strip() for s in tmp
|
||||
if ':' not in s]
|
||||
# Split each line on ':' skipping those without ':'
|
||||
tmp = [s.split(':') for s in tmp if ':' in s]
|
||||
# Add key/value pairs to the details variable and return dict
|
||||
details.update({key.strip(): value.strip() for (key, value) in tmp})
|
||||
|
||||
# Set Volume Name
|
||||
details['Name'] = details.get('Volume Name', '')
|
||||
|
||||
# Set FileSystem Type
|
||||
if details.get('FileSystem', '') != 'RAW':
|
||||
details['FileSystem'] = details.get('File System Name', 'Unknown')
|
||||
|
||||
return details
|
||||
|
||||
def get_partitions(disk):
|
||||
partitions = []
|
||||
script = [
|
||||
'select disk {}'.format(disk['Number']),
|
||||
'list partition']
|
||||
|
||||
try:
|
||||
# Run script
|
||||
result = run_diskpart(script)
|
||||
except subprocess.CalledProcessError:
|
||||
pass
|
||||
else:
|
||||
# Append partition numbers
|
||||
output = result.stdout.decode().strip()
|
||||
regex = r'Partition\s+(\d+)\s+\w+\s+(\d+\s+\w+)\s+'
|
||||
for tmp in re.findall(regex, output, re.IGNORECASE):
|
||||
num = tmp[0]
|
||||
size = human_readable_size(tmp[1])
|
||||
partitions.append({'Number': num, 'Size': size})
|
||||
|
||||
return partitions
|
||||
|
||||
def get_table_type(disk):
|
||||
part_type = 'Unknown'
|
||||
script = [
|
||||
'select disk {}'.format(disk['Number']),
|
||||
'uniqueid disk']
|
||||
|
||||
try:
|
||||
result = run_diskpart(script)
|
||||
except subprocess.CalledProcessError:
|
||||
pass
|
||||
else:
|
||||
output = result.stdout.decode().strip()
|
||||
if REGEX_DISK_GPT.search(output):
|
||||
part_type = 'GPT'
|
||||
elif REGEX_DISK_MBR.search(output):
|
||||
part_type = 'MBR'
|
||||
elif REGEX_DISK_RAW.search(output):
|
||||
part_type = 'RAW'
|
||||
|
||||
return part_type
|
||||
|
||||
def get_volumes():
|
||||
vols = []
|
||||
try:
|
||||
result = run_diskpart(['list volume'])
|
||||
except subprocess.CalledProcessError:
|
||||
pass
|
||||
else:
|
||||
# Append volume numbers
|
||||
output = result.stdout.decode().strip()
|
||||
for tmp in re.findall(r'Volume (\d+)\s+([A-Za-z]?)\s+', output):
|
||||
vols.append({'Number': tmp[0], 'Letter': tmp[1]})
|
||||
|
||||
return vols
|
||||
|
||||
def is_bad_partition(par):
|
||||
return 'Letter' not in par or REGEX_BAD_PARTITION.search(par['FileSystem'])
|
||||
|
||||
def prep_disk_for_formatting(disk=None):
|
||||
disk['Format Warnings'] = '\n'
|
||||
width = len(str(len(disk['Partitions'])))
|
||||
|
||||
# Bail early
|
||||
if disk is None:
|
||||
raise Exception('Disk not provided.')
|
||||
|
||||
# Set boot method and partition table type
|
||||
disk['Use GPT'] = True
|
||||
if (get_boot_mode() == 'UEFI'):
|
||||
if (not ask("Setup Windows to use UEFI booting?")):
|
||||
disk['Use GPT'] = False
|
||||
else:
|
||||
if (ask("Setup Windows to use BIOS/Legacy booting?")):
|
||||
disk['Use GPT'] = False
|
||||
|
||||
# Set Display and Warning Strings
|
||||
if len(disk['Partitions']) == 0:
|
||||
disk['Format Warnings'] += 'No partitions found\n'
|
||||
for partition in disk['Partitions']:
|
||||
display = '{size} {fs}'.format(
|
||||
num = partition['Number'],
|
||||
width = width,
|
||||
size = partition['Size'],
|
||||
fs = partition['FileSystem'])
|
||||
|
||||
if is_bad_partition(partition):
|
||||
# Set display string using partition description & OS type
|
||||
display += '\t\t{q}{name}{q}\t{desc} ({os})'.format(
|
||||
display = display,
|
||||
q = '"' if partition['Name'] != '' else '',
|
||||
name = partition['Name'],
|
||||
desc = partition['Description'],
|
||||
os = partition['OS'])
|
||||
else:
|
||||
# List space used instead of partition description & OS type
|
||||
display += ' (Used: {used})\t{q}{name}{q}'.format(
|
||||
used = partition['Used Space'],
|
||||
q = '"' if partition['Name'] != '' else '',
|
||||
name = partition['Name'])
|
||||
# For all partitions
|
||||
partition['Display String'] = display
|
||||
|
||||
def reassign_volume_letter(letter, new_letter='I'):
|
||||
if not letter:
|
||||
# Ignore
|
||||
return None
|
||||
script = [
|
||||
'select volume {}'.format(letter),
|
||||
'remove noerr',
|
||||
'assign letter={}'.format(new_letter)]
|
||||
try:
|
||||
run_diskpart(script)
|
||||
except subprocess.CalledProcessError:
|
||||
pass
|
||||
else:
|
||||
return new_letter
|
||||
|
||||
def remove_volume_letters(keep=None):
|
||||
if not keep:
|
||||
keep = ''
|
||||
|
||||
script = []
|
||||
for vol in get_volumes():
|
||||
if vol['Letter'].upper() != keep.upper():
|
||||
script.append('select volume {}'.format(vol['Number']))
|
||||
script.append('remove noerr')
|
||||
|
||||
# Run script
|
||||
try:
|
||||
run_diskpart(script)
|
||||
except subprocess.CalledProcessError:
|
||||
pass
|
||||
|
||||
def run_diskpart(script):
|
||||
tempfile = r'{}\diskpart.script'.format(global_vars['Env']['TMP'])
|
||||
|
||||
# Write script
|
||||
with open(tempfile, 'w') as f:
|
||||
for line in script:
|
||||
f.write('{}\n'.format(line))
|
||||
|
||||
# Run script
|
||||
cmd = [
|
||||
r'{}\Windows\System32\diskpart.exe'.format(
|
||||
global_vars['Env']['SYSTEMDRIVE']),
|
||||
'/s', tempfile]
|
||||
result = run_program(cmd)
|
||||
sleep(2)
|
||||
return result
|
||||
|
||||
def scan_disks():
|
||||
"""Get details about the attached disks"""
|
||||
disks = get_disks()
|
||||
|
||||
# Get disk details
|
||||
for disk in disks:
|
||||
# Get partition style
|
||||
disk['Table'] = get_table_type(disk)
|
||||
|
||||
# Get disk name/model and physical details
|
||||
disk.update(get_disk_details(disk))
|
||||
|
||||
# Get partition info for disk
|
||||
disk['Partitions'] = get_partitions(disk)
|
||||
|
||||
for partition in disk['Partitions']:
|
||||
# Get partition details
|
||||
partition.update(get_partition_details(disk, partition))
|
||||
|
||||
# Done
|
||||
return disks
|
||||
|
||||
def select_disk(title='Which disk?', disks=[]):
|
||||
"""Select a disk from the attached disks"""
|
||||
# Build menu
|
||||
disk_options = []
|
||||
for disk in disks:
|
||||
display_name = '{Size}\t[{Table}] ({Type}) {Name}'.format(**disk)
|
||||
pwidth=len(str(len(disk['Partitions'])))
|
||||
for partition in disk['Partitions']:
|
||||
# Main text
|
||||
p_name = 'Partition {num:>{width}}: {size} ({fs})'.format(
|
||||
num = partition['Number'],
|
||||
width = pwidth,
|
||||
size = partition['Size'],
|
||||
fs = partition['FileSystem'])
|
||||
if partition['Name']:
|
||||
p_name += '\t"{}"'.format(partition['Name'])
|
||||
|
||||
# Show unsupported partition(s)
|
||||
if is_bad_partition(partition):
|
||||
p_name = '{YELLOW}{p_name}{CLEAR}'.format(
|
||||
p_name=p_name, **COLORS)
|
||||
|
||||
display_name += '\n\t\t\t{}'.format(p_name)
|
||||
if not disk['Partitions']:
|
||||
display_name += '\n\t\t\t{}No partitions found.{}'.format(
|
||||
COLORS['YELLOW'], COLORS['CLEAR'])
|
||||
|
||||
disk_options.append({'Name': display_name, 'Disk': disk})
|
||||
actions = [
|
||||
{'Name': 'Main Menu', 'Letter': 'M'},
|
||||
]
|
||||
|
||||
# Menu loop
|
||||
selection = menu_select(
|
||||
title = title,
|
||||
main_entries = disk_options,
|
||||
action_entries = actions)
|
||||
|
||||
if (selection.isnumeric()):
|
||||
return disk_options[int(selection)-1]['Disk']
|
||||
elif (selection == 'M'):
|
||||
raise GenericAbort
|
||||
|
||||
if __name__ == '__main__':
|
||||
print("This file is not meant to be called directly.")
|
||||
325
FAKE_PE_ROOT/.bin/Scripts/functions/partition_uids.py
Normal file
325
FAKE_PE_ROOT/.bin/Scripts/functions/partition_uids.py
Normal file
|
|
@ -0,0 +1,325 @@
|
|||
# Wizard Kit PE: Functions - PARTITION UIDs
|
||||
# sources: https://en.wikipedia.org/wiki/GUID_Partition_Table
|
||||
# https://en.wikipedia.org/wiki/Partition_type
|
||||
|
||||
PARTITION_UIDS = {
|
||||
'00': {'OS': 'All', 'Description': 'Empty partition entry'},
|
||||
'01': {'OS': 'DOS 2.0+', 'Description': 'FAT12 as primary partition in first physical 32 MB of disk or as logical drive anywhere on disk (else use 06hinstead)'},
|
||||
'02': {'OS': 'XENIX', 'Description': 'XENIX root'},
|
||||
'03': {'OS': 'XENIX', 'Description': 'XENIX usr'},
|
||||
'04': {'OS': 'DOS 3.0+', 'Description': 'FAT16 with less than 65536 sectors (32 MB). As primary partition it must reside in first physical 32 MB of disk, or as logical drive anywhere on disk (else use 06h instead).'},
|
||||
'05': {'OS': 'DOS (3.2) 3.3+ / SpeedStor', 'Description': 'Extended partition with CHS addressing. It must reside in first physical 8 GB of disk, else use 0Fh instead / can occur in SpeedStor MBRs'},
|
||||
'06': {'OS': 'DOS 3.31+', 'Description': 'FAT16B with 65536 or more sectors. It must reside in first physical 8 GB of disk, unless used for logical drives in an 0Fh extended partition (else use 0Eh instead). Also used for FAT12 and FAT16 volumes in primary partitions if they are not residing in first physical 32 MB of disk.'},
|
||||
'07': {'OS': 'OS/2 1.2+ / OS/2 1.2+, Windows NT / Windows NT / Windows Embedded CE / QNX 2', 'Description': 'IFS / HPFS / NTFS / exFAT / QNX "qnx" (7) (pre-1988 only)'},
|
||||
'08': {'OS': 'Commodore MS-DOS 3.x / OS/2 1.0-1.3 / AIX / QNX 1.x/2.x', 'Description': 'Logical sectored FAT12 or FAT16 / OS/2 (FAT?) / AIX boot/split / SplitDrive / QNX "qny" (8) / partition spanning multiple drives'},
|
||||
'09': {'OS': 'AIX / QNX 1.x/2.x / Coherent / OS-9', 'Description': 'AIX data/boot / QNX "qnz" (9) / Coherent file system / OS-9 RBF'},
|
||||
'0A': {'OS': 'OS/2 / Coherent', 'Description': 'OS/2 Boot Manager / Coherent swap partition'},
|
||||
'0B': {'OS': 'DOS 7.1+', 'Description': 'FAT32 with CHS addressing'},
|
||||
'0C': {'OS': 'DOS 7.1+', 'Description': 'FAT32 with LBA'},
|
||||
'0D': {'OS': 'Silicon Safe', 'Description': 'Reserved'},
|
||||
'0E': {'OS': 'DOS 7.0+', 'Description': 'FAT16B with LBA'},
|
||||
'0F': {'OS': 'DOS 7.0+', 'Description': 'Extended partition with LBA'},
|
||||
'10': {'OS': 'OPUS', 'Description': 'Unknown'},
|
||||
'11': {'OS': 'Leading Edge MS-DOS 3.x / OS/2 Boot Manager', 'Description': 'Logical sectored FAT12 or FAT16 / Hidden FAT12 '},
|
||||
'12': {'OS': 'Compaq Contura', 'Description': 'configuration partition (bootable FAT) / configuration partition / hibernation partition / diagnostics and firmware partition (bootable FAT) / service partition (bootable FAT) / Rescue and Recovery partition'},
|
||||
'14': {'OS': 'AST MS-DOS 3.x / OS/2 Boot Manager / Maverick OS', 'Description': 'Logical sectored FAT12 or FAT16 / Hidden FAT16 / Omega file system'},
|
||||
'15': {'OS': 'OS/2 Boot Manager / Maverick OS', 'Description': 'Hidden extended partition with CHS addressing / swap'},
|
||||
'16': {'OS': 'OS/2 Boot Manager', 'Description': 'Hidden FAT16B '},
|
||||
'17': {'OS': 'OS/2 Boot Manager', 'Description': 'Hidden IFS / Hidden HPFS / Hidden NTFS / Hidden exFAT '},
|
||||
'18': {'OS': 'AST Windows', 'Description': 'AST Zero Volt Suspend or SmartSleep partition'},
|
||||
'19': {'OS': 'Willowtech Photon coS', 'Description': 'Willowtech Photon coS'},
|
||||
'1B': {'OS': 'OS/2 Boot Manager', 'Description': 'Hidden FAT32 '},
|
||||
'1C': {'OS': 'OS/2 Boot Manager', 'Description': 'Hidden FAT32 with LBA '},
|
||||
'1E': {'OS': 'OS/2 Boot Manager', 'Description': 'Hidden FAT16 with LBA '},
|
||||
'1F': {'OS': 'OS/2 Boot Manager', 'Description': 'Hidden extended partition with LBA addressing '},
|
||||
'20': {'OS': 'Windows Mobile', 'Description': 'Windows Mobile update XIP / Willowsoft Overture File System (OFS1)'},
|
||||
'21': {'OS': 'Oxygen', 'Description': 'HP Volume Expansion (SpeedStor) / FSo2 (Oxygen File System)'},
|
||||
'22': {'OS': 'Oxygen', 'Description': 'Oxygen Extended Partition Table'},
|
||||
'23': {'OS': 'Windows Mobile', 'Description': 'Reserved / Windows Mobile boot XIP'},
|
||||
'24': {'OS': 'NEC MS-DOS 3.30', 'Description': 'Logical sectored FAT12 or FAT16 '},
|
||||
'25': {'OS': 'Windows Mobile', 'Description': 'Windows Mobile IMGFS[citation needed]'},
|
||||
'26': {'OS': 'Microsoft, IBM', 'Description': 'Reserved'},
|
||||
'27': {'OS': 'Windows / PQservice / MirOS BSD / RooterBOOT', 'Description': 'Windows Recovery Environment (RE) partition (hidden NTFS partition type 07h) / FAT32 or NTFS rescue partition / MirOS partition / RooterBOOT kernel partition (contains a raw ELF Linux kernel, no file system)'},
|
||||
'2A': {'OS': 'AtheOS', 'Description': 'AtheOS file system (AthFS, AFS) (an extension of BFS, see 2Bh and EBh) / Reserved'},
|
||||
'2B': {'OS': 'SyllableOS', 'Description': 'SyllableSecure (SylStor), a variant of AthFS (an extension of BFS, see 2Ah and EBh)'},
|
||||
'31': {'OS': 'Microsoft, IBM', 'Description': 'Reserved'},
|
||||
'32': {'OS': 'NOS', 'Description': 'Unknown'},
|
||||
'33': {'OS': 'Microsoft, IBM', 'Description': 'Reserved'},
|
||||
'34': {'OS': 'Microsoft, IBM', 'Description': 'Reserved'},
|
||||
'35': {'OS': 'OS/2 Warp Server /eComStation', 'Description': 'JFS (OS/2 implementation of AIX Journaling File system)'},
|
||||
'36': {'OS': 'Microsoft, IBM', 'Description': 'Reserved'},
|
||||
'38': {'OS': 'THEOS', 'Description': 'THEOS version 3.2, 2 GB partition'},
|
||||
'39': {'OS': 'Plan 9 / THEOS', 'Description': 'Plan 9 edition 3 partition (sub-partitions described in second sector of partition) / THEOS version 4 spanned partition'},
|
||||
'3A': {'OS': 'THEOS', 'Description': 'THEOS version 4, 4 GB partition'},
|
||||
'3B': {'OS': 'THEOS', 'Description': 'THEOS version 4 extended partition'},
|
||||
'3C': {'OS': 'PartitionMagic', 'Description': 'PqRP (PartitionMagic or DriveImage in progress)'},
|
||||
'3D': {'OS': 'PartitionMagic', 'Description': 'Hidden NetWare'},
|
||||
'3F': {'OS': 'OS/32', 'Description': 'Unknown'},
|
||||
'40': {'OS': 'PICK / Venix', 'Description': 'PICK R83 / Venix 80286'},
|
||||
'41': {'OS': 'Personal RISC / Linux / PowerPC', 'Description': 'Personal RISC Boot / Old Linux/Minix (disk shared with DR DOS 6.0) / PPC PReP (Power PC Reference Platform) Boot'},
|
||||
'42': {'OS': 'SFS / Linux / Windows 2000, XP, etc.', 'Description': 'Secure File system (SFS) / Old Linux swap (disk shared with DR DOS 6.0) / Dynamic extended partition marker'},
|
||||
'43': {'OS': 'Linux', 'Description': 'Old Linux native (disk shared with DR DOS 6.0) '},
|
||||
'44': {'OS': 'GoBack', 'Description': 'Norton GoBack, WildFile GoBack, Adaptec GoBack, Roxio GoBack'},
|
||||
'45': {'OS': 'Boot-US / EUMEL/ELAN', 'Description': 'Priam / Boot-US boot manager (1 cylinder) / EUMEL/ELAN (L2)'},
|
||||
'46': {'OS': 'EUMEL/ELAN', 'Description': 'EUMEL/ELAN (L2)'},
|
||||
'47': {'OS': 'EUMEL/ELAN', 'Description': 'EUMEL/ELAN (L2)'},
|
||||
'48': {'OS': 'EUMEL/ELAN', 'Description': 'EUMEL/ELAN (L2), ERGOS L3'},
|
||||
'4A': {'OS': 'AdaOS / ALFS/THIN', 'Description': 'Aquila / ALFS/THIN advanced lightweight file system for DOS'},
|
||||
'4C': {'OS': 'ETH Oberon', 'Description': 'Aos (A2) file system (76)'},
|
||||
'4D': {'OS': 'QNX 4.x, Neutrino', 'Description': 'Primary QNX POSIX volume on disk (77)'},
|
||||
'4E': {'OS': 'QNX 4.x, Neutrino', 'Description': 'Secondary QNX POSIX volume on disk (78)'},
|
||||
'4F': {'OS': 'QNX 4.x, Neutrino / ETH Oberon', 'Description': 'Tertiary QNX POSIX volume on disk (79) / boot / native file system (79)'},
|
||||
'50': {'OS': 'ETH Oberon / Disk Manager 4 / LynxOS / Novell', 'Description': 'Alternative native file system (80) / Read-only partition (old) / Lynx RTOS'},
|
||||
'51': {'OS': 'Disk Manager 4-6', 'Description': 'Read-write partition (Aux 1)'},
|
||||
'52': {'OS': 'CP/M-80 / System V/AT, V/386', 'Description': 'CP/M-80'},
|
||||
'53': {'OS': 'Disk Manager 6', 'Description': 'Auxiliary 3 (WO)'},
|
||||
'54': {'OS': 'Disk Manager 6', 'Description': 'Dynamic Drive Overlay (DDO)'},
|
||||
'55': {'OS': 'EZ-Drive', 'Description': 'EZ-Drive, Maxtor, MaxBlast, or DriveGuide INT 13h redirector volume'},
|
||||
'56': {'OS': 'AT&T MS-DOS 3.x / EZ-Drive / VFeature', 'Description': 'Logical sectored FAT12 or FAT16 / Disk Manager partition converted to EZ-BIOS / VFeature partitionned volume'},
|
||||
'57': {'OS': 'DrivePro', 'Description': 'VNDI partition'},
|
||||
'5C': {'OS': 'EDISK', 'Description': 'Priam EDisk Partitioned Volume '},
|
||||
'61': {'OS': 'SpeedStor', 'Description': 'Unknown'},
|
||||
'63': {'OS': 'Unix', 'Description': 'SCO Unix, ISC, UnixWare, AT&T System V/386, ix, MtXinu BSD 4.3 on Mach, GNU HURD'},
|
||||
'64': {'OS': 'SpeedStor / NetWare', 'Description': 'NetWare File System 286/2 / PC-ARMOUR'},
|
||||
'65': {'OS': 'NetWare', 'Description': 'NetWare File System 386'},
|
||||
'66': {'OS': 'NetWare / NetWare', 'Description': 'NetWare File System 386 / Storage Management Services (SMS)'},
|
||||
'67': {'OS': 'NetWare', 'Description': 'Wolf Mountain'},
|
||||
'68': {'OS': 'NetWare', 'Description': 'Unknown'},
|
||||
'69': {'OS': 'NetWare 5 / NetWare', 'Description': 'Novell Storage Services (NSS)'},
|
||||
'6E': {'Description': 'Unknown'},
|
||||
'70': {'OS': 'DiskSecure', 'Description': 'DiskSecure multiboot'},
|
||||
'71': {'OS': 'Microsoft, IBM', 'Description': 'Reserved'},
|
||||
'72': {'OS': 'APTI conformant systems / Unix V7/x86', 'Description': 'APTI alternative FAT12 (CHS, SFN) / V7/x86'},
|
||||
'73': {'OS': 'Microsoft, IBM', 'Description': 'Reserved'},
|
||||
'74': {'OS': 'Microsoft, IBM', 'Description': 'Reserved / Scramdisk'},
|
||||
'75': {'OS': 'PC/IX', 'Description': 'Unknown'},
|
||||
'76': {'OS': 'Microsoft, IBM', 'Description': 'Reserved'},
|
||||
'77': {'OS': 'Novell', 'Description': 'VNDI, M2FS, M2CS'},
|
||||
'78': {'OS': 'Geurt Vos', 'Description': 'XOSL bootloader file system'},
|
||||
'79': {'OS': 'APTI conformant systems', 'Description': 'APTI alternative FAT16 (CHS, SFN) '},
|
||||
'7A': {'OS': 'APTI conformant systems', 'Description': 'APTI alternative FAT16 (LBA, SFN) '},
|
||||
'7B': {'OS': 'APTI conformant systems', 'Description': 'APTI alternative FAT16B (CHS, SFN) '},
|
||||
'7C': {'OS': 'APTI conformant systems', 'Description': 'APTI alternative FAT32 (LBA, SFN) '},
|
||||
'7D': {'OS': 'APTI conformant systems', 'Description': 'APTI alternative FAT32 (CHS, SFN) '},
|
||||
'7E': {'OS': 'F.I.X. (claim) / PrimoCache', 'Description': 'Level 2 cache'},
|
||||
'7F': {'OS': 'Varies', 'Description': 'Alternative OS Development Partition Standard - reserved for individual or local use and temporary or experimental projects'},
|
||||
'80': {'OS': 'Minix 1.1-1.4a', 'Description': 'Minix file system (old)'},
|
||||
'81': {'OS': 'Minix 1.4b+ / Linux', 'Description': 'MINIX file system / Mitac Advanced Disk Manager'},
|
||||
'82': {'OS': 'Linux / Sun Microsystems', 'Description': 'Linux swap space / Solaris x86 (for Sun disklabels up to 2005) / Prime'},
|
||||
'83': {'OS': 'GNU/Linux', 'Description': 'Any native Linux file system '},
|
||||
'84': {'OS': 'OS/2 / Windows 7', 'Description': 'APM hibernation (suspend to disk, S2D) / Hidden C: (FAT16) / Rapid Start technology'},
|
||||
'85': {'OS': 'GNU/Linux', 'Description': 'Linux extended '},
|
||||
'86': {'OS': 'Windows NT 4 Server / Linux', 'Description': 'Fault-tolerant FAT16B mirrored volume set / Linux RAID superblock with auto-detect (old)'},
|
||||
'87': {'OS': 'Windows NT 4 Server', 'Description': 'Fault-tolerant HPFS/NTFS mirrored volume set '},
|
||||
'88': {'OS': 'GNU/Linux', 'Description': 'Linux plaintext partition table'},
|
||||
'8A': {'OS': 'AiR-BOOT', 'Description': 'Linux kernel image'},
|
||||
'8B': {'OS': 'Windows NT 4 Server', 'Description': 'Legacy fault-tolerant FAT32 mirrored volume set '},
|
||||
'8C': {'OS': 'Windows NT 4 Server', 'Description': 'Legacy fault-tolerant FAT32 mirrored volume set '},
|
||||
'8D': {'OS': 'Free FDISK', 'Description': 'Hidden FAT12 '},
|
||||
'8E': {'OS': 'Linux', 'Description': 'Linux LVM'},
|
||||
'90': {'OS': 'Free FDISK', 'Description': 'Hidden FAT16 '},
|
||||
'91': {'OS': 'Free FDISK', 'Description': 'Hidden extended partition with CHS addressing '},
|
||||
'92': {'OS': 'Free FDISK', 'Description': 'Hidden FAT16B '},
|
||||
'93': {'OS': 'Amoeba / Linux', 'Description': 'Amoeba native file system / Hidden Linux file system'},
|
||||
'94': {'OS': 'Amoeba', 'Description': 'Amoeba bad block table'},
|
||||
'95': {'OS': 'EXOPC', 'Description': 'EXOPC native'},
|
||||
'96': {'OS': 'CHRP', 'Description': 'ISO-9660 file system'},
|
||||
'97': {'OS': 'Free FDISK', 'Description': 'Hidden FAT32 '},
|
||||
'98': {'OS': 'Free FDISK / ROM-DOS', 'Description': 'Hidden FAT32 / service partition (bootable FAT) ROM-DOS SuperBoot / service partition (bootable FAT)'},
|
||||
'99': {'OS': 'early Unix', 'Description': 'Unknown'},
|
||||
'9A': {'OS': 'Free FDISK', 'Description': 'Hidden FAT16 '},
|
||||
'9B': {'OS': 'Free FDISK', 'Description': 'Hidden extended partition with LBA '},
|
||||
'9E': {'OS': 'VSTA / ForthOS', 'Description': 'ForthOS (eForth port)'},
|
||||
'9F': {'OS': 'BSD/OS 3.0+, BSDI', 'Description': 'Unknown'},
|
||||
'A0': {'OS': 'Hewlett Packard / Phoenix, IBM, Toshiba, Sony', 'Description': 'Diagnostic partition for HP laptops / Hibernate partition'},
|
||||
'A1': {'OS': 'Hewlett Packard / Phoenix, NEC', 'Description': 'HP Volume Expansion (SpeedStor) / Hibernate partition'},
|
||||
'A2': {'OS': 'Cyclone V', 'Description': 'Hard Processor System (HPS) ARM preloader'},
|
||||
'A3': {'OS': 'Hewlett Packard', 'Description': 'HP Volume Expansion (SpeedStor)'},
|
||||
'A4': {'OS': 'Hewlett Packard', 'Description': 'HP Volume Expansion (SpeedStor)'},
|
||||
'A5': {'OS': 'BSD', 'Description': 'BSD slice (BSD/386, 386BSD, NetBSD (old), FreeBSD)'},
|
||||
'A6': {'OS': 'OpenBSD', 'Description': 'HP Volume Expansion (SpeedStor) / OpenBSD slice'},
|
||||
'A7': {'OS': 'NeXT', 'Description': 'NeXTSTEP'},
|
||||
'A8': {'OS': 'Darwin, Mac OS X', 'Description': 'Apple Darwin, Mac OS X UFS'},
|
||||
'A9': {'OS': 'NetBSD', 'Description': 'NetBSD slice'},
|
||||
'AA': {'OS': 'MS-DOS', 'Description': 'Olivetti MS-DOS FAT12 (1.44 MB) '},
|
||||
'AB': {'OS': 'Darwin, Mac OS X / GO! OS', 'Description': 'Apple Darwin, Mac OS X boot / GO!'},
|
||||
'AD': {'OS': 'RISC OS', 'Description': 'ADFS / FileCore format'},
|
||||
'AE': {'OS': 'ShagOS', 'Description': 'ShagOS file system'},
|
||||
'AF': {'OS': 'ShagOS', 'Description': 'Apple Mac OS X HFS and HFS+ / ShagOS swap'},
|
||||
'B0': {'OS': 'Boot-Star', 'Description': 'Boot-Star dummy partition'},
|
||||
'B1': {'OS': 'QNX 6.x', 'Description': 'HP Volume Expansion (SpeedStor) / QNX Neutrino power-safe file system'},
|
||||
'B2': {'OS': 'QNX 6.x', 'Description': 'QNX Neutrino power-safe file system'},
|
||||
'B3': {'OS': 'QNX 6.x', 'Description': 'HP Volume Expansion (SpeedStor) / QNX Neutrino power-safe file system'},
|
||||
'B4': {'OS': 'Hewlett Packard', 'Description': 'HP Volume Expansion (SpeedStor)'},
|
||||
'B6': {'OS': 'Windows NT 4 Server', 'Description': 'HP Volume Expansion (SpeedStor) / Corrupted fault-tolerant FAT16B mirrored master volume '},
|
||||
'B7': {'OS': 'BSDI (before 3.0) / Windows NT 4 Server', 'Description': 'BSDI native file system / swap / Corrupted fault-tolerant HPFS/NTFS mirrored master volume '},
|
||||
'B8': {'OS': 'BSDI (before 3.0)', 'Description': 'BSDI swap / native file system'},
|
||||
'BB': {'OS': 'BootWizard, OS Selector / Acronis True Image / Windows NT 4 Server', 'Description': 'PTS BootWizard 4 / OS Selector 5 for hidden partitions other than 01h, 04h, 06h, 07h, 0Bh, 0Ch, 0Eh and unformatted partitions / OEM Secure Zone (corresponds to BCh) / Corrupted fault-tolerant FAT32 mirrored master volume '},
|
||||
'BC': {'OS': 'Windows NT 4 Server / Acronis True Image / Backup Capsule', 'Description': 'Corrupted fault-tolerant FAT32 mirrored master volume / Acronis Secure Zone / Backup Capsule'},
|
||||
'BD': {'OS': 'BonnyDOS/286', 'Description': 'Unknown'},
|
||||
'BE': {'OS': 'Solaris 8', 'Description': 'Solaris 8 boot'},
|
||||
'BF': {'OS': 'Solaris', 'Description': 'Solaris x86 (for Sun disklabels, since 2005)'},
|
||||
'C0': {'OS': 'DR-DOS, Multiuser DOS,REAL/32', 'Description': 'Secured FAT partition (smaller than 32 MB)'},
|
||||
'C1': {'OS': 'DR DOS 6.0+', 'Description': 'Secured FAT12 '},
|
||||
'C2': {'OS': 'Power Boot', 'Description': 'Hidden Linux native file system'},
|
||||
'C3': {'OS': 'Power Boot', 'Description': 'Hidden Linux swap'},
|
||||
'C4': {'OS': 'DR DOS 6.0+', 'Description': 'Secured FAT16 '},
|
||||
'C5': {'OS': 'DR DOS 6.0+', 'Description': 'Secured extended partition with CHS addressing '},
|
||||
'C6': {'OS': 'DR DOS 6.0+ / Windows NT 4 Server', 'Description': 'Secured FAT16B / Corrupted fault-tolerant FAT16B mirrored slave volume '},
|
||||
'C7': {'OS': 'Syrinx / Windows NT 4 Server', 'Description': 'Syrinx boot / Corrupted fault-tolerant HPFS/NTFS mirrored slave volume '},
|
||||
'C8': {'Description': 'Reserved for DR-DOS since 1997'},
|
||||
'C9': {'Description': 'Reserved for DR-DOS since 1997'},
|
||||
'CA': {'Description': 'Reserved for DR-DOS since 1997'},
|
||||
'CB': {'OS': 'DR-DOS 7.0x / Windows NT 4 Server', 'Description': 'Secured FAT32 / Corrupted fault-tolerant FAT32 mirrored slave volume '},
|
||||
'CC': {'OS': 'DR-DOS 7.0x / Windows NT 4 Server', 'Description': 'Secured FAT32 / Corrupted fault-tolerant FAT32 mirrored slave volume '},
|
||||
'CD': {'OS': 'CTOS', 'Description': 'Memory dump'},
|
||||
'CE': {'OS': 'DR-DOS 7.0x', 'Description': 'Secured FAT16B '},
|
||||
'CF': {'OS': 'DR-DOS 7.0x', 'Description': 'Secured extended partition with LBA '},
|
||||
'D0': {'OS': 'Multiuser DOS, REAL/32', 'Description': 'Secured FAT partition (larger than 32 MB)'},
|
||||
'D1': {'OS': 'Multiuser DOS', 'Description': 'Secured FAT12 '},
|
||||
'D4': {'OS': 'Multiuser DOS', 'Description': 'Secured FAT16 '},
|
||||
'D5': {'OS': 'Multiuser DOS', 'Description': 'Secured extended partition with CHS addressing '},
|
||||
'D6': {'OS': 'Multiuser DOS', 'Description': 'Secured FAT16B '},
|
||||
'D8': {'OS': 'Digital Research', 'Description': 'CP/M-86 [citation needed]'},
|
||||
'DA': {'OS': 'Powercopy Backup', 'Description': 'Non-file system data / Shielded disk'},
|
||||
'DB': {'OS': 'CP/M-86,Concurrent CP/M-86,Concurrent DOS / CTOS / D800 / DRMK', 'Description': 'CP/M-86, Concurrent CP/M-86, Concurrent DOS / boot image for x86 supervisor CPU (SCPU) module / FAT32 system restore partition (DSR)'},
|
||||
'DD': {'OS': 'CTOS', 'Description': 'Hidden memory dump'},
|
||||
'DE': {'OS': 'Dell', 'Description': 'FAT16 utility/diagnostic partition'},
|
||||
'DF': {'OS': 'DG/UX / BootIt / Aviion', 'Description': 'DG/UX virtual disk manager / EMBRM'},
|
||||
'E0': {'OS': 'STMicroelectronics', 'Description': 'ST AVFS'},
|
||||
'E1': {'OS': 'SpeedStor', 'Description': 'Extended FAT12 (> 1023 cylinder)'},
|
||||
'E2': {'Description': 'DOS read-only (XFDISK)'},
|
||||
'E3': {'OS': 'SpeedStor', 'Description': 'DOS read-only'},
|
||||
'E4': {'OS': 'SpeedStor', 'Description': 'Extended FAT16 (< 1024 cylinder)'},
|
||||
'E5': {'OS': 'Tandy MS-DOS', 'Description': 'Logical sectored FAT12 or FAT16'},
|
||||
'E6': {'OS': 'SpeedStor', 'Description': 'Unknown'},
|
||||
'E8': {'OS': 'LUKS', 'Description': 'Linux Unified Key Setup'},
|
||||
'EB': {'OS': 'BeOS, Haiku', 'Description': 'BFS'},
|
||||
'EC': {'OS': 'SkyOS', 'Description': 'SkyFS'},
|
||||
'ED': {'OS': 'Sprytix / EDD 4', 'Description': 'EDC loader / GPT hybrid MBR'},
|
||||
'EE': {'OS': 'EFI', 'Description': 'GPT protective MBR'},
|
||||
'EF': {'OS': 'EFI', 'Description': 'EFI system partition can be a FAT12, FAT16, FAT32 (or other) file system'},
|
||||
'F0': {'OS': 'Linux / OS/32', 'Description': 'PA-RISC Linux boot loader. It must reside in first physical 2 GB. / floppy'},
|
||||
'F1': {'OS': 'SpeedStor', 'Description': 'Unknown'},
|
||||
'F2': {'OS': 'Sperry IT MS-DOS 3.x, Unisys MS-DOS 3.3, Digital ResearchDOS Plus 2.1', 'Description': 'Logical sectored FAT12 or FAT16 secondary partition'},
|
||||
'F3': {'OS': 'SpeedStor', 'Description': 'Unknown'},
|
||||
'F4': {'OS': 'SpeedStor / Prologue', 'Description': '"large" DOS partition / single volume partition for NGF or TwinFS'},
|
||||
'F5': {'OS': 'Prologue', 'Description': 'MD0-MD9 multi volume partition for NGF or TwinFS'},
|
||||
'F6': {'OS': 'SpeedStor', 'Description': 'Unknown'},
|
||||
'F7': {'OS': 'O.S.G. / X1', 'Description': 'EFAT / Solid State file system'},
|
||||
'F9': {'OS': 'Linux', 'Description': 'pCache ext2/ext3 persistent cache'},
|
||||
'FA': {'OS': 'Bochs', 'Description': 'x86 emulator'},
|
||||
'FB': {'OS': 'VMware', 'Description': 'VMware VMFS file system partition'},
|
||||
'FC': {'OS': 'VMware', 'Description': 'VMware swap / VMKCORE kernel dump partition'},
|
||||
'FD': {'OS': 'Linux / FreeDOS', 'Description': 'Linux RAID superblock with auto-detect / Reserved for FreeDOS'},
|
||||
'FE': {'OS': 'SpeedStor / LANstep / Windows NT / Linux', 'Description': 'partition > 1024 cylinder / PS/2 IML partition / PS/2 recovery partition (FAT12 reference disk floppy image), / Disk Administration hidden partition / old Linux LVM'},
|
||||
'FF': {'OS': 'XENIX', 'Description': 'XENIX bad block table'},
|
||||
'00000000-0000-0000-0000-000000000000': {'Description': 'Unused entry'},
|
||||
'024DEE41-33E7-11D3-9D69-0008C781F39F': {'Description': 'MBR partition scheme'},
|
||||
'C12A7328-F81F-11D2-BA4B-00A0C93EC93B': {'Description': 'EFI System partition'},
|
||||
'21686148-6449-6E6F-744E-656564454649': {'Description': 'BIOS Boot partition'},
|
||||
'D3BFE2DE-3DAF-11DF-BA40-E3A556D89593': {'Description': 'Intel Fast Flash (iFFS) partition (for Intel Rapid Start technology)'},
|
||||
'F4019732-066E-4E12-8273-346C5641494F': {'Description': 'Sony boot partition'},
|
||||
'BFBFAFE7-A34F-448A-9A5B-6213EB736C22': {'Description': 'Lenovo boot partition'},
|
||||
'E3C9E316-0B5C-4DB8-817D-F92DF00215AE': {'OS': 'Windows', 'Description': 'Microsoft Reserved Partition (MSR)'},
|
||||
'EBD0A0A2-B9E5-4433-87C0-68B6B72699C7': {'OS': 'Windows', 'Description': 'Basic data partition'},
|
||||
'5808C8AA-7E8F-42E0-85D2-E1E90434CFB3': {'OS': 'Windows', 'Description': 'Logical Disk Manager (LDM) metadata partition'},
|
||||
'AF9B60A0-1431-4F62-BC68-3311714A69AD': {'OS': 'Windows', 'Description': 'Logical Disk Manager data partition'},
|
||||
'DE94BBA4-06D1-4D40-A16A-BFD50179D6AC': {'OS': 'Windows', 'Description': 'Windows Recovery Environment'},
|
||||
'37AFFC90-EF7D-4E96-91C3-2D7AE055B174': {'OS': 'Windows', 'Description': 'IBM General Parallel File System (GPFS) partition'},
|
||||
'E75CAF8F-F680-4CEE-AFA3-B001E56EFC2D': {'OS': 'Windows', 'Description': 'Storage Spaces partition'},
|
||||
'75894C1E-3AEB-11D3-B7C1-7B03A0000000': {'OS': 'HP-UX', 'Description': 'Data partition'},
|
||||
'E2A1E728-32E3-11D6-A682-7B03A0000000': {'OS': 'HP-UX', 'Description': 'Service Partition'},
|
||||
'0FC63DAF-8483-4772-8E79-3D69D8477DE4': {'OS': 'Linux', 'Description': 'Linux filesystem data'},
|
||||
'A19D880F-05FC-4D3B-A006-743F0F84911E': {'OS': 'Linux', 'Description': 'RAID partition'},
|
||||
'44479540-F297-41B2-9AF7-D131D5F0458A': {'OS': 'Linux', 'Description': 'Root partition (x86)'},
|
||||
'4F68BCE3-E8CD-4DB1-96E7-FBCAF984B709': {'OS': 'Linux', 'Description': 'Root partition (x86-64)'},
|
||||
'69DAD710-2CE4-4E3C-B16C-21A1D49ABED3': {'OS': 'Linux', 'Description': 'Root partition (32-bit ARM)'},
|
||||
'B921B045-1DF0-41C3-AF44-4C6F280D3FAE': {'OS': 'Linux', 'Description': 'Root partition (64-bit ARM/AArch64)'},
|
||||
'0657FD6D-A4AB-43C4-84E5-0933C84B4F4F': {'OS': 'Linux', 'Description': 'Swap partition'},
|
||||
'E6D6D379-F507-44C2-A23C-238F2A3DF928': {'OS': 'Linux', 'Description': 'Logical Volume Manager (LVM) partition'},
|
||||
'933AC7E1-2EB4-4F13-B844-0E14E2AEF915': {'OS': 'Linux', 'Description': '/home partition'},
|
||||
'3B8F8425-20E0-4F3B-907F-1A25A76F98E8': {'OS': 'Linux', 'Description': '/srv (server data) partition'},
|
||||
'7FFEC5C9-2D00-49B7-8941-3EA10A5586B7': {'OS': 'Linux', 'Description': 'Plain dm-crypt partition'},
|
||||
'CA7D7CCB-63ED-4C53-861C-1742536059CC': {'OS': 'Linux', 'Description': 'LUKS partition'},
|
||||
'8DA63339-0007-60C0-C436-083AC8230908': {'OS': 'Linux', 'Description': 'Reserved'},
|
||||
'83BD6B9D-7F41-11DC-BE0B-001560B84F0F': {'OS': 'FreeBSD', 'Description': 'Boot partition'},
|
||||
'516E7CB4-6ECF-11D6-8FF8-00022D09712B': {'OS': 'FreeBSD', 'Description': 'Data partition'},
|
||||
'516E7CB5-6ECF-11D6-8FF8-00022D09712B': {'OS': 'FreeBSD', 'Description': 'Swap partition'},
|
||||
'516E7CB6-6ECF-11D6-8FF8-00022D09712B': {'OS': 'FreeBSD', 'Description': 'Unix File System (UFS) partition'},
|
||||
'516E7CB8-6ECF-11D6-8FF8-00022D09712B': {'OS': 'FreeBSD', 'Description': 'Vinum volume manager partition'},
|
||||
'516E7CBA-6ECF-11D6-8FF8-00022D09712B': {'OS': 'FreeBSD', 'Description': 'ZFS partition'},
|
||||
'48465300-0000-11AA-AA11-00306543ECAC': {'OS': 'OS X Darwin', 'Description': 'Hierarchical File System Plus (HFS+) partition'},
|
||||
'55465300-0000-11AA-AA11-00306543ECAC': {'OS': 'OS X Darwin', 'Description': 'Apple UFS'},
|
||||
'6A898CC3-1DD2-11B2-99A6-080020736631': {'OS': 'OS X Darwin', 'Description': 'ZFS'},
|
||||
'52414944-0000-11AA-AA11-00306543ECAC': {'OS': 'OS X Darwin', 'Description': 'Apple RAID partition'},
|
||||
'52414944-5F4F-11AA-AA11-00306543ECAC': {'OS': 'OS X Darwin', 'Description': 'Apple RAID partition, offline'},
|
||||
'426F6F74-0000-11AA-AA11-00306543ECAC': {'OS': 'OS X Darwin', 'Description': 'Apple Boot partition (Recovery HD)'},
|
||||
'4C616265-6C00-11AA-AA11-00306543ECAC': {'OS': 'OS X Darwin', 'Description': 'Apple Label'},
|
||||
'5265636F-7665-11AA-AA11-00306543ECAC': {'OS': 'OS X Darwin', 'Description': 'Apple TV Recovery partition'},
|
||||
'53746F72-6167-11AA-AA11-00306543ECAC': {'OS': 'OS X Darwin', 'Description': 'Apple Core Storage (i.e. Lion FileVault) partition'},
|
||||
'6A82CB45-1DD2-11B2-99A6-080020736631': {'OS': 'Solaris illumos', 'Description': 'Boot partition'},
|
||||
'6A85CF4D-1DD2-11B2-99A6-080020736631': {'OS': 'Solaris illumos', 'Description': 'Root partition'},
|
||||
'6A87C46F-1DD2-11B2-99A6-080020736631': {'OS': 'Solaris illumos', 'Description': 'Swap partition'},
|
||||
'6A8B642B-1DD2-11B2-99A6-080020736631': {'OS': 'Solaris illumos', 'Description': 'Backup partition'},
|
||||
'6A898CC3-1DD2-11B2-99A6-080020736631': {'OS': 'Solaris illumos', 'Description': '/usr partition'},
|
||||
'6A8EF2E9-1DD2-11B2-99A6-080020736631': {'OS': 'Solaris illumos', 'Description': '/var partition'},
|
||||
'6A90BA39-1DD2-11B2-99A6-080020736631': {'OS': 'Solaris illumos', 'Description': '/home partition'},
|
||||
'6A9283A5-1DD2-11B2-99A6-080020736631': {'OS': 'Solaris illumos', 'Description': 'Alternate sector'},
|
||||
'6A945A3B-1DD2-11B2-99A6-080020736631': {'OS': 'Solaris illumos', 'Description': 'Reserved partition'},
|
||||
'6A9630D1-1DD2-11B2-99A6-080020736631': {'OS': 'Solaris illumos'},
|
||||
'6A980767-1DD2-11B2-99A6-080020736631': {'OS': 'Solaris illumos'},
|
||||
'6A96237F-1DD2-11B2-99A6-080020736631': {'OS': 'Solaris illumos'},
|
||||
'6A8D2AC7-1DD2-11B2-99A6-080020736631': {'OS': 'Solaris illumos'},
|
||||
'49F48D32-B10E-11DC-B99B-0019D1879648': {'OS': 'NetBSD', 'Description': 'Swap partition'},
|
||||
'49F48D5A-B10E-11DC-B99B-0019D1879648': {'OS': 'NetBSD', 'Description': 'FFS partition'},
|
||||
'49F48D82-B10E-11DC-B99B-0019D1879648': {'OS': 'NetBSD', 'Description': 'LFS partition'},
|
||||
'49F48DAA-B10E-11DC-B99B-0019D1879648': {'OS': 'NetBSD', 'Description': 'RAID partition'},
|
||||
'2DB519C4-B10F-11DC-B99B-0019D1879648': {'OS': 'NetBSD', 'Description': 'Concatenated partition'},
|
||||
'2DB519EC-B10F-11DC-B99B-0019D1879648': {'OS': 'NetBSD', 'Description': 'Encrypted partition'},
|
||||
'FE3A2A5D-4F32-41A7-B725-ACCC3285A309': {'OS': 'ChromeOS', 'Description': 'ChromeOS kernel'},
|
||||
'3CB8E202-3B7E-47DD-8A3C-7FF2A13CFCEC': {'OS': 'ChromeOS', 'Description': 'ChromeOS rootfs'},
|
||||
'2E0A753D-9E48-43B0-8337-B15192CB1B5E': {'OS': 'ChromeOS', 'Description': 'ChromeOS future use'},
|
||||
'42465331-3BA3-10F1-802A-4861696B7521': {'OS': 'Haiku', 'Description': 'Haiku BFS'},
|
||||
'85D5E45E-237C-11E1-B4B3-E89A8F7FC3A7': {'OS': 'MidnightBSD', 'Description': 'Boot partition'},
|
||||
'85D5E45A-237C-11E1-B4B3-E89A8F7FC3A7': {'OS': 'MidnightBSD', 'Description': 'Data partition'},
|
||||
'85D5E45B-237C-11E1-B4B3-E89A8F7FC3A7': {'OS': 'MidnightBSD', 'Description': 'Swap partition'},
|
||||
'0394EF8B-237E-11E1-B4B3-E89A8F7FC3A7': {'OS': 'MidnightBSD', 'Description': 'Unix File System (UFS) partition'},
|
||||
'85D5E45C-237C-11E1-B4B3-E89A8F7FC3A7': {'OS': 'MidnightBSD', 'Description': 'Vinum volume manager partition'},
|
||||
'85D5E45D-237C-11E1-B4B3-E89A8F7FC3A7': {'OS': 'MidnightBSD', 'Description': 'ZFS partition'},
|
||||
'45B0969E-9B03-4F30-B4C6-B4B80CEFF106': {'OS': 'Ceph', 'Description': 'Ceph Journal'},
|
||||
'45B0969E-9B03-4F30-B4C6-5EC00CEFF106': {'OS': 'Ceph', 'Description': 'Ceph dm-crypt Encrypted Journal'},
|
||||
'4FBD7E29-9D25-41B8-AFD0-062C0CEFF05D': {'OS': 'Ceph', 'Description': 'Ceph OSD'},
|
||||
'4FBD7E29-9D25-41B8-AFD0-5EC00CEFF05D': {'OS': 'Ceph', 'Description': 'Ceph dm-crypt OSD'},
|
||||
'89C57F98-2FE5-4DC0-89C1-F3AD0CEFF2BE': {'OS': 'Ceph', 'Description': 'Ceph disk in creation'},
|
||||
'89C57F98-2FE5-4DC0-89C1-5EC00CEFF2BE': {'OS': 'Ceph', 'Description': 'Ceph dm-crypt disk in creation'},
|
||||
'824CC7A0-36A8-11E3-890A-952519AD3F61': {'OS': 'OpenBSD', 'Description': 'Data partition'},
|
||||
'CEF5A9AD-73BC-4601-89F3-CDEEEEE321A1': {'OS': 'QNX', 'Description': 'Power-safe (QNX6) file system'},
|
||||
'C91818F9-8025-47AF-89D2-F030D7000C2C': {'OS': 'Plan 9', 'Description': 'Plan 9 partition'},
|
||||
'9D275380-40AD-11DB-BF97-000C2911D1B8': {'OS': 'VMware ESX', 'Description': 'vmkcore (coredump partition)'},
|
||||
'AA31E02A-400F-11DB-9590-000C2911D1B8': {'OS': 'VMware ESX', 'Description': 'VMFS filesystem partition'},
|
||||
'9198EFFC-31C0-11DB-8F78-000C2911D1B8': {'OS': 'VMware ESX', 'Description': 'VMware Reserved'},
|
||||
'2568845D-2332-4675-BC39-8FA5A4748D15': {'OS': 'Android-IA', 'Description': 'Bootloader'},
|
||||
'114EAFFE-1552-4022-B26E-9B053604CF84': {'OS': 'Android-IA', 'Description': 'Bootloader2'},
|
||||
'49A4D17F-93A3-45C1-A0DE-F50B2EBE2599': {'OS': 'Android-IA', 'Description': 'Boot'},
|
||||
'4177C722-9E92-4AAB-8644-43502BFD5506': {'OS': 'Android-IA', 'Description': 'Recovery'},
|
||||
'EF32A33B-A409-486C-9141-9FFB711F6266': {'OS': 'Android-IA', 'Description': 'Misc'},
|
||||
'20AC26BE-20B7-11E3-84C5-6CFDB94711E9': {'OS': 'Android-IA', 'Description': 'Metadata'},
|
||||
'38F428E6-D326-425D-9140-6E0EA133647C': {'OS': 'Android-IA', 'Description': 'System'},
|
||||
'A893EF21-E428-470A-9E55-0668FD91A2D9': {'OS': 'Android-IA', 'Description': 'Cache'},
|
||||
'DC76DDA9-5AC1-491C-AF42-A82591580C0D': {'OS': 'Android-IA', 'Description': 'Data'},
|
||||
'EBC597D0-2053-4B15-8B64-E0AAC75F4DB1': {'OS': 'Android-IA', 'Description': 'Persistent'},
|
||||
'8F68CC74-C5E5-48DA-BE91-A0C8C15E9C80': {'OS': 'Android-IA', 'Description': 'Factory'},
|
||||
'767941D0-2085-11E3-AD3B-6CFDB94711E9': {'OS': 'Android-IA', 'Description': 'Fastboot / Tertiary'},
|
||||
'AC6D7924-EB71-4DF8-B48D-E267B27148FF': {'OS': 'Android-IA', 'Description': 'OEM'},
|
||||
'7412F7D5-A156-4B13-81DC-867174929325': {'OS': 'ONIE', 'Description': 'Boot'},
|
||||
'D4E6E2CD-4469-46F3-B5CB-1BFF57AFC149': {'OS': 'ONIE', 'Description': 'Config'},
|
||||
'9E1A2D38-C612-4316-AA26-8B49521E5A8B': {'OS': 'PowerPC', 'Description': 'PReP boot'},
|
||||
'BC13C2FF-59E6-4262-A352-B275FD6F7172': {'OS': 'Freedesktop', 'Description': 'Extended Boot Partition ($BOOT)'},
|
||||
}
|
||||
|
||||
def lookup_guid(guid):
|
||||
return PARTITION_UIDS.get(guid.upper(), None)
|
||||
|
||||
if __name__ == '__main__':
|
||||
print("This file is not meant to be called directly.")
|
||||
226
FAKE_PE_ROOT/.bin/Scripts/functions/windows_setup.py
Normal file
226
FAKE_PE_ROOT/.bin/Scripts/functions/windows_setup.py
Normal file
|
|
@ -0,0 +1,226 @@
|
|||
# Wizard Kit PE: Functions - Windows Setup
|
||||
|
||||
from functions.data import *
|
||||
from functions.disk import *
|
||||
|
||||
# STATIC VARIABLES
|
||||
WINDOWS_VERSIONS = [
|
||||
{'Name': 'Windows 7 Home Basic',
|
||||
'Image File': 'Win7',
|
||||
'Image Name': 'Windows 7 HOMEBASIC'},
|
||||
{'Name': 'Windows 7 Home Premium',
|
||||
'Image File': 'Win7',
|
||||
'Image Name': 'Windows 7 HOMEPREMIUM'},
|
||||
{'Name': 'Windows 7 Professional',
|
||||
'Image File': 'Win7',
|
||||
'Image Name': 'Windows 7 PROFESSIONAL'},
|
||||
{'Name': 'Windows 7 Ultimate',
|
||||
'Image File': 'Win7',
|
||||
'Image Name': 'Windows 7 ULTIMATE'},
|
||||
|
||||
{'Name': 'Windows 8.1',
|
||||
'Image File': 'Win8',
|
||||
'Image Name': 'Windows 8.1',
|
||||
'CRLF': True},
|
||||
{'Name': 'Windows 8.1 Pro',
|
||||
'Image File': 'Win8',
|
||||
'Image Name': 'Windows 8.1 Pro'},
|
||||
|
||||
{'Name': 'Windows 10 Home',
|
||||
'Image File': 'Win10',
|
||||
'Image Name': 'Windows 10 Home',
|
||||
'CRLF': True},
|
||||
{'Name': 'Windows 10 Pro',
|
||||
'Image File': 'Win10',
|
||||
'Image Name': 'Windows 10 Pro'},
|
||||
]
|
||||
|
||||
def find_windows_image(windows_version):
|
||||
"""Search for a Windows source image file, returns dict.
|
||||
|
||||
Searches on local disks and then the WINDOWS_SERVER share."""
|
||||
image = {}
|
||||
imagefile = windows_version['Image File']
|
||||
imagename = windows_version['Image Name']
|
||||
|
||||
# Search local source
|
||||
for d in psutil.disk_partitions():
|
||||
for ext in ['esd', 'wim', 'swm']:
|
||||
path = '{}images\{}.{}'.format(d.mountpoint, imagefile, ext)
|
||||
if os.path.isfile(path) and wim_contains_image(path, imagename):
|
||||
image['Path'] = path
|
||||
image['Source'] = letter
|
||||
if ext == 'swm':
|
||||
image['Glob'] = '--ref="{}*.swm"'.format(image['Path'][:-4])
|
||||
break
|
||||
|
||||
# Check for network source
|
||||
if not image:
|
||||
mount_windows_share()
|
||||
if WINDOWS_SERVER['Mounted']:
|
||||
for ext in ['esd', 'wim', 'swm']:
|
||||
path = r'\\{}\{}\images\{}.{}'.format(
|
||||
WINDOWS_SERVER['IP'],
|
||||
WINDOWS_SERVER['Share'],
|
||||
imagefile,
|
||||
ext)
|
||||
if os.path.isfile(path) and wim_contains_image(path, imagename):
|
||||
image['Path'] = path
|
||||
image['Source'] = None
|
||||
if ext == 'swm':
|
||||
image['Glob'] = '--ref="{}*.swm"'.format(
|
||||
image['Path'][:-4])
|
||||
break
|
||||
|
||||
# Display image to be used (if any) and return
|
||||
if image:
|
||||
print_info('Using image: {}'.format(image['Path']))
|
||||
return image
|
||||
else:
|
||||
print_error('Failed to find Windows source image for {}'.format(
|
||||
windows_version['Name']))
|
||||
raise GenericAbort
|
||||
|
||||
def format_disk(disk, use_gpt):
|
||||
"""Format disk for use as a Windows OS disk."""
|
||||
if use_gpt:
|
||||
format_gpt(disk)
|
||||
else:
|
||||
format_mbr(disk)
|
||||
|
||||
def format_gpt(disk):
|
||||
"""Format disk for use as a Windows OS disk using the GPT layout."""
|
||||
script = [
|
||||
# Partition table
|
||||
'select disk {}'.format(disk['Number']),
|
||||
'clean',
|
||||
'convert gpt',
|
||||
|
||||
# System partition
|
||||
# NOTE: ESP needs to be >= 260 for Advanced Format 4K disks
|
||||
'create partition efi size=500',
|
||||
'format quick fs=fat32 label="System"',
|
||||
'assign letter="S"',
|
||||
|
||||
# Microsoft Reserved (MSR) partition
|
||||
'create partition msr size=128',
|
||||
|
||||
# Windows partition
|
||||
'create partition primary',
|
||||
'format quick fs=ntfs label="Windows"',
|
||||
'assign letter="W"',
|
||||
|
||||
# Recovery Tools partition
|
||||
'shrink minimum=500',
|
||||
'create partition primary',
|
||||
'format quick fs=ntfs label="Recovery Tools"',
|
||||
'assign letter="T"',
|
||||
'set id="de94bba4-06d1-4d40-a16a-bfd50179d6ac"',
|
||||
'gpt attributes=0x8000000000000001',
|
||||
]
|
||||
|
||||
# Run
|
||||
run_diskpart(script)
|
||||
|
||||
def format_mbr(disk):
|
||||
"""Format disk for use as a Windows OS disk using the MBR layout."""
|
||||
script = [
|
||||
# Partition table
|
||||
'select disk {}'.format(disk['Number']),
|
||||
'clean',
|
||||
|
||||
# System partition
|
||||
'create partition primary size=100',
|
||||
'format fs=ntfs quick label="System Reserved"',
|
||||
'active',
|
||||
'assign letter="S"',
|
||||
|
||||
# Windows partition
|
||||
'create partition primary',
|
||||
'format fs=ntfs quick label="Windows"',
|
||||
'assign letter="W"',
|
||||
|
||||
# Recovery Tools partition
|
||||
'shrink minimum=500',
|
||||
'create partition primary',
|
||||
'format quick fs=ntfs label="Recovery"',
|
||||
'assign letter="T"',
|
||||
'set id=27',
|
||||
]
|
||||
|
||||
# Run
|
||||
run_diskpart(script)
|
||||
|
||||
def mount_windows_share():
|
||||
"""Mount the Windows images share unless labeled as already mounted."""
|
||||
if not WINDOWS_SERVER['Mounted']:
|
||||
mount_network_share(WINDOWS_SERVER)
|
||||
|
||||
def select_windows_version():
|
||||
actions = [
|
||||
{'Name': 'Main Menu', 'Letter': 'M'},
|
||||
]
|
||||
|
||||
# Menu loop
|
||||
selection = menu_select(
|
||||
title = 'Which version of Windows are we installing?',
|
||||
main_entries = WINDOWS_VERSIONS,
|
||||
action_entries = actions)
|
||||
|
||||
if selection.isnumeric():
|
||||
return WINDOWS_VERSIONS[int(selection)-1]
|
||||
elif selection == 'M':
|
||||
raise GenericAbort
|
||||
|
||||
def setup_windows(windows_image, windows_version):
|
||||
cmd = [
|
||||
global_vars['Tools']['wimlib-imagex'],
|
||||
'apply',
|
||||
windows_image['Path'],
|
||||
windows_version['Image Name'],
|
||||
'W:\\']
|
||||
if 'Glob' in windows_image:
|
||||
cmd.extend(windows_image['Glob'])
|
||||
run_program(cmd)
|
||||
|
||||
def setup_windows_re(windows_version, windows_letter='W', tools_letter='T'):
|
||||
win = r'{}:\Windows'.format(windows_letter)
|
||||
winre = r'{}\System32\Recovery\WinRE.wim'.format(win)
|
||||
dest = r'{}:\Recovery\WindowsRE'.format(tools_letter)
|
||||
|
||||
# Copy WinRE.wim
|
||||
os.makedirs(dest, exist_ok=True)
|
||||
shutil.copy(winre, r'{}\WinRE.wim'.format(dest))
|
||||
|
||||
# Set location
|
||||
cmd = [
|
||||
r'{}\System32\ReAgentc.exe'.format(win),
|
||||
'/setreimage',
|
||||
'/path', dest,
|
||||
'/target', win]
|
||||
run_program(cmd)
|
||||
|
||||
def update_boot_partition(system_letter='S', windows_letter='W', mode='ALL'):
|
||||
cmd = [
|
||||
r'{}\Windows\System32\bcdboot.exe'.format(
|
||||
global_vars['Env']['SYSTEMDRIVE']),
|
||||
r'{}:\Windows'.format(windows_letter),
|
||||
'/s', '{}:'.format(system_letter),
|
||||
'/f', mode]
|
||||
run_program(cmd)
|
||||
|
||||
def wim_contains_image(filename, imagename):
|
||||
cmd = [
|
||||
global_vars['Tools']['wimlib-imagex'],
|
||||
'info',
|
||||
filename,
|
||||
imagename]
|
||||
try:
|
||||
run_program(cmd)
|
||||
except subprocess.CalledProcessError:
|
||||
return False
|
||||
|
||||
return True
|
||||
|
||||
if __name__ == '__main__':
|
||||
print("This file is not meant to be called directly.")
|
||||
428
FAKE_PE_ROOT/.bin/Scripts/functions/winpe_menus.py
Normal file
428
FAKE_PE_ROOT/.bin/Scripts/functions/winpe_menus.py
Normal file
|
|
@ -0,0 +1,428 @@
|
|||
# Wizard Kit PE: Menus
|
||||
|
||||
from functions.backup import *
|
||||
from functions.disk import *
|
||||
from functions.windows_setup import *
|
||||
|
||||
# STATIC VARIABLES
|
||||
FAST_COPY_PE_ARGS = [
|
||||
'/cmd=noexist_only',
|
||||
'/utf8',
|
||||
'/skip_empty_dir',
|
||||
'/linkdest',
|
||||
'/no_ui',
|
||||
'/auto_close',
|
||||
'/exclude={}'.format(';'.join(FAST_COPY_EXCLUDES)),
|
||||
]
|
||||
PE_TOOLS = {
|
||||
'BlueScreenView': {
|
||||
'Path': r'BlueScreenView\BlueScreenView.exe',
|
||||
},
|
||||
'FastCopy': {
|
||||
'Path': r'FastCopy\FastCopy.exe',
|
||||
'Args': FAST_COPY_PE_ARGS,
|
||||
},
|
||||
'HWiNFO': {
|
||||
'Path': r'HWiNFO\HWiNFO.exe',
|
||||
},
|
||||
'NT Password Editor': {
|
||||
'Path': r'NT Password Editor\ntpwedit.exe',
|
||||
},
|
||||
'Notepad++': {
|
||||
'Path': r'NotepadPlusPlus\NotepadPlusPlus.exe',
|
||||
},
|
||||
'PhotoRec': {
|
||||
'Path': r'TestDisk\photorec_win.exe',
|
||||
'Args': ['-new_console:n'],
|
||||
},
|
||||
'Prime95': {
|
||||
'Path': r'Prime95\prime95.exe',
|
||||
},
|
||||
'ProduKey': {
|
||||
'Path': r'ProduKey\ProduKey.exe',
|
||||
},
|
||||
'Q-Dir': {
|
||||
'Path': r'Q-Dir\Q-Dir.exe',
|
||||
},
|
||||
'TestDisk': {
|
||||
'Path': r'TestDisk\testdisk_win.exe',
|
||||
'Args': ['-new_console:n'],
|
||||
},
|
||||
}
|
||||
|
||||
def check_pe_tools():
|
||||
for k in PE_TOOLS.keys():
|
||||
PE_TOOLS[k]['Path'] = r'{}\{}'.format(
|
||||
global_vars['BinDir'], PE_TOOLS[k]['Path'])
|
||||
global_vars['Tools']['wimlib-imagex'] = re.sub(
|
||||
r'\\x(32|64)',
|
||||
r'',
|
||||
global_vars['Tools']['wimlib-imagex'],
|
||||
re.IGNORECASE)
|
||||
|
||||
def menu_backup():
|
||||
"""Take backup images of partition(s) in the WIM format."""
|
||||
errors = False
|
||||
other_results = {
|
||||
'Error': {
|
||||
'CalledProcessError': 'Unknown Error',
|
||||
'PathNotFoundError': 'Missing',
|
||||
},
|
||||
'Warning': {
|
||||
'GenericAbort': 'Skipped',
|
||||
'GenericRepair': 'Repaired',
|
||||
}}
|
||||
set_title('{}: Backup Menu'.format(KIT_NAME_FULL))
|
||||
|
||||
# Set ticket Number
|
||||
clear_screen()
|
||||
print_standard('{}\n'.format(global_vars['Title']))
|
||||
ticket_number = get_ticket_number()
|
||||
|
||||
# Mount backup shares
|
||||
mount_backup_shares()
|
||||
|
||||
# Select destination
|
||||
destination = select_backup_destination(auto_select=False)
|
||||
|
||||
# Scan disks
|
||||
try_and_print(
|
||||
message = 'Assigning letters...',
|
||||
function = assign_volume_letters,
|
||||
other_results = other_results)
|
||||
result = try_and_print(
|
||||
message = 'Getting disk info...',
|
||||
function = scan_disks,
|
||||
other_results = other_results)
|
||||
if result['CS']:
|
||||
disks = result['Out']
|
||||
else:
|
||||
print_error('ERROR: No disks found.')
|
||||
raise GenericAbort
|
||||
|
||||
# Select disk to backup
|
||||
disk = select_disk('For which disk are we creating backups?', disks)
|
||||
if not disk:
|
||||
raise GenericAbort
|
||||
|
||||
# "Prep" disk
|
||||
prep_disk_for_backup(destination, disk, ticket_number)
|
||||
|
||||
# Display details for backup task
|
||||
clear_screen()
|
||||
print_info('Create Backup - Details:\n')
|
||||
show_data(message='Ticket:', data=ticket_number)
|
||||
show_data(
|
||||
message = 'Source:',
|
||||
data = '[{Table}] ({Type}) {Name} {Size}'.format(**disk),
|
||||
)
|
||||
show_data(
|
||||
message = 'Destination:',
|
||||
data = destination.get('Display Name', destination['Name']),
|
||||
)
|
||||
for par in disk['Partitions']:
|
||||
message = 'Partition {}:'.format(par['Number'])
|
||||
data = par['Display String']
|
||||
if par['Number'] in disk['Bad Partitions']:
|
||||
show_data(message=message, data=data, width=30, warning=True)
|
||||
elif par['Image Exists']:
|
||||
show_data(message=message, data=data, width=30, info=True)
|
||||
else:
|
||||
show_data(message=message, data=data, width=30)
|
||||
print_standard(disk['Backup Warnings'])
|
||||
|
||||
# Ask to proceed
|
||||
if (not ask('Proceed with backup?')):
|
||||
raise GenericAbort
|
||||
|
||||
# Backup partition(s)
|
||||
print_info('\n\nStarting task.\n')
|
||||
for par in disk['Partitions']:
|
||||
result = try_and_print(
|
||||
message = 'Partition {} Backup...'.format(par['Number']),
|
||||
function = backup_partition,
|
||||
other_results = other_results,
|
||||
disk = disk,
|
||||
par = par)
|
||||
if not result['CS'] and not isinstance(result['Error'], GenericAbort):
|
||||
errors = True
|
||||
par['Error'] = result['Error']
|
||||
|
||||
# Verify backup(s)
|
||||
if disk['Valid Partitions']:
|
||||
print_info('\n\n Verifying backup images(s)\n')
|
||||
for par in disk['Partitions']:
|
||||
if par['Number'] in disk['Bad Partitions']:
|
||||
continue # Skip verification
|
||||
result = try_and_print(
|
||||
message = 'Partition {} Image...'.format(par['Number']),
|
||||
function = verify_wim_backup,
|
||||
other_results = other_results,
|
||||
partition = par)
|
||||
if not result['CS']:
|
||||
errors = True
|
||||
par['Error'] = result['Error']
|
||||
|
||||
# Print summary
|
||||
if errors:
|
||||
print_warning('\nErrors were encountered and are detailed below.')
|
||||
for par in [p for p in disk['Partitions'] if 'Error' in p]:
|
||||
print_standard(' Partition {} Error:'.format(par['Number']))
|
||||
if hasattr(par['Error'], 'stderr'):
|
||||
try:
|
||||
par['Error'] = par['Error'].stderr.decode()
|
||||
except:
|
||||
# Deal with badly formatted error message
|
||||
pass
|
||||
try:
|
||||
par['Error'] = par['Error'].splitlines()
|
||||
par['Error'] = [line.strip() for line in par['Error']]
|
||||
par['Error'] = [line for line in par['Error'] if line]
|
||||
for line in par['Error']:
|
||||
print_error('\t{}'.format(line))
|
||||
except:
|
||||
print_error('\t{}'.format(par['Error']))
|
||||
else:
|
||||
print_success('\nNo errors were encountered during imaging.')
|
||||
if 'LogFile' in global_vars:
|
||||
cmd = [
|
||||
global_vars['Tools']['NotepadPlusPlus'],
|
||||
global_vars['LogFile']]
|
||||
try:
|
||||
popen_program(cmd)
|
||||
except Exception:
|
||||
print_error('ERROR: Failed to open log.')
|
||||
sleep(30)
|
||||
pause('\nPress Enter to return to main menu... ')
|
||||
|
||||
def menu_root():
|
||||
check_pe_tools()
|
||||
menus = [
|
||||
{'Name': 'Create Backups', 'Menu': menu_backup},
|
||||
{'Name': 'Setup Windows', 'Menu': menu_setup},
|
||||
{'Name': 'Misc Tools', 'Menu': menu_tools},
|
||||
]
|
||||
actions = [
|
||||
{'Name': 'Command Prompt', 'Letter': 'C'},
|
||||
{'Name': 'Reboot', 'Letter': 'R'},
|
||||
{'Name': 'Shutdown', 'Letter': 'S'},
|
||||
]
|
||||
|
||||
# Main loop
|
||||
while True:
|
||||
set_title(KIT_NAME_FULL)
|
||||
selection = menu_select(
|
||||
title = 'Main Menu',
|
||||
main_entries = menus,
|
||||
action_entries = actions,
|
||||
secret_exit = True)
|
||||
|
||||
if (selection.isnumeric()):
|
||||
try:
|
||||
menus[int(selection)-1]['Menu']()
|
||||
except GenericAbort:
|
||||
print_warning('\nAborted\n')
|
||||
pause('Press Enter to return to main menu... ')
|
||||
elif (selection == 'C'):
|
||||
run_program(['cmd', '-new_console:n'], check=False)
|
||||
elif (selection == 'R'):
|
||||
run_program(['wpeutil', 'reboot'])
|
||||
elif (selection == 'S'):
|
||||
run_program(['wpeutil', 'shutdown'])
|
||||
else:
|
||||
sys.exit()
|
||||
|
||||
def menu_setup():
|
||||
"""Format a disk (MBR/GPT), apply a Windows image, and setup boot files."""
|
||||
errors = False
|
||||
other_results = {
|
||||
'Error': {
|
||||
'CalledProcessError': 'Unknown Error',
|
||||
'PathNotFoundError': 'Missing',
|
||||
},
|
||||
'Warning': {
|
||||
'GenericAbort': 'Skipped',
|
||||
'GenericRepair': 'Repaired',
|
||||
}}
|
||||
set_title('{}: Setup Menu'.format(KIT_NAME_FULL))
|
||||
|
||||
# Set ticket ID
|
||||
clear_screen()
|
||||
print_standard('{}\n'.format(global_vars['Title']))
|
||||
ticket_number = get_ticket_number()
|
||||
|
||||
# Select the version of Windows to apply
|
||||
windows_version = select_windows_version()
|
||||
|
||||
# Find Windows image
|
||||
windows_image = find_windows_image(windows_version)
|
||||
|
||||
# Scan disks
|
||||
try_and_print(
|
||||
message = 'Assigning letters...',
|
||||
function = assign_volume_letters,
|
||||
other_results = other_results)
|
||||
result = try_and_print(
|
||||
message = 'Getting disk info...',
|
||||
function = scan_disks,
|
||||
other_results = other_results)
|
||||
if result['CS']:
|
||||
disks = result['Out']
|
||||
else:
|
||||
print_error('ERROR: No disks found.')
|
||||
raise GenericAbort
|
||||
|
||||
# Select disk to use as the OS disk
|
||||
dest_disk = select_disk('To which disk are we installing Windows?', disks)
|
||||
if not dest_disk:
|
||||
raise GenericAbort
|
||||
|
||||
# "Prep" disk
|
||||
prep_disk_for_formatting(dest_disk)
|
||||
|
||||
# Display details for setup task
|
||||
clear_screen()
|
||||
print_info('Setup Windows - Details:\n')
|
||||
show_data(message='Ticket:', data=ticket_number)
|
||||
show_data(message='Installing:', data=windows_version['Name'])
|
||||
show_data(
|
||||
message = 'Boot Method:',
|
||||
data = 'UEFI (GPT)' if dest_disk['Use GPT'] else 'Legacy (MBR)')
|
||||
show_data(message='Using Image:', data=windows_image['Path'])
|
||||
show_data(
|
||||
message = 'ERASING:',
|
||||
data = '[{Table}] ({Type}) {Name} {Size}\n'.format(**dest_disk),
|
||||
warning = True)
|
||||
for par in dest_disk['Partitions']:
|
||||
show_data(
|
||||
message = 'Partition {}:'.format(par['Number']),
|
||||
data = par['Display String'],
|
||||
warning = True)
|
||||
print_warning(dest_disk['Format Warnings'])
|
||||
|
||||
if (not ask('Is this correct?')):
|
||||
raise GenericAbort
|
||||
|
||||
# Safety check
|
||||
print_standard('\nSAFETY CHECK')
|
||||
print_warning('All data will be DELETED from the '
|
||||
'disk and partition(s) listed above.')
|
||||
print_warning('This is irreversible and will lead '
|
||||
'to {CLEAR}{RED}DATA LOSS.'.format(**COLORS))
|
||||
if (not ask('Asking again to confirm, is this correct?')):
|
||||
raise GenericAbort
|
||||
|
||||
# Remove volume letters so S, T, & W can be used below
|
||||
remove_volume_letters(keep=windows_image['Source'])
|
||||
new_letter = reassign_volume_letter(letter=windows_image['Source'])
|
||||
if new_letter:
|
||||
windows_image['Source'] = new_letter
|
||||
|
||||
# Format and partition disk
|
||||
result = try_and_print(
|
||||
message = 'Formatting disk...',
|
||||
function = format_disk,
|
||||
other_results = other_results,
|
||||
disk = dest_disk,
|
||||
use_gpt = dest_disk['Use GPT'])
|
||||
if not result['CS']:
|
||||
# We need to crash as the disk is in an unknown state
|
||||
print_error('ERROR: Failed to format disk.')
|
||||
raise GenericAbort
|
||||
|
||||
# Apply Image
|
||||
result = try_and_print(
|
||||
message = 'Applying image...',
|
||||
function = setup_windows,
|
||||
other_results = other_results,
|
||||
windows_image = windows_image,
|
||||
windows_version = windows_version)
|
||||
if not result['CS']:
|
||||
# We need to crash as the disk is in an unknown state
|
||||
print_error('ERROR: Failed to apply image.')
|
||||
raise GenericAbort
|
||||
|
||||
# Create Boot files
|
||||
try_and_print(
|
||||
message = 'Updating boot files...',
|
||||
function = update_boot_partition,
|
||||
other_results = other_results)
|
||||
|
||||
# Setup WinRE
|
||||
try_and_print(
|
||||
message = 'Updating recovery tools...',
|
||||
function = setup_windows_re,
|
||||
other_results = other_results,
|
||||
windows_version = windows_version)
|
||||
|
||||
# Print summary
|
||||
print_standard('\nDone.')
|
||||
if 'LogFile' in global_vars:
|
||||
cmd = [
|
||||
global_vars['Tools']['NotepadPlusPlus'],
|
||||
global_vars['LogFile']]
|
||||
try:
|
||||
popen_program(cmd)
|
||||
except Exception:
|
||||
print_error('ERROR: Failed to open log.')
|
||||
sleep(30)
|
||||
pause('\nPress Enter to return to main menu... ')
|
||||
|
||||
def menu_tools():
|
||||
tools = [{'Name': k} for k in sorted(PE_TOOLS.keys())]
|
||||
actions = [{'Name': 'Main Menu', 'Letter': 'M'},]
|
||||
set_title(KIT_NAME_FULL)
|
||||
|
||||
# Menu loop
|
||||
while True:
|
||||
selection = menu_select(
|
||||
title = 'Tools Menu',
|
||||
main_entries = tools,
|
||||
action_entries = actions)
|
||||
if (selection.isnumeric()):
|
||||
name = tools[int(selection)-1]['Name']
|
||||
cmd = [PE_TOOLS[name]['Path']] + PE_TOOLS[name].get('Args', [])
|
||||
if name == 'Blue Screen View':
|
||||
# Select path to scan
|
||||
minidump_path = select_minidump_path()
|
||||
if minidump_path:
|
||||
cmd.extend(['/MiniDumpFolder', minidump_path])
|
||||
try:
|
||||
popen_program(cmd)
|
||||
except Exception:
|
||||
print_error('Failed to run {}'.format(name))
|
||||
sleep(2)
|
||||
pause()
|
||||
elif (selection == 'M'):
|
||||
break
|
||||
|
||||
def select_minidump_path():
|
||||
dumps = []
|
||||
|
||||
# Assign volume letters first
|
||||
assign_volume_letters()
|
||||
|
||||
# Search for minidumps
|
||||
tmp = run_program('mountvol')
|
||||
tmp = [d for d in re.findall(r'.*([A-Za-z]):\\', tmp.stdout.decode())]
|
||||
# Remove RAMDisk letter
|
||||
if 'X' in tmp:
|
||||
tmp.remove('X')
|
||||
for disk in tmp:
|
||||
if os.path.exists('{}:\\Windows\\MiniDump'.format(disk)):
|
||||
dumps.append({'Name': '{}:\\Windows\\MiniDump'.format(disk)})
|
||||
|
||||
# Check results before showing menu
|
||||
if len(dumps) == 0:
|
||||
print_error(' No BSoD / MiniDump paths found')
|
||||
sleep(2)
|
||||
return None
|
||||
|
||||
# Menu
|
||||
selection = menu_select(
|
||||
title = 'Which BSoD / MiniDump path are we scanning?',
|
||||
main_entries = dumps)
|
||||
return dumps[int(selection) - 1]['Name']
|
||||
|
||||
if __name__ == '__main__':
|
||||
print("This file is not meant to be called directly.")
|
||||
68
FAKE_PE_ROOT/.bin/Scripts/settings/main.py
Normal file
68
FAKE_PE_ROOT/.bin/Scripts/settings/main.py
Normal file
|
|
@ -0,0 +1,68 @@
|
|||
# Wizard Kit PE: Settings - Main / Branding
|
||||
|
||||
# Features
|
||||
ENABLED_UPLOAD_DATA = False
|
||||
|
||||
# STATIC VARIABLES (also used by .cmd files)
|
||||
## Not using spaces aroung '=' for easier .cmd substrings
|
||||
ARCHIVE_PASSWORD='Abracadabra'
|
||||
KIT_NAME_FULL='Wizard Kit PE'
|
||||
KIT_NAME_SHORT='WKPE'
|
||||
OFFICE_SERVER_IP='10.0.0.10'
|
||||
QUICKBOOKS_SERVER_IP='10.0.0.10'
|
||||
SUPPORT_MESSAGE='Please let 2Shirt know by opening an issue on GitHub'
|
||||
TIME_ZONE='Pacific Standard Time' # Always use "Standard Time" (DST is applied correctly)
|
||||
|
||||
# SERVER VARIABLES
|
||||
## NOTE: Windows can only use one user per server. This means that if
|
||||
## one server serves multiple shares then you have to use the same
|
||||
## user/password for all of those shares.
|
||||
BACKUP_SERVERS = [
|
||||
{ 'IP': '10.0.0.10',
|
||||
'Name': 'ServerOne',
|
||||
'Mounted': False,
|
||||
'Share': 'Backups',
|
||||
'User': 'restore',
|
||||
'Pass': 'Abracadabra',
|
||||
},
|
||||
{ 'IP': '10.0.0.11',
|
||||
'Name': 'ServerTwo',
|
||||
'Mounted': False,
|
||||
'Share': 'Backups',
|
||||
'User': 'restore',
|
||||
'Pass': 'Abracadabra',
|
||||
},
|
||||
]
|
||||
CLIENT_INFO_SERVER = {
|
||||
'IP': '10.0.0.10',
|
||||
'RegEntry': r'0x10001,0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000',
|
||||
'Share': '/srv/ClientInfo',
|
||||
'User': 'upload',
|
||||
}
|
||||
OFFICE_SERVER = {
|
||||
'IP': OFFICE_SERVER_IP,
|
||||
'Name': 'ServerOne',
|
||||
'Mounted': False,
|
||||
'Share': 'Office',
|
||||
'User': 'restore',
|
||||
'Pass': 'Abracadabra',
|
||||
}
|
||||
QUICKBOOKS_SERVER = {
|
||||
'IP': QUICKBOOKS_SERVER_IP,
|
||||
'Name': 'ServerOne',
|
||||
'Mounted': False,
|
||||
'Share': 'QuickBooks',
|
||||
'User': 'restore',
|
||||
'Pass': 'Abracadabra',
|
||||
}
|
||||
WINDOWS_SERVER = {
|
||||
'IP': '10.0.0.10',
|
||||
'Name': 'ServerOne',
|
||||
'Mounted': False,
|
||||
'Share': 'Windows',
|
||||
'User': 'restore',
|
||||
'Pass': 'Abracadabra',
|
||||
}
|
||||
|
||||
if __name__ == '__main__':
|
||||
print("This file is not meant to be called directly.")
|
||||
55
FAKE_PE_ROOT/.bin/Scripts/settings/tools.py
Normal file
55
FAKE_PE_ROOT/.bin/Scripts/settings/tools.py
Normal file
|
|
@ -0,0 +1,55 @@
|
|||
# Wizard Kit PE: Settings - Tools
|
||||
|
||||
TOOLS = {
|
||||
# NOTE: BinDir will be prepended to these paths at runtime
|
||||
'AIDA64': {
|
||||
'32': r'AIDA64\aida64.exe'},
|
||||
'AutoRuns': {
|
||||
'32': r'Autoruns\autoruns.exe',
|
||||
'64': r'Autoruns\autoruns64.exe'},
|
||||
'BleachBit': {
|
||||
'32': r'BleachBit\bleachbit_console.exe'},
|
||||
'Caffeine': {
|
||||
'32': r'Caffeine\caffeine.exe'},
|
||||
'Du': {
|
||||
'32': r'Du\du.exe',
|
||||
'64': r'Du\du64.exe'},
|
||||
'ERUNT': {
|
||||
'32': r'ERUNT\ERUNT.EXE'},
|
||||
'Everything': {
|
||||
'32': r'Everything\Everything.exe',
|
||||
'64': r'Everything\Everything64.exe'},
|
||||
'FastCopy': {
|
||||
'32': r'FastCopy\FastCopy.exe',
|
||||
'64': r'FastCopy\FastCopy64.exe'},
|
||||
'HitmanPro': {
|
||||
'32': r'HitmanPro\HitmanPro.exe',
|
||||
'64': r'HitmanPro\HitmanPro64.exe'},
|
||||
'HWiNFO': {
|
||||
'32': r'HWiNFO\HWiNFO.exe',
|
||||
'64': r'HWiNFO\HWiNFO64.exe'},
|
||||
'KVRT': {
|
||||
'32': r'KVRT\KVRT.exe'},
|
||||
'NotepadPlusPlus': {
|
||||
'32': r'NotepadPlusPlus\notepadplusplus.exe'},
|
||||
'ProduKey': {
|
||||
'32': r'ProduKey\ProduKey.exe',
|
||||
'64': r'ProduKey\ProduKey64.exe'},
|
||||
'PuTTY-PSFTP': {
|
||||
'32': r'PuTTY\PSFTP.EXE'},
|
||||
'RKill': {
|
||||
'32': r'RKill\RKill.exe'},
|
||||
'SevenZip': {
|
||||
'32': r'7-Zip\7za.exe',
|
||||
'64': r'7-Zip\7za64.exe'},
|
||||
'TDSSKiller': {
|
||||
'32': r'TDSSKiller\TDSSKiller.exe'},
|
||||
'wimlib-imagex': {
|
||||
'32': r'wimlib\x32\wimlib-imagex.exe',
|
||||
'64': r'wimlib\x64\wimlib-imagex.exe'},
|
||||
'XMPlay': {
|
||||
'32': r'XMPlay\xmplay.exe'},
|
||||
}
|
||||
|
||||
if __name__ == '__main__':
|
||||
print("This file is not meant to be called directly.")
|
||||
20
FAKE_PE_ROOT/.bin/Scripts/winpe_root_menu.py
Normal file
20
FAKE_PE_ROOT/.bin/Scripts/winpe_root_menu.py
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
# Wizard Kit PE: Root Menu
|
||||
|
||||
import os
|
||||
import sys
|
||||
|
||||
# Init
|
||||
os.chdir(os.path.dirname(os.path.realpath(__file__)))
|
||||
sys.path.append(os.getcwd())
|
||||
from functions.winpe_menus import *
|
||||
init_global_vars()
|
||||
set_title('{}: Root Menu'.format(KIT_NAME_FULL))
|
||||
global_vars['LogFile'] = r'{LogDir}\WinPE.log'.format(**global_vars)
|
||||
|
||||
if __name__ == '__main__':
|
||||
try:
|
||||
menu_root()
|
||||
except SystemExit:
|
||||
pass
|
||||
except:
|
||||
major_exception()
|
||||
3
FAKE_PE_ROOT/.gitignore
vendored
Normal file
3
FAKE_PE_ROOT/.gitignore
vendored
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
**/__pycache__/*
|
||||
BUILD
|
||||
OUT_PE
|
||||
6
FAKE_PE_ROOT/.pe_items/System32/Winpeshl.ini
Normal file
6
FAKE_PE_ROOT/.pe_items/System32/Winpeshl.ini
Normal file
|
|
@ -0,0 +1,6 @@
|
|||
[LaunchApp]
|
||||
[LaunchApps]
|
||||
wpeinit
|
||||
wpeutil updatebootinfo
|
||||
cd /d "%SystemDrive%\.bin"
|
||||
"%SystemDrive%\.bin\ConEmu\ConEmu.exe", /cmd cmd /k cd "%SystemDrive%\.bin" & python "%SystemDrive%\.bin\Scripts\winpe_root_menu.py"
|
||||
2
FAKE_PE_ROOT/.pe_items/System32/menu.cmd
Normal file
2
FAKE_PE_ROOT/.pe_items/System32/menu.cmd
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
@echo off
|
||||
python "%SystemDrive%\.bin\Scripts\winpe_root_menu.py"
|
||||
20
FAKE_PE_ROOT/.pe_items/_include/CPU-Z/cpuz.ini
Normal file
20
FAKE_PE_ROOT/.pe_items/_include/CPU-Z/cpuz.ini
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
[CPU-Z]
|
||||
VERSION=1.7.7.0
|
||||
TextFontName=
|
||||
TextFontSize=14
|
||||
TextFontColor=000080
|
||||
LabelFontName=
|
||||
LabelFontSize=14
|
||||
ACPI=1
|
||||
PCI=1
|
||||
MaxPCIBus=256
|
||||
DMI=1
|
||||
Sensor=1
|
||||
SMBus=1
|
||||
Display=1
|
||||
UseDisplayAPI=1
|
||||
BusClock=1
|
||||
Chipset=1
|
||||
SPD=1
|
||||
XOC=0
|
||||
CheckUpdates=0
|
||||
765
FAKE_PE_ROOT/.pe_items/_include/ConEmu/ConEmu.xml
Normal file
765
FAKE_PE_ROOT/.pe_items/_include/ConEmu/ConEmu.xml
Normal file
|
|
@ -0,0 +1,765 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<key name="Software">
|
||||
<key name="ConEmu">
|
||||
<key name=".Vanilla" modified="2017-02-26 11:32:01" build="170118">
|
||||
<value name="StartType" type="hex" data="02"/>
|
||||
<value name="CmdLine" type="string" data=""/>
|
||||
<value name="StartTasksFile" type="string" data=""/>
|
||||
<value name="StartTasksName" type="string" data="{Shells::cmd}"/>
|
||||
<value name="StartFarFolders" type="hex" data="00"/>
|
||||
<value name="StartFarEditors" type="hex" data="00"/>
|
||||
<value name="StartCreateDelay" type="ulong" data="100"/>
|
||||
<value name="ColorTable00" type="dword" data="00303030"/>
|
||||
<value name="ColorTable01" type="dword" data="00ff5b1f"/>
|
||||
<value name="ColorTable02" type="dword" data="0000ffaf"/>
|
||||
<value name="ColorTable03" type="dword" data="00ffff87"/>
|
||||
<value name="ColorTable04" type="dword" data="002929ef"/>
|
||||
<value name="ColorTable05" type="dword" data="00ff8ad1"/>
|
||||
<value name="ColorTable06" type="dword" data="000087ff"/>
|
||||
<value name="ColorTable07" type="dword" data="00c6c6c6"/>
|
||||
<value name="ColorTable08" type="dword" data="00b2b2b2"/>
|
||||
<value name="ColorTable09" type="dword" data="00d7af5f"/>
|
||||
<value name="ColorTable10" type="dword" data="0000dba1"/>
|
||||
<value name="ColorTable11" type="dword" data="00afd700"/>
|
||||
<value name="ColorTable12" type="dword" data="004b4bff"/>
|
||||
<value name="ColorTable13" type="dword" data="00a34eff"/>
|
||||
<value name="ColorTable14" type="dword" data="004fe9fc"/>
|
||||
<value name="ColorTable15" type="dword" data="00e7fdfd"/>
|
||||
<value name="ColorTable16" type="dword" data="00000000"/>
|
||||
<value name="ColorTable17" type="dword" data="00000080"/>
|
||||
<value name="ColorTable18" type="dword" data="00008000"/>
|
||||
<value name="ColorTable19" type="dword" data="00008080"/>
|
||||
<value name="ColorTable20" type="dword" data="00800000"/>
|
||||
<value name="ColorTable21" type="dword" data="00800080"/>
|
||||
<value name="ColorTable22" type="dword" data="00808000"/>
|
||||
<value name="ColorTable23" type="dword" data="00c0c0c0"/>
|
||||
<value name="ColorTable24" type="dword" data="00808080"/>
|
||||
<value name="ColorTable25" type="dword" data="000000ff"/>
|
||||
<value name="ColorTable26" type="dword" data="0000ff00"/>
|
||||
<value name="ColorTable27" type="dword" data="0000ffff"/>
|
||||
<value name="ColorTable28" type="dword" data="00ff0000"/>
|
||||
<value name="ColorTable29" type="dword" data="00ff00ff"/>
|
||||
<value name="ColorTable30" type="dword" data="00ffff00"/>
|
||||
<value name="ColorTable31" type="dword" data="00ffffff"/>
|
||||
<value name="ExtendColors" type="hex" data="00"/>
|
||||
<value name="ExtendColorIdx" type="hex" data="0e"/>
|
||||
<value name="TextColorIdx" type="hex" data="10"/>
|
||||
<value name="BackColorIdx" type="hex" data="10"/>
|
||||
<value name="PopTextColorIdx" type="hex" data="10"/>
|
||||
<value name="PopBackColorIdx" type="hex" data="10"/>
|
||||
<value name="ExtendFonts" type="hex" data="00"/>
|
||||
<value name="ExtendFontNormalIdx" type="hex" data="01"/>
|
||||
<value name="ExtendFontBoldIdx" type="hex" data="0c"/>
|
||||
<value name="ExtendFontItalicIdx" type="hex" data="0d"/>
|
||||
<value name="CursorTypeActive" type="dword" data="000232c1"/>
|
||||
<value name="CursorTypeInactive" type="dword" data="00823283"/>
|
||||
<value name="ClipboardDetectLineEnd" type="hex" data="01"/>
|
||||
<value name="ClipboardBashMargin" type="hex" data="00"/>
|
||||
<value name="ClipboardTrimTrailing" type="hex" data="02"/>
|
||||
<value name="ClipboardEOL" type="hex" data="00"/>
|
||||
<value name="ClipboardArrowStart" type="hex" data="01"/>
|
||||
<value name="ClipboardAllLines" type="hex" data="01"/>
|
||||
<value name="ClipboardFirstLine" type="hex" data="01"/>
|
||||
<value name="ClipboardClickPromptPosition" type="hex" data="02"/>
|
||||
<value name="ClipboardDeleteLeftWord" type="hex" data="02"/>
|
||||
<value name="TrueColorerSupport" type="hex" data="01"/>
|
||||
<value name="VividColors" type="hex" data="01"/>
|
||||
<value name="FadeInactive" type="hex" data="01"/>
|
||||
<value name="FadeInactiveLow" type="hex" data="00"/>
|
||||
<value name="FadeInactiveHigh" type="hex" data="d0"/>
|
||||
<value name="ConVisible" type="hex" data="00"/>
|
||||
<value name="UseInjects" type="hex" data="01"/>
|
||||
<value name="SetDefaultTerminal" type="hex" data="00"/>
|
||||
<value name="SetDefaultTerminalStartup" type="hex" data="00"/>
|
||||
<value name="SetDefaultTerminalStartupTSA" type="hex" data="00"/>
|
||||
<value name="DefaultTerminalAgressive" type="hex" data="01"/>
|
||||
<value name="DefaultTerminalNoInjects" type="hex" data="00"/>
|
||||
<value name="DefaultTerminalNewWindow" type="hex" data="00"/>
|
||||
<value name="DefaultTerminalDebugLog" type="hex" data="00"/>
|
||||
<value name="DefaultTerminalConfirm" type="hex" data="01"/>
|
||||
<value name="DefaultTerminalApps" type="string" data="explorer.exe"/>
|
||||
<value name="ProcessAnsi" type="hex" data="01"/>
|
||||
<value name="AnsiExecution" type="hex" data="01"/>
|
||||
<value name="AnsiAllowedCommands" type="multi">
|
||||
<line data="cmd -cur_console:R /cGitShowBranch.cmd"/>
|
||||
</value>
|
||||
<value name="AnsiLog" type="hex" data="00"/>
|
||||
<value name="AnsiLogPath" type="string" data="%UserProfile%\ConEmu\Logs\"/>
|
||||
<value name="KillSshAgent" type="hex" data="01"/>
|
||||
<value name="ProcessNewConArg" type="hex" data="01"/>
|
||||
<value name="ProcessCmdStart" type="hex" data="00"/>
|
||||
<value name="ProcessCtrlZ" type="hex" data="00"/>
|
||||
<value name="SuppressBells" type="hex" data="01"/>
|
||||
<value name="ConsoleExceptionHandler" type="hex" data="00"/>
|
||||
<value name="UseClink" type="hex" data="01"/>
|
||||
<value name="StoreTaskbarkTasks" type="hex" data="01"/>
|
||||
<value name="StoreTaskbarCommands" type="hex" data="00"/>
|
||||
<value name="JumpListAutoUpdate" type="hex" data="01"/>
|
||||
<value name="SaveCmdHistory" type="hex" data="01"/>
|
||||
<value name="CmdLineHistory" type="multi">
|
||||
<line data="cmd.exe /k "%ConEmuBaseDir%\CmdInit.cmd""/>
|
||||
</value>
|
||||
<value name="SingleInstance" type="hex" data="00"/>
|
||||
<value name="ShowHelpTooltips" type="hex" data="01"/>
|
||||
<value name="Multi" type="hex" data="01"/>
|
||||
<value name="Multi.ShowButtons" type="hex" data="01"/>
|
||||
<value name="Multi.ShowSearch" type="hex" data="01"/>
|
||||
<value name="Multi.NumberInCaption" type="hex" data="00"/>
|
||||
<value name="Multi.CloseConfirmFlags" type="hex" data="04"/>
|
||||
<value name="Multi.NewConfirm" type="hex" data="00"/>
|
||||
<value name="Multi.DupConfirm" type="hex" data="01"/>
|
||||
<value name="Multi.DetachConfirm" type="hex" data="01"/>
|
||||
<value name="Multi.UseArrows" type="hex" data="00"/>
|
||||
<value name="Multi.UseNumbers" type="hex" data="01"/>
|
||||
<value name="Multi.UseWinTab" type="hex" data="00"/>
|
||||
<value name="Multi.AutoCreate" type="hex" data="00"/>
|
||||
<value name="Multi.LeaveOnClose" type="hex" data="00"/>
|
||||
<value name="Multi.HideOnClose" type="hex" data="00"/>
|
||||
<value name="Multi.MinByEsc" type="hex" data="00"/>
|
||||
<value name="MapShiftEscToEsc" type="hex" data="01"/>
|
||||
<value name="Multi.Iterate" type="hex" data="01"/>
|
||||
<value name="Multi.SplitWidth" type="hex" data="04"/>
|
||||
<value name="Multi.SplitHeight" type="hex" data="04"/>
|
||||
<value name="KeyboardHooks" type="hex" data="02"/>
|
||||
<value name="FontName" type="string" data="Consolas"/>
|
||||
<value name="FontName2" type="string" data=""/>
|
||||
<value name="FontAutoSize" type="hex" data="00"/>
|
||||
<value name="FontSize" type="ulong" data="14"/>
|
||||
<value name="FontSizeX" type="ulong" data="0"/>
|
||||
<value name="FontUseDpi" type="hex" data="01"/>
|
||||
<value name="FontUseUnits" type="hex" data="01"/>
|
||||
<value name="FontSizeX2" type="ulong" data="0"/>
|
||||
<value name="FontSizeX3" type="ulong" data="0"/>
|
||||
<value name="FontCharSet" type="hex" data="01"/>
|
||||
<value name="Anti-aliasing" type="ulong" data="6"/>
|
||||
<value name="FontBold" type="hex" data="00"/>
|
||||
<value name="FontItalic" type="hex" data="00"/>
|
||||
<value name="Monospace" type="hex" data="01"/>
|
||||
<value name="CompressLongStrings" type="hex" data="01"/>
|
||||
<value name="BackGround Image show" type="hex" data="01"/>
|
||||
<value name="BackGround Image" type="string" data="ConEmu.jpg"/>
|
||||
<value name="bgImageDarker" type="hex" data="60"/>
|
||||
<value name="bgImageColors" type="dword" data="ffffffff"/>
|
||||
<value name="bgOperation" type="hex" data="07"/>
|
||||
<value name="bgPluginAllowed" type="hex" data="01"/>
|
||||
<value name="AlphaValue" type="hex" data="ff"/>
|
||||
<value name="AlphaValueSeparate" type="hex" data="00"/>
|
||||
<value name="AlphaValueInactive" type="hex" data="92"/>
|
||||
<value name="UserScreenTransparent" type="hex" data="00"/>
|
||||
<value name="ColorKeyTransparent" type="hex" data="00"/>
|
||||
<value name="ColorKeyValue" type="dword" data="00010101"/>
|
||||
<value name="UseCurrentSizePos" type="hex" data="01"/>
|
||||
<value name="AutoSaveSizePos" type="hex" data="00"/>
|
||||
<value name="Cascaded" type="hex" data="00"/>
|
||||
<value name="IntegralSize" type="hex" data="00"/>
|
||||
<value name="WindowMode" type="dword" data="00000520"/>
|
||||
<value name="ConWnd X" type="long" data="6"/>
|
||||
<value name="ConWnd Y" type="long" data="6"/>
|
||||
<value name="LastMonitor" type="string" data="0,0,1440,900"/>
|
||||
<value name="ConWnd Width" type="dword" data="0200004b"/>
|
||||
<value name="ConWnd Height" type="dword" data="02000033"/>
|
||||
<value name="16bit Height" type="ulong" data="0"/>
|
||||
<value name="QuakeStyle" type="hex" data="00"/>
|
||||
<value name="Restore2ActiveMon" type="hex" data="00"/>
|
||||
<value name="QuakeAnimation" type="ulong" data="300"/>
|
||||
<value name="HideCaption" type="hex" data="01"/>
|
||||
<value name="HideChildCaption" type="hex" data="01"/>
|
||||
<value name="FocusInChildWindows" type="hex" data="01"/>
|
||||
<value name="HideCaptionAlways" type="hex" data="00"/>
|
||||
<value name="HideCaptionAlwaysFrame" type="hex" data="ff"/>
|
||||
<value name="HideCaptionAlwaysDelay" type="ulong" data="2000"/>
|
||||
<value name="HideCaptionAlwaysDisappear" type="ulong" data="2000"/>
|
||||
<value name="DownShowHiddenMessage" type="hex" data="00"/>
|
||||
<value name="DownShowExOnTopMessage" type="hex" data="00"/>
|
||||
<value name="ConsoleFontName" type="string" data="Lucida Console"/>
|
||||
<value name="ConsoleFontWidth" type="long" data="3"/>
|
||||
<value name="ConsoleFontHeight" type="long" data="5"/>
|
||||
<value name="DefaultBufferHeight" type="long" data="1000"/>
|
||||
<value name="AutoBufferHeight" type="hex" data="01"/>
|
||||
<value name="UseScrollLock" type="hex" data="01"/>
|
||||
<value name="CmdOutputCP" type="long" data="0"/>
|
||||
<value name="ComSpec.Type" type="hex" data="00"/>
|
||||
<value name="ComSpec.Bits" type="hex" data="00"/>
|
||||
<value name="ComSpec.UpdateEnv" type="hex" data="00"/>
|
||||
<value name="ComSpec.EnvAddPath" type="hex" data="01"/>
|
||||
<value name="ComSpec.EnvAddExePath" type="hex" data="01"/>
|
||||
<value name="ComSpec.UncPaths" type="hex" data="00"/>
|
||||
<value name="ComSpec.Path" type="string" data=""/>
|
||||
<value name="EnvironmentSet" type="multi">
|
||||
<line data="set PATH=%ConEmuBaseDir%\Scripts;%PATH%"/>
|
||||
</value>
|
||||
<value name="CTS.Intelligent" type="hex" data="01"/>
|
||||
<value name="CTS.IntelligentExceptions" type="string" data="far|vim"/>
|
||||
<value name="CTS.AutoCopy" type="hex" data="01"/>
|
||||
<value name="CTS.ResetOnRelease" type="hex" data="01"/>
|
||||
<value name="CTS.IBeam" type="hex" data="01"/>
|
||||
<value name="CTS.EndOnTyping" type="hex" data="00"/>
|
||||
<value name="CTS.EndOnKeyPress" type="hex" data="00"/>
|
||||
<value name="CTS.EraseBeforeReset" type="hex" data="01"/>
|
||||
<value name="CTS.Freeze" type="hex" data="00"/>
|
||||
<value name="CTS.SelectBlock" type="hex" data="01"/>
|
||||
<value name="CTS.SelectText" type="hex" data="01"/>
|
||||
<value name="CTS.HtmlFormat" type="hex" data="00"/>
|
||||
<value name="CTS.ForceLocale" type="dword" data="00000000"/>
|
||||
<value name="CTS.RBtnAction" type="hex" data="03"/>
|
||||
<value name="CTS.MBtnAction" type="hex" data="00"/>
|
||||
<value name="CTS.ColorIndex" type="hex" data="e0"/>
|
||||
<value name="ClipboardConfirmEnter" type="hex" data="01"/>
|
||||
<value name="ClipboardConfirmLonger" type="ulong" data="200"/>
|
||||
<value name="FarGotoEditorOpt" type="hex" data="01"/>
|
||||
<value name="FarGotoEditorPath" type="string" data="far.exe /e%1:%2 "%3""/>
|
||||
<value name="HighlightMouseRow" type="hex" data="00"/>
|
||||
<value name="HighlightMouseCol" type="hex" data="00"/>
|
||||
<value name="FixFarBorders" type="hex" data="01"/>
|
||||
<value name="Anti-aliasing2" type="hex" data="00"/>
|
||||
<value name="FixFarBordersRanges" type="string" data="2013-25C4;"/>
|
||||
<value name="ExtendUCharMap" type="hex" data="01"/>
|
||||
<value name="EnhanceGraphics" type="hex" data="01"/>
|
||||
<value name="EnhanceButtons" type="hex" data="00"/>
|
||||
<value name="PartBrush75" type="hex" data="c8"/>
|
||||
<value name="PartBrush50" type="hex" data="96"/>
|
||||
<value name="PartBrush25" type="hex" data="5a"/>
|
||||
<value name="PartBrushBlack" type="hex" data="20"/>
|
||||
<value name="RightClick opens context menu" type="hex" data="02"/>
|
||||
<value name="RightClickMacro2" type="string" data=""/>
|
||||
<value name="SendAltTab" type="hex" data="00"/>
|
||||
<value name="SendAltEsc" type="hex" data="00"/>
|
||||
<value name="SendAltPrintScrn" type="hex" data="00"/>
|
||||
<value name="SendPrintScrn" type="hex" data="00"/>
|
||||
<value name="SendCtrlEsc" type="hex" data="00"/>
|
||||
<value name="Min2Tray" type="hex" data="00"/>
|
||||
<value name="AlwaysShowTrayIcon" type="hex" data="00"/>
|
||||
<value name="SafeFarClose" type="hex" data="01"/>
|
||||
<value name="SafeFarCloseMacro" type="string" data=""/>
|
||||
<value name="FARuseASCIIsort" type="hex" data="00"/>
|
||||
<value name="ShellNoZoneCheck" type="hex" data="00"/>
|
||||
<value name="FixAltOnAltTab" type="hex" data="00"/>
|
||||
<value name="UseAltGrayPlus" type="hex" data="01"/>
|
||||
<value name="DisableMouse" type="hex" data="00"/>
|
||||
<value name="RSelectionFix" type="hex" data="01"/>
|
||||
<value name="MouseSkipActivation" type="hex" data="01"/>
|
||||
<value name="MouseSkipMoving" type="hex" data="01"/>
|
||||
<value name="MouseDragWindow" type="hex" data="01"/>
|
||||
<value name="FarHourglass" type="hex" data="01"/>
|
||||
<value name="FarHourglassDelay" type="ulong" data="500"/>
|
||||
<value name="Dnd" type="hex" data="01"/>
|
||||
<value name="DndDrop" type="hex" data="01"/>
|
||||
<value name="DefCopy" type="hex" data="01"/>
|
||||
<value name="DropUseMenu" type="hex" data="02"/>
|
||||
<value name="DragOverlay" type="hex" data="01"/>
|
||||
<value name="DragShowIcons" type="hex" data="01"/>
|
||||
<value name="DebugSteps" type="hex" data="00"/>
|
||||
<value name="DebugLog" type="hex" data="00"/>
|
||||
<value name="DragPanel" type="hex" data="02"/>
|
||||
<value name="DragPanelBothEdges" type="hex" data="00"/>
|
||||
<value name="KeyBarRClick" type="hex" data="01"/>
|
||||
<value name="StatusBar.Show" type="hex" data="00"/>
|
||||
<value name="StatusBar.Flags" type="dword" data="00000002"/>
|
||||
<value name="StatusFontFace" type="string" data="Segoe UI"/>
|
||||
<value name="StatusFontCharSet" type="ulong" data="0"/>
|
||||
<value name="StatusFontHeight" type="long" data="12"/>
|
||||
<value name="StatusBar.Color.Back" type="dword" data="00423607"/>
|
||||
<value name="StatusBar.Color.Light" type="dword" data="00e3f6fd"/>
|
||||
<value name="StatusBar.Color.Dark" type="dword" data="00a1a193"/>
|
||||
<value name="StatusBar.Hide.VCon" type="hex" data="00"/>
|
||||
<value name="StatusBar.Hide.CapsL" type="hex" data="01"/>
|
||||
<value name="StatusBar.Hide.NumL" type="hex" data="00"/>
|
||||
<value name="StatusBar.Hide.ScrL" type="hex" data="01"/>
|
||||
<value name="StatusBar.Hide.VisL" type="hex" data="01"/>
|
||||
<value name="StatusBar.Hide.Lang" type="hex" data="01"/>
|
||||
<value name="StatusBar.Hide.KeyHooks" type="hex" data="01"/>
|
||||
<value name="StatusBar.Hide.TMode" type="hex" data="01"/>
|
||||
<value name="StatusBar.Hide.RMode" type="hex" data="01"/>
|
||||
<value name="StatusBar.Hide.WPos" type="hex" data="01"/>
|
||||
<value name="StatusBar.Hide.WSize" type="hex" data="01"/>
|
||||
<value name="StatusBar.Hide.WClient" type="hex" data="01"/>
|
||||
<value name="StatusBar.Hide.WWork" type="hex" data="01"/>
|
||||
<value name="StatusBar.Hide.WVBack" type="hex" data="01"/>
|
||||
<value name="StatusBar.Hide.WVDC" type="hex" data="01"/>
|
||||
<value name="StatusBar.Hide.Style" type="hex" data="01"/>
|
||||
<value name="StatusBar.Hide.StyleEx" type="hex" data="01"/>
|
||||
<value name="StatusBar.Hide.hFore" type="hex" data="01"/>
|
||||
<value name="StatusBar.Hide.hFocus" type="hex" data="01"/>
|
||||
<value name="StatusBar.Hide.Zoom" type="hex" data="01"/>
|
||||
<value name="StatusBar.Hide.Dpi" type="hex" data="01"/>
|
||||
<value name="StatusBar.Hide.ABuf" type="hex" data="00"/>
|
||||
<value name="StatusBar.Hide.CPos" type="hex" data="01"/>
|
||||
<value name="StatusBar.Hide.CSize" type="hex" data="00"/>
|
||||
<value name="StatusBar.Hide.BSize" type="hex" data="01"/>
|
||||
<value name="StatusBar.Hide.CurX" type="hex" data="01"/>
|
||||
<value name="StatusBar.Hide.CurY" type="hex" data="01"/>
|
||||
<value name="StatusBar.Hide.CurS" type="hex" data="01"/>
|
||||
<value name="StatusBar.Hide.CurI" type="hex" data="00"/>
|
||||
<value name="StatusBar.Hide.ConEmuPID" type="hex" data="01"/>
|
||||
<value name="StatusBar.Hide.ConEmuHWND" type="hex" data="01"/>
|
||||
<value name="StatusBar.Hide.ConEmuView" type="hex" data="01"/>
|
||||
<value name="StatusBar.Hide.Srv" type="hex" data="00"/>
|
||||
<value name="StatusBar.Hide.SrvHWND" type="hex" data="01"/>
|
||||
<value name="StatusBar.Hide.Transparency" type="hex" data="00"/>
|
||||
<value name="StatusBar.Hide.New" type="hex" data="00"/>
|
||||
<value name="StatusBar.Hide.Sync" type="hex" data="00"/>
|
||||
<value name="StatusBar.Hide.Proc" type="hex" data="00"/>
|
||||
<value name="StatusBar.Hide.Title" type="hex" data="01"/>
|
||||
<value name="StatusBar.Hide.Time" type="hex" data="01"/>
|
||||
<value name="StatusBar.Hide.Resize" type="hex" data="00"/>
|
||||
<value name="Tabs" type="hex" data="00"/>
|
||||
<value name="TabsLocation" type="hex" data="00"/>
|
||||
<value name="TabIcons" type="hex" data="01"/>
|
||||
<value name="OneTabPerGroup" type="hex" data="00"/>
|
||||
<value name="ActivateSplitMouseOver" type="hex" data="01"/>
|
||||
<value name="TabSelf" type="hex" data="01"/>
|
||||
<value name="TabLazy" type="hex" data="01"/>
|
||||
<value name="TabFlashChanged" type="long" data="8"/>
|
||||
<value name="TabRecent" type="hex" data="01"/>
|
||||
<value name="TabDblClick" type="ulong" data="1"/>
|
||||
<value name="TabBtnDblClick" type="ulong" data="0"/>
|
||||
<value name="TabsOnTaskBar" type="hex" data="02"/>
|
||||
<value name="TaskBarOverlay" type="hex" data="01"/>
|
||||
<value name="TaskbarProgress" type="hex" data="01"/>
|
||||
<value name="TabCloseMacro" type="string" data=""/>
|
||||
<value name="TabFontFace" type="string" data="Segoe UI"/>
|
||||
<value name="TabFontCharSet" type="ulong" data="0"/>
|
||||
<value name="TabFontHeight" type="long" data="13"/>
|
||||
<value name="SaveAllEditors" type="string" data=""/>
|
||||
<value name="ToolbarAddSpace" type="long" data="0"/>
|
||||
<value name="TabConsole" type="string" data="<%c> %s"/>
|
||||
<value name="TabModifiedSuffix" type="string" data="[*]"/>
|
||||
<value name="TabSkipWords" type="string" data="Administrator:|Администратор:"/>
|
||||
<value name="TabPanels" type="string" data="<%c> %s"/>
|
||||
<value name="TabEditor" type="string" data="<%c.%i>{%s}"/>
|
||||
<value name="TabEditorModified" type="string" data="<%c.%i>[%s] *"/>
|
||||
<value name="TabViewer" type="string" data="<%c.%i>[%s]"/>
|
||||
<value name="TabLenMax" type="ulong" data="20"/>
|
||||
<value name="AdminTitleSuffix" type="string" data=" (Admin)"/>
|
||||
<value name="AdminShowShield" type="hex" data="01"/>
|
||||
<value name="HideInactiveConsoleTabs" type="hex" data="00"/>
|
||||
<value name="ShowFarWindows" type="hex" data="01"/>
|
||||
<value name="TryToCenter" type="hex" data="00"/>
|
||||
<value name="CenterConsolePad" type="ulong" data="0"/>
|
||||
<value name="ShowScrollbar" type="hex" data="02"/>
|
||||
<value name="ScrollBarAppearDelay" type="ulong" data="100"/>
|
||||
<value name="ScrollBarDisappearDelay" type="ulong" data="200"/>
|
||||
<value name="IconID" type="ulong" data="1"/>
|
||||
<value name="MainTimerElapse" type="ulong" data="10"/>
|
||||
<value name="MainTimerInactiveElapse" type="ulong" data="1000"/>
|
||||
<value name="AffinityMask" type="dword" data="00000000"/>
|
||||
<value name="SkipFocusEvents" type="hex" data="00"/>
|
||||
<value name="MonitorConsoleLang" type="hex" data="03"/>
|
||||
<value name="SnapToDesktopEdges" type="hex" data="00"/>
|
||||
<value name="AlwaysOnTop" type="hex" data="00"/>
|
||||
<value name="SleepInBackground" type="hex" data="00"/>
|
||||
<value name="RetardInactivePanes" type="hex" data="00"/>
|
||||
<value name="MinimizeOnLoseFocus" type="hex" data="00"/>
|
||||
<value name="DisableFarFlashing" type="hex" data="00"/>
|
||||
<value name="DisableAllFlashing" type="hex" data="00"/>
|
||||
<value name="FindText" type="string" data=""/>
|
||||
<value name="FindMatchCase" type="hex" data="00"/>
|
||||
<value name="FindMatchWholeWords" type="hex" data="00"/>
|
||||
<value name="FindTransparent" type="hex" data="01"/>
|
||||
<value name="PanView.BackColor" type="dword" data="30ffffff"/>
|
||||
<value name="PanView.PFrame" type="long" data="1"/>
|
||||
<value name="PanView.PFrameColor" type="dword" data="28808080"/>
|
||||
<value name="PanView.SFrame" type="long" data="1"/>
|
||||
<value name="PanView.SFrameColor" type="dword" data="07c0c0c0"/>
|
||||
<value name="PanView.Thumbs.ImgSize" type="long" data="96"/>
|
||||
<value name="PanView.Thumbs.SpaceX1" type="long" data="1"/>
|
||||
<value name="PanView.Thumbs.SpaceY1" type="long" data="1"/>
|
||||
<value name="PanView.Thumbs.SpaceX2" type="long" data="5"/>
|
||||
<value name="PanView.Thumbs.SpaceY2" type="long" data="20"/>
|
||||
<value name="PanView.Thumbs.LabelSpacing" type="long" data="2"/>
|
||||
<value name="PanView.Thumbs.LabelPadding" type="long" data="0"/>
|
||||
<value name="PanView.Thumbs.FontName" type="string" data="Segoe UI"/>
|
||||
<value name="PanView.Thumbs.FontHeight" type="long" data="14"/>
|
||||
<value name="PanView.Tiles.ImgSize" type="long" data="48"/>
|
||||
<value name="PanView.Tiles.SpaceX1" type="long" data="4"/>
|
||||
<value name="PanView.Tiles.SpaceY1" type="long" data="4"/>
|
||||
<value name="PanView.Tiles.SpaceX2" type="long" data="172"/>
|
||||
<value name="PanView.Tiles.SpaceY2" type="long" data="4"/>
|
||||
<value name="PanView.Tiles.LabelSpacing" type="long" data="4"/>
|
||||
<value name="PanView.Tiles.LabelPadding" type="long" data="1"/>
|
||||
<value name="PanView.Tiles.FontName" type="string" data="Segoe UI"/>
|
||||
<value name="PanView.Tiles.FontHeight" type="long" data="14"/>
|
||||
<value name="PanView.LoadPreviews" type="hex" data="03"/>
|
||||
<value name="PanView.LoadFolders" type="hex" data="01"/>
|
||||
<value name="PanView.LoadTimeout" type="ulong" data="15"/>
|
||||
<value name="PanView.MaxZoom" type="ulong" data="600"/>
|
||||
<value name="PanView.UsePicView2" type="hex" data="01"/>
|
||||
<value name="PanView.RestoreOnStartup" type="hex" data="00"/>
|
||||
<value name="Update.VerLocation" type="string" data=""/>
|
||||
<value name="Update.CheckOnStartup" type="hex" data="00"/>
|
||||
<value name="Update.CheckHourly" type="hex" data="00"/>
|
||||
<value name="Update.ConfirmDownload" type="hex" data="01"/>
|
||||
<value name="Update.UseBuilds" type="hex" data="02"/>
|
||||
<value name="Update.InetTool" type="hex" data="00"/>
|
||||
<value name="Update.InetToolCmd" type="string" data=""/>
|
||||
<value name="Update.UseProxy" type="hex" data="00"/>
|
||||
<value name="Update.Proxy" type="string" data=""/>
|
||||
<value name="Update.ProxyUser" type="string" data=""/>
|
||||
<value name="Update.ProxyPassword" type="string" data=""/>
|
||||
<value name="Update.ExeCmdLine" type="string" data=""/>
|
||||
<value name="Update.ArcCmdLine" type="string" data=""/>
|
||||
<value name="Update.DownloadPath" type="string" data="%TEMP%\ConEmu"/>
|
||||
<value name="Update.LeavePackages" type="hex" data="00"/>
|
||||
<value name="Update.PostUpdateCmd" type="string" data="echo Last successful update>ConEmuUpdate.info && date /t>>ConEmuUpdate.info && time /t>>ConEmuUpdate.info"/>
|
||||
<key name="HotKeys" modified="2017-02-26 11:32:01" build="170118">
|
||||
<value name="KeyMacroVersion" type="hex" data="02"/>
|
||||
<value name="Multi.Modifier" type="dword" data="0000005b"/>
|
||||
<value name="Multi.ArrowsModifier" type="dword" data="0000005b"/>
|
||||
<value name="MinimizeRestore" type="dword" data="000011c0"/>
|
||||
<value name="MinimizeRestore2" type="dword" data="00000000"/>
|
||||
<value name="GlobalRestore" type="dword" data="00000000"/>
|
||||
<value name="CdExplorerPath" type="dword" data="00000000"/>
|
||||
<value name="ForcedFullScreen" type="dword" data="12115b0d"/>
|
||||
<value name="SwitchGuiFocus" type="dword" data="00005b5a"/>
|
||||
<value name="SetFocusGui" type="dword" data="00000000"/>
|
||||
<value name="SetFocusChild" type="dword" data="00000000"/>
|
||||
<value name="ChildSystemMenu" type="dword" data="00000000"/>
|
||||
<value name="Multi.NewConsole" type="dword" data="00005b57"/>
|
||||
<value name="Multi.NewConsoleShift" type="dword" data="00105b57"/>
|
||||
<value name="Multi.CmdKey" type="dword" data="00005b58"/>
|
||||
<value name="Multi.NewWindow" type="dword" data="00000000"/>
|
||||
<value name="Multi.NewConsolePopup" type="dword" data="00005b4e"/>
|
||||
<value name="Multi.NewConsolePopup2" type="dword" data="00000000"/>
|
||||
<value name="Multi.NewAttach" type="dword" data="00005b47"/>
|
||||
<value name="Multi.NewSplitV" type="dword" data="0010114f"/>
|
||||
<value name="Multi.NewSplitH" type="dword" data="00101145"/>
|
||||
<value name="Multi.SplitMaximize" type="dword" data="00005d0d"/>
|
||||
<value name="Multi.SplitSizeVU" type="dword" data="00105d26"/>
|
||||
<value name="Multi.SplitSizeVD" type="dword" data="00105d28"/>
|
||||
<value name="Multi.SplitSizeHL" type="dword" data="00105d25"/>
|
||||
<value name="Multi.SplitSizeHR" type="dword" data="00105d27"/>
|
||||
<value name="Key.TabPane1" type="dword" data="00005d09"/>
|
||||
<value name="Key.TabPane2" type="dword" data="00105d09"/>
|
||||
<value name="Multi.SplitFocusU" type="dword" data="00005d26"/>
|
||||
<value name="Multi.SplitFocusD" type="dword" data="00005d28"/>
|
||||
<value name="Multi.SplitFocusL" type="dword" data="00005d25"/>
|
||||
<value name="Multi.SplitFocusR" type="dword" data="00005d27"/>
|
||||
<value name="Multi.Next" type="dword" data="00005b51"/>
|
||||
<value name="Multi.NextShift" type="dword" data="00105b51"/>
|
||||
<value name="Multi.Recreate" type="dword" data="00005bc0"/>
|
||||
<value name="Multi.AltCon" type="dword" data="00005b41"/>
|
||||
<value name="Multi.Pause" type="dword" data="80808013"/>
|
||||
<value name="Multi.Scroll" type="dword" data="00000000"/>
|
||||
<value name="Multi.GroupInput" type="dword" data="00005d47"/>
|
||||
<value name="Multi.Detach" type="dword" data="00000000"/>
|
||||
<value name="Multi.Unfasten" type="dword" data="00000000"/>
|
||||
<value name="Multi.Close" type="dword" data="00005b2e"/>
|
||||
<value name="CloseTabKey" type="dword" data="00125b2e"/>
|
||||
<value name="CloseGroupKey" type="dword" data="00115b2e"/>
|
||||
<value name="CloseGroupPrcKey" type="dword" data="00000000"/>
|
||||
<value name="CloseAllConKey" type="dword" data="00000000"/>
|
||||
<value name="CloseZombiesKey" type="dword" data="00000000"/>
|
||||
<value name="CloseExceptConKey" type="dword" data="00000000"/>
|
||||
<value name="KillProcessKey" type="dword" data="00121103"/>
|
||||
<value name="KillAllButShellKey" type="dword" data="00125b13"/>
|
||||
<value name="DuplicateRootKey" type="dword" data="00005b53"/>
|
||||
<value name="CloseConEmuKey" type="dword" data="00005b73"/>
|
||||
<value name="Multi.Rename" type="dword" data="00005d52"/>
|
||||
<value name="AffinityPriorityKey" type="dword" data="00005d41"/>
|
||||
<value name="Multi.MoveLeft" type="dword" data="00125b25"/>
|
||||
<value name="Multi.MoveRight" type="dword" data="00125b27"/>
|
||||
<value name="CTS.VkBlockStart" type="dword" data="00000000"/>
|
||||
<value name="CTS.VkTextStart" type="dword" data="00000000"/>
|
||||
<value name="CTS.VkCopyFmt0" type="dword" data="00001143"/>
|
||||
<value name="CTS.VkCopyFmt1" type="dword" data="00101143"/>
|
||||
<value name="CTS.VkCopyFmt2" type="dword" data="00000000"/>
|
||||
<value name="CTS.VkCopyAll" type="dword" data="00000000"/>
|
||||
<value name="HighlightMouseSwitch" type="dword" data="00005d4c"/>
|
||||
<value name="HighlightMouseSwitchX" type="dword" data="00005d58"/>
|
||||
<value name="Multi.ShowTabsList" type="dword" data="00000000"/>
|
||||
<value name="Multi.ShowTabsList2" type="dword" data="00005d7b"/>
|
||||
<value name="ClipboardVkAllLines" type="dword" data="0000102d"/>
|
||||
<value name="ClipboardVkFirstLine" type="dword" data="00001156"/>
|
||||
<value name="Key.AltNumpad" type="dword" data="00000000"/>
|
||||
<value name="DeleteWordToLeft" type="dword" data="00001108"/>
|
||||
<value name="FindTextKey" type="dword" data="00005d46"/>
|
||||
<value name="ScreenshotKey" type="dword" data="00005b48"/>
|
||||
<value name="ScreenshotFullKey" type="dword" data="00105b48"/>
|
||||
<value name="ShowStatusBarKey" type="dword" data="00005d53"/>
|
||||
<value name="ShowTabBarKey" type="dword" data="00005d54"/>
|
||||
<value name="ShowCaptionKey" type="dword" data="00005d43"/>
|
||||
<value name="AlwaysOnTopKey" type="dword" data="00000000"/>
|
||||
<value name="TransparencyInc" type="dword" data="00000000"/>
|
||||
<value name="TransparencyDec" type="dword" data="00000000"/>
|
||||
<value name="Key.TabMenu" type="dword" data="00005d20"/>
|
||||
<value name="Key.TabMenu2" type="dword" data="00001002"/>
|
||||
<value name="Key.Maximize" type="dword" data="00001278"/>
|
||||
<value name="Key.MaximizeWidth" type="dword" data="00105b28"/>
|
||||
<value name="Key.MaximizeHeight" type="dword" data="00105b26"/>
|
||||
<value name="Key.TileToLeft" type="dword" data="00005b25"/>
|
||||
<value name="Key.TileToRight" type="dword" data="00005b27"/>
|
||||
<value name="Key.JumpActiveMonitor" type="dword" data="00000000"/>
|
||||
<value name="Key.JumpPrevMonitor" type="dword" data="00105b25"/>
|
||||
<value name="Key.JumpNextMonitor" type="dword" data="00105b27"/>
|
||||
<value name="Key.FullScreen" type="dword" data="0000120d"/>
|
||||
<value name="Key.SysMenu" type="dword" data="00001220"/>
|
||||
<value name="Key.SysMenu2" type="dword" data="00001102"/>
|
||||
<value name="Key.DebugProcess" type="dword" data="00105b44"/>
|
||||
<value name="Key.DumpProcess" type="dword" data="00000000"/>
|
||||
<value name="Key.DumpTree" type="dword" data="00000000"/>
|
||||
<value name="Key.BufUp" type="dword" data="00001126"/>
|
||||
<value name="Key.BufDn" type="dword" data="00001128"/>
|
||||
<value name="Key.BufPgUp" type="dword" data="00001121"/>
|
||||
<value name="Key.BufPgDn" type="dword" data="00001122"/>
|
||||
<value name="Key.BufHfPgUp" type="dword" data="00005d21"/>
|
||||
<value name="Key.BufHfPgDn" type="dword" data="00005d22"/>
|
||||
<value name="Key.BufTop" type="dword" data="00005d24"/>
|
||||
<value name="Key.BufBottom" type="dword" data="00005d23"/>
|
||||
<value name="Key.BufCursor" type="dword" data="00005d08"/>
|
||||
<value name="Key.ResetTerm" type="dword" data="00000000"/>
|
||||
<value name="FontLargerKey" type="dword" data="000011d0"/>
|
||||
<value name="FontSmallerKey" type="dword" data="000011d1"/>
|
||||
<value name="FontOriginalKey" type="dword" data="00001104"/>
|
||||
<value name="PasteFileKey" type="dword" data="00101146"/>
|
||||
<value name="PastePathKey" type="dword" data="00101144"/>
|
||||
<value name="PasteCygwinKey" type="dword" data="00005d2d"/>
|
||||
<value name="KeyMacro01" type="dword" data="00000000"/>
|
||||
<value name="KeyMacro01.Text" type="string" data=""/>
|
||||
<value name="KeyMacro02" type="dword" data="00000000"/>
|
||||
<value name="KeyMacro02.Text" type="string" data=""/>
|
||||
<value name="KeyMacro03" type="dword" data="00000000"/>
|
||||
<value name="KeyMacro03.Text" type="string" data=""/>
|
||||
<value name="KeyMacro04" type="dword" data="00000000"/>
|
||||
<value name="KeyMacro04.Text" type="string" data=""/>
|
||||
<value name="KeyMacro05" type="dword" data="00000000"/>
|
||||
<value name="KeyMacro05.Text" type="string" data=""/>
|
||||
<value name="KeyMacro06" type="dword" data="00000000"/>
|
||||
<value name="KeyMacro06.Text" type="string" data=""/>
|
||||
<value name="KeyMacro07" type="dword" data="00000000"/>
|
||||
<value name="KeyMacro07.Text" type="string" data=""/>
|
||||
<value name="KeyMacro08" type="dword" data="00000000"/>
|
||||
<value name="KeyMacro08.Text" type="string" data=""/>
|
||||
<value name="KeyMacro09" type="dword" data="00000000"/>
|
||||
<value name="KeyMacro09.Text" type="string" data=""/>
|
||||
<value name="KeyMacro10" type="dword" data="00000000"/>
|
||||
<value name="KeyMacro10.Text" type="string" data=""/>
|
||||
<value name="KeyMacro11" type="dword" data="00000000"/>
|
||||
<value name="KeyMacro11.Text" type="string" data=""/>
|
||||
<value name="KeyMacro12" type="dword" data="00000000"/>
|
||||
<value name="KeyMacro12.Text" type="string" data=""/>
|
||||
<value name="KeyMacro13" type="dword" data="00000000"/>
|
||||
<value name="KeyMacro13.Text" type="string" data=""/>
|
||||
<value name="KeyMacro14" type="dword" data="00000000"/>
|
||||
<value name="KeyMacro14.Text" type="string" data=""/>
|
||||
<value name="KeyMacro15" type="dword" data="00000000"/>
|
||||
<value name="KeyMacro15.Text" type="string" data=""/>
|
||||
<value name="KeyMacro16" type="dword" data="00000000"/>
|
||||
<value name="KeyMacro16.Text" type="string" data=""/>
|
||||
<value name="KeyMacro17" type="dword" data="00000000"/>
|
||||
<value name="KeyMacro17.Text" type="string" data=""/>
|
||||
<value name="KeyMacro18" type="dword" data="00000000"/>
|
||||
<value name="KeyMacro18.Text" type="string" data=""/>
|
||||
<value name="KeyMacro19" type="dword" data="00000000"/>
|
||||
<value name="KeyMacro19.Text" type="string" data=""/>
|
||||
<value name="KeyMacro20" type="dword" data="00000000"/>
|
||||
<value name="KeyMacro20.Text" type="string" data=""/>
|
||||
<value name="KeyMacro21" type="dword" data="00000000"/>
|
||||
<value name="KeyMacro21.Text" type="string" data=""/>
|
||||
<value name="KeyMacro22" type="dword" data="00000000"/>
|
||||
<value name="KeyMacro22.Text" type="string" data=""/>
|
||||
<value name="KeyMacro23" type="dword" data="00000000"/>
|
||||
<value name="KeyMacro23.Text" type="string" data=""/>
|
||||
<value name="KeyMacro24" type="dword" data="00000000"/>
|
||||
<value name="KeyMacro24.Text" type="string" data=""/>
|
||||
<value name="KeyMacro25" type="dword" data="00000000"/>
|
||||
<value name="KeyMacro25.Text" type="string" data=""/>
|
||||
<value name="KeyMacro26" type="dword" data="00000000"/>
|
||||
<value name="KeyMacro26.Text" type="string" data=""/>
|
||||
<value name="KeyMacro27" type="dword" data="00000000"/>
|
||||
<value name="KeyMacro27.Text" type="string" data=""/>
|
||||
<value name="KeyMacro28" type="dword" data="00000000"/>
|
||||
<value name="KeyMacro28.Text" type="string" data=""/>
|
||||
<value name="KeyMacro29" type="dword" data="00000000"/>
|
||||
<value name="KeyMacro29.Text" type="string" data=""/>
|
||||
<value name="KeyMacro30" type="dword" data="00000000"/>
|
||||
<value name="KeyMacro30.Text" type="string" data=""/>
|
||||
<value name="KeyMacro31" type="dword" data="00000000"/>
|
||||
<value name="KeyMacro31.Text" type="string" data=""/>
|
||||
<value name="KeyMacro32" type="dword" data="00000000"/>
|
||||
<value name="KeyMacro32.Text" type="string" data=""/>
|
||||
<value name="CTS.VkBlock" type="hex" data="a4"/>
|
||||
<value name="CTS.VkText" type="hex" data="a0"/>
|
||||
<value name="CTS.VkAct" type="hex" data="00"/>
|
||||
<value name="CTS.VkPrompt" type="hex" data="00"/>
|
||||
<value name="FarGotoEditorVk" type="hex" data="a2"/>
|
||||
<value name="DndLKey" type="hex" data="00"/>
|
||||
<value name="DndRKey" type="hex" data="a2"/>
|
||||
<value name="WndDragKey" type="dword" data="00121101"/>
|
||||
</key>
|
||||
<key name="Tasks" modified="2017-02-26 11:32:01" build="170118">
|
||||
<value name="Count" type="long" data="9"/>
|
||||
<key name="Task1" modified="2017-02-26 11:32:01" build="170118">
|
||||
<value name="Name" type="string" data="{Shells::cmd}"/>
|
||||
<value name="Flags" type="dword" data="00000002"/>
|
||||
<value name="Hotkey" type="dword" data="00000000"/>
|
||||
<value name="GuiArgs" type="string" data=""/>
|
||||
<value name="Cmd1" type="string" data="cmd.exe /k "%ConEmuBaseDir%\CmdInit.cmd""/>
|
||||
<value name="Active" type="long" data="0"/>
|
||||
<value name="Count" type="long" data="1"/>
|
||||
</key>
|
||||
<key name="Task2" modified="2017-02-26 11:32:01" build="170118">
|
||||
<value name="Name" type="string" data="{Shells::cmd (Admin)}"/>
|
||||
<value name="Flags" type="dword" data="00000004"/>
|
||||
<value name="Hotkey" type="dword" data="00000000"/>
|
||||
<value name="GuiArgs" type="string" data=""/>
|
||||
<value name="Cmd1" type="string" data="cmd.exe /k "%ConEmuBaseDir%\CmdInit.cmd" -new_console:a"/>
|
||||
<value name="Active" type="long" data="0"/>
|
||||
<value name="Count" type="long" data="1"/>
|
||||
</key>
|
||||
<key name="Task3" modified="2017-02-26 11:32:01" build="170118">
|
||||
<value name="Name" type="string" data="{Shells::cmd-32}"/>
|
||||
<value name="Flags" type="dword" data="00000004"/>
|
||||
<value name="Hotkey" type="dword" data="00000000"/>
|
||||
<value name="GuiArgs" type="string" data=""/>
|
||||
<value name="Cmd1" type="string" data=""%windir%\syswow64\cmd.exe" /k "%ConEmuBaseDir%\CmdInit.cmd""/>
|
||||
<value name="Active" type="long" data="0"/>
|
||||
<value name="Count" type="long" data="1"/>
|
||||
</key>
|
||||
<key name="Task4" modified="2017-02-26 11:32:01" build="170118">
|
||||
<value name="Name" type="string" data="{Shells::cmd 64/32}"/>
|
||||
<value name="Flags" type="dword" data="00000004"/>
|
||||
<value name="Hotkey" type="dword" data="00000000"/>
|
||||
<value name="GuiArgs" type="string" data=""/>
|
||||
<value name="Cmd1" type="string" data="> "%windir%\system32\cmd.exe" /k ""%ConEmuBaseDir%\CmdInit.cmd" & echo This is Native cmd.exe""/>
|
||||
<value name="Cmd2" type="string" data=""%windir%\syswow64\cmd.exe" /k ""%ConEmuBaseDir%\CmdInit.cmd" & echo This is 32 bit cmd.exe -new_console:s50V""/>
|
||||
<value name="Active" type="long" data="1"/>
|
||||
<value name="Count" type="long" data="2"/>
|
||||
</key>
|
||||
<key name="Task5" modified="2017-02-26 11:32:01" build="170118">
|
||||
<value name="Name" type="string" data="{Shells::PowerShell}"/>
|
||||
<value name="Flags" type="dword" data="00000004"/>
|
||||
<value name="Hotkey" type="dword" data="00000000"/>
|
||||
<value name="GuiArgs" type="string" data=""/>
|
||||
<value name="Cmd1" type="string" data="powershell.exe"/>
|
||||
<value name="Active" type="long" data="0"/>
|
||||
<value name="Count" type="long" data="1"/>
|
||||
</key>
|
||||
<key name="Task6" modified="2017-02-26 11:32:01" build="170118">
|
||||
<value name="Name" type="string" data="{Shells::PowerShell (Admin)}"/>
|
||||
<value name="Flags" type="dword" data="00000004"/>
|
||||
<value name="Hotkey" type="dword" data="00000000"/>
|
||||
<value name="GuiArgs" type="string" data=""/>
|
||||
<value name="Cmd1" type="string" data="powershell.exe -new_console:a"/>
|
||||
<value name="Active" type="long" data="0"/>
|
||||
<value name="Count" type="long" data="1"/>
|
||||
</key>
|
||||
<key name="Task7" modified="2017-02-26 11:32:01" build="170118">
|
||||
<value name="Name" type="string" data="{Bash::Git bash}"/>
|
||||
<value name="Flags" type="dword" data="00000004"/>
|
||||
<value name="Hotkey" type="dword" data="00000000"/>
|
||||
<value name="GuiArgs" type="string" data=""/>
|
||||
<value name="Cmd1" type="string" data=""%ConEmuDrive%\Program Files\Git\git-cmd.exe" --no-cd --command=usr/bin/bash.exe -l -i"/>
|
||||
<value name="Active" type="long" data="0"/>
|
||||
<value name="Count" type="long" data="1"/>
|
||||
</key>
|
||||
<key name="Task8" modified="2017-02-26 11:32:01" build="170118">
|
||||
<value name="Name" type="string" data="{Helper::Show ANSI colors}"/>
|
||||
<value name="Flags" type="dword" data="00000004"/>
|
||||
<value name="Hotkey" type="dword" data="00000000"/>
|
||||
<value name="GuiArgs" type="string" data=""/>
|
||||
<value name="Cmd1" type="string" data="cmd.exe /k type "%ConEmuBaseDir%\Addons\AnsiColors16t.ans" -cur_console:n"/>
|
||||
<value name="Active" type="long" data="0"/>
|
||||
<value name="Count" type="long" data="1"/>
|
||||
</key>
|
||||
<key name="Task9" modified="2017-02-26 11:32:01" build="170118">
|
||||
<value name="Name" type="string" data="{Tools::Chocolatey (Admin)}"/>
|
||||
<value name="Flags" type="dword" data="00000004"/>
|
||||
<value name="Hotkey" type="dword" data="00000000"/>
|
||||
<value name="GuiArgs" type="string" data=""/>
|
||||
<value name="Cmd1" type="string" data="*cmd.exe /k Title Chocolatey & "%ConEmuBaseDir%\Addons\ChocolateyAbout.cmd""/>
|
||||
<value name="Active" type="long" data="0"/>
|
||||
<value name="Count" type="long" data="1"/>
|
||||
</key>
|
||||
</key>
|
||||
<key name="Apps" modified="2017-02-26 11:32:01" build="170118">
|
||||
<value name="Count" type="long" data="0"/>
|
||||
</key>
|
||||
<key name="Colors" modified="2017-02-26 11:32:01" build="170118">
|
||||
<value name="Count" type="long" data="2"/>
|
||||
<key name="Palette1" modified="2017-02-26 11:32:01" build="170118">
|
||||
<value name="Name" type="string" data="moe-dark"/>
|
||||
<value name="ExtendColors" type="hex" data="00"/>
|
||||
<value name="ExtendColorIdx" type="hex" data="0e"/>
|
||||
<value name="TextColorIdx" type="hex" data="10"/>
|
||||
<value name="BackColorIdx" type="hex" data="10"/>
|
||||
<value name="PopTextColorIdx" type="hex" data="10"/>
|
||||
<value name="PopBackColorIdx" type="hex" data="10"/>
|
||||
<value name="ColorTable00" type="dword" data="00303030"/>
|
||||
<value name="ColorTable01" type="dword" data="00ff5b1f"/>
|
||||
<value name="ColorTable02" type="dword" data="0000ffaf"/>
|
||||
<value name="ColorTable03" type="dword" data="00ffff87"/>
|
||||
<value name="ColorTable04" type="dword" data="002929ef"/>
|
||||
<value name="ColorTable05" type="dword" data="00ff8ad1"/>
|
||||
<value name="ColorTable06" type="dword" data="000087ff"/>
|
||||
<value name="ColorTable07" type="dword" data="00c6c6c6"/>
|
||||
<value name="ColorTable08" type="dword" data="00b2b2b2"/>
|
||||
<value name="ColorTable09" type="dword" data="00d7af5f"/>
|
||||
<value name="ColorTable10" type="dword" data="0000dba1"/>
|
||||
<value name="ColorTable11" type="dword" data="00afd700"/>
|
||||
<value name="ColorTable12" type="dword" data="004b4bff"/>
|
||||
<value name="ColorTable13" type="dword" data="00a34eff"/>
|
||||
<value name="ColorTable14" type="dword" data="004fe9fc"/>
|
||||
<value name="ColorTable15" type="dword" data="00e7fdfd"/>
|
||||
<value name="ColorTable16" type="dword" data="00000000"/>
|
||||
<value name="ColorTable17" type="dword" data="00000080"/>
|
||||
<value name="ColorTable18" type="dword" data="00008000"/>
|
||||
<value name="ColorTable19" type="dword" data="00008080"/>
|
||||
<value name="ColorTable20" type="dword" data="00800000"/>
|
||||
<value name="ColorTable21" type="dword" data="00800080"/>
|
||||
<value name="ColorTable22" type="dword" data="00808000"/>
|
||||
<value name="ColorTable23" type="dword" data="00c0c0c0"/>
|
||||
<value name="ColorTable24" type="dword" data="00808080"/>
|
||||
<value name="ColorTable25" type="dword" data="000000ff"/>
|
||||
<value name="ColorTable26" type="dword" data="0000ff00"/>
|
||||
<value name="ColorTable27" type="dword" data="0000ffff"/>
|
||||
<value name="ColorTable28" type="dword" data="00ff0000"/>
|
||||
<value name="ColorTable29" type="dword" data="00ff00ff"/>
|
||||
<value name="ColorTable30" type="dword" data="00ffff00"/>
|
||||
<value name="ColorTable31" type="dword" data="00ffffff"/>
|
||||
</key>
|
||||
<key name="Palette2" modified="2017-02-26 11:32:01" build="170118">
|
||||
<value name="Name" type="string" data="moe-light"/>
|
||||
<value name="ExtendColors" type="hex" data="01"/>
|
||||
<value name="ExtendColorIdx" type="hex" data="0b"/>
|
||||
<value name="TextColorIdx" type="hex" data="10"/>
|
||||
<value name="BackColorIdx" type="hex" data="10"/>
|
||||
<value name="PopTextColorIdx" type="hex" data="10"/>
|
||||
<value name="PopBackColorIdx" type="hex" data="10"/>
|
||||
<value name="ColorTable00" type="dword" data="00e7fdfd"/>
|
||||
<value name="ColorTable01" type="dword" data="00ffe5d4"/>
|
||||
<value name="ColorTable02" type="dword" data="0000af00"/>
|
||||
<value name="ColorTable03" type="dword" data="0087af00"/>
|
||||
<value name="ColorTable04" type="dword" data="000000dd"/>
|
||||
<value name="ColorTable05" type="dword" data="00ff089a"/>
|
||||
<value name="ColorTable06" type="dword" data="003387fe"/>
|
||||
<value name="ColorTable07" type="dword" data="00626262"/>
|
||||
<value name="ColorTable08" type="dword" data="00b2b2b2"/>
|
||||
<value name="ColorTable09" type="dword" data="00ff5b1f"/>
|
||||
<value name="ColorTable10" type="dword" data="0000af00"/>
|
||||
<value name="ColorTable11" type="dword" data="00d7af5f"/>
|
||||
<value name="ColorTable12" type="dword" data="002929ef"/>
|
||||
<value name="ColorTable13" type="dword" data="008b1fff"/>
|
||||
<value name="ColorTable14" type="dword" data="003387fe"/>
|
||||
<value name="ColorTable15" type="dword" data="00303030"/>
|
||||
<value name="ColorTable16" type="dword" data="00000000"/>
|
||||
<value name="ColorTable17" type="dword" data="00000080"/>
|
||||
<value name="ColorTable18" type="dword" data="00008000"/>
|
||||
<value name="ColorTable19" type="dword" data="00008080"/>
|
||||
<value name="ColorTable20" type="dword" data="00800000"/>
|
||||
<value name="ColorTable21" type="dword" data="00800080"/>
|
||||
<value name="ColorTable22" type="dword" data="00808000"/>
|
||||
<value name="ColorTable23" type="dword" data="00c0c0c0"/>
|
||||
<value name="ColorTable24" type="dword" data="00808080"/>
|
||||
<value name="ColorTable25" type="dword" data="000000ff"/>
|
||||
<value name="ColorTable26" type="dword" data="0000ff00"/>
|
||||
<value name="ColorTable27" type="dword" data="0000ffff"/>
|
||||
<value name="ColorTable28" type="dword" data="00ff0000"/>
|
||||
<value name="ColorTable29" type="dword" data="00ff00ff"/>
|
||||
<value name="ColorTable30" type="dword" data="00ffff00"/>
|
||||
<value name="ColorTable31" type="dword" data="00ffffff"/>
|
||||
</key>
|
||||
</key>
|
||||
<value name="StatusBar.Hide.CellI" type="hex" data="01"/>
|
||||
</key>
|
||||
</key>
|
||||
</key>
|
||||
671
FAKE_PE_ROOT/.pe_items/_include/HWiNFO/HWiNFO.INI
Normal file
671
FAKE_PE_ROOT/.pe_items/_include/HWiNFO/HWiNFO.INI
Normal file
|
|
@ -0,0 +1,671 @@
|
|||
[Benchmark_CPU]
|
||||
Intel Pentium-100=707
|
||||
Intel Pentium-120/Notebook=835
|
||||
Intel Pentium-166/QDI=1380
|
||||
Cyrix 6x86MX-PR300=1411
|
||||
AMD-K6-166/QDI=1482
|
||||
Intel Pentium MMX-200=1484
|
||||
Cyrix MII-PR333=1518
|
||||
Intel Mobile Pentium MMX-233=1642
|
||||
Intel Pentium Pro-166 Dual CPU=1679
|
||||
AMD-K6-200/DTK=1777
|
||||
AMD-K6-200/QDI=1778
|
||||
Intel Pentium Pro-200=1944
|
||||
AMD-K6-233/DTK=2067
|
||||
Intel P2-233/Siemens=2350
|
||||
VIA Cyrix III 533/133=2362
|
||||
Intel Celeron-266/BXmaster=2586
|
||||
Intel P2-266/Siemens=2603
|
||||
AMD-K6-2-300/PCChips M577=2655
|
||||
Intel Celeron 300=2883
|
||||
Intel Celeron-300/PCChips=2922
|
||||
AMD-K6-2-350/FIC=3092
|
||||
AMD-K6-III-400=3524
|
||||
AMD-K6-III-400/FIC VA-503A=3557
|
||||
Intel Celeron-366/BXmaster=3718
|
||||
Intel P2-400/Siemens=3886
|
||||
Intel Celeron-400/BXmaster=3890
|
||||
AMD-K6-2-450/FIC=3964
|
||||
AMD-K6-III-448/FIC VA-503A=3975
|
||||
AMD-K6-III-450=3978
|
||||
Intel Mobile P2-400/Scenic=4047
|
||||
Intel Celeron-413/BXmaster=4175
|
||||
Intel Celeron-433=4219
|
||||
Intel P3-450/CC820=4363
|
||||
Intel P3-450/Siemens=4372
|
||||
Intel Celeron-450=4555
|
||||
Intel Celeron-300A@467=4686
|
||||
Intel Celeron-466/BXmaster=4789
|
||||
Intel P3-500/GA-6BXDS=5021
|
||||
Intel Pentium III Xeon-550=5299
|
||||
Intel Celeron-525/BXmaster=5314
|
||||
Intel P3-550/Siemens=5543
|
||||
Intel Celeron-550/BXmaster=5579
|
||||
Intel Celeron-575/BXmaster=5845
|
||||
Intel Celeron-616/BXmaster=5999
|
||||
Intel P3-617/GA-BX2000=6241
|
||||
AMD Athlon-600/AMD-750=6303
|
||||
AMD Duron-600/KT133=6436
|
||||
Intel P3-650/BX=6497
|
||||
AMD Athlon-650/KX133=6749
|
||||
AMD Duron-650/KT133=6971
|
||||
Intel P3-700/BX=7013
|
||||
AMD Athlon-700/KX133=7185
|
||||
AMD Duron-700/KT133=7507
|
||||
Intel Celeron-815/BXmaster=7985
|
||||
AMD Athlon-750/KT133=8085
|
||||
AMD Athlon-800/AMD-750=8286
|
||||
AMD Duron-800/KT133=8580
|
||||
Intel P3-650@870/BX=8675
|
||||
AMD Duron-850/KT133=9120
|
||||
Intel P3-650@917/BX=9175
|
||||
AMD Duron-900/KT133=9654
|
||||
AMD Duron-928 (9x103)=9952
|
||||
Intel Celeron-566@1010=10115
|
||||
VIA Antaur-1000=6108
|
||||
VIA C3-1333=7601
|
||||
AMD Duron-950/KT133=10190
|
||||
AMD Athlon-1000/KT133=10734
|
||||
AMD Athlon-1200/KT133=12949
|
||||
AMD Athlon XP 1500+/KT133=14297
|
||||
AMD Athlon XP 2000+/KT133A=17691
|
||||
AMD Athlon XP 2200+/KT133A=19490
|
||||
AMD Athlon XP-M 2500+/KM400=19590
|
||||
AMD Athlon XP-M 3000+/SiS748=23391
|
||||
Intel P3-1000/i815=10381
|
||||
Intel P4-1600=6636
|
||||
Intel P4-1800=7445
|
||||
Intel P4-2000=8272
|
||||
Intel P4-2500=11051
|
||||
Intel Pentium-M ULV-1000=10515
|
||||
Intel Pentium-M-1300=13590
|
||||
Intel Pentium-M-1600=16856
|
||||
Intel Pentium-M 735=16958
|
||||
Intel Pentium-M 755=20008
|
||||
Intel Pentium-M 770=21163
|
||||
Intel P4-2800(noHT)/i875P=12399
|
||||
Intel P4-3066(noHT)/i845PE=13479
|
||||
Intel P4-3000E(noHT)/i915P=22136
|
||||
Intel P4-3000 530 (HT)=34013
|
||||
Intel P4-3200E(noHT)/i875P=23446
|
||||
Intel P4-3600E(noHT)/i925X=26424
|
||||
Intel Xeon-3800(HT)=55028
|
||||
AMD Athlon64 3200+=23814
|
||||
AMD Athlon64 3800+=28731
|
||||
AMD Athlon64 FX-53=28727
|
||||
AMD Opteron 248=25920
|
||||
AMD Turion64 ML-34+=18520
|
||||
AMD Turion64 X2 TL-60=47697
|
||||
AMD Athlon 64 X2 4400+=52867
|
||||
Intel Core Duo T2600 (1core)=20293
|
||||
Intel Core Duo T2600 (2core)=40849
|
||||
Intel Core 2 Duo E6700=51765
|
||||
Intel Core 2 Duo T7400=53238
|
||||
Transmeta Crusoe TM5800-1000=6382
|
||||
2xIntel Xeon 5150/5000P=131832
|
||||
4xIntel Xeon MP 7040=180052
|
||||
Intel Core 2 Extreme QX6700=129908
|
||||
AMD Phenom 9500=103687
|
||||
Intel Atom 230=15438
|
||||
Intel Core i5-520M=94834
|
||||
Intel Core i7-860=180329
|
||||
Intel Core i7-820QM=123279
|
||||
Intel Core i7-980X=347501
|
||||
Intel Core i5-2520M=111448
|
||||
Intel Core i7-3820=265424
|
||||
|
||||
[Benchmark_FPU]
|
||||
Intel Pentium-100=1109
|
||||
VIA Cyrix III 533/133=1327
|
||||
Intel Pentium 120/Notebook=1350
|
||||
Intel Pentium Pro-166 Dual CPU=1663
|
||||
Intel Pentium Pro-200=1934
|
||||
Cyrix 6x86MX-PR300=2304
|
||||
Intel P2-233/Siemens=2323
|
||||
AMD-K6-166/QDI=2533
|
||||
Cyrix MII-PR333=2585
|
||||
Intel Celeron-266/BXmaster=2630
|
||||
Intel Mobile Pentium MMX-233=2647
|
||||
Intel P2-266/Siemens=2662
|
||||
Intel Celeron-300=2862
|
||||
AMD-K6-200/DTK=2999
|
||||
AMD-K6-200/QDI=3041
|
||||
AMD-K6-233/DTK=3492
|
||||
Intel Celeron-366/BXmaster=3650
|
||||
Intel P2-400/Siemens=3968
|
||||
Intel Celeron-400/BXmaster=3972
|
||||
Intel Mobile P2-400/Scenic=3973
|
||||
Intel Celeron-413/BXmaster=4097
|
||||
Intel Celeron-433=4304
|
||||
Intel P3-450/CC820=4444
|
||||
Intel P3-450/Siemens=4452
|
||||
Intel Celeron-450=4472
|
||||
Intel Celeron-300A@467=4599
|
||||
AMD-K6-2-300/PCChips M577=4605
|
||||
Intel Celeron-466/BXmaster=4628
|
||||
Intel P3-500/GA-6BXDS=4958
|
||||
Intel Celeron-525/BXmaster=5215
|
||||
AMD-K6-2-350/FIC=5368
|
||||
Intel Pentium III Xeon-550=5417
|
||||
Intel P3-550/Siemens=5440
|
||||
Intel Celeron-550/BXmaster=5477
|
||||
Intel Celeron-575/BXmaster=5738
|
||||
Intel Celeron-616/BXmaster=5897
|
||||
Intel P3-617/GA-BX2000=6114
|
||||
AMD-K6-III-400/FIC VA-503A=6166
|
||||
AMD-K6-III-400=6169
|
||||
Intel P3-650/BX=6446
|
||||
AMD-K6-2-450/FIC=6876
|
||||
AMD-K6-III-448/FIC VA-503A=6893
|
||||
AMD-K6-III-450=6895
|
||||
Intel P3-700/BX=6942
|
||||
Intel Celeron-815/BXmaster=7799
|
||||
Intel P3-650@870/BX=8614
|
||||
Intel P3-650@917/BX=9080
|
||||
VIA C3-1333=3160
|
||||
AMD Duron-600/KT133=9132
|
||||
AMD Athlon-600/AMD-750=9231
|
||||
AMD Athlon-650/KX133=9888
|
||||
Intel Celeron-566@1010=9977
|
||||
AMD Athlon-700/KX133=10527
|
||||
AMD Athlon-750/KT133=11457
|
||||
AMD Athlon-800/AMD-750=12149
|
||||
AMD Duron-850/KT133=12954
|
||||
AMD Duron-900/KT133=13712
|
||||
AMD Duron-928 (9x103)=14150
|
||||
AMD Duron-950/KT133=14479
|
||||
AMD Athlon-1000/KT133=15252
|
||||
AMD Athlon-1200/KT133=18378
|
||||
AMD Athlon XP 1500+/KT133=20757
|
||||
AMD Athlon XP 1800+=23375
|
||||
AMD Athlon XP 2000+/KT133A=25693
|
||||
AMD Athlon XP 2200+/KT133A=28296
|
||||
AMD Athlon XP-M 2500+/KM400=28877
|
||||
AMD Athlon XP-M 3000+/SiS748=34104
|
||||
Intel P3-1000/i815=9813
|
||||
Intel P4-1600=3282
|
||||
Intel P4-1800=3833
|
||||
Intel P4-2000=4256
|
||||
Intel P4-2500=6020
|
||||
Intel Pentium-M ULV-1000=8547
|
||||
Intel Pentium-M-1300=11089
|
||||
Intel Pentium-M-1600=13614
|
||||
Intel Pentium-M 735=14211
|
||||
Intel Pentium-M 755=16772
|
||||
Intel Pentium-M 770=17807
|
||||
Intel P4-2800(noHT)/i875P=6799
|
||||
Intel P4-3066(noHT)/i845PE=7396
|
||||
Intel P4-3000 530 (HT)=9220
|
||||
Intel P4-3200E(noHT)/i875P=6578
|
||||
Intel P4-3600E(noHT)/i925X=8163
|
||||
Intel Xeon-3800(HT)=17241
|
||||
AMD Athlon64 3200+=31194
|
||||
AMD Athlon64 3800+=37379
|
||||
AMD Athlon64 FX-53=37426
|
||||
AMD Opteron 248=34115
|
||||
AMD Turion64 ML-34+=28056
|
||||
AMD Turion64 X2 TL-60=62143
|
||||
AMD Athlon 64 X2 4400+=68974
|
||||
Intel Core Duo T2600 (1core)=16967
|
||||
Intel Core Duo T2600 (2core)=34039
|
||||
Intel Core 2 Duo E6600=36031
|
||||
Intel Core 2 Duo E6700=40075
|
||||
Intel Core 2 Duo T7400=32659
|
||||
Transmeta Crusoe TM5800-1000=4251
|
||||
2xIntel Xeon 5150/5000P=80725
|
||||
4xIntel Xeon MP 7040=54379
|
||||
Intel Core 2 Extreme QX6700=80338
|
||||
AMD Phenom 9500=133430
|
||||
Intel Atom 230=10769
|
||||
Intel Core i5-520M=60634
|
||||
Intel Core i7-860=131820
|
||||
Intel Core i7-820QM=90751
|
||||
Intel Core i7-980X=215620
|
||||
Intel Core i5-2520M=55354
|
||||
Intel Core i7-3820=130252
|
||||
|
||||
[Benchmark_MMX]
|
||||
AMD-K6-166/QDI=909
|
||||
AMD-K6-200/QDI=1070
|
||||
Intel P2-266/440LX=1339
|
||||
VIA Cyrix III 533/133=1815
|
||||
Intel Pentium MMX-200=2041
|
||||
Intel Mobile Pentium MMX-233=2363
|
||||
Intel P2-233/440BX=2390
|
||||
Intel Celeron-300=2931
|
||||
Intel Celeron-366=3742
|
||||
Intel Celeron-450=4602
|
||||
Intel Celeron-300A@467=4737
|
||||
Intel P3-500/GA-6BXDS=5009
|
||||
AMD Duron-600/KT133=5454
|
||||
Intel P3-550/Siemens=5513
|
||||
AMD Athlon-650/KX133=5906
|
||||
AMD Athlon-700/Abit KA7=6356
|
||||
Intel P3-650/BX=6490
|
||||
AMD Duron-750/KT133=6823
|
||||
AMD Athlon-750/KT133=6846
|
||||
Intel P3-700/BX=7025
|
||||
AMD Duron-800/KT133=7277
|
||||
AMD Duron-850/KT133=7738
|
||||
AMD Duron-900/KT133=8192
|
||||
AMD Duron-928 (9x103)=8448
|
||||
AMD Duron-950/KT133=8645
|
||||
Intel P3-650@870/BX=8706
|
||||
AMD Athlon-1000/KT133=9110
|
||||
Intel P3-650@917/BX=9173
|
||||
Intel Celeron-566@1010=10080
|
||||
VIA C3-1333=6063
|
||||
AMD Athlon-1200/KT133=10998
|
||||
AMD Athlon XP 1500+/KT133=12125
|
||||
AMD Athlon XP 1800+=13642
|
||||
AMD Athlon XP 2000+/KT133A=15013
|
||||
AMD Athlon XP 2200+/KT133A=16516
|
||||
AMD Athlon XP-M 2500+/KM400=16858
|
||||
AMD Athlon XP-M 3000+/SiS748=20040
|
||||
Intel P3-1000=9903
|
||||
Intel P4-1600=14468
|
||||
Intel P4-1800=16319
|
||||
Intel P4-2000=18140
|
||||
Intel P4-2500=22681
|
||||
Intel Pentium-M ULV-1000=9937
|
||||
Intel Pentium-M-1300=12865
|
||||
Intel Pentium-M-1600=15835
|
||||
Intel Pentium-M 735=16839
|
||||
Intel Pentium-M 755=19869
|
||||
Intel Pentium-M 770=21149
|
||||
Intel P4-2800(noHT)/i875P=24478
|
||||
Intel P4-3066(noHT)/i845PE=26437
|
||||
Intel P4-3000 530 (HT)=27352
|
||||
Intel P4-3200E(noHT)/i875P=22592
|
||||
Intel P4-3600E(noHT)/i925X=25314
|
||||
Intel Xeon-3800(HT)=53268
|
||||
AMD Athlon64 3200+=18228
|
||||
AMD Athlon64 3800+=21859
|
||||
AMD Athlon64 FX-53=21856
|
||||
AMD Opteron 248=19926
|
||||
AMD Turion64 ML-34+=16403
|
||||
AMD Turion64 X2 TL-60=36363
|
||||
AMD Athlon 64 X2 4400+=40282
|
||||
Intel Core Duo T2600 (1core)=21423
|
||||
Intel Core Duo T2600 (2core)=42912
|
||||
Intel Core 2 Duo E6600=74154
|
||||
Intel Core 2 Duo E6700=82312
|
||||
Intel Core 2 Duo T7400=67321
|
||||
Transmeta Crusoe TM5800-1000=5272
|
||||
2xIntel Xeon 5150/5000P=51186
|
||||
4xIntel Xeon MP 7040=83086
|
||||
Intel Core 2 Extreme QX6700=165067
|
||||
AMD Phenom 9500=80202
|
||||
Intel Atom 230=14545
|
||||
Intel Core i5-520M=80822
|
||||
Intel Core i7-860=171336
|
||||
Intel Core i7-820QM=115063
|
||||
Intel Core i7-980X=261051
|
||||
Intel Core i5-2520M=81444
|
||||
Intel Core i7-3820=160178
|
||||
|
||||
[Benchmark_Memory]
|
||||
Intel Pentium-100/FPM=69
|
||||
Intel Pentium Pro-166 Dual CPU=78
|
||||
AMD-K6-166/QDI/EDO=85
|
||||
Intel Pentium MMX-200/EDO=92
|
||||
AMD-K6-200/QDI/EDO=93
|
||||
Intel Pentium MMX-233/PC66=101
|
||||
Intel P2-233/440BX/PC66=111
|
||||
VIA Cyrix III 533/133=114
|
||||
Intel P2-266/440BX/PC66=117
|
||||
AMD-K6-III-400=135
|
||||
Intel Celeron-366/PC66=163
|
||||
AMD Duron-600/KT133=173
|
||||
AMD Athlon-700/KX133/PC133=202
|
||||
AMD Athlon-650/KX133=205
|
||||
Intel P3-500/GA-6BXDS/PC100=209
|
||||
Intel P3-550/Siemens/PC100=215
|
||||
Intel Celeron-300A@467/PC66=209
|
||||
Intel Celeron-300/PC66=146
|
||||
Intel P3-650/BX/PC100=238
|
||||
Intel P3-700/BX/PC100=211
|
||||
AMD Athlon-750/KT133/PC133=214
|
||||
AMD Duron-750/KT133=263
|
||||
Intel Celeron-566@1010=273
|
||||
VIA C3-1333/CN400=223
|
||||
AMD Duron-950/KT133=275
|
||||
AMD Duron-928 (9x103)/KT133=292
|
||||
AMD Duron-1100/SiS745/DDR333=477
|
||||
AMD Athlon XP-M 2500+/DDR333=548
|
||||
Intel P3-650@917/FSB140=310
|
||||
Intel P3-1000/PC133=218
|
||||
Intel P4-1600/i850=1115
|
||||
Intel P4-2000/i850/PC800=1245
|
||||
Intel P4-1800/i845G/DDR266=867
|
||||
Intel P4-2500/i845/DDR266=757
|
||||
Intel Pentium-M-1600/DDR266=830
|
||||
Intel Pentium-M 735/855PM/DDR400=971
|
||||
Intel P4-3066/i845PE/DDR266=1028
|
||||
Intel P4-2800/i875P/2Ch/DDR400=2056
|
||||
Intel P4-3200E/i875P/2Ch/DDR400=2342
|
||||
Intel P4-3600E/i915P/DDR2-533=2556
|
||||
Intel P4-3600E/i925X/DDR2-533=2844
|
||||
Intel Xeon-3800/E7525/DDR2-400=1635
|
||||
AMD Athlon64 3200+/1Ch/DDR400=1266
|
||||
AMD Athlon64 3800+/2Ch/DDR400=2375
|
||||
AMD Athlon64 FX-53/2Ch/DDR400=2166
|
||||
AMD Opteron 248/DDR266=947
|
||||
AMD Turion64 ML-34+=1071
|
||||
Intel Core 2 Duo E6700/DDR2-800=2894
|
||||
Transmeta Crusoe TM5800-1000=337
|
||||
2xIntel Xeon 5150/5000P/DDR2-667F=2919
|
||||
4xIntel Xeon MP 7040=1721
|
||||
AMD Phenom 9500=1795
|
||||
Intel Atom 230/945/DDR2-800=1682
|
||||
Intel Core i5-520M=5235
|
||||
Intel Core i7-860/DDR3-667/2CH=6506
|
||||
Intel Core i7-820QM=5424
|
||||
Intel Core i7-980X=9343
|
||||
Intel Core i7-3820/DDR3-1600/4CH=13366
|
||||
|
||||
[Benchmark_Disk_ReadBurst]
|
||||
Fujitsu MPB3043ATU E/PIO=4.03
|
||||
Seagate ST38410A/PIO=4.33
|
||||
Maxtor 91021U2/PIO=4.61
|
||||
Maxtor 92041U4/PIO=4.82
|
||||
Quantum Fireball_TM2110S300X=6.83
|
||||
SEAGATE ST51080N=7.92
|
||||
Seagate ST31277A=8,37
|
||||
IBM DCAS-32160 S65A=8.65
|
||||
QUANTUM FIREBALL ST3.2A/PIO=14.74
|
||||
Seagate ST39102LW Cheetah=30.05
|
||||
IBM DJNA-370910/UDMA66=15.27
|
||||
Seagate ST34321A/UDMA33=21.03
|
||||
Seagate ST38421A=23.82
|
||||
Seagate ST34310A=23.88
|
||||
QUANTUM FIREBALL SE2.1A=26.43
|
||||
Maxtor 91021U2/UDMA33=29.13
|
||||
Maxtor 54098U8/UDMA33=29.5
|
||||
IBM DTTA-350430=29.7
|
||||
IBM-DPTA-371360=29.86
|
||||
Seagate ST320420A=47.3
|
||||
IBM-DJNA-371350=27.87
|
||||
IBM-DTLA-307030/ATA100=82.22
|
||||
SEAGATE Cheetah X15/RAID=137.08
|
||||
IBM Deskstar 60GXP/ATA100=81.98
|
||||
MAXTOR 4K020H1/ATA100=84.58
|
||||
Seagate ST317221A/UDMA66=42.03
|
||||
Maxtor 6E040L0=79.36
|
||||
Seagate ST380021A/ATA100=73.11
|
||||
HITACHI DK23EA-40=80.04
|
||||
WDC WD800JB/ATA100=85.71
|
||||
TOSHIBA MK4019GAX=83.60
|
||||
Maxtor MaxLine III SATA+NCQ=119.96
|
||||
ST312002 6AS=106.61
|
||||
Maxtor Atlas 10K5 73SCA=145.86
|
||||
WDC WD3200YS-01PGB0=167.33
|
||||
Hitachi HTE726040M9AT00=84.61
|
||||
Seagate ST3160827AS=120.88
|
||||
WDC WD5000AADS-00S9B0=122.87
|
||||
Hitachi HTS545032B9A=161.10
|
||||
Seagate ST1000DM003-9YN1=282.43
|
||||
|
||||
[Benchmark_Disk_ReadRandom]
|
||||
Hitachi HTE726040M9AT00=22.82
|
||||
Maxtor Atlas 10K5 73SCA=31.61
|
||||
Seagate ST3160827AS=32.26
|
||||
FUJITSU MHV2080BH=17.79
|
||||
TOSHIBA MK8034GSX=18.12
|
||||
ST916082 1AS=22.27
|
||||
WDC WD5000AADS-00S9B0=24.58
|
||||
Hitachi HTS545032B9A=24.72
|
||||
Seagate ST1000DM003-9YN1=37.09
|
||||
|
||||
[Benchmark_Disk_RandomAccess]
|
||||
SEAGATE ST51080N=20.96
|
||||
Quantum Fireball_TM2110S300X=20.74
|
||||
Seagate ST34321A/UDMA33=17.21
|
||||
Seagate ST38410A/PIO=17.17
|
||||
Seagate ST31277A=16.75
|
||||
Fujitsu MPB3043ATU E=16.18
|
||||
IBM DTTA-350430=16.5
|
||||
IBM DCAS-32160 S65A=15.95
|
||||
Maxtor 92041U4/PIO=15.81
|
||||
Seagate ST34310A=15.56
|
||||
Maxtor 91021U2/PIO=15.66
|
||||
Seagate ST38421A=15.71
|
||||
QUANTUM FIREBALL ST3.2A=15.50
|
||||
QUANTUM FIREBALL SE2.1A=14.94
|
||||
Maxtor 54098U8/UDMA33=13.77
|
||||
Seagate ST320420A=12.57
|
||||
IBM DJNA-370910/UDMA66=12.10
|
||||
Seagate ST39102LW Cheetah=8.78
|
||||
IBM-DPTA-371360=13.37
|
||||
IBM-DJNA-371350=13.38
|
||||
IBM-DTLA-307030/ATA100=12.44
|
||||
IBM-DTLA-307030/ATA100+AAM=22.34
|
||||
SEAGATE Cheetah X15/RAID=5.65
|
||||
IBM Deskstar 60GXP=12.70
|
||||
MAXTOR 4K020H1/ATA100=19.12
|
||||
Seagate ST317221A/UDMA66=16.60
|
||||
Maxtor 6E040L0=14.52
|
||||
Seagate ST380021A/ATA100=14.58
|
||||
HITACHI DK23EA-40=19.40
|
||||
WDC WD800JB/ATA100=13.61
|
||||
TOSHIBA MK4019GAX=18.61
|
||||
Maxtor MaxLine III SATA+NCQ=15.82
|
||||
ST312002 6AS=12.51
|
||||
Maxtor Atlas 10K5 73SCA=10.16
|
||||
WDC WD3200YS-01PGB0=13.16
|
||||
Hitachi HTE726040M9AT00=12.90
|
||||
Seagate ST3160827AS=11.65
|
||||
Seagate ST380215A=14.82
|
||||
WDC WD5000AADS-00S9B0=17.37
|
||||
Hitachi HTS545032B9A=22.16
|
||||
Seagate ST1000DM003-9YN1=15.53
|
||||
|
||||
[LogfileSettings]
|
||||
COMP=1
|
||||
COMP_SP=1
|
||||
COMP_Name=1
|
||||
COMP_Os=1
|
||||
COMP_User=0
|
||||
CPU=1
|
||||
CPU_Name=1
|
||||
CPU_ID=1
|
||||
CPU_Vendor=1
|
||||
CPU_Stepping=1
|
||||
CPU_Type=1
|
||||
CPU_BrandID=1
|
||||
CPU_PN=1
|
||||
CPU_Clock=1
|
||||
CPU_MaxFreq=1
|
||||
CPU_CacheL1=1
|
||||
CPU_CacheL2=1
|
||||
CPU_TLB_I=1
|
||||
CPU_TLB_D=1
|
||||
CPU_Features=1
|
||||
CPU_PIROM=1
|
||||
MEM=1
|
||||
MEM_TotalSize=1
|
||||
MEM_Timing=1
|
||||
MEM_Row=1
|
||||
MEM_Row_Size=1
|
||||
MEM_Row_Type=1
|
||||
MEM_Row_Speed=1
|
||||
MEM_Row_Model=1
|
||||
MEM_Row_ECC=1
|
||||
MEM_Row_Date=1
|
||||
MEM_Row_SN=1
|
||||
MEM_Row_Cfg=1
|
||||
MEM_Row_Latency=1
|
||||
MEM_Row_Features=1
|
||||
MEM_Row_iFeatures=1
|
||||
BUS=1
|
||||
BUS_PCI=1
|
||||
BUS_PCI_DevName=1
|
||||
BUS_PCI_DevNumber=1
|
||||
BUS_PCI_Resources=1
|
||||
BUS_PCI_Features=1
|
||||
BUS_PCI_DevSpecific=1
|
||||
BUS_PCIX_Features=1
|
||||
BUS_PCIe_Features=1
|
||||
BUS_PCI_DRV_INFO=1
|
||||
BUS_EISA=1
|
||||
DMI=1
|
||||
DMI_0=1
|
||||
DMI_1=1
|
||||
DMI_2=1
|
||||
DMI_3=1
|
||||
DMI_4=1
|
||||
DMI_5=1
|
||||
DMI_6=1
|
||||
DMI_7=1
|
||||
DMI_8=1
|
||||
DMI_9=1
|
||||
DMI_10=1
|
||||
DMI_11=1
|
||||
DMI_12=1
|
||||
DMI_13=1
|
||||
DMI_14=1
|
||||
DMI_15=1
|
||||
DMI_16=1
|
||||
DMI_17=1
|
||||
DMI_18=1
|
||||
DMI_19=1
|
||||
DMI_20=1
|
||||
DMI_21=1
|
||||
DMI_22=1
|
||||
DMI_23=1
|
||||
DMI_24=1
|
||||
DMI_25=1
|
||||
DMI_26=1
|
||||
DMI_27=1
|
||||
DMI_28=1
|
||||
DMI_29=1
|
||||
DMI_30=1
|
||||
DMI_31=1
|
||||
DMI_32=1
|
||||
DMI_33=1
|
||||
DMI_34=1
|
||||
DMI_35=1
|
||||
DMI_36=1
|
||||
DMI_37=1
|
||||
DMI_38=1
|
||||
DMI_39=1
|
||||
DMI_129=1
|
||||
DMI_130=1
|
||||
DMI_131=1
|
||||
VIDEO=1
|
||||
VIDEO_Chipset=1
|
||||
VIDEO_Memory=1
|
||||
VIDEO_Card=1
|
||||
VIDEO_Bus=1
|
||||
VIDEO_RAMDAC=1
|
||||
VIDEO_BIOSver=1
|
||||
VIDEO_Clock=1
|
||||
VIDEO_HWID=1
|
||||
VIDEO_DRV_INFO=1
|
||||
VIDEO_DirectX=1
|
||||
MON=1
|
||||
MON_Name=1
|
||||
MON_SN=1
|
||||
MON_Date=1
|
||||
MON_Dimensions=1
|
||||
MON_DisplayType=1
|
||||
MON_InputSignal=1
|
||||
MON_Gamma=1
|
||||
MON_DPMSinput=1
|
||||
MON_DPMSmodes=1
|
||||
MOBO=1
|
||||
MOBO_Model=1
|
||||
MOBO_Chipset=1
|
||||
MOBO_CompName=1
|
||||
MOBO_MachineType=1
|
||||
MOBO_Slots=1
|
||||
MOBO_BIOS_Manuf=1
|
||||
MOBO_BIOS_Date=1
|
||||
MOBO_PNP_Devs=1
|
||||
MOBO_PNP_Nodes=1
|
||||
MOBO_ACPI_Devs=1
|
||||
MOBO_ACPI_Enum=1
|
||||
DRIVE=1
|
||||
DRIVE_IDE=1
|
||||
DRIVE_IDE_Ctrller=1
|
||||
DRIVE_IDE_Channel=1
|
||||
DRIVE_IDE_Model=1
|
||||
DRIVE_IDE_Rev=1
|
||||
DRIVE_IDE_SN=1
|
||||
DRIVE_IDE_Capacity=1
|
||||
DRIVE_IDE_Geometry=1
|
||||
DRIVE_IDE_Cache=1
|
||||
DRIVE_IDE_Xfer=1
|
||||
DRIVE_IDE_BasicCapab=1
|
||||
DRIVE_IDE_ATA2Capab=1
|
||||
DRIVE_IDE_SMART=1
|
||||
DRIVE_SCSI=1
|
||||
DRIVE_SCSI_ID=1
|
||||
DRIVE_SCSI_Desc=1
|
||||
DRIVE_SCSI_Class=1
|
||||
DRIVE_Floppy=1
|
||||
NETWORK=1
|
||||
NETWORK_HWID=1
|
||||
NETWORK_DRV_INFO=1
|
||||
AUDIO=1
|
||||
AUDIO_DRV_INFO=1
|
||||
AUDIO_HWID=1
|
||||
PORTS=1
|
||||
BUS_USB=1
|
||||
BUS_USB_DRV_INFO=1
|
||||
BATTERY=1
|
||||
SENSORS=1
|
||||
|
||||
[Settings]
|
||||
HighestIdeAddress=0
|
||||
AcpiEnum=0
|
||||
SWSMI=1
|
||||
DebugMode=0
|
||||
SMBus=1
|
||||
TempScale=C
|
||||
AC97CodecID=1
|
||||
SkipProblematicPciDev=0
|
||||
GPUI2C=1
|
||||
LPC=1
|
||||
DefReportType=5
|
||||
TPM=0
|
||||
PCIdirect=1
|
||||
OpenSystemSummary=0
|
||||
RememberPreferences=1
|
||||
LargeFonts=0
|
||||
OpenSensors=0
|
||||
MinimalizeMainWnd=0
|
||||
MinimalizeSensors=0
|
||||
PersistentDriver=0
|
||||
UseHPET=1
|
||||
AutoUpdate=0
|
||||
GPUI2CNVAPI=1
|
||||
GPUI2CADL=0
|
||||
SensorsOnly=0
|
||||
AcpiEval=1
|
||||
CpuClkFromBusClk=1
|
||||
BusClkPolling=1
|
||||
SMBusAdrExclude=11111111111111110000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000
|
||||
GPUI2CBusExclude=00000000
|
||||
SensorsSM=1
|
||||
IoctlKernel=0
|
||||
SummaryOnly=0
|
||||
WakeGPUs=1
|
||||
KeepTheme=0
|
||||
FlushBuffers=1
|
||||
iMEsupport=1
|
||||
GPUI2Ccaching=1
|
||||
CSMI_SAS_Support=1
|
||||
DebugDirect=1
|
||||
MinimalizeSensorsClose=0
|
||||
WakeGPUsExt=0
|
||||
PollSleepingGPUs=0
|
||||
ShowWelcomeAndProgress=1
|
||||
EnablePchTherm=0
|
||||
ReorderGPUs=1
|
||||
NvmlSupport=1
|
||||
DecimalSeparator=.
|
||||
ThousandsSeparator=,
|
||||
CsvSeparator=,
|
||||
MinimizeGraphs=1
|
||||
TextButtons=0
|
||||
56
FAKE_PE_ROOT/.pe_items/_include/NotepadPlusPlus/config.xml
Normal file
56
FAKE_PE_ROOT/.pe_items/_include/NotepadPlusPlus/config.xml
Normal file
|
|
@ -0,0 +1,56 @@
|
|||
<?xml version="1.0" encoding="Windows-1252" ?>
|
||||
<NotepadPlus>
|
||||
<FindHistory nbMaxFindHistoryPath="10" nbMaxFindHistoryFilter="10" nbMaxFindHistoryFind="10" nbMaxFindHistoryReplace="10" matchWord="no" matchCase="no" wrap="yes" directionDown="yes" fifRecuisive="yes" fifInHiddenFolder="no" dlgAlwaysVisible="no" fifFilterFollowsDoc="no" fifFolderFollowsDoc="no" searchMode="0" transparencyMode="1" transparency="150" dotMatchesNewline="no" />
|
||||
<History nbMaxFile="10" inSubMenu="no" customLength="-1" />
|
||||
<GUIConfigs>
|
||||
<GUIConfig name="ToolBar" visible="no">standard</GUIConfig>
|
||||
<GUIConfig name="StatusBar">hide</GUIConfig>
|
||||
<GUIConfig name="TabBar" dragAndDrop="yes" drawTopBar="yes" drawInactiveTab="yes" reduce="yes" closeButton="yes" doubleClick2Close="no" vertical="no" multiLine="no" hide="no" quitOnEmpty="no" />
|
||||
<GUIConfig name="ScintillaViewsSplitter">vertical</GUIConfig>
|
||||
<GUIConfig name="UserDefineDlg" position="undocked">hide</GUIConfig>
|
||||
<GUIConfig name="TabSetting" replaceBySpace="yes" size="4" />
|
||||
<GUIConfig name="noUpdate" intervalDays="15" nextUpdateDate="20080426">no</GUIConfig>
|
||||
<GUIConfig name="Auto-detection">yes</GUIConfig>
|
||||
<GUIConfig name="CheckHistoryFiles">no</GUIConfig>
|
||||
<GUIConfig name="TrayIcon">no</GUIConfig>
|
||||
<GUIConfig name="MaitainIndent">yes</GUIConfig>
|
||||
<GUIConfig name="TagsMatchHighLight" TagAttrHighLight="yes" HighLightNonHtmlZone="no">yes</GUIConfig>
|
||||
<GUIConfig name="RememberLastSession">no</GUIConfig>
|
||||
<GUIConfig name="DetectEncoding">yes</GUIConfig>
|
||||
<GUIConfig name="NewDocDefaultSettings" format="0" encoding="4" lang="0" codepage="-1" openAnsiAsUTF8="yes" />
|
||||
<GUIConfig name="langsExcluded" gr0="0" gr1="0" gr2="0" gr3="0" gr4="0" gr5="0" gr6="0" gr7="0" langMenuCompact="yes" />
|
||||
<GUIConfig name="Print" lineNumber="yes" printOption="3" headerLeft="" headerMiddle="" headerRight="" footerLeft="" footerMiddle="" footerRight="" headerFontName="" headerFontStyle="0" headerFontSize="0" footerFontName="" footerFontStyle="0" footerFontSize="0" margeLeft="0" margeRight="0" margeTop="0" margeBottom="0" />
|
||||
<GUIConfig name="Backup" action="0" useCustumDir="no" dir="" isSnapshotMode="no" snapshotBackupTiming="7000" />
|
||||
<GUIConfig name="TaskList">yes</GUIConfig>
|
||||
<GUIConfig name="MRU">yes</GUIConfig>
|
||||
<GUIConfig name="URL">2</GUIConfig>
|
||||
<GUIConfig name="globalOverride" fg="no" bg="no" font="yes" fontSize="no" bold="no" italic="no" underline="no" />
|
||||
<GUIConfig name="auto-completion" autoCAction="3" triggerFromNbChar="1" autoCIgnoreNumbers="yes" funcParams="yes" />
|
||||
<GUIConfig name="auto-insert" parentheses="no" brackets="no" curlyBrackets="no" quotes="no" doubleQuotes="no" htmlXmlTag="no" />
|
||||
<GUIConfig name="sessionExt"></GUIConfig>
|
||||
<GUIConfig name="workspaceExt"></GUIConfig>
|
||||
<GUIConfig name="MenuBar">hide</GUIConfig>
|
||||
<GUIConfig name="Caret" width="1" blinkRate="600" />
|
||||
<GUIConfig name="ScintillaGlobalSettings" enableMultiSelection="no" />
|
||||
<GUIConfig name="openSaveDir" value="0" defaultDirPath="" />
|
||||
<GUIConfig name="titleBar" short="no" />
|
||||
<GUIConfig name="wordCharList" useDefault="yes" charsAdded="" />
|
||||
<GUIConfig name="delimiterSelection" leftmostDelimiter="40" rightmostDelimiter="41" delimiterSelectionOnEntireDocument="no" />
|
||||
<GUIConfig name="multiInst" setting="0" />
|
||||
<GUIConfig name="MISC" fileSwitcherWithoutExtColumn="no" backSlashIsEscapeCharacterForSql="yes" newStyleSaveDlg="no" isFolderDroppedOpenFiles="no" />
|
||||
<GUIConfig name="searchEngine" searchEngineChoice="1" searchEngineCustom="" />
|
||||
<GUIConfig name="SmartHighLight" matchCase="no" wholeWordOnly="no" useFindSettings="no" onAnotherView="no">yes</GUIConfig>
|
||||
<GUIConfig name="ScintillaPrimaryView" lineNumberMargin="show" bookMarkMargin="show" indentGuideLine="show" folderMarkStyle="box" lineWrapMethod="aligned" currentLineHilitingShow="show" scrollBeyondLastLine="no" disableAdvancedScrolling="no" wrapSymbolShow="hide" Wrap="no" borderEdge="yes" edge="no" edgeNbColumn="80" zoom="0" zoom2="0" whiteSpaceShow="hide" eolShow="hide" borderWidth="2" smoothFont="no" />
|
||||
<GUIConfig name="DockingManager" leftWidth="200" rightWidth="200" topHeight="200" bottomHeight="200">
|
||||
<ActiveTabs cont="0" activeTab="-1" />
|
||||
<ActiveTabs cont="1" activeTab="-1" />
|
||||
<ActiveTabs cont="2" activeTab="-1" />
|
||||
<ActiveTabs cont="3" activeTab="-1" />
|
||||
</GUIConfig>
|
||||
</GUIConfigs>
|
||||
<ProjectPanels>
|
||||
<ProjectPanel id="0" workSpaceFile="" />
|
||||
<ProjectPanel id="1" workSpaceFile="" />
|
||||
<ProjectPanel id="2" workSpaceFile="" />
|
||||
</ProjectPanels>
|
||||
</NotepadPlus>
|
||||
3
FAKE_PE_ROOT/.pe_items/_include/NotepadPlusPlus/npp.cmd
Normal file
3
FAKE_PE_ROOT/.pe_items/_include/NotepadPlusPlus/npp.cmd
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
@echo off
|
||||
|
||||
start "" %SystemDrive%\.bin\NotepadPlusPlus\notepadplusplus.exe %2 %3 %4 %5 %6 %7 %8 %9
|
||||
1371
FAKE_PE_ROOT/.pe_items/_include/NotepadPlusPlus/stylers.model.xml
Normal file
1371
FAKE_PE_ROOT/.pe_items/_include/NotepadPlusPlus/stylers.model.xml
Normal file
File diff suppressed because it is too large
Load diff
68
FAKE_PE_ROOT/.pe_items/_include/Q-Dir/Q-Dir.ini
Normal file
68
FAKE_PE_ROOT/.pe_items/_include/Q-Dir/Q-Dir.ini
Normal file
|
|
@ -0,0 +1,68 @@
|
|||
[Start]
|
||||
m_lang_id=1
|
||||
QDir_Id=0
|
||||
useColorStart=1
|
||||
Als=12
|
||||
designe_mode=2
|
||||
showCmd=3
|
||||
StartCrash=0
|
||||
default_tab=
|
||||
Max=1
|
||||
show_ext_in_type=1
|
||||
title_info=1
|
||||
adresbar_style=1
|
||||
useTreeColor=1
|
||||
useColor=1
|
||||
[Favoriten]
|
||||
Ordner=.\Favoriten\
|
||||
[Q]
|
||||
Link=.\Favoriten\Quick-Link\
|
||||
[Q-Dir]
|
||||
Lizenz=1
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
[Vorschau]
|
||||
Filter=*.avi;*.bmp;*.gif;*.ico;*.jpeg;*.jpg;*.mp*;*.pdf;*.png;*.wm*;
|
||||
[Filter2]
|
||||
0=#Hidden=1=-1=1=1=-1=0
|
||||
1=*.zip;*.rar;*.gz;*.7z;=1=00AA00=-1=1=-1=0
|
||||
2=*.mp*;*.avi;*.wma;=1=DD0058=-1=1=-1=0
|
||||
3=#DIR=1=008800=-1=1=-1=0
|
||||
4=*.jpg;*.jpeg;*.png,*.gif;*.bmp;*.ico=1=BB00BB=-1=1=-1=0
|
||||
5=*.html;*.htm;*.url=1=456789=-1=1=-1=0
|
||||
6=*.pl;*.cgi;*.php;*.pdf;*.doc;*.rtf;*.xls=1=BB8844=-1=1=-1=0
|
||||
7=*.cpp;*.hpp;*.h=1=DD0058=-1=1=-1=0
|
||||
8=*.exe;*.dll;*.bat=1=FF0000=-1=1=-1=0
|
||||
9=*=1=0000BB=-1=1=-1=0
|
||||
10=#BG=1=-1=-1=1=-1=0
|
||||
11=#BG-A=1=-1=-1=1=-1=0
|
||||
[Ordner]
|
||||
Filter=
|
||||
[Column_OS_6.1_Ploder1]
|
||||
Spatlen_::{20D04FE0-3AEA-1069-A2D8-08002B30309D}=%1C%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%F1%F1%F1%F1%14%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%D0%02%00%00%CC%02%00%00%31%53%50%53%05%D5%CD%D5%9C%2E%1B%10%93%97%08%00%2B%2C%F9%AE%83%00%00%00%22%00%00%00%00%47%00%72%00%6F%00%75%00%70%00%42%00%79%00%4B%00%65%00%79%00%3A%00%46%00%4D%00%54%00%49%00%44%00%00%00%08%00%00%00%4E%00%00%00%7B%00%42%00%37%00%32%00%35%00%46%00%31%00%33%00%30%00%2D%00%34%00%37%00%45%00%46%00%2D%00%31%00%30%00%31%00%41%00%2D%00%41%00%35%00%46%00%31%00%2D%00%30%00%32%00%36%00%30%00%38%00%43%00%39%00%45%00%45%00%42%00%41%00%43%00%7D%00%00%00%00%00%33%00%00%00%22%00%00%00%00%47%00%72%00%6F%00%75%00%70%00%42%00%79%00%44%00%69%00%72%00%65%00%63%00%74%00%69%00%6F%00%6E%00%00%00%13%00%00%00%01%00%00%00%5B%00%00%00%0A%00%00%00%00%53%00%6F%00%72%00%74%00%00%00%42%00%00%00%1E%00%00%00%70%00%72%00%6F%00%70%00%34%00%32%00%39%00%34%00%39%00%36%00%37%00%32%00%39%00%35%00%00%00%00%00%1C%00%00%00%01%00%00%00%30%F1%25%B7%EF%47%1A%10%A5%F1%02%60%8C%9E%EB%AC%0A%00%00%00%01%00%00%00%25%00%00%00%14%00%00%00%00%47%00%72%00%6F%00%75%00%70%00%56%00%69%00%65%00%77%00%00%00%0B%00%00%00%FF%FF%00%00%1B%00%00%00%0A%00%00%00%00%4D%00%6F%00%64%00%65%00%00%00%13%00%00%00%04%00%00%00%23%00%00%00%12%00%00%00%00%49%00%63%00%6F%00%6E%00%53%00%69%00%7A%00%65%00%00%00%13%00%00%00%10%00%00%00%BD%00%00%00%10%00%00%00%00%43%00%6F%00%6C%00%49%00%6E%00%66%00%6F%00%00%00%42%00%00%00%1E%00%00%00%70%00%72%00%6F%00%70%00%34%00%32%00%39%00%34%00%39%00%36%00%37%00%32%00%39%00%35%00%00%00%00%00%78%00%00%00%FD%DF%DF%FD%10%00%00%00%00%00%00%00%00%00%00%00%04%00%00%00%18%00%00%00%30%F1%25%B7%EF%47%1A%10%A5%F1%02%60%8C%9E%EB%AC%0A%00%00%00%8C%00%00%00%30%F1%25%B7%EF%47%1A%10%A5%F1%02%60%8C%9E%EB%AC%04%00%00%00%AF%00%00%00%35%4B%17%9B%FF%40%D2%11%A2%7E%00%C0%4F%C3%08%71%03%00%00%00%70%00%00%00%35%4B%17%9B%FF%40%D2%11%A2%7E%00%C0%4F%C3%08%71%02%00%00%00%70%00%00%00%2F%00%00%00%1E%00%00%00%00%47%00%72%00%6F%00%75%00%70%00%42%00%79%00%4B%00%65%00%79%00%3A%00%50%00%49%00%44%00%00%00%13%00%00%00%04%00%00%00%1F%00%00%00%0E%00%00%00%00%46%00%46%00%6C%00%61%00%67%00%73%00%00%00%13%00%00%00%05%00%20%40%31%00%00%00%20%00%00%00%00%4C%00%6F%00%67%00%69%00%63%00%61%00%6C%00%56%00%69%00%65%00%77%00%4D%00%6F%00%64%00%65%00%00%00%13%00%00%00%01%00%00%00%00%00%00%00%00%00%00%00|CODEMODE1|-1905896973|772
|
||||
Spatlen_291=%1C%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%F1%F1%F1%F1%14%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%D0%02%00%00%CC%02%00%00%31%53%50%53%05%D5%CD%D5%9C%2E%1B%10%93%97%08%00%2B%2C%F9%AE%83%00%00%00%22%00%00%00%00%47%00%72%00%6F%00%75%00%70%00%42%00%79%00%4B%00%65%00%79%00%3A%00%46%00%4D%00%54%00%49%00%44%00%00%00%08%00%00%00%4E%00%00%00%7B%00%30%00%30%00%30%00%30%00%30%00%30%00%30%00%30%00%2D%00%30%00%30%00%30%00%30%00%2D%00%30%00%30%00%30%00%30%00%2D%00%30%00%30%00%30%00%30%00%2D%00%30%00%30%00%30%00%30%00%30%00%30%00%30%00%30%00%30%00%30%00%30%00%30%00%7D%00%00%00%00%00%33%00%00%00%22%00%00%00%00%47%00%72%00%6F%00%75%00%70%00%42%00%79%00%44%00%69%00%72%00%65%00%63%00%74%00%69%00%6F%00%6E%00%00%00%13%00%00%00%01%00%00%00%5B%00%00%00%0A%00%00%00%00%53%00%6F%00%72%00%74%00%00%00%42%00%00%00%1E%00%00%00%70%00%72%00%6F%00%70%00%34%00%32%00%39%00%34%00%39%00%36%00%37%00%32%00%39%00%35%00%00%00%00%00%1C%00%00%00%01%00%00%00%30%F1%25%B7%EF%47%1A%10%A5%F1%02%60%8C%9E%EB%AC%0A%00%00%00%01%00%00%00%25%00%00%00%14%00%00%00%00%47%00%72%00%6F%00%75%00%70%00%56%00%69%00%65%00%77%00%00%00%0B%00%00%00%00%00%00%00%1B%00%00%00%0A%00%00%00%00%4D%00%6F%00%64%00%65%00%00%00%13%00%00%00%04%00%00%00%23%00%00%00%12%00%00%00%00%49%00%63%00%6F%00%6E%00%53%00%69%00%7A%00%65%00%00%00%13%00%00%00%10%00%00%00%BD%00%00%00%10%00%00%00%00%43%00%6F%00%6C%00%49%00%6E%00%66%00%6F%00%00%00%42%00%00%00%1E%00%00%00%70%00%72%00%6F%00%70%00%34%00%32%00%39%00%34%00%39%00%36%00%37%00%32%00%39%00%35%00%00%00%00%00%78%00%00%00%FD%DF%DF%FD%10%00%00%00%00%00%00%00%00%00%00%00%04%00%00%00%18%00%00%00%30%F1%25%B7%EF%47%1A%10%A5%F1%02%60%8C%9E%EB%AC%0A%00%00%00%EE%00%00%00%30%F1%25%B7%EF%47%1A%10%A5%F1%02%60%8C%9E%EB%AC%0E%00%00%00%69%00%00%00%30%F1%25%B7%EF%47%1A%10%A5%F1%02%60%8C%9E%EB%AC%04%00%00%00%91%00%00%00%30%F1%25%B7%EF%47%1A%10%A5%F1%02%60%8C%9E%EB%AC%0C%00%00%00%46%00%00%00%2F%00%00%00%1E%00%00%00%00%47%00%72%00%6F%00%75%00%70%00%42%00%79%00%4B%00%65%00%79%00%3A%00%50%00%49%00%44%00%00%00%13%00%00%00%00%00%00%00%1F%00%00%00%0E%00%00%00%00%46%00%46%00%6C%00%61%00%67%00%73%00%00%00%13%00%00%00%05%00%20%40%31%00%00%00%20%00%00%00%00%4C%00%6F%00%67%00%69%00%63%00%61%00%6C%00%56%00%69%00%65%00%77%00%4D%00%6F%00%64%00%65%00%00%00%13%00%00%00%01%00%00%00%00%00%00%00%00%00%00%00|CODEMODE1|-563719693|772
|
||||
[Column_OS_6.1_Ploder2]
|
||||
Spatlen_::{20D04FE0-3AEA-1069-A2D8-08002B30309D}=%1C%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%F1%F1%F1%F1%14%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%D0%02%00%00%CC%02%00%00%31%53%50%53%05%D5%CD%D5%9C%2E%1B%10%93%97%08%00%2B%2C%F9%AE%83%00%00%00%22%00%00%00%00%47%00%72%00%6F%00%75%00%70%00%42%00%79%00%4B%00%65%00%79%00%3A%00%46%00%4D%00%54%00%49%00%44%00%00%00%08%00%00%00%4E%00%00%00%7B%00%42%00%37%00%32%00%35%00%46%00%31%00%33%00%30%00%2D%00%34%00%37%00%45%00%46%00%2D%00%31%00%30%00%31%00%41%00%2D%00%41%00%35%00%46%00%31%00%2D%00%30%00%32%00%36%00%30%00%38%00%43%00%39%00%45%00%45%00%42%00%41%00%43%00%7D%00%00%00%00%00%33%00%00%00%22%00%00%00%00%47%00%72%00%6F%00%75%00%70%00%42%00%79%00%44%00%69%00%72%00%65%00%63%00%74%00%69%00%6F%00%6E%00%00%00%13%00%00%00%01%00%00%00%5B%00%00%00%0A%00%00%00%00%53%00%6F%00%72%00%74%00%00%00%42%00%00%00%1E%00%00%00%70%00%72%00%6F%00%70%00%34%00%32%00%39%00%34%00%39%00%36%00%37%00%32%00%39%00%35%00%00%00%00%00%1C%00%00%00%01%00%00%00%30%F1%25%B7%EF%47%1A%10%A5%F1%02%60%8C%9E%EB%AC%0A%00%00%00%01%00%00%00%25%00%00%00%14%00%00%00%00%47%00%72%00%6F%00%75%00%70%00%56%00%69%00%65%00%77%00%00%00%0B%00%00%00%FF%FF%00%00%1B%00%00%00%0A%00%00%00%00%4D%00%6F%00%64%00%65%00%00%00%13%00%00%00%04%00%00%00%23%00%00%00%12%00%00%00%00%49%00%63%00%6F%00%6E%00%53%00%69%00%7A%00%65%00%00%00%13%00%00%00%10%00%00%00%BD%00%00%00%10%00%00%00%00%43%00%6F%00%6C%00%49%00%6E%00%66%00%6F%00%00%00%42%00%00%00%1E%00%00%00%70%00%72%00%6F%00%70%00%34%00%32%00%39%00%34%00%39%00%36%00%37%00%32%00%39%00%35%00%00%00%00%00%78%00%00%00%FD%DF%DF%FD%10%00%00%00%00%00%00%00%00%00%00%00%04%00%00%00%18%00%00%00%30%F1%25%B7%EF%47%1A%10%A5%F1%02%60%8C%9E%EB%AC%0A%00%00%00%8C%00%00%00%30%F1%25%B7%EF%47%1A%10%A5%F1%02%60%8C%9E%EB%AC%04%00%00%00%AF%00%00%00%35%4B%17%9B%FF%40%D2%11%A2%7E%00%C0%4F%C3%08%71%03%00%00%00%70%00%00%00%35%4B%17%9B%FF%40%D2%11%A2%7E%00%C0%4F%C3%08%71%02%00%00%00%70%00%00%00%2F%00%00%00%1E%00%00%00%00%47%00%72%00%6F%00%75%00%70%00%42%00%79%00%4B%00%65%00%79%00%3A%00%50%00%49%00%44%00%00%00%13%00%00%00%04%00%00%00%1F%00%00%00%0E%00%00%00%00%46%00%46%00%6C%00%61%00%67%00%73%00%00%00%13%00%00%00%05%00%20%40%31%00%00%00%20%00%00%00%00%4C%00%6F%00%67%00%69%00%63%00%61%00%6C%00%56%00%69%00%65%00%77%00%4D%00%6F%00%64%00%65%00%00%00%13%00%00%00%01%00%00%00%00%00%00%00%00%00%00%00|CODEMODE1|-1905896973|772
|
||||
[Column_OS_6.1_Ploder3]
|
||||
Spatlen_::{20D04FE0-3AEA-1069-A2D8-08002B30309D}=%1C%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%F1%F1%F1%F1%14%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%D0%02%00%00%CC%02%00%00%31%53%50%53%05%D5%CD%D5%9C%2E%1B%10%93%97%08%00%2B%2C%F9%AE%83%00%00%00%22%00%00%00%00%47%00%72%00%6F%00%75%00%70%00%42%00%79%00%4B%00%65%00%79%00%3A%00%46%00%4D%00%54%00%49%00%44%00%00%00%08%00%00%00%4E%00%00%00%7B%00%42%00%37%00%32%00%35%00%46%00%31%00%33%00%30%00%2D%00%34%00%37%00%45%00%46%00%2D%00%31%00%30%00%31%00%41%00%2D%00%41%00%35%00%46%00%31%00%2D%00%30%00%32%00%36%00%30%00%38%00%43%00%39%00%45%00%45%00%42%00%41%00%43%00%7D%00%00%00%00%00%33%00%00%00%22%00%00%00%00%47%00%72%00%6F%00%75%00%70%00%42%00%79%00%44%00%69%00%72%00%65%00%63%00%74%00%69%00%6F%00%6E%00%00%00%13%00%00%00%01%00%00%00%5B%00%00%00%0A%00%00%00%00%53%00%6F%00%72%00%74%00%00%00%42%00%00%00%1E%00%00%00%70%00%72%00%6F%00%70%00%34%00%32%00%39%00%34%00%39%00%36%00%37%00%32%00%39%00%35%00%00%00%00%00%1C%00%00%00%01%00%00%00%30%F1%25%B7%EF%47%1A%10%A5%F1%02%60%8C%9E%EB%AC%0A%00%00%00%01%00%00%00%25%00%00%00%14%00%00%00%00%47%00%72%00%6F%00%75%00%70%00%56%00%69%00%65%00%77%00%00%00%0B%00%00%00%FF%FF%00%00%1B%00%00%00%0A%00%00%00%00%4D%00%6F%00%64%00%65%00%00%00%13%00%00%00%04%00%00%00%23%00%00%00%12%00%00%00%00%49%00%63%00%6F%00%6E%00%53%00%69%00%7A%00%65%00%00%00%13%00%00%00%10%00%00%00%BD%00%00%00%10%00%00%00%00%43%00%6F%00%6C%00%49%00%6E%00%66%00%6F%00%00%00%42%00%00%00%1E%00%00%00%70%00%72%00%6F%00%70%00%34%00%32%00%39%00%34%00%39%00%36%00%37%00%32%00%39%00%35%00%00%00%00%00%78%00%00%00%FD%DF%DF%FD%10%00%00%00%00%00%00%00%00%00%00%00%04%00%00%00%18%00%00%00%30%F1%25%B7%EF%47%1A%10%A5%F1%02%60%8C%9E%EB%AC%0A%00%00%00%8C%00%00%00%30%F1%25%B7%EF%47%1A%10%A5%F1%02%60%8C%9E%EB%AC%04%00%00%00%AF%00%00%00%35%4B%17%9B%FF%40%D2%11%A2%7E%00%C0%4F%C3%08%71%03%00%00%00%70%00%00%00%35%4B%17%9B%FF%40%D2%11%A2%7E%00%C0%4F%C3%08%71%02%00%00%00%70%00%00%00%2F%00%00%00%1E%00%00%00%00%47%00%72%00%6F%00%75%00%70%00%42%00%79%00%4B%00%65%00%79%00%3A%00%50%00%49%00%44%00%00%00%13%00%00%00%04%00%00%00%1F%00%00%00%0E%00%00%00%00%46%00%46%00%6C%00%61%00%67%00%73%00%00%00%13%00%00%00%05%00%20%40%31%00%00%00%20%00%00%00%00%4C%00%6F%00%67%00%69%00%63%00%61%00%6C%00%56%00%69%00%65%00%77%00%4D%00%6F%00%64%00%65%00%00%00%13%00%00%00%01%00%00%00%00%00%00%00%00%00%00%00|CODEMODE1|-1905896973|772
|
||||
[Column_OS_6.1_Ploder4]
|
||||
Spatlen_::{20D04FE0-3AEA-1069-A2D8-08002B30309D}=%1C%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%F1%F1%F1%F1%14%00%00%00%00%00%00%00%00%00%00%00%00%00%00%00%D0%02%00%00%CC%02%00%00%31%53%50%53%05%D5%CD%D5%9C%2E%1B%10%93%97%08%00%2B%2C%F9%AE%83%00%00%00%22%00%00%00%00%47%00%72%00%6F%00%75%00%70%00%42%00%79%00%4B%00%65%00%79%00%3A%00%46%00%4D%00%54%00%49%00%44%00%00%00%08%00%00%00%4E%00%00%00%7B%00%42%00%37%00%32%00%35%00%46%00%31%00%33%00%30%00%2D%00%34%00%37%00%45%00%46%00%2D%00%31%00%30%00%31%00%41%00%2D%00%41%00%35%00%46%00%31%00%2D%00%30%00%32%00%36%00%30%00%38%00%43%00%39%00%45%00%45%00%42%00%41%00%43%00%7D%00%00%00%00%00%33%00%00%00%22%00%00%00%00%47%00%72%00%6F%00%75%00%70%00%42%00%79%00%44%00%69%00%72%00%65%00%63%00%74%00%69%00%6F%00%6E%00%00%00%13%00%00%00%01%00%00%00%5B%00%00%00%0A%00%00%00%00%53%00%6F%00%72%00%74%00%00%00%42%00%00%00%1E%00%00%00%70%00%72%00%6F%00%70%00%34%00%32%00%39%00%34%00%39%00%36%00%37%00%32%00%39%00%35%00%00%00%00%00%1C%00%00%00%01%00%00%00%30%F1%25%B7%EF%47%1A%10%A5%F1%02%60%8C%9E%EB%AC%0A%00%00%00%01%00%00%00%25%00%00%00%14%00%00%00%00%47%00%72%00%6F%00%75%00%70%00%56%00%69%00%65%00%77%00%00%00%0B%00%00%00%FF%FF%00%00%1B%00%00%00%0A%00%00%00%00%4D%00%6F%00%64%00%65%00%00%00%13%00%00%00%04%00%00%00%23%00%00%00%12%00%00%00%00%49%00%63%00%6F%00%6E%00%53%00%69%00%7A%00%65%00%00%00%13%00%00%00%10%00%00%00%BD%00%00%00%10%00%00%00%00%43%00%6F%00%6C%00%49%00%6E%00%66%00%6F%00%00%00%42%00%00%00%1E%00%00%00%70%00%72%00%6F%00%70%00%34%00%32%00%39%00%34%00%39%00%36%00%37%00%32%00%39%00%35%00%00%00%00%00%78%00%00%00%FD%DF%DF%FD%10%00%00%00%00%00%00%00%00%00%00%00%04%00%00%00%18%00%00%00%30%F1%25%B7%EF%47%1A%10%A5%F1%02%60%8C%9E%EB%AC%0A%00%00%00%8C%00%00%00%30%F1%25%B7%EF%47%1A%10%A5%F1%02%60%8C%9E%EB%AC%04%00%00%00%AF%00%00%00%35%4B%17%9B%FF%40%D2%11%A2%7E%00%C0%4F%C3%08%71%03%00%00%00%70%00%00%00%35%4B%17%9B%FF%40%D2%11%A2%7E%00%C0%4F%C3%08%71%02%00%00%00%70%00%00%00%2F%00%00%00%1E%00%00%00%00%47%00%72%00%6F%00%75%00%70%00%42%00%79%00%4B%00%65%00%79%00%3A%00%50%00%49%00%44%00%00%00%13%00%00%00%04%00%00%00%1F%00%00%00%0E%00%00%00%00%46%00%46%00%6C%00%61%00%67%00%73%00%00%00%13%00%00%00%05%00%20%40%31%00%00%00%20%00%00%00%00%4C%00%6F%00%67%00%69%00%63%00%61%00%6C%00%56%00%69%00%65%00%77%00%4D%00%6F%00%64%00%65%00%00%00%13%00%00%00%01%00%00%00%00%00%00%00%00%00%00%00|CODEMODE1|-1905896973|772
|
||||
[Programs_State]
|
||||
Disable=0
|
||||
[Quick-Links]
|
||||
WK=%systemdrive%/WK
|
||||
[Options]
|
||||
Start=7
|
||||
[X-Size]
|
||||
mode=1
|
||||
dig=0
|
||||
fld_size=1
|
||||
ths_sep=1
|
||||
type=0
|
||||
precent=1
|
||||
ff_cnt=1
|
||||
block_no_focus=1
|
||||
nosort_fld_size=1
|
||||
113
FAKE_PE_ROOT/Build PE.cmd
Normal file
113
FAKE_PE_ROOT/Build PE.cmd
Normal file
|
|
@ -0,0 +1,113 @@
|
|||
:: Wizard Kit: Windows PE Build Tool Launcher ::
|
||||
|
||||
@echo off
|
||||
|
||||
:Init
|
||||
setlocal EnableDelayedExpansion
|
||||
title Wizard Kit: Windows PE Build Tool
|
||||
call :CheckFlags %*
|
||||
call :CheckElevation || goto Exit
|
||||
call :FindKitsRoot || goto ErrorKitNotFound
|
||||
set "dandi_set_env=%adk_root%\Deployment Tools\DandISetEnv.bat"
|
||||
set "ps_script=%~dp0\.bin\Scripts\build_pe.ps1"
|
||||
|
||||
:LaunchPrep
|
||||
rem Verify scripts exists
|
||||
if not exist "%dandi_set_env%" (goto ErrorKitNotFound)
|
||||
if not exist "%ps_script%" (goto ErrorPSScriptMissing)
|
||||
call "%dandi_set_env%" || goto ErrorUnknown
|
||||
|
||||
:Launch
|
||||
PowerShell -ExecutionPolicy bypass -File %ps_script%"
|
||||
goto Exit
|
||||
|
||||
:: Functions ::
|
||||
:CheckElevation
|
||||
rem Code based on StackOverflow comments
|
||||
rem Question: https://stackoverflow.com/q/4051883
|
||||
rem Using answer: https://stackoverflow.com/a/21295806
|
||||
rem Asked by: https://stackoverflow.com/users/272237/flacs
|
||||
rem Edited by: https://stackoverflow.com/users/330315/a-horse-with-no-name
|
||||
rem Answer by: https://stackoverflow.com/users/3198799/and31415
|
||||
fsutil dirty query %systemdrive% >nul
|
||||
if %errorlevel% neq 0 (
|
||||
call :RequestElevation
|
||||
rem reset errorlevel to 1 to abort the current non-elevated script
|
||||
color 00
|
||||
)
|
||||
@exit /b %errorlevel%
|
||||
|
||||
:CheckFlags
|
||||
rem Loops through all arguments to check for accepted flags
|
||||
set DEBUG=
|
||||
for %%f in (%*) do (
|
||||
if /i "%%f" == "/DEBUG" (@echo on & set "DEBUG=/DEBUG")
|
||||
)
|
||||
@exit /b 0
|
||||
|
||||
:FindKitsRoot
|
||||
set "adk_root="
|
||||
set "found="
|
||||
set "r_vname=KitsRoot10"
|
||||
|
||||
rem Check registry for WADK
|
||||
set "r_path=HKLM\Software\Wow6432Node\Microsoft\Windows Kits\Installed Roots"
|
||||
reg query "%r_path%" /v %r_vname% >nul 2>&1 && set "found=True"
|
||||
if not defined found (
|
||||
rem 32-bit systems?
|
||||
set "r_path=HKLM\Software\Microsoft\Windows Kits\Installed Roots"
|
||||
reg query "!r_path!" /v %r_vname% >nul 2>&1 && set "found=True"
|
||||
)
|
||||
for /f "skip=2 tokens=2*" %%i in ('reg query "%r_path%" /v %r_vname%') do (
|
||||
set adk_root=%%j\Assessment and Deployment Kit
|
||||
)
|
||||
rem Set errorlevel if necessary
|
||||
if not defined adk_root color 00
|
||||
if not defined found color 00
|
||||
@exit /b %errorlevel%
|
||||
|
||||
:RequestElevation
|
||||
set "cscript=%systemroot%\system32\cscript.exe"
|
||||
set "vb_script=.bin\tmp\Elevate.vbs"
|
||||
mkdir ".bin\tmp" 2>nul
|
||||
|
||||
rem Create VB script
|
||||
echo Set UAC = CreateObject^("Shell.Application"^) > "%vb_script%"
|
||||
echo UAC.ShellExecute "%~s0", "", "", "runas", 3 >> "%vb_script%"
|
||||
|
||||
rem Run
|
||||
"%cscript%" //nologo "%vb_script%" || goto ErrorUnknown
|
||||
del "%vb_script%"
|
||||
@exit /b 0
|
||||
|
||||
:: Errors ::
|
||||
:ErrorKitNotFound
|
||||
echo.
|
||||
echo ERROR: Windows ADK installation not found.
|
||||
goto Abort
|
||||
|
||||
:ErrorPSScriptMissing
|
||||
echo.
|
||||
echo ERROR: build_pe.ps1 script not found.
|
||||
goto Abort
|
||||
|
||||
:ErrorUnknown
|
||||
echo.
|
||||
echo ERROR: Encountered an unknown error.
|
||||
goto Abort
|
||||
|
||||
:Abort
|
||||
color 4e
|
||||
echo Aborted.
|
||||
echo.
|
||||
echo Press any key to exit...
|
||||
pause>nul
|
||||
color
|
||||
rem Set errorlevel to 1 by calling color incorrectly
|
||||
color 00
|
||||
goto Exit
|
||||
|
||||
:: Cleanup and exit ::
|
||||
:Exit
|
||||
endlocal
|
||||
exit /b %errorlevel%
|
||||
BIN
FAKE_PE_ROOT/Images/WinPE.jpg
Normal file
BIN
FAKE_PE_ROOT/Images/WinPE.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 168 KiB |
7
FAKE_PE_ROOT/LICENSE.txt
Normal file
7
FAKE_PE_ROOT/LICENSE.txt
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
Copyright (c) 2017 Alan Mason
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
18
FAKE_PE_ROOT/README.md
Normal file
18
FAKE_PE_ROOT/README.md
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
# Wizard Kit PE #
|
||||
|
||||
A collection of scripts to help technicians service Windows systems.
|
||||
|
||||
# NOTICE: Currently under maintenance #
|
||||
|
||||
*These scripts are being reviewed and updated at the moment.*
|
||||
Things may or may not work until this is completed. This warning will be removed once the maintenance is finished.
|
||||
|
||||
## Requirements ##
|
||||
|
||||
* Windows Assessment and Deployment Kit for Windows 10
|
||||
|
||||
## Initial Setup ##
|
||||
|
||||
* Install Windows ADK for Windows 10
|
||||
* Run "Deployment and Imaging Tools Environment" as admin
|
||||
* Run `make.cmd` to build a new Windows 10 PE image
|
||||
Loading…
Reference in a new issue