diff --git a/.bin/1201_Root_CA.crt b/.bin/1201_Root_CA.crt new file mode 100644 index 00000000..7d8ae206 --- /dev/null +++ b/.bin/1201_Root_CA.crt @@ -0,0 +1,36 @@ +-----BEGIN CERTIFICATE----- +MIIGTzCCBDegAwIBAgIBfDANBgkqhkiG9w0BAQsFADCBsDELMAkGA1UEBhMCVVMx +DzANBgNVBAgTBk9yZWdvbjERMA8GA1UEBxMIUG9ydGxhbmQxHTAbBgNVBAoTFDEy +MDEgQ29tcHV0ZXIgUmVwYWlyMSMwIQYDVQQLExoxMjAxIENlcnRpZmljYXRlIEF1 +dGhvcml0eTEVMBMGA1UEAxMMMTIwMSBSb290IENBMSIwIAYJKoZIhvcNAQkBFhNt +YW5hZ2VtZW50QDEyMDEuY29tMB4XDTE4MDgyMDA2MDEwMFoXDTM4MDgyMDA2MDEw +MFowgbAxCzAJBgNVBAYTAlVTMQ8wDQYDVQQIEwZPcmVnb24xETAPBgNVBAcTCFBv +cnRsYW5kMR0wGwYDVQQKExQxMjAxIENvbXB1dGVyIFJlcGFpcjEjMCEGA1UECxMa +MTIwMSBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkxFTATBgNVBAMTDDEyMDEgUm9vdCBD +QTEiMCAGCSqGSIb3DQEJARYTbWFuYWdlbWVudEAxMjAxLmNvbTCCAiIwDQYJKoZI +hvcNAQEBBQADggIPADCCAgoCggIBANGYohJk5/CC/p14R7EpnhdEUF7Wvlnt8yuF +dtuyStlIGkLxPMlj9hQfoLDplQqlKBefTaI3WwrI/Hndso+jStLKgtRWRdyNB34K +AWqT04zXYGicdi3fqaMhEC4SPyX1tRXU2e9kjtIJ21AZx2F40NUjfOMKLVymZgXm +gkG1oA/BSzE8vIidrd/lJPwo0u+EYFa87y+9SHS93Ze1AVoTVqUzSMkjqt+6YIzJ +4XBD7UBvps0Mnd18HMUlXHFXusUL1K921W3wDVcMlNIIA8MJjQk+aVS/1EGSn+81 +C+r40x64lYkyh0ZUAHkVXUC/BUfa0SKx1Nfa4mSvtyPnUCb7Dir8MkTDKgopGCok +KmW+VvE2H8AEPCbcctFmhdip19laYxzyDhZ5wiQN6AOg64cWvDf6/uT9hyPvxkj1 +ps5vWElryzawTE7h1BI8liMqwsG1Y7cc6D0PABxPsp4iR8pde0oZtpLnEvejRodo +zz3BGvZjq+pHtRMjL+yiDtdAL+K+7/e7gNCQBIGsphahWIOf7TczWVgMNclTNxl3 +WZjKkOEs7j+prRTDvffV6H32+Tk5TwgMsfvnY4a37CkJ0L0d1JhWj9wO+gESfg3W +8yvt3hfcj3NOUMJWhJstqlIeX8dj7vVcMhjNvYJxabJmJgk+DNlHe55fXDGJ1CLO +E0EbRTyBAgMBAAGjcjBwMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFM+hXjFx +6BldZFBQW1Pn/Yp3vbw+MAsGA1UdDwQEAwIBBjARBglghkgBhvhCAQEEBAMCAAcw +HgYJYIZIAYb4QgENBBEWD3hjYSBjZXJ0aWZpY2F0ZTANBgkqhkiG9w0BAQsFAAOC +AgEALWcnu3auMSnSSF/kOiLvJ4RAnHZebGYNcUWM14u1K1/XtTB7AFzQIHX7BcDH +m/z4UEyhl9EdR5Bgf2Szuk+8+LyGqcdAdbPoK+bmcwwL8lufDnlIYBThKIBfU2Xw +vw41972B+HH5r1TZXve1EdJaLyImbxmq5s41oH7djGC+sowtyGuVqP7RBguXBGiJ +At1yfdPWVaxLmE8QFknkIvpgTmELpxasTfvgnQBenA3Ts0Z2hwN4796hLbRzGsb8 +4hKWAfQDP0klzXKRRyVeAueXxj/FcNZilYxv15MqMc4qrUiW0hXHluQM1yceNjNZ +SE4Igi1Ap71L4PpgkHIDfZD908UexGGkql+p4EWrpnXUYWTa0sHg1bFKQntgpyFg +86Ug0Q7ZNhImENzeigZknL0ceIdaNUCs7UPrkqpUSJR2yujp1JC3tX1LgKZw8B3J +fQx/8h3zzNuz5dVtr1wUJaUD0nGhMIRBEXb2t4jupEISSTN1pkHPcbNzhAQXjVUA +CJxnnz3jmyGsNCoQf7NWfaN6RSRTWehsC6m7JvPvoU2EZoQkSlNOv4xZuFpEx0u7 +MFDtC1cSGPH7YwYXPVc45xAMC6Ni8mvq93oT89XZNHIqE8/T8aPHLwYFgu1b1r/A +L8oMEnG5s8tG3n0DcFoOYsaIzVeP0r7B7e3zKui6DQLuu9E= +-----END CERTIFICATE----- diff --git a/.bin/Scripts/Launch.cmd b/.bin/Scripts/Launch.cmd index 2364dcc8..0a0330c6 100644 --- a/.bin/Scripts/Launch.cmd +++ b/.bin/Scripts/Launch.cmd @@ -150,7 +150,6 @@ goto Exit :LaunchOffice call "%bin%\Scripts\init_client_dir.cmd" /Office set "_odt=False" -if %L_PATH% equ 2013 (set "_odt=True") if %L_PATH% equ 2016 (set "_odt=True") if "%_odt%" == "True" ( goto LaunchOfficeODT @@ -280,9 +279,9 @@ rem Create VB script mkdir "%bin%\tmp" 2>nul echo Set UAC = CreateObject^("Shell.Application"^) > "%bin%\tmp\Elevate.vbs" if defined L_NCMD ( - echo UAC.ShellExecute "%PYTHON%", """%script%""", "", "runas", 3 >> "%bin%\tmp\Elevate.vbs" + echo UAC.ShellExecute "%PYTHON%", """%script%"" %L_ARGS%", "", "runas", 3 >> "%bin%\tmp\Elevate.vbs" ) else ( - echo UAC.ShellExecute "%CON%", "-run ""%PYTHON%"" ""%script%"" -new_console:n", "", "runas", 1 >> "%bin%\tmp\Elevate.vbs" + echo UAC.ShellExecute "%CON%", "-run ""%PYTHON%"" ""%script%"" %L_ARGS% -new_console:n", "", "runas", 1 >> "%bin%\tmp\Elevate.vbs" ) rem Run @@ -291,9 +290,9 @@ goto Exit :LaunchPyScriptUser if defined L_NCMD ( - start "" "%PYTHON%" "%script%" || goto ErrorUnknown + start "" "%PYTHON%" "%script%" %L_ARGS% || goto ErrorUnknown ) else ( - start "" "%CON%" -run "%PYTHON%" "%script%" -new_console:n || goto ErrorUnknown + start "" "%CON%" -run "%PYTHON%" "%script%" %L_ARGS% -new_console:n || goto ErrorUnknown ) goto Exit @@ -333,7 +332,7 @@ echo. Executable Working Dir Program Args [L_7ZIP] [L_ELEV] [L__CLI] echo. Folder Folder '.' [L_7ZIP] echo. Office Year Product [L_7ZIP] echo. PSScript Scripts Script [L_7ZIP] [L_ELEV] [L_NCMD] -echo. PyScript Scripts Script [L_7ZIP] [L_ELEV] [L_NCMD] +echo. PyScript Scripts Script Args [L_7ZIP] [L_ELEV] [L_NCMD] echo. QuickBooks Year Product [L_7ZIP] echo. echo.L_7ZIP: Extra arguments for 7-Zip (in the :ExtractCBin label) @@ -493,4 +492,4 @@ goto Exit :Exit popd endlocal -exit /b %errorlevel% \ No newline at end of file +exit /b %errorlevel% diff --git a/.bin/Scripts/Launcher_Template.cmd b/.bin/Scripts/Launcher_Template.cmd index 90b15482..01d1758d 100644 --- a/.bin/Scripts/Launcher_Template.cmd +++ b/.bin/Scripts/Launcher_Template.cmd @@ -17,7 +17,7 @@ call :SetTitle Launcher rem EXTRA_CODE :DefineLaunch -:: See %bin%\SCripts\Launch.cmd for details under :Usage label +:: See %bin%\Scripts\Launch.cmd for details under :Usage label set L_TYPE= set L_PATH= set L_ITEM= @@ -110,4 +110,4 @@ goto Exit :: Cleanup and exit :: :Exit endlocal -exit /b %errorlevel% \ No newline at end of file +exit /b %errorlevel% diff --git a/.bin/Scripts/activate.py b/.bin/Scripts/activate.py index 3555c46a..642e5edd 100644 --- a/.bin/Scripts/activate.py +++ b/.bin/Scripts/activate.py @@ -39,7 +39,7 @@ if __name__ == '__main__': selection = menu_select( '{}: Windows Activation Menu'.format(KIT_NAME_FULL), main_entries=activation_methods, action_entries=actions) - + if (selection.isnumeric()): result = try_and_print( message = activation_methods[int(selection)-1]['Name'], diff --git a/.bin/Scripts/borrowed/sensors.py b/.bin/Scripts/borrowed/sensors.py index 847f2619..39b00a4f 100644 --- a/.bin/Scripts/borrowed/sensors.py +++ b/.bin/Scripts/borrowed/sensors.py @@ -35,7 +35,7 @@ class feature(Structure): _fields_ = [("name", c_char_p), ("number", c_int), ("type", c_int)] - + # sensors_feature_type IN = 0x00 FAN = 0x01 @@ -71,10 +71,10 @@ COMPUTE_MAPPING = 4 def init(cfg_file = None): file = _libc.fopen(cfg_file.encode("utf-8"), "r") if cfg_file is not None else None - + if _hdl.sensors_init(file) != 0: raise Exception("sensors_init failed") - + if file is not None: _libc.fclose(file) @@ -84,10 +84,10 @@ def cleanup(): def parse_chip_name(orig_name): ret = chip_name() err= _hdl.sensors_parse_chip_name(orig_name.encode("utf-8"), byref(ret)) - + if err < 0: raise Exception(strerror(err)) - + return ret def strerror(errnum): @@ -101,10 +101,10 @@ def get_detected_chips(match, nr): @return: (chip, next nr to query) """ _nr = c_int(nr) - + if match is not None: match = byref(match) - + chip = _hdl.sensors_get_detected_chips(match, byref(_nr)) chip = chip.contents if bool(chip) else None return chip, _nr.value @@ -115,10 +115,10 @@ def chip_snprintf_name(chip, buffer_size=200): """ ret = create_string_buffer(buffer_size) err = _hdl.sensors_snprintf_chip_name(ret, buffer_size, byref(chip)) - + if err < 0: raise Exception(strerror(err)) - + return ret.value.decode("utf-8") def do_chip_sets(chip): @@ -128,7 +128,7 @@ def do_chip_sets(chip): err = _hdl.sensors_do_chip_sets(byref(chip)) if err < 0: raise Exception(strerror(err)) - + def get_adapter_name(bus): return _hdl.sensors_get_adapter_name(byref(bus)).decode("utf-8") @@ -177,60 +177,60 @@ class ChipIterator: def __init__(self, match = None): self.match = parse_chip_name(match) if match is not None else None self.nr = 0 - + def __iter__(self): return self - + def __next__(self): chip, self.nr = get_detected_chips(self.match, self.nr) - + if chip is None: raise StopIteration - + return chip - + def __del__(self): if self.match is not None: free_chip_name(self.match) - + def next(self): # python2 compability return self.__next__() - + class FeatureIterator: def __init__(self, chip): self.chip = chip self.nr = 0 - + def __iter__(self): return self - + def __next__(self): feature, self.nr = get_features(self.chip, self.nr) - + if feature is None: raise StopIteration - + return feature def next(self): # python2 compability return self.__next__() - + class SubFeatureIterator: def __init__(self, chip, feature): self.chip = chip self.feature = feature self.nr = 0 - + def __iter__(self): return self - + def __next__(self): subfeature, self.nr = get_all_subfeatures(self.chip, self.feature, self.nr) - + if subfeature is None: raise StopIteration - + return subfeature - + def next(self): # python2 compability return self.__next__() diff --git a/.bin/Scripts/build-ufd b/.bin/Scripts/build-ufd index faae7867..c606892b 100755 --- a/.bin/Scripts/build-ufd +++ b/.bin/Scripts/build-ufd @@ -557,7 +557,9 @@ mount "${WINPE_ISO}" /mnt/WinPE -r >> "${LOG_FILE}" 2>&1 echo "Copying Linux files..." rsync ${RSYNC_ARGS} /mnt/Linux/* /mnt/Dest/ >> "${LOG_FILE}" 2>&1 sed -i "s/${ISO_LABEL}/${UFD_LABEL}/" /mnt/Dest/EFI/boot/refind.conf +sed -i "s/#UFD#//" /mnt/Dest/EFI/boot/refind.conf sed -i "s/${ISO_LABEL}/${UFD_LABEL}/" /mnt/Dest/arch/boot/syslinux/*cfg +sed -i "s/#UFD#//" /mnt/Dest/arch/boot/syslinux/*cfg echo "Copying WinPE files..." rsync ${RSYNC_ARGS} /mnt/WinPE/{Boot,bootmgr{,.efi},en-us,sources} /mnt/Dest/ >> "${LOG_FILE}" 2>&1 diff --git a/.bin/Scripts/build_kit.ps1 b/.bin/Scripts/build_kit.ps1 index dafaa2c8..bd213578 100644 --- a/.bin/Scripts/build_kit.ps1 +++ b/.bin/Scripts/build_kit.ps1 @@ -11,6 +11,7 @@ $Bin = (Get-Item $WD).Parent.FullName $Root = (Get-Item $Bin -Force).Parent.FullName $Temp = "$Bin\tmp" $System32 = "{0}\System32" -f $Env:SystemRoot +$SysWOW64 = "{0}\SysWOW64" -f $Env:SystemRoot Push-Location "$WD" $Host.UI.RawUI.BackgroundColor = "black" $Host.UI.RawUI.ForegroundColor = "white" @@ -82,25 +83,25 @@ if ($MyInvocation.InvocationName -ne ".") { DownloadFile -Path $Path -Name "7z-extra.7z" -Url "https://www.7-zip.org/a/7z1805-extra.7z" # ConEmu - $Url = "https://github.com/Maximus5/ConEmu/releases/download/v18.05.06/ConEmuPack.180506.7z" + $Url = "https://github.com/Maximus5/ConEmu/releases/download/v18.06.26/ConEmuPack.180626.7z" DownloadFile -Path $Path -Name "ConEmuPack.7z" -Url $Url # Notepad++ - $Url = "https://notepad-plus-plus.org/repository/7.x/7.5.6/npp.7.5.6.bin.minimalist.7z" + $Url = "https://notepad-plus-plus.org/repository/7.x/7.5.8/npp.7.5.8.bin.minimalist.7z" DownloadFile -Path $Path -Name "npp.7z" -Url $Url # Python - $Url = "https://www.python.org/ftp/python/3.6.5/python-3.6.5-embed-win32.zip" + $Url = "https://www.python.org/ftp/python/3.7.0/python-3.7.0-embed-win32.zip" DownloadFile -Path $Path -Name "python32.zip" -Url $Url - $Url = "https://www.python.org/ftp/python/3.6.5/python-3.6.5-embed-amd64.zip" + $Url = "https://www.python.org/ftp/python/3.7.0/python-3.7.0-embed-amd64.zip" DownloadFile -Path $Path -Name "python64.zip" -Url $Url # Python: psutil $DownloadPage = "https://pypi.org/project/psutil/" - $RegEx = "href=.*-cp36-cp36m-win32.whl" + $RegEx = "href=.*-cp37-cp37m-win32.whl" $Url = FindDynamicUrl $DownloadPage $RegEx DownloadFile -Path $Path -Name "psutil32.whl" -Url $Url - $RegEx = "href=.*-cp36-cp36m-win_amd64.whl" + $RegEx = "href=.*-cp37-cp37m-win_amd64.whl" $Url = FindDynamicUrl $DownloadPage $RegEx DownloadFile -Path $Path -Name "psutil64.whl" -Url $Url @@ -112,12 +113,25 @@ if ($MyInvocation.InvocationName -ne ".") { $Url = FindDynamicUrl -SourcePage $DownloadPage -RegEx $RegEx DownloadFile -Path $Path -Name $Name -Url $Url } + + # Visual C++ Runtimes + $Url = "https://aka.ms/vs/15/release/vc_redist.x86.exe" + DownloadFile -Path $Path -Name "vcredist_x86.exe" -Url $Url + $Url = "https://aka.ms/vs/15/release/vc_redist.x64.exe" + DownloadFile -Path $Path -Name "vcredist_x64.exe" -Url $Url ## Bail ## # If errors were encountered during downloads if ($DownloadErrors -gt 0) { Abort } + + ## Install ## + # Visual C++ Runtimes + $ArgumentList = @("/install", "/passive", "/norestart") + Start-Process -FilePath "$Temp\vcredist_x86.exe" -ArgumentList $ArgumentList -Wait + Start-Process -FilePath "$Temp\vcredist_x64.exe" -ArgumentList $ArgumentList -Wait + Remove-Item "$Temp\vcredist*.exe" ## Extract ## # 7-Zip @@ -192,6 +206,13 @@ if ($MyInvocation.InvocationName -ne ".") { Write-Host (" ERROR: Failed to extract files." ) -ForegroundColor "Red" } } + try { + Copy-Item -Path "$System32\vcruntime140.dll" -Destination "$Bin\Python\x64\vcruntime140.dll" -Force + Copy-Item -Path "$SysWOW64\vcruntime140.dll" -Destination "$Bin\Python\x32\vcruntime140.dll" -Force + } + catch { + Write-Host (" ERROR: Failed to copy Visual C++ Runtime DLLs." ) -ForegroundColor "Red" + } Remove-Item "$Temp\python*.zip" Remove-Item "$Temp\*.whl" diff --git a/.bin/Scripts/build_pe.ps1 b/.bin/Scripts/build_pe.ps1 index 0e19050a..560d570d 100644 --- a/.bin/Scripts/build_pe.ps1 +++ b/.bin/Scripts/build_pe.ps1 @@ -17,6 +17,7 @@ $Date = Get-Date -UFormat "%Y-%m-%d" $Host.UI.RawUI.BackgroundColor = "Black" $Host.UI.RawUI.ForegroundColor = "White" $HostSystem32 = "{0}\System32" -f $Env:SystemRoot +$HostSysWOW64 = "{0}\SysWOW64" -f $Env:SystemRoot $DISM = "{0}\DISM.exe" -f $Env:DISMRoot #Enable TLS 1.2 [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 @@ -136,20 +137,19 @@ if ($MyInvocation.InvocationName -ne ".") { @("bluescreenview32.zip", "http://www.nirsoft.net/utils/bluescreenview.zip"), @("bluescreenview64.zip", "http://www.nirsoft.net/utils/bluescreenview-x64.zip"), # ConEmu - @("ConEmuPack.7z", "https://github.com/Maximus5/ConEmu/releases/download/v18.05.06/ConEmuPack.180506.7z"), + @("ConEmuPack.7z", "https://github.com/Maximus5/ConEmu/releases/download/v18.06.26/ConEmuPack.180626.7z"), # Fast Copy - @("fastcopy32.zip", "http://ftp.vector.co.jp/69/93/2323/FastCopy341.zip"), - @("fastcopy64.zip", "http://ftp.vector.co.jp/69/93/2323/FastCopy341_x64.zip"), + @("fastcopy.zip", "http://ftp.vector.co.jp/70/64/2323/FastCopy354_installer.zip"), # HWiNFO - @("hwinfo.zip", "http://app.oldfoss.com:81/download/HWiNFO/hwi_582.zip"), + @("hwinfo.zip", "http://app.oldfoss.com:81/download/HWiNFO/hwi_588.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_x86.7z", "https://notepad-plus-plus.org/repository/7.x/7.5.6/npp.7.5.6.bin.minimalist.7z"), - @("npp_amd64.7z", "https://notepad-plus-plus.org/repository/7.x/7.5.6/npp.7.5.6.bin.minimalist.x64.7z"), + @("npp_x86.7z", "https://notepad-plus-plus.org/repository/7.x/7.5.8/npp.7.5.8.bin.minimalist.7z"), + @("npp_amd64.7z", "https://notepad-plus-plus.org/repository/7.x/7.5.8/npp.7.5.8.bin.minimalist.x64.7z"), # NT Password Editor @("ntpwed.zip", "http://cdslow.org.ru/files/ntpwedit/ntpwed07.zip"), # Prime95 @@ -159,16 +159,16 @@ if ($MyInvocation.InvocationName -ne ".") { @("produkey32.zip", "http://www.nirsoft.net/utils/produkey.zip"), @("produkey64.zip", "http://www.nirsoft.net/utils/produkey-x64.zip"), # Python - @("python32.zip", "https://www.python.org/ftp/python/3.6.5/python-3.6.5-embed-win32.zip"), - @("python64.zip", "https://www.python.org/ftp/python/3.6.5/python-3.6.5-embed-amd64.zip"), + @("python32.zip", "https://www.python.org/ftp/python/3.7.0/python-3.7.0-embed-win32.zip"), + @("python64.zip", "https://www.python.org/ftp/python/3.7.0/python-3.7.0-embed-amd64.zip"), # Python: psutil @( "psutil64.whl", - (FindDynamicUrl "https://pypi.org/project/psutil/" "href=.*-cp36-cp36m-win_amd64.whl") + (FindDynamicUrl "https://pypi.org/project/psutil/" "href=.*-cp37-cp37m-win_amd64.whl") ), @( "psutil32.whl", - (FindDynamicUrl "https://pypi.org/project/psutil/" "href=.*-cp36-cp36m-win32.whl") + (FindDynamicUrl "https://pypi.org/project/psutil/" "href=.*-cp37-cp37m-win32.whl") ), # Q-Dir @("qdir32.zip", "https://www.softwareok.com/Download/Q-Dir_Portable.zip"), @@ -178,6 +178,9 @@ if ($MyInvocation.InvocationName -ne ".") { @("testdisk64.zip", "https://www.cgsecurity.org/testdisk-7.1-WIP.win64.zip"), # VirtIO drivers @("virtio-win.iso", "https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/latest-virtio/virtio-win.iso"), + # Visual C++ Runtimes + @("vcredist_x86.exe", "https://aka.ms/vs/15/release/vc_redist.x86.exe"), + @("vcredist_x64.exe", "https://aka.ms/vs/15/release/vc_redist.x64.exe"), # wimlib-imagex @("wimlib32.zip", "https://wimlib.net/downloads/wimlib-1.12.0-windows-i686-bin.zip"), @("wimlib64.zip", "https://wimlib.net/downloads/wimlib-1.12.0-windows-x86_64-bin.zip") @@ -191,6 +194,13 @@ if ($MyInvocation.InvocationName -ne ".") { if ($DownloadErrors -gt 0) { Abort } + + ## Install ## + # Visual C++ Runtimes + Write-Host "Installing: Visual C++ Runtimes" + $ArgumentList = @("/install", "/passive", "/norestart") + Start-Process -FilePath "$Temp\vcredist_x86.exe" -ArgumentList $ArgumentList -Wait + Start-Process -FilePath "$Temp\vcredist_x64.exe" -ArgumentList $ArgumentList -Wait ## Extract ## # 7-Zip @@ -255,20 +265,30 @@ if ($MyInvocation.InvocationName -ne ".") { # Fast Copy Write-Host "Extracting: FastCopy" try { + # Extract Installer $ArgumentList = @( - "x", "$Temp\fastcopy64.zip", "-o$Build\bin\amd64\FastCopy", - "-aoa", "-bso0", "-bse0", "-bsp0", - "-x!setup.exe", "-x!*.dll") + "e", "$Temp\fastcopy.zip", "-o$Temp", + "-aoa", "-bso0", "-bse0", "-bsp0") Start-Process -FilePath $SevenZip -ArgumentList $ArgumentList -NoNewWindow -Wait + + # Extract 64-bit $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 + "/NOSUBDIR", "/DIR=$Build\bin\amd64\FastCopy", + "/EXTRACT64") + Start-Process -FilePath "$TEMP\FastCopy354_installer.exe" -ArgumentList $ArgumentList -NoNewWindow -Wait + Remove-Item "$Build\bin\amd64\FastCopy\setup.exe" -Force + + # Extract 32-bit + $ArgumentList = @( + "/NOSUBDIR", "/DIR=$Build\bin\x86\FastCopy", + "/EXTRACT32") + Start-Process -FilePath "$TEMP\FastCopy354_installer.exe" -ArgumentList $ArgumentList -NoNewWindow -Wait + Remove-Item "$Build\bin\x86\FastCopy\setup.exe" -Force } catch { Write-Host (" ERROR: Failed to extract files." ) -ForegroundColor "Red" } + # Killer Network Driver Write-Host "Extracting: Killer Network Driver" @@ -414,6 +434,12 @@ if ($MyInvocation.InvocationName -ne ".") { catch { Write-Host (" ERROR: Failed to extract files." ) -ForegroundColor "Red" } + try { + Copy-Item -Path "$HostSystem32\vcruntime140.dll" -Destination "$Build\bin\amd64\python\vcruntime140.dll" -Force + } + catch { + Write-Host (" ERROR: Failed to copy Visual C++ Runtime DLL." ) -ForegroundColor "Red" + } # Python (x32) Write-Host "Extracting: Python (x32)" @@ -431,6 +457,12 @@ if ($MyInvocation.InvocationName -ne ".") { catch { Write-Host (" ERROR: Failed to extract files." ) -ForegroundColor "Red" } + try { + Copy-Item -Path "$HostSysWOW64\vcruntime140.dll" -Destination "$Build\bin\x86\python\vcruntime140.dll" -Force + } + catch { + Write-Host (" ERROR: Failed to copy Visual C++ Runtime DLL." ) -ForegroundColor "Red" + } # Q-Dir Write-Host "Extracting: Q-Dir" diff --git a/.bin/Scripts/cbs_fix.py b/.bin/Scripts/cbs_fix.py index a3b40a8d..9a8ff10c 100644 --- a/.bin/Scripts/cbs_fix.py +++ b/.bin/Scripts/cbs_fix.py @@ -10,7 +10,7 @@ from functions.cleanup import * from functions.data import * init_global_vars() os.system('title {}: CBS Cleanup'.format(KIT_NAME_FULL)) -global_vars['LogFile'] = r'{LogDir}\CBS Cleanup.log'.format(**global_vars) +set_log_file('CBS Cleanup.log') if __name__ == '__main__': try: @@ -20,18 +20,18 @@ if __name__ == '__main__': folder_path = r'{}\Backups'.format(KIT_NAME_SHORT) dest = select_destination(folder_path=folder_path, prompt='Which disk are we using for temp data and backup?') - + # Show details print_info('{}: CBS Cleanup Tool\n'.format(KIT_NAME_FULL)) show_data('Backup / Temp path:', dest) print_standard('\n') if (not ask('Proceed with CBS cleanup?')): abort() - + # Run Cleanup try_and_print(message='Running cleanup...', function=cleanup_cbs, cs='Done', dest_folder=dest) - + # Done print_standard('\nDone.') pause("Press Enter to exit...") diff --git a/.bin/Scripts/check_disk.py b/.bin/Scripts/check_disk.py index 734319f0..7e59fb2b 100644 --- a/.bin/Scripts/check_disk.py +++ b/.bin/Scripts/check_disk.py @@ -9,7 +9,7 @@ sys.path.append(os.getcwd()) from functions.repairs import * init_global_vars() os.system('title {}: Check Disk Tool'.format(KIT_NAME_FULL)) -global_vars['LogFile'] = r'{LogDir}\Check Disk.log'.format(**global_vars) +set_log_file('Check Disk.log') if __name__ == '__main__': try: @@ -45,7 +45,7 @@ if __name__ == '__main__': cs=cs, other_results=other_results, repair=repair) else: abort() - + # Done print_success('Done.') pause("Press Enter to exit...") diff --git a/.bin/Scripts/ddrescue-tui b/.bin/Scripts/ddrescue-tui new file mode 100755 index 00000000..d83b3a7e --- /dev/null +++ b/.bin/Scripts/ddrescue-tui @@ -0,0 +1,43 @@ +#!/bin/bash +# +## Wizard Kit: ddrescue TUI Launcher + +SESSION_NAME="ddrescue-tui" +WINDOW_NAME="GNU ddrescue TUI" +MENU="ddrescue-tui-menu" + +function ask() { + while :; do + read -p "$1 " -r answer + if echo "$answer" | egrep -iq '^(y|yes|sure)$'; then + return 0 + elif echo "$answer" | egrep -iq '^(n|no|nope)$'; then + return 1 + fi + done +} + +die () { + echo "$0:" "$@" >&2 + exit 1 +} + +# Check for running session +if tmux list-session | grep -q "$SESSION_NAME"; then + echo "WARNING: tmux session $SESSION_NAME already exists." + echo "" + if ask "Kill current session?"; then + tmux kill-session -t "$SESSION_NAME" || \ + die "Failed to kill session: $SESSION_NAME" + else + echo "Aborted." + echo "" + echo -n "Press Enter to exit... " + read -r + exit 0 + fi +fi + +# Start session +tmux new-session -s "$SESSION_NAME" -n "$WINDOW_NAME" "$MENU" $* + diff --git a/.bin/Scripts/ddrescue-tui-menu b/.bin/Scripts/ddrescue-tui-menu new file mode 100755 index 00000000..4bec6230 --- /dev/null +++ b/.bin/Scripts/ddrescue-tui-menu @@ -0,0 +1,63 @@ +#!/bin/python3 +# +## Wizard Kit: TUI for ddrescue cloning and imaging + +import os +import sys + +# Init +sys.path.append(os.path.dirname(os.path.realpath(__file__))) + +from functions.ddrescue import * +from functions.hw_diags import * +init_global_vars() + +if __name__ == '__main__': + try: + # Prep + clear_screen() + args = list(sys.argv) + run_mode = '' + source_path = None + dest_path = None + + # Parse args + try: + script_name = os.path.basename(args.pop(0)) + run_mode = str(args.pop(0)).lower() + source_path = args.pop(0) + dest_path = args.pop(0) + except IndexError: + # We'll set the missing paths later + pass + + # Show usage + if re.search(r'-+(h|help)', str(sys.argv), re.IGNORECASE): + show_usage(script_name) + exit_script() + + # Start cloning/imaging + if run_mode in ('clone', 'image'): + menu_ddrescue(source_path, dest_path, run_mode) + else: + if not re.search(r'^-*(h|help\?)', run_mode, re.IGNORECASE): + print_error('Invalid mode.') + + # Done + print_standard('\nDone.') + pause("Press Enter to exit...") + exit_script() + except GenericAbort: + abort() + except GenericError as ge: + msg = 'Generic Error' + if str(ge): + msg = str(ge) + print_error(msg) + abort() + except SystemExit: + pass + except: + major_exception() + +# vim: sts=4 sw=4 ts=4 diff --git a/.bin/Scripts/ddrescue-tui-smart-display b/.bin/Scripts/ddrescue-tui-smart-display new file mode 100755 index 00000000..285229d6 --- /dev/null +++ b/.bin/Scripts/ddrescue-tui-smart-display @@ -0,0 +1,39 @@ +#!/bin/python3 +# +## Wizard Kit: SMART attributes display for ddrescue TUI + +import os +import sys +import time + +# Init +os.chdir(os.path.dirname(os.path.realpath(__file__))) +sys.path.append(os.getcwd()) +from functions.hw_diags import * +#init_global_vars() + +if __name__ == '__main__': + try: + # Prep + clear_screen() + dev_path = sys.argv[1] + devs = scan_disks(True, dev_path) + + # Warn if SMART unavailable + if dev_path not in devs: + print_error('SMART data not available') + exit_script() + + # Initial screen + dev = devs[dev_path] + clear_screen() + show_disk_details(dev, only_attributes=True) + + # Done + exit_script() + except SystemExit: + pass + except: + major_exception() + +# vim: sts=4 sw=4 ts=4 diff --git a/.bin/Scripts/dism.py b/.bin/Scripts/dism.py index 1c88e51b..e49a9512 100644 --- a/.bin/Scripts/dism.py +++ b/.bin/Scripts/dism.py @@ -9,7 +9,7 @@ sys.path.append(os.getcwd()) from functions.repairs import * init_global_vars() os.system('title {}: DISM helper Tool'.format(KIT_NAME_FULL)) -global_vars['LogFile'] = r'{LogDir}\DISM helper tool.log'.format(**global_vars) +set_log_file('DISM Helper.log') if __name__ == '__main__': try: @@ -46,7 +46,7 @@ if __name__ == '__main__': other_results=other_results, repair=repair) else: abort() - + # Done print_success('Done.') pause("Press Enter to exit...") diff --git a/.bin/Scripts/echo-and-hold b/.bin/Scripts/echo-and-hold new file mode 100755 index 00000000..97c69830 --- /dev/null +++ b/.bin/Scripts/echo-and-hold @@ -0,0 +1,12 @@ +#!/bin/bash +# +## Wizard Kit: "echo" text to screen and "hold" by waiting for user input + +function usage { + echo "Usage: $(basename "$0") \"text\"" + echo " e.g. $(basename "$0") \"Some text to show\"" +} + +echo -en "$@" && read -r __dont_care +exit 0 + diff --git a/.bin/Scripts/functions/activation.py b/.bin/Scripts/functions/activation.py index f54d1dca..24436418 100644 --- a/.bin/Scripts/functions/activation.py +++ b/.bin/Scripts/functions/activation.py @@ -59,7 +59,7 @@ def windows_is_activated(): ['cscript', '//nologo', SLMGR, '/xpr'], check=False, stdout=subprocess.PIPE, stderr=subprocess.PIPE) activation_string = activation_string.stdout.decode() - + return bool(activation_string and 'permanent' in activation_string) if __name__ == '__main__': diff --git a/.bin/Scripts/functions/backup.py b/.bin/Scripts/functions/backup.py index e33cea2c..d872c4d0 100644 --- a/.bin/Scripts/functions/backup.py +++ b/.bin/Scripts/functions/backup.py @@ -16,7 +16,7 @@ def backup_partition(disk, par): """Create a backup image of a partition.""" if par.get('Image Exists', False) or par['Number'] in disk['Bad Partitions']: raise GenericAbort - + cmd = [ global_vars['Tools']['wimlib-imagex'], 'capture', @@ -48,7 +48,7 @@ def get_volume_display_name(mountpoint): serial_number = None max_component_length = None file_system_flags = None - + vol_info = kernel32.GetVolumeInformationW( ctypes.c_wchar_p(mountpoint), vol_name_buffer, @@ -59,16 +59,16 @@ def get_volume_display_name(mountpoint): fs_name_buffer, ctypes.sizeof(fs_name_buffer) ) - + name = '{} "{}"'.format(name, vol_name_buffer.value) except: pass - + return name def prep_disk_for_backup(destination, disk, backup_prefix): """Gather details about the disk and its partitions. - + This includes partitions that can't be backed up, whether backups already exist on the BACKUP_SERVER, partition names/sizes/used space, etc.""" @@ -83,7 +83,7 @@ def prep_disk_for_backup(destination, disk, backup_prefix): 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( @@ -91,7 +91,7 @@ def prep_disk_for_backup(destination, disk, backup_prefix): 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( @@ -120,7 +120,7 @@ def prep_disk_for_backup(destination, disk, backup_prefix): 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'], @@ -128,7 +128,7 @@ def prep_disk_for_backup(destination, disk, backup_prefix): name = par['Name']) # For all partitions par['Display String'] = display - + # Set description for bad partitions warnings = '\n' if disk['Bad Partitions']: @@ -148,7 +148,7 @@ def select_backup_destination(auto_select=True): actions = [ {'Name': 'Main Menu', 'Letter': 'M'}, ] - + # Add local disks for d in psutil.disk_partitions(): if re.search(r'^{}'.format(global_vars['Env']['SYSTEMDRIVE']), d.mountpoint, re.IGNORECASE): @@ -161,7 +161,7 @@ def select_backup_destination(auto_select=True): get_volume_display_name(d.mountpoint)), 'Letter': re.sub(r'^(\w):\\.*$', r'\1', d.mountpoint), }) - + # Size check for dest in destinations: if 'IP' in dest: @@ -175,11 +175,11 @@ def select_backup_destination(auto_select=True): 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, diff --git a/.bin/Scripts/functions/browsers.py b/.bin/Scripts/functions/browsers.py index b969a59c..143d018d 100644 --- a/.bin/Scripts/functions/browsers.py +++ b/.bin/Scripts/functions/browsers.py @@ -2,6 +2,8 @@ from functions.common import * +from operator import itemgetter + # Define other_results for later try_and_print browser_data = {} other_results = { @@ -46,6 +48,9 @@ UBO_CHROME_REG = r'Software\Wow6432Node\Google\Chrome\Extensions\cjpalhdl UBO_EXTRA_CHROME = 'https://chrome.google.com/webstore/detail/ublock-origin-extra/pgdnlhfefecpicbbihgmbmffkjpaplco?hl=en' UBO_EXTRA_CHROME_REG = r'Software\Wow6432Node\Google\Chrome\Extensions\pgdnlhfefecpicbbihgmbmffkjpaplco' UBO_MOZILLA = 'https://addons.mozilla.org/en-us/firefox/addon/ublock-origin/' +UBO_MOZZILA_PATH = r'{}\Mozilla Firefox\distribution\extensions\ublock_origin.xpi'.format(os.environ.get('PROGRAMFILES')) +UBO_MOZILLA_REG = r'Software\Mozilla\Firefox\Extensions' +UBO_MOZILLA_REG_NAME = 'uBlock0@raymondhill.net' UBO_OPERA = 'https://addons.opera.com/en/extensions/details/ublock/?display=en' SUPPORTED_BROWSERS = { 'Internet Explorer': { @@ -98,16 +103,63 @@ SUPPORTED_BROWSERS = { }, } +def archive_all_users(): + """Create backups for all browsers for all users.""" + users_root = r'{}\Users'.format(global_vars['Env']['SYSTEMDRIVE']) + user_envs = [] + + # Build list of valid users + for user_name in os.listdir(users_root): + valid_user = True + if user_name in ('Default', 'Default User'): + # Skip default users + continue + user_path = os.path.join(users_root, user_name) + appdata_local = os.path.join(user_path, r'AppData\Local') + appdata_roaming = os.path.join(user_path, r'AppData\Roaming') + valid_user &= os.path.exists(appdata_local) + valid_user &= os.path.exists(appdata_roaming) + if valid_user: + user_envs.append({ + 'USERNAME': user_name, + 'USERPROFILE': user_path, + 'APPDATA': appdata_roaming, + 'LOCALAPPDATA': appdata_local}) + + # Backup browsers for all valid users + print_info('Backing up browsers') + for fake_env in sorted(user_envs, key=itemgetter('USERPROFILE')): + print_standard(' {}'.format(fake_env['USERNAME'])) + for b_k, b_v in sorted(SUPPORTED_BROWSERS.items()): + if b_k == 'Mozilla Firefox Dev': + continue + source_path = b_v['user_data_path'].format(**fake_env) + if not os.path.exists(source_path): + continue + source_items = source_path + '*' + archive_path = r'{BackupDir}\Browsers ({USERNAME})\{Date}'.format( + **global_vars, **fake_env) + os.makedirs(archive_path, exist_ok=True) + archive_path += r'\{}.7z'.format(b_k) + cmd = [ + global_vars['Tools']['SevenZip'], + 'a', '-aoa', '-bso0', '-bse0', '-mx=1', + archive_path, source_items] + try_and_print(message='{}...'.format(b_k), + function=run_program, cmd=cmd) + print_standard(' ') + def archive_browser(name): """Create backup of Browser saved in the BackupDir.""" source = '{}*'.format(browser_data[name]['user_data_path']) - dest = r'{BackupDir}\Browsers ({USERNAME})'.format( + dest = r'{BackupDir}\Browsers ({USERNAME})\{Date}'.format( **global_vars, **global_vars['Env']) archive = r'{}\{}.7z'.format(dest, name) os.makedirs(dest, exist_ok=True) cmd = [ global_vars['Tools']['SevenZip'], 'a', '-aoa', '-bso0', '-bse0', '-mx=1', + '-mhe=on', '-p{}'.format(ARCHIVE_PASSWORD), archive, source] run_program(cmd) @@ -135,7 +187,7 @@ def clean_chromium_profile(profile): def clean_internet_explorer(**kwargs): """Uses the built-in function to reset IE and sets the homepage. - + NOTE: kwargs set but unused as a workaround.""" kill_process('iexplore.exe') run_program(['rundll32.exe', 'inetcpl.cpl,ResetIEtoDefaults'], check=False) @@ -179,11 +231,11 @@ def clean_mozilla_profile(profile): def get_browser_details(name): """Get installation status and profile details for all supported browsers.""" browser = SUPPORTED_BROWSERS[name].copy() - + # Update user_data_path browser['user_data_path'] = browser['user_data_path'].format( **global_vars['Env']) - + # Find executable (if multiple files are found, the last one is used) exe_path = None num_installs = 0 @@ -194,7 +246,7 @@ def get_browser_details(name): if os.path.exists(test_path): num_installs += 1 exe_path = test_path - + # Find profile(s) profiles = [] if browser['base'] == 'ie': @@ -222,12 +274,12 @@ def get_browser_details(name): profiles.extend( get_mozilla_profiles( search_path=browser['user_data_path'], dev=dev)) - + elif 'Opera' in name: if os.path.exists(browser['user_data_path']): profiles.append( {'name': 'Default', 'path': browser['user_data_path']}) - + # Get homepages if browser['base'] == 'ie': # IE is set to only have one profile above @@ -236,14 +288,14 @@ def get_browser_details(name): for profile in profiles: prefs_path = r'{path}\prefs.js'.format(**profile) profile['homepages'] = get_mozilla_homepages(prefs_path=prefs_path) - + # Add to browser_data browser_data[name] = browser browser_data[name].update({ 'exe_path': exe_path, 'profiles': profiles, }) - + # Raise installation warnings (if any) if num_installs == 0: raise NotInstalledError @@ -285,6 +337,9 @@ def get_ie_homepages(): homepages.append(main_page) if len(extra_pages) > 0: homepages.extend(extra_pages) + + # Remove all curly braces + homepages = [h.replace('{', '').replace('}', '') for h in homepages] return homepages def get_mozilla_homepages(prefs_path): @@ -299,7 +354,7 @@ def get_mozilla_homepages(prefs_path): homepages = search.group(1).split('|') except Exception: pass - + return homepages def get_mozilla_profiles(search_path, dev=False): @@ -326,9 +381,11 @@ def get_mozilla_profiles(search_path, dev=False): return profiles -def install_adblock(indent=8, width=32): +def install_adblock(indent=8, width=32, just_firefox=False): """Install adblock for all supported browsers.""" for browser in sorted(browser_data): + if just_firefox and browser_data[browser]['base'] != 'mozilla': + continue exe_path = browser_data[browser].get('exe_path', None) function=run_program if not exe_path: @@ -356,7 +413,7 @@ def install_adblock(indent=8, width=32): winreg.QueryValue(HKLM, UBO_EXTRA_CHROME_REG) except FileNotFoundError: urls.append(UBO_EXTRA_CHROME) - + if len(urls) == 0: urls = ['chrome://extensions'] elif 'Opera' in browser: @@ -364,21 +421,24 @@ def install_adblock(indent=8, width=32): else: urls.append(UBO_CHROME) urls.append(UBO_EXTRA_CHROME) - + elif browser_data[browser]['base'] == 'mozilla': - # Assume UBO is not installed first and change if it is - urls.append(UBO_MOZILLA) - if browser == 'Mozilla Firefox': - ubo = browser_data[browser]['exe_path'].replace( - 'firefox.exe', - r'distribution\extensions\uBlock0@raymondhill.net') - if os.path.exists(ubo): + # Check for system extensions + try: + with winreg.OpenKey(HKLM, UBO_MOZILLA_REG) as key: + winreg.QueryValueEx(key, UBO_MOZILLA_REG_NAME) + except FileNotFoundError: + urls = [UBO_MOZILLA] + else: + if os.path.exists(UBO_MOZZILA_PATH): urls = ['about:addons'] - + else: + urls = [UBO_MOZILLA] + elif browser_data[browser]['base'] == 'ie': urls.append(IE_GALLERY) function=popen_program - + # By using check=False we're skipping any return codes so # it should only fail if the program can't be run # (or can't be found). @@ -391,7 +451,7 @@ def install_adblock(indent=8, width=32): def list_homepages(indent=8, width=32): """List current homepages for reference.""" - + for browser in [k for k, v in sorted(browser_data.items()) if v['exe_path']]: # Skip Chromium-based browsers if browser_data[browser]['base'] == 'chromium': @@ -401,7 +461,7 @@ def list_homepages(indent=8, width=32): end='', flush=True) print_warning('Not implemented', timestamp=False) continue - + # All other browsers print_info('{indent}{browser:<{width}}'.format( indent=' '*indent, width=width, browser=browser+'...')) @@ -435,9 +495,11 @@ def reset_browsers(indent=8, width=32): indent=indent, width=width, function=function, other_results=other_results, profile=profile) -def scan_for_browsers(): +def scan_for_browsers(just_firefox=False): """Scan system for any supported browsers.""" - for name in sorted(SUPPORTED_BROWSERS): + for name, details in sorted(SUPPORTED_BROWSERS.items()): + if just_firefox and details['base'] != 'mozilla': + continue try_and_print(message='{}...'.format(name), function=get_browser_details, cs='Detected', other_results=other_results, name=name) diff --git a/.bin/Scripts/functions/cleanup.py b/.bin/Scripts/functions/cleanup.py index 1bac4c6c..67675cbb 100644 --- a/.bin/Scripts/functions/cleanup.py +++ b/.bin/Scripts/functions/cleanup.py @@ -1,12 +1,55 @@ # Wizard Kit: Functions - Cleanup -from functions.common import * +from functions.setup import * + +# STATIC VARIABLES +D7_HKCR_CLEANUP = { + r'batfile\shell\!!RunWithParms': {'Recurse': True}, + r'batfile\shell\{0001B4FD-9EA3-4D90-A79E-FD14BA3AB01D}': {'Recurse': True}, + r'cmdfile\shell\!!RunWithParms': {'Recurse': True}, + r'cmdfile\shell\{0001B4FD-9EA3-4D90-A79E-FD14BA3AB01D}': {'Recurse': True}, + r'exefile\shell\!!RunWithParms': {'Recurse': True}, + r'exefile\shell\ResourceHacker': {'Recurse': True}, + r'regfile\shell\!!RunWithParms': {'Recurse': True}, + r'regfile\shell\{0001B4FD-9EA3-4D90-A79E-FD14BA3AB01D}': {'Recurse': True}, + } +D7_HKCU_CLEANUP = { + r'Software\Malwarebytes': {'Recurse': False}, + } +D7_HKLM_CLEANUP = { + r'Software\Emsisoft': {'Recurse': False}, + } +HKU = winreg.HKEY_USERS +HKCR = winreg.HKEY_CLASSES_ROOT +HKCU = winreg.HKEY_CURRENT_USER +HKLM = winreg.HKEY_LOCAL_MACHINE +UAC_DEFAULTS_WIN7 = { + r'Software\Microsoft\Windows\CurrentVersion\Policies\System': { + 'DWORD Items': { + 'ConsentPromptBehaviorAdmin': 5, + 'EnableLUA': 1, + 'PromptOnSecureDesktop': 1, + }, + }, + } +UAC_DEFAULTS_WIN10 = { + r'Software\Microsoft\Windows\CurrentVersion\Policies\System': { + 'DWORD Items': { + 'ConsentPromptBehaviorAdmin': 5, + 'ConsentPromptBehaviorUser': 3, + 'EnableInstallerDetection': 1, + 'EnableLUA': 1, + 'EnableVirtualization': 1, + 'PromptOnSecureDesktop': 1, + }, + }, + } def cleanup_adwcleaner(): """Move AdwCleaner folders into the ClientDir.""" source_path = r'{SYSTEMDRIVE}\AdwCleaner'.format(**global_vars['Env']) source_quarantine = r'{}\Quarantine'.format(source_path) - + # Quarantine if os.path.exists(source_quarantine): os.makedirs(global_vars['QuarantineDir'], exist_ok=True) @@ -14,27 +57,24 @@ def cleanup_adwcleaner(): **global_vars) dest_name = non_clobber_rename(dest_name) shutil.move(source_quarantine, dest_name) - + # Delete source folder if empty - try: - os.rmdir(source_path) - except OSError: - pass - + delete_empty_folders(source_path) + # Main folder if os.path.exists(source_path): - os.makedirs(global_vars['ProgBackupDir'], exist_ok=True) - dest_name = r'{ProgBackupDir}\AdwCleaner_{Date-Time}'.format( + os.makedirs(global_vars['LogDir'], exist_ok=True) + dest_name = r'{LogDir}\Tools\AdwCleaner'.format( **global_vars) dest_name = non_clobber_rename(dest_name) shutil.move(source_path, dest_name) def cleanup_cbs(dest_folder): """Safely cleanup a known CBS archive bug under Windows 7. - + If a CbsPersist file is larger than 2 Gb then the auto archive feature continually fails and will fill up the system drive with temp files. - + This function moves the temp files and CbsPersist file to a temp folder, compresses the CbsPersist files with 7-Zip, and then opens the temp folder for the user to manually save the backup files and delete the temp files. @@ -43,7 +83,7 @@ def cleanup_cbs(dest_folder): temp_folder = r'{backup_folder}\Temp'.format(backup_folder=backup_folder) os.makedirs(backup_folder, exist_ok=True) os.makedirs(temp_folder, exist_ok=True) - + # Move files into temp folder cbs_path = r'{SYSTEMROOT}\Logs\CBS'.format(**global_vars['Env']) for entry in os.scandir(cbs_path): @@ -59,7 +99,7 @@ def cleanup_cbs(dest_folder): dest_name = r'{}\{}'.format(temp_folder, entry.name) dest_name = non_clobber_rename(dest_name) shutil.move(entry.path, dest_name) - + # Compress CbsPersist files with 7-Zip cmd = [ global_vars['Tools']['SevenZip'], @@ -68,11 +108,88 @@ def cleanup_cbs(dest_folder): r'{}\CbsPersist*'.format(temp_folder)] run_program(cmd) +def cleanup_d7ii(): + """Sort d7II logs and remove temp items.""" + d7_path = r'{}\d7II'.format(global_vars['ClientDir']) + d7_reports = r'{} Reports'.format(d7_path) + d7_temp = r'{}\Temp'.format(d7_path) + + # Logs & Reports + if os.path.exists(d7_reports): + for entry in os.scandir(d7_reports): + r = re.match(r'(\d+)-(\d+)-(\d+)', entry.name) + d7_date = '{}-{:02d}-{:02d}'.format( + r.group(1), int(r.group(2)), int(r.group(3))) + d7_mlogs = r'{}\Malware Logs'.format(entry.path) + log_dest = r'{SYSTEMDRIVE}\{prefix}\Logs\{date}'.format( + prefix=KIT_NAME_SHORT, + date=d7_date, + **global_vars['Env']) + os.makedirs(r'{}\d7II'.format(log_dest), exist_ok=True) + os.makedirs(r'{}\Tools'.format(log_dest), exist_ok=True) + + # Malware Logs + if os.path.exists(d7_mlogs): + m_report = 'MalwareScan_Report.txt' + for m_entry in os.scandir(d7_mlogs): + if m_entry.name == m_report: + dest_path = r'{}\d7II\{}'.format(log_dest, m_entry.name) + else: + dest_path = r'{}\Tools\{}'.format(log_dest, m_entry.name) + dest_path = non_clobber_rename(dest_path) + shutil.move(m_entry.path, dest_path) + + # Other items + for o_entry in os.scandir(entry.path): + dest_path = r'{log_dest}\d7II\{name}'.format( + log_dest=log_dest, + name=o_entry.name) + dest_path = non_clobber_rename(dest_path) + + # Just remove empty folders + if o_entry.is_dir(): + try: + os.rmdir(o_entry.path) + except OSError: + pass + else: + continue + + # Move item + shutil.move(o_entry.path, dest_path) + + # Remove folder + delete_empty_folders(entry.path) + + # Registry Items + for key, settings in D7_HKCR_CLEANUP.items(): + delete_registry_key(HKCR, key, recurse=settings['Recurse']) + for key, settings in D7_HKCU_CLEANUP.items(): + delete_registry_key(HKCU, key, recurse=settings['Recurse']) + for key, settings in D7_HKLM_CLEANUP.items(): + delete_registry_key(HKLM, key, recurse=settings['Recurse']) + + # Temp items + if os.path.exists(d7_path): + if os.path.exists(d7_temp): + shutil.rmtree(d7_temp) + try: + os.rmdir(d7_path) + except OSError: + pass + + # Restore default UAC settings + if global_vars['OS']['Version'] == '10': + write_registry_settings(UAC_DEFAULTS_WIN10, all_users=True) + else: + # Haven't checked Win8 settings, only applying minimum set + write_registry_settings(UAC_DEFAULTS_WIN7, all_users=True) + def cleanup_desktop(): """Move known backup files and reports into the ClientDir.""" - dest_folder = r'{ProgBackupDir}\Desktop_{Date-Time}'.format(**global_vars) + dest_folder = r'{LogDir}\Tools'.format(**global_vars) os.makedirs(dest_folder, exist_ok=True) - + desktop_path = r'{USERPROFILE}\Desktop'.format(**global_vars['Env']) for entry in os.scandir(desktop_path): # JRT, RKill, Shortcut cleaner @@ -80,12 +197,93 @@ def cleanup_desktop(): dest_name = r'{}\{}'.format(dest_folder, entry.name) dest_name = non_clobber_rename(dest_name) shutil.move(entry.path, dest_name) - + # Remove dir if empty + delete_empty_folders(dest_folder) + +def cleanup_emsisoft(): + """Remove EmsisoftCmd files from drive root.""" + source_path = r'{}\EmsisoftCmd'.format(global_vars['Env']['SYSTEMDRIVE']) + source_quarantine = r'{}\Quarantine'.format(source_path) + + # Quarantine + if os.path.exists(source_quarantine): + os.makedirs(global_vars['QuarantineDir'], exist_ok=True) + dest_name = r'{QuarantineDir}\Emsisoft_{Date-Time}'.format( + **global_vars) + dest_name = non_clobber_rename(dest_name) + shutil.move(source_quarantine, dest_name) + + # Remove program + if os.path.exists(source_path): + shutil.rmtree(source_path) + +def cleanup_regbackups(): + """Move d7ii regbackups into backup folder.""" + source_path = r'{}\Support\RegBackups'.format( + global_vars['Env']['SYSTEMDRIVE']) + + # Bail early + if not os.path.exists(source_path): + return + + # Make dest folder + dest_dir = r'{BackupDir}\Registry\{Date}'.format(**global_vars) + os.makedirs(dest_dir, exist_ok=True) + + # Move to backup folder + for entry in os.scandir(source_path): + dest_path = r'{dest}\{name}'.format(dest=dest_dir, name=entry.name) + dest_path = non_clobber_rename(dest_path) + shutil.move(entry.path, dest_path) + + # Delete source folders if empty + delete_empty_folders(r'{}\Support'.format( + global_vars['Env']['SYSTEMDRIVE'])) + +def delete_empty_folders(folder_path): + """Delete all empty folders in path (depth first).""" + if not os.path.exists(folder_path) or not os.path.isdir(folder_path): + # Bail early (silently) + return + + # Delete empty subfolders first + for item in os.scandir(folder_path): + if item.is_dir(): + delete_empty_folders(item.path) + + # Remove top folder try: - os.rmdir(dest_folder) + os.rmdir(folder_path) except OSError: pass +def delete_registry_key(hive, key, recurse=False): + """Delete a registry key and all it's subkeys.""" + access = winreg.KEY_ALL_ACCESS + + try: + if recurse: + # Delete all subkeys first + with winreg.OpenKeyEx(hive, key, 0, access) as k: + key_info = winreg.QueryInfoKey(k) + for x in range(key_info[0]): + subkey = r'{}\{}'.format(key, winreg.EnumKey(k, 0)) + delete_registry_key(hive, subkey) + + # Delete key + winreg.DeleteKey(hive, key) + except FileNotFoundError: + # Ignore + pass + +def delete_registry_value(hive, key, value): + """Delete a registry value.""" + access = winreg.KEY_ALL_ACCESS + with winreg.OpenKeyEx(hive, key, 0, access) as k: + winreg.DeleteValue(k, value) + if __name__ == '__main__': print("This file is not meant to be called directly.") + +# vim: sts=4 sw=4 ts=4 diff --git a/.bin/Scripts/functions/common.py b/.bin/Scripts/functions/common.py index f5a2ef95..ee222937 100644 --- a/.bin/Scripts/functions/common.py +++ b/.bin/Scripts/functions/common.py @@ -32,7 +32,8 @@ COLORS = { 'BLUE': '\033[34m' } try: - HKU = winreg.HKEY_USERS + HKU = winreg.HKEY_USERS + HKCR = winreg.HKEY_CLASSES_ROOT HKCU = winreg.HKEY_CURRENT_USER HKLM = winreg.HKEY_LOCAL_MACHINE except NameError: @@ -64,12 +65,24 @@ class NotInstalledError(Exception): class NoProfilesError(Exception): pass +class OSInstalledLegacyError(Exception): + pass + class PathNotFoundError(Exception): pass class UnsupportedOSError(Exception): pass +class SecureBootDisabledError(Exception): + pass + +class SecureBootNotAvailError(Exception): + pass + +class SecureBootUnknownError(Exception): + pass + # General functions def abort(): """Abort script.""" @@ -155,14 +168,13 @@ def exit_script(return_value=0): # Remove dirs (if empty) for dir in ['BackupDir', 'LogDir', 'TmpDir']: try: - dir = global_vars[dir] - os.rmdir(dir) + os.rmdir(global_vars[dir]) except Exception: pass # Open Log (if it exists) log = global_vars.get('LogFile', '') - if log and os.path.exists(log) and psutil.WINDOWS: + if log and os.path.exists(log) and psutil.WINDOWS and ENABLED_OPEN_LOGS: try: extract_item('NotepadPlusPlus', silent=True) popen_program( @@ -197,6 +209,30 @@ def extract_item(item, filter='', silent=False): if not silent: print_warning('WARNING: Errors encountered while exctracting data') +def get_process(name=None): + """Get process by name, returns psutil.Process obj.""" + proc = None + if not name: + raise GenericError + + for p in psutil.process_iter(): + try: + if p.name() == name: + proc = p + except psutil._exceptions.NoSuchProcess: + # Process finished during iteration? Going to ignore + pass + return proc + +def get_simple_string(prompt='Enter string'): + """Get string from user (minimal allowed character set) and return as str.""" + simple_string = None + while simple_string is None: + _input = input('{}: '.format(prompt)) + if re.match(r"^(\w|-| |\.|')+$", _input, re.ASCII): + simple_string = _input.strip() + return simple_string + def get_ticket_number(): """Get TicketNumber from user, save in LogDir, and return as str.""" if not ENABLED_TICKET_NUMBERS: @@ -213,15 +249,6 @@ def get_ticket_number(): f.write(ticket_number) return ticket_number -def get_simple_string(prompt='Enter string'): - """Get string from user (only alphanumeric/space chars) and return as str.""" - simple_string = None - while simple_string is None: - _input = input('{}: '.format(prompt)) - if re.match(r'^(\w|-| )+$', _input, re.ASCII): - simple_string = _input.strip() - return simple_string - def human_readable_size(size, decimals=0): """Convert size in bytes to a human-readable format and return a str.""" # Prep string formatting @@ -234,6 +261,8 @@ def human_readable_size(size, decimals=0): size = int(size) except ValueError: size = convert_to_bytes(size) + except TypeError: + size = -1 # Verify we have a valid size if size < 0: @@ -254,7 +283,7 @@ def human_readable_size(size, decimals=0): units = 'Kb' else: units = ' b' - + # Return return '{size:>{width}.{decimals}f} {units}'.format( size=size, width=width, decimals=decimals, units=units) @@ -445,7 +474,7 @@ def run_program(cmd, args=[], check=True, pipe=True, shell=False): def set_title(title='~Some Title~'): """Set title. - + Used for window title and menu titles.""" global_vars['Title'] = title os.system('title {}'.format(title)) @@ -470,6 +499,8 @@ def sleep(seconds=2): def stay_awake(): """Prevent the system from sleeping or hibernating.""" + # DISABLED due to VCR2008 dependency + return # Bail if caffeine is already running for proc in psutil.process_iter(): if proc.name() == 'caffeine.exe': @@ -477,7 +508,7 @@ def stay_awake(): # Extract and run extract_item('Caffeine', silent=True) try: - popen_program(global_vars['Tools']['Caffeine']) + popen_program([global_vars['Tools']['Caffeine']]) except Exception: print_error('ERROR: No caffeine available.') print_warning('Please set the power setting to High Performance.') @@ -549,7 +580,7 @@ def try_and_print(message='Trying...', def upload_crash_details(): """Upload log and runtime data to the CRASH_SERVER. - + Intended for uploading to a public Nextcloud share.""" if not ENABLED_UPLOAD_DATA: raise GenericError @@ -558,6 +589,8 @@ def upload_crash_details(): if 'LogFile' in global_vars and global_vars['LogFile']: if ask('Upload crash details to {}?'.format(CRASH_SERVER['Name'])): with open(global_vars['LogFile']) as f: + certificate_authority = r'{}\{}'.format( + global_vars['BinDir'], ROOT_CA_NAME) data = '''{} ############################# Runtime Details: @@ -572,9 +605,11 @@ global_vars: {}'''.format(f.read(), sys.argv, global_vars) CRASH_SERVER['Url'], global_vars.get('Date-Time', 'Unknown Date-Time'), filename) - r = requests.put(url, data=data, - headers = {'X-Requested-With': 'XMLHttpRequest'}, - auth = (CRASH_SERVER['User'], CRASH_SERVER['Pass'])) + r = requests.put( + url, data=data, + headers={'X-Requested-With': 'XMLHttpRequest'}, + auth=(CRASH_SERVER['User'], CRASH_SERVER['Pass']), + verify=certificate_authority) # Raise exception if upload NS if not r.ok: raise Exception @@ -631,7 +666,7 @@ def init_global_vars(): def check_os(): """Set OS specific variables.""" tmp = {} - + # Query registry path = r'SOFTWARE\Microsoft\Windows NT\CurrentVersion' with winreg.OpenKey(HKLM, path) as key: @@ -680,7 +715,7 @@ def check_os(): tmp['DisplayName'] = '{} x{}'.format(tmp['Name'], tmp['Arch']) if tmp['Notes']: tmp['DisplayName'] += ' ({})'.format(tmp['Notes']) - + global_vars['OS'] = tmp def check_tools(): @@ -697,7 +732,7 @@ def check_tools(): 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(): @@ -723,6 +758,9 @@ 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(r'{}\{}'.format( + global_vars['LogDir'], KIT_NAME_FULL), exist_ok=True) + os.makedirs(r'{}\Tools'.format(global_vars['LogDir']), exist_ok=True) os.makedirs(global_vars['TmpDir'], exist_ok=True) def set_common_vars(): @@ -738,11 +776,9 @@ def set_common_vars(): **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['BackupDir'] = r'{ClientDir}\Backups'.format( **global_vars) - global_vars['LogDir'] = r'{ClientDir}\Info\{Date}'.format( - **global_vars) - global_vars['ProgBackupDir'] = r'{ClientDir}\Backups'.format( + global_vars['LogDir'] = r'{ClientDir}\Logs\{Date}'.format( **global_vars) global_vars['QuarantineDir'] = r'{ClientDir}\Quarantine'.format( **global_vars) @@ -751,7 +787,7 @@ def set_common_vars(): def set_linux_vars(): """Set common variables in a Linux environment. - + These assume we're running under a WK-Linux build.""" result = run_program(['mktemp', '-d']) global_vars['TmpDir'] = result.stdout.decode().strip() @@ -765,5 +801,12 @@ def set_linux_vars(): 'SevenZip': '7z', } +def set_log_file(log_name): + """Sets global var LogFile and creates path as needed.""" + folder_path = r'{}\{}'.format(global_vars['LogDir'], KIT_NAME_FULL) + log_file = r'{}\{}'.format(folder_path, log_name) + os.makedirs(folder_path, exist_ok=True) + global_vars['LogFile'] = log_file + if __name__ == '__main__': print("This file is not meant to be called directly.") diff --git a/.bin/Scripts/functions/data.py b/.bin/Scripts/functions/data.py index ad4fe4f1..26f61645 100644 --- a/.bin/Scripts/functions/data.py +++ b/.bin/Scripts/functions/data.py @@ -126,11 +126,11 @@ def cleanup_transfer(dest_path): 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 @@ -153,6 +153,69 @@ def cleanup_transfer(dest_path): except Exception: pass +def find_core_storage_volumes(device_path=None): + """Try to create block devices for any Apple CoreStorage volumes.""" + corestorage_uuid = '53746f72-6167-11aa-aa11-00306543ecac' + dmsetup_cmd_file = '{TmpDir}/dmsetup_command'.format(**global_vars) + + # Get CoreStorage devices + cmd = [ + 'lsblk', '--json', '--list', '--paths', + '--output', 'NAME,PARTTYPE'] + if device_path: + cmd.append(device_path) + result = run_program(cmd) + json_data = json.loads(result.stdout.decode()) + devs = json_data.get('blockdevices', []) + devs = [d for d in devs if d.get('parttype', '') == corestorage_uuid] + if devs: + print_standard(' ') + print_standard('Detected CoreStorage partition{}'.format( + '' if len(devs) == 1 else 's')) + print_standard(' Scanning for inner volume(s)....') + + # Search for inner volumes and setup dev mappers + for dev in devs: + dev_path = dev.get('name', '') + if not dev_path: + # Can't setup block device without the dev path + continue + dev_name = re.sub(r'.*/', '', dev_path) + log_path = '{LogDir}/testdisk_{dev_name}.log'.format( + dev_name=dev_name, **global_vars) + + # Run TestDisk + cmd = [ + 'sudo', 'testdisk', + '/logname', log_path, '/debug', '/log', + '/cmd', dev_path, 'partition_none,analyze'] + result = run_program(cmd, check=False) + if result.returncode: + # i.e. return code is non-zero + continue + if not os.path.exists(log_path): + # TestDisk failed to write log + continue + + # Check log for found volumes + cs_vols = {} + with open(log_path, 'r') as f: + for line in f.readlines(): + r = re.match( + r'^.*echo "([^"]+)" . dmsetup create test(\d)$', + line.strip(), + re.IGNORECASE) + if r: + cs_name = 'CoreStorage_{}_{}'.format(dev_name, r.group(2)) + cs_vols[cs_name] = r.group(1) + + # Create mapper device(s) + for name, dm_cmd in sorted(cs_vols.items()): + with open(dmsetup_cmd_file, 'w') as f: + f.write(dm_cmd) + cmd = ['sudo', 'dmsetup', 'create', name, dmsetup_cmd_file] + run_program(cmd, check=False) + def fix_path_sep(path_str): """Replace non-native and duplicate dir separators, returns str.""" return re.sub(r'(\\|/)+', lambda s: os.sep, path_str) @@ -187,14 +250,20 @@ def get_mounted_volumes(): mounted_volumes.extend(item.get('children', [])) return {item['source']: item for item in mounted_volumes} -def mount_all_volumes(): +def mount_volumes(all_devices=True, device_path=None, read_write=False): """Mount all detected filesystems.""" report = {} + cmd = [ + 'lsblk', '--json', '--paths', + '--output', 'NAME,FSTYPE,LABEL,UUID,PARTTYPE,TYPE,SIZE'] + if not all_devices and device_path: + # Only mount volumes for specific device + cmd.append(device_path) + + # Check for Apple CoreStorage volumes first + find_core_storage_volumes(device_path) # Get list of block devices - cmd = [ - 'lsblk', '-J', '-p', - '-o', 'NAME,FSTYPE,LABEL,UUID,PARTTYPE,TYPE,SIZE'] result = run_program(cmd) json_data = json.loads(result.stdout.decode()) devs = json_data.get('blockdevices', []) @@ -202,11 +271,14 @@ def mount_all_volumes(): # Get list of volumes volumes = {} for dev in devs: + if not dev.get('children', []): + volumes.update({dev['name']: dev}) for child in dev.get('children', []): - volumes.update({child['name']: child}) + if not child.get('children', []): + volumes.update({child['name']: child}) for grandchild in child.get('children', []): volumes.update({grandchild['name']: grandchild}) - + # Get list of mounted volumes mounted_volumes = get_mounted_volumes() @@ -233,8 +305,11 @@ def mount_all_volumes(): vol_data['show_data']['warning'] = True else: # Mount volume + cmd = ['udevil', 'mount', + '-o', 'rw' if read_write else 'ro', + vol_path] try: - run_program(['udevil', 'mount', '-o', 'ro', vol_path]) + run_program(cmd) except subprocess.CalledProcessError: vol_data['show_data']['data'] = 'Failed to mount' vol_data['show_data']['error'] = True @@ -242,11 +317,16 @@ def mount_all_volumes(): mounted_volumes = get_mounted_volumes() # Format pretty result string - if vol_data['show_data']['data'] != 'Failed to mount': + if vol_data['show_data']['data'] == 'Failed to mount': + vol_data['mount_point'] = None + else: size_used = human_readable_size( mounted_volumes[vol_path]['used']) size_avail = human_readable_size( mounted_volumes[vol_path]['avail']) + vol_data['size_avail'] = size_avail + vol_data['size_used'] = size_used + vol_data['mount_point'] = mounted_volumes[vol_path]['target'] vol_data['show_data']['data'] = 'Mounted on {}'.format( mounted_volumes[vol_path]['target']) vol_data['show_data']['data'] = '{:40} ({} used, {} free)'.format( @@ -277,7 +357,7 @@ def mount_backup_shares(read_write=False): if server['Mounted']: print_warning(mounted_str) continue - + mount_network_share(server, read_write) def mount_network_share(server, read_write=False): @@ -339,12 +419,12 @@ 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] - cmd.append(r'/logfile={}\FastCopy.log'.format(global_vars['LogDir'])) + cmd.append(r'/logfile={LogDir}\Tools\FastCopy.log'.format(**global_vars)) cmd.extend(items) cmd.append('/to={}\\'.format(dest)) - + run_program(cmd) def run_wimextract(source, items, dest): @@ -411,7 +491,7 @@ def list_source_items(source_obj, rel_path=None): def scan_source(source_obj, dest_path, rel_path='', interactive=True): """Scan source for files/folders to transfer, returns list. - + This will scan the root and (recursively) any Windows.old folders.""" selected_items = [] win_olds = [] @@ -488,7 +568,7 @@ def scan_source(source_obj, dest_path, rel_path='', interactive=True): '{}{}{}'.format(dest_path, os.sep, old.name), rel_path=old.name, interactive=False)) - + # Done return selected_items @@ -632,7 +712,7 @@ def select_source(backup_prefix): item.name, # Image file ), 'Source': item}) - + # Check for local sources print_standard('Scanning for local sources...') set_thread_error_mode(silent=True) # Prevents "No disk" popups @@ -672,7 +752,7 @@ def select_source(backup_prefix): ' Local', d.mountpoint, item.name), 'Sort': r'{}{}'.format(d.mountpoint, item.name), 'Source': item}) - + set_thread_error_mode(silent=False) # Return to normal # Build Menu @@ -700,7 +780,7 @@ def select_source(backup_prefix): umount_backup_shares() pause("Press Enter to exit...") exit_script() - + # Sanity check if selected_source.is_file(): # Image-Based @@ -708,7 +788,7 @@ def select_source(backup_prefix): print_error('ERROR: Unsupported image: {}'.format( selected_source.path)) raise GenericError - + # Done return selected_source @@ -716,7 +796,7 @@ 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(): @@ -737,11 +817,11 @@ def select_volume(title='Select disk', auto_select=True): 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': @@ -751,12 +831,12 @@ def select_volume(title='Select disk', auto_select=True): 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: diff --git a/.bin/Scripts/functions/ddrescue.py b/.bin/Scripts/functions/ddrescue.py new file mode 100644 index 00000000..7f1fc7aa --- /dev/null +++ b/.bin/Scripts/functions/ddrescue.py @@ -0,0 +1,1239 @@ +# Wizard Kit: Functions - ddrescue + +import json +import pathlib +import psutil +import re +import signal +import stat +import time + +from functions.common import * +from functions.data import * +from operator import itemgetter + +# STATIC VARIABLES +AUTO_PASS_1_THRESHOLD = 95 +AUTO_PASS_2_THRESHOLD = 98 +DDRESCUE_SETTINGS = { + '--binary-prefixes': {'Enabled': True, 'Hidden': True}, + '--data-preview': {'Enabled': True, 'Hidden': True, 'Value': '5'}, + '--idirect': {'Enabled': True}, + '--odirect': {'Enabled': True}, + '--max-read-rate': {'Enabled': False, 'Value': '1MiB'}, + '--min-read-rate': {'Enabled': True, 'Value': '64KiB'}, + '--reopen-on-error': {'Enabled': True}, + '--retry-passes': {'Enabled': True, 'Value': '0'}, + '--test-mode': {'Enabled': False, 'Value': 'test.map'}, + '--timeout': {'Enabled': True, 'Value': '5m'}, + '-vvvv': {'Enabled': True, 'Hidden': True}, + } +RECOMMENDED_FSTYPES = ['ext3', 'ext4', 'xfs'] +SIDE_PANE_WIDTH = 21 +USAGE = """ {script_name} clone [source [destination]] + {script_name} image [source [destination]] + (e.g. {script_name} clone /dev/sda /dev/sdb) +""" + + +# Clases +class BaseObj(): + """Base object used by DevObj, DirObj, and ImageObj.""" + def __init__(self, path): + self.type = 'base' + self.parent = None + self.path = os.path.realpath(path) + self.set_details() + + def is_dev(self): + return self.type == 'dev' + + def is_dir(self): + return self.type == 'dir' + + def is_image(self): + return self.type == 'image' + + def self_check(self): + pass + + def set_details(self): + self.details = {} + + +class BlockPair(): + """Object to track data and methods together for source and dest.""" + def __init__(self, mode, source, dest): + self.mode = mode + self.source = source + self.source_path = source.path + self.dest = dest + self.pass_done = [False, False, False] + self.resumed = False + self.rescued = 0 + self.rescued_percent = 0 + self.status = ['Pending', 'Pending', 'Pending'] + self.size = source.size + # Set dest paths + if self.mode == 'clone': + # Cloning + self.dest_path = dest.path + self.map_path = '{pwd}/Clone_{prefix}.map'.format( + pwd=os.path.realpath(global_vars['Env']['PWD']), + prefix=source.prefix) + else: + # Imaging + self.dest_path = '{path}/{prefix}.dd'.format( + path=dest.path, + prefix=source.prefix) + self.map_path = '{path}/{prefix}.map'.format( + path=dest.path, + prefix=source.prefix) + if os.path.exists(self.map_path): + self.load_map_data() + self.resumed = True + self.fix_status_strings() + + def fix_status_strings(self): + """Format status strings via get_formatted_status().""" + for pass_num in [1, 2, 3]: + self.status[pass_num-1] = get_formatted_status( + label='Pass {}'.format(pass_num), + data=self.status[pass_num-1]) + + def finish_pass(self, pass_num): + """Mark pass as done and check if 100% recovered.""" + map_data = read_map_file(self.map_path) + if map_data['full recovery']: + self.pass_done = [True, True, True] + self.rescued = self.size + self.status[pass_num] = get_formatted_status( + label='Pass {}'.format(pass_num+1), + data=100) + # Mark future passes as Skipped + pass_num += 1 + while pass_num <= 2: + self.status[pass_num] = get_formatted_status( + label='Pass {}'.format(pass_num+1), + data='Skipped') + pass_num += 1 + else: + self.pass_done[pass_num] = True + + def load_map_data(self): + """Load data from map file and set progress.""" + map_data = read_map_file(self.map_path) + self.rescued_percent = map_data['rescued'] + self.rescued = (self.rescued_percent * self.size) / 100 + if map_data['full recovery']: + self.pass_done = [True, True, True] + self.rescued = self.size + self.status = ['Skipped', 'Skipped', 'Skipped'] + elif map_data['non-tried'] > 0: + # Initial pass incomplete + pass + elif map_data['non-trimmed'] > 0: + self.pass_done = [True, False, False] + self.status = ['Skipped', 'Pending', 'Pending'] + elif map_data['non-scraped'] > 0: + self.pass_done = [True, True, False] + self.status = ['Skipped', 'Skipped', 'Pending'] + else: + self.pass_done = [True, True, True] + self.status = ['Skipped', 'Skipped', 'Skipped'] + + def self_check(self): + """Self check to abort on bad dest/map combinations.""" + dest_exists = os.path.exists(self.dest_path) + map_exists = os.path.exists(self.map_path) + if self.mode == 'image': + if dest_exists and not map_exists: + raise GenericError( + 'Detected image "{}" but not the matching map'.format( + self.dest_path)) + elif not dest_exists and map_exists: + raise GenericError( + 'Detected map "{}" but not the matching image'.format( + self.map_path)) + elif not dest_exists: + raise GenericError('Destination device "{}" missing'.format( + self.dest_path)) + + def update_progress(self, pass_num): + """Update progress using map file.""" + if os.path.exists(self.map_path): + map_data = read_map_file(self.map_path) + self.rescued_percent = map_data.get('rescued', 0) + self.rescued = (self.rescued_percent * self.size) / 100 + self.status[pass_num] = get_formatted_status( + label='Pass {}'.format(pass_num+1), + data=(self.rescued/self.size)*100) + + +class DevObj(BaseObj): + """Block device object.""" + def self_check(self): + """Verify that self.path points to a block device.""" + if not pathlib.Path(self.path).is_block_device(): + raise GenericError('Path "{}" is not a block device.'.format( + self.path)) + if self.parent: + print_warning('"{}" is a child device.'.format(self.path)) + if ask('Use parent device "{}" instead?'.format(self.parent)): + self.path = os.path.realpath(self.parent) + self.set_details() + + def set_details(self): + """Set details via lsblk.""" + self.type = 'dev' + self.details = get_device_details(self.path) + self.name = '{name} {size} {model} {serial}'.format( + name=self.details.get('name', 'UNKNOWN'), + size=self.details.get('size', 'UNKNOWN'), + model=self.details.get('model', 'UNKNOWN'), + serial=self.details.get('serial', 'UNKNOWN')) + self.model = self.details.get('model', 'UNKNOWN') + self.model_size = self.details.get('size', 'UNKNOWN') + self.size = get_size_in_bytes(self.details.get('size', 'UNKNOWN')) + self.report = get_device_report(self.path) + self.parent = self.details.get('pkname', '') + self.label = self.details.get('label', '') + if not self.label: + # Force empty string in case it's set to None + self.label = '' + self.update_filename_prefix() + + def update_filename_prefix(self): + """Set filename prefix based on details.""" + self.prefix = '{m_size}_{model}'.format( + m_size=self.model_size, + model=self.model) + self.prefix = self.prefix.strip() + if self.parent: + # Add child device details + c_num = self.path.replace(self.parent, '') + self.prefix += '_{c_prefix}{c_num}_{c_size}{sep}{c_label}'.format( + c_prefix='p' if len(c_num) == 1 else '', + c_num=c_num, + c_size=self.details.get('size', 'UNKNOWN'), + sep='_' if self.label else '', + c_label=self.label) + self.prefix = self.prefix.strip().replace(' ', '_') + self.prefix = self.prefix.strip().replace('/', '_') + + +class DirObj(BaseObj): + def self_check(self): + """Verify that self.path points to a directory.""" + if not pathlib.Path(self.path).is_dir(): + raise GenericError('Path "{}" is not a directory.'.format( + self.path)) + + def set_details(self): + """Set details via findmnt.""" + self.type = 'dir' + self.details = get_dir_details(self.path) + self.fstype = self.details.get('fstype', 'UNKNOWN') + self.name = self.path + '/' + self.size = get_size_in_bytes(self.details.get('avail', 'UNKNOWN')) + self.report = get_dir_report(self.path) + + +class ImageObj(BaseObj): + def self_check(self): + """Verify that self.path points to a file.""" + if not pathlib.Path(self.path).is_file(): + raise GenericError('Path "{}" is not an image file.'.format( + self.path)) + + def set_details(self): + """Setup loopback device, set details via lsblk, then detach device.""" + self.type = 'image' + self.loop_dev = setup_loopback_device(self.path) + self.details = get_device_details(self.loop_dev) + self.details['model'] = 'ImageFile' + self.name = '{name} {size}'.format( + name=self.path[self.path.rfind('/')+1:], + size=self.details.get('size', 'UNKNOWN')) + self.prefix = '{}_ImageFile'.format( + self.details.get('size', 'UNKNOWN')) + self.size = get_size_in_bytes(self.details.get('size', 'UNKNOWN')) + self.report = get_device_report(self.loop_dev) + self.report = self.report.replace( + self.loop_dev[self.loop_dev.rfind('/')+1:], '(Img)') + run_program(['losetup', '--detach', self.loop_dev], check=False) + + +class RecoveryState(): + """Object to track BlockPair objects and overall state.""" + def __init__(self, mode, source, dest): + self.mode = mode.lower() + self.source = source + self.source_path = source.path + self.dest = dest + self.block_pairs = [] + self.current_pass = 0 + self.current_pass_str = '0: Initializing' + self.settings = DDRESCUE_SETTINGS.copy() + self.finished = False + self.progress_out = '{}/progress.out'.format(global_vars['LogDir']) + self.rescued = 0 + self.resumed = False + self.started = False + self.total_size = 0 + if mode not in ('clone', 'image'): + raise GenericError('Unsupported mode') + + def add_block_pair(self, source, dest): + """Run safety checks and append new BlockPair to internal list.""" + if self.mode == 'clone': + # Cloning safety checks + if source.is_dir(): + raise GenericError('Invalid source "{}"'.format( + source.path)) + elif not dest.is_dev(): + raise GenericError('Invalid destination "{}"'.format( + dest.path)) + elif source.size > dest.size: + raise GenericError( + 'Destination is too small, refusing to continue.') + else: + # Imaging safety checks + if not source.is_dev(): + raise GenericError('Invalid source "{}"'.format( + source.path)) + elif not dest.is_dir(): + raise GenericError('Invalid destination "{}"'.format( + dest.path)) + elif (source.size * 1.2) > dest.size: + raise GenericError( + 'Not enough free space, refusing to continue.') + elif dest.fstype.lower() not in RECOMMENDED_FSTYPES: + print_error( + 'Destination filesystem "{}" is not recommended.'.format( + dest.fstype.upper())) + print_info('Recommended types are: {}'.format( + ' / '.join(RECOMMENDED_FSTYPES).upper())) + print_standard(' ') + if not ask('Proceed anyways? (Strongly discouraged)'): + raise GenericAbort() + elif not is_writable_dir(dest): + raise GenericError( + 'Destination is not writable, refusing to continue.') + elif not is_writable_filesystem(dest): + raise GenericError( + 'Destination is mounted read-only, refusing to continue.') + + # Safety checks passed + self.block_pairs.append(BlockPair(self.mode, source, dest)) + + def current_pass_done(self): + """Checks if pass is done for all block-pairs, returns bool.""" + done = True + for bp in self.block_pairs: + done &= bp.pass_done[self.current_pass] + return done + + def current_pass_min(self): + """Gets minimum pass rescued percentage, returns float.""" + min_percent = 100 + for bp in self.block_pairs: + min_percent = min(min_percent, bp.rescued_percent) + return min_percent + + def retry_all_passes(self): + """Mark all passes as pending for all block-pairs.""" + self.finished = False + for bp in self.block_pairs: + bp.pass_done = [False, False, False] + bp.status = ['Pending', 'Pending', 'Pending'] + bp.fix_status_strings() + self.set_pass_num() + + def self_checks(self): + """Run self-checks for each BlockPair and update state values.""" + self.total_size = 0 + for bp in self.block_pairs: + bp.self_check() + self.resumed |= bp.resumed + self.total_size += bp.size + + def set_pass_num(self): + """Set current pass based on all block-pair's progress.""" + self.current_pass = 0 + for pass_num in (2, 1, 0): + # Iterate backwards through passes + pass_done = True + for bp in self.block_pairs: + pass_done &= bp.pass_done[pass_num] + if pass_done: + # All block-pairs reported being done + # Set to next pass, unless we're on the last pass (2) + self.current_pass = min(2, pass_num + 1) + if pass_num == 2: + # Also mark overall recovery as finished if on last pass + self.finished = True + break + if self.finished: + self.current_pass_str = '- "Done"' + elif self.current_pass == 0: + self.current_pass_str = '1 "Initial Read"' + elif self.current_pass == 1: + self.current_pass_str = '2 "Trimming bad areas"' + elif self.current_pass == 2: + self.current_pass_str = '3 "Scraping bad areas"' + + def update_progress(self): + """Update overall progress using block_pairs.""" + self.rescued = 0 + for bp in self.block_pairs: + self.rescued += bp.rescued + self.rescued_percent = (self.rescued / self.total_size) * 100 + self.status_percent = get_formatted_status( + label='Recovered:', data=self.rescued_percent) + self.status_amount = get_formatted_status( + label='', data=human_readable_size(self.rescued, decimals=2)) + + +# Functions +def build_outer_panes(state): + """Build top and side panes.""" + clear_screen() + result = run_program(['tput', 'cols']) + width = int( + (int(result.stdout.decode().strip()) - SIDE_PANE_WIDTH) / 2) - 2 + + # Top panes + source_str = state.source.name + if len(source_str) > width: + source_str = '{}...'.format(source_str[:width-3]) + dest_str = state.dest.name + if len(dest_str) > width: + if state.mode == 'clone': + dest_str = '{}...'.format(dest_str[:width-3]) + else: + dest_str = '...{}'.format(dest_str[-width+3:]) + source_pane = tmux_splitw( + '-bdvl', '2', + '-PF', '#D', + 'echo-and-hold "{BLUE}Source{CLEAR}\n{text}"'.format( + text=source_str, + **COLORS)) + tmux_splitw( + '-t', source_pane, + '-dhl', '{}'.format(SIDE_PANE_WIDTH), + 'echo-and-hold "{BLUE}Started{CLEAR}\n{text}"'.format( + text=time.strftime("%Y-%m-%d %H:%M %Z"), + **COLORS)) + tmux_splitw( + '-t', source_pane, + '-dhp', '50', + 'echo-and-hold "{BLUE}Destination{CLEAR}\n{text}"'.format( + text=dest_str, + **COLORS)) + + # Side pane + update_sidepane(state) + tmux_splitw( + '-dhl', str(SIDE_PANE_WIDTH), + 'watch', '--color', '--no-title', '--interval', '1', + 'cat', state.progress_out) + + +def create_path_obj(path): + """Create Dev, Dir, or Image obj based on path given.""" + obj = None + if pathlib.Path(path).is_block_device(): + obj = DevObj(path) + elif pathlib.Path(path).is_dir(): + obj = DirObj(path) + elif pathlib.Path(path).is_file(): + obj = ImageObj(path) + else: + raise GenericError('Invalid path "{}"'.format(path)) + return obj + + +def double_confirm_clone(): + """Display warning and get 2nd confirmation from user, returns bool.""" + print_standard('\nSAFETY CHECK') + print_warning('All data will be DELETED from the ' + 'destination device and partition(s) listed above.') + print_warning('This is irreversible and will lead ' + 'to {CLEAR}{RED}DATA LOSS.'.format(**COLORS)) + return ask('Asking again to confirm, is this correct?') + + +def get_device_details(dev_path): + """Get device details via lsblk, returns JSON dict.""" + try: + cmd = ( + 'lsblk', + '--json', + '--output-all', + '--paths', + dev_path) + result = run_program(cmd) + except CalledProcessError: + # Return empty dict and let calling section deal with the issue + return {} + + json_data = json.loads(result.stdout.decode()) + # Just return the first device (there should only be one) + return json_data['blockdevices'][0] + + +def get_device_report(dev_path): + """Build colored device report using lsblk, returns str.""" + result = run_program([ + 'lsblk', '--nodeps', + '--output', 'NAME,TRAN,TYPE,SIZE,VENDOR,MODEL,SERIAL', + dev_path]) + lines = result.stdout.decode().strip().splitlines() + lines.append('') + + # FS details (if any) + result = run_program([ + 'lsblk', + '--output', 'NAME,SIZE,FSTYPE,LABEL,MOUNTPOINT', + dev_path]) + lines.extend(result.stdout.decode().strip().splitlines()) + + # Color label lines + output = [] + for line in lines: + if line[0:4] == 'NAME': + output.append('{BLUE}{line}{CLEAR}'.format(line=line, **COLORS)) + else: + output.append(line) + + # Done + return '\n'.join(output) + + +def get_dir_details(dir_path): + """Get dir details via findmnt, returns JSON dict.""" + try: + result = run_program([ + 'findmnt', '-J', + '-o', 'SOURCE,TARGET,FSTYPE,OPTIONS,SIZE,AVAIL,USED', + '-T', dir_path]) + json_data = json.loads(result.stdout.decode()) + except Exception: + raise GenericError( + 'Failed to get directory details for "{}".'.format(self.path)) + else: + return json_data['filesystems'][0] + + +def get_dir_report(dir_path): + """Build colored dir report using findmnt, returns str.""" + dir_path = dir_path + output = [] + width = len(dir_path)+1 + result = run_program([ + 'findmnt', + '--output', 'SIZE,AVAIL,USED,FSTYPE,OPTIONS', + '--target', dir_path]) + for line in result.stdout.decode().splitlines(): + if 'FSTYPE' in line: + output.append('{BLUE}{label:<{width}}{line}{CLEAR}'.format( + label='PATH', + width=width, + line=line.replace('\n',''), + **COLORS)) + else: + output.append('{path:<{width}}{line}'.format( + path=dir_path, + width=width, + line=line.replace('\n',''))) + + # Done + return '\n'.join(output) + + +def get_size_in_bytes(s): + """Convert size string from lsblk string to bytes, returns int.""" + s = re.sub(r'(\d+\.?\d*)\s*([KMGTB])B?', r'\1 \2B', s, re.IGNORECASE) + return convert_to_bytes(s) + + +def get_formatted_status(label, data): + """Build status string using provided info, returns str.""" + data_width = SIDE_PANE_WIDTH - len(label) + try: + data_str = '{data:>{data_width}.2f} %'.format( + data=data, + data_width=data_width-2) + except ValueError: + # Assuming non-numeric data + data_str = '{data:>{data_width}}'.format( + data=data, + data_width=data_width) + status = '{label}{s_color}{data_str}{CLEAR}'.format( + label=label, + s_color=get_status_color(data), + data_str=data_str, + **COLORS) + return status + + +def get_status_color(s, t_success=99, t_warn=90): + """Get color based on status, returns str.""" + color = COLORS['CLEAR'] + p_recovered = -1 + try: + p_recovered = float(s) + except ValueError: + # Status is either in lists below or will default to red + pass + + if s in ('Pending',) or str(s)[-2:] in (' b', 'Kb', 'Mb', 'Gb', 'Tb'): + color = COLORS['CLEAR'] + elif s in ('Skipped', 'Unknown'): + color = COLORS['YELLOW'] + elif p_recovered >= t_success: + color = COLORS['GREEN'] + elif p_recovered >= t_warn: + color = COLORS['YELLOW'] + else: + color = COLORS['RED'] + return color + + +def is_writable_dir(dir_obj): + """Check if we have read-write-execute permissions, returns bool.""" + is_ok = True + path_st_mode = os.stat(dir_obj.path).st_mode + is_ok == is_ok and path_st_mode & stat.S_IRUSR + is_ok == is_ok and path_st_mode & stat.S_IWUSR + is_ok == is_ok and path_st_mode & stat.S_IXUSR + return is_ok + + +def is_writable_filesystem(dir_obj): + """Check if filesystem is mounted read-write, returns bool.""" + return 'rw' in dir_obj.details.get('options', '') + + +def menu_ddrescue(source_path, dest_path, run_mode): + """ddrescue menu.""" + source = None + dest = None + if source_path: + source = create_path_obj(source_path) + else: + source = select_device('source') + source.self_check() + if dest_path: + dest = create_path_obj(dest_path) + else: + if run_mode == 'clone': + dest = select_device('destination', skip_device=source) + else: + dest = select_path(skip_device=source) + dest.self_check() + + # Build BlockPairs + state = RecoveryState(run_mode, source, dest) + if run_mode == 'clone': + state.add_block_pair(source, dest) + else: + for part in select_parts(source): + state.add_block_pair(part, dest) + + # Update state + state.self_checks() + state.set_pass_num() + state.update_progress() + + # Confirmations + clear_screen() + show_selection_details(state) + prompt = 'Start {}?'.format(state.mode.replace('e', 'ing')) + if state.resumed: + print_info('Map data detected and loaded.') + prompt = prompt.replace('Start', 'Resume') + if not ask(prompt): + raise GenericAbort() + if state.mode == 'clone' and not double_confirm_clone(): + raise GenericAbort() + + # Main menu + build_outer_panes(state) + menu_main(state) + + # Done + run_program(['tmux', 'kill-window']) + exit_script() + +def menu_main(state): + """Main menu is used to set ddrescue settings.""" + title = '{GREEN}ddrescue TUI: Main Menu{CLEAR}\n\n'.format(**COLORS) + title += '{BLUE}Current pass: {CLEAR}'.format(**COLORS) + + # Build menu + main_options = [ + {'Base Name': 'Auto continue (if recovery % over threshold)', + 'Enabled': True}, + {'Base Name': 'Retry (mark non-rescued sectors "non-tried")', + 'Enabled': False}, + {'Base Name': 'Reverse direction', 'Enabled': False}, + ] + actions = [ + {'Name': 'Start', 'Letter': 'S'}, + {'Name': 'Change settings {YELLOW}(experts only){CLEAR}'.format( + **COLORS), + 'Letter': 'C'}, + {'Name': 'Quit', 'Letter': 'Q', 'CRLF': True}, + ] + + # Show menu + while True: + # Update entries + for opt in main_options: + opt['Name'] = '{} {}'.format( + '[✓]' if opt['Enabled'] else '[ ]', + opt['Base Name']) + + selection = menu_select( + title=title+state.current_pass_str, + main_entries=main_options, + action_entries=actions) + + if selection.isnumeric(): + # Toggle selection + index = int(selection) - 1 + main_options[index]['Enabled'] = not main_options[index]['Enabled'] + elif selection == 'S': + # Set settings for pass + pass_settings = [] + for k, v in state.settings.items(): + if not v['Enabled']: + continue + if 'Value' in v: + pass_settings.append('{}={}'.format(k, v['Value'])) + else: + pass_settings.append(k) + for opt in main_options: + if 'Auto' in opt['Base Name']: + auto_run = opt['Enabled'] + if 'Retry' in opt['Base Name'] and opt['Enabled']: + pass_settings.extend(['--retrim', '--try-again']) + state.retry_all_passes() + if 'Reverse' in opt['Base Name'] and opt['Enabled']: + pass_settings.append('--reverse') + # Disable for next pass + if 'Auto' not in opt['Base Name']: + opt['Enabled'] = False + + # Run ddrescue + state.started = False + while auto_run or not state.started: + state.started = True + run_ddrescue(state, pass_settings) + if state.current_pass_done(): + if (state.current_pass == 0 and + state.current_pass_min() < AUTO_PASS_1_THRESHOLD): + auto_run = False + elif (state.current_pass == 1 and + state.current_pass_min() < AUTO_PASS_2_THRESHOLD): + auto_run = False + else: + auto_run = False + state.set_pass_num() + if state.finished: + break + + elif selection == 'C': + menu_settings(state) + elif selection == 'Q': + if state.rescued_percent < 100: + print_warning('Recovery is less than 100%') + if ask('Are you sure you want to quit?'): + break + else: + break + + +def menu_settings(state): + """Change advanced ddrescue settings.""" + title = '{GREEN}ddrescue TUI: Expert Settings{CLEAR}\n\n'.format(**COLORS) + title += '{YELLOW}These settings can cause {CLEAR}'.format(**COLORS) + title += '{RED}MAJOR DAMAGE{CLEAR}{YELLOW} to drives{CLEAR}\n'.format( + **COLORS) + title += 'Please read the manual before making any changes' + + # Build menu + settings = [] + for k, v in sorted(state.settings.items()): + if not v.get('Hidden', False): + settings.append({'Base Name': k, 'Flag': k}) + actions = [{'Name': 'Main Menu', 'Letter': 'M'}] + + # Show menu + while True: + for s in settings: + s['Name'] = '{}{}{}'.format( + s['Base Name'], + ' = ' if 'Value' in state.settings[s['Flag']] else '', + state.settings[s['Flag']].get('Value', '')) + if not state.settings[s['Flag']]['Enabled']: + s['Name'] = '{YELLOW}{name} (Disabled){CLEAR}'.format( + name=s['Name'], + **COLORS) + selection = menu_select( + title=title, + main_entries=settings, + action_entries=actions) + if selection.isnumeric(): + index = int(selection) - 1 + flag = settings[index]['Flag'] + enabled = state.settings[flag]['Enabled'] + if 'Value' in state.settings[flag]: + answer = choice( + choices=['T', 'C'], + prompt='Toggle or change value for "{}"'.format(flag)) + if answer == 'T': + # Toggle + state.settings[flag]['Enabled'] = not enabled + else: + # Update value + state.settings[flag]['Value'] = get_simple_string( + prompt='Enter new value') + else: + state.settings[flag]['Enabled'] = not enabled + elif selection == 'M': + break + + +def read_map_file(map_path): + """Read map file with ddrescuelog and return data as dict.""" + map_data = {'full recovery': False} + try: + result = run_program(['ddrescuelog', '-t', map_path]) + except CalledProcessError: + # (Grossly) assuming map_data hasn't been saved yet, return empty dict + return map_data + + # Parse output + for line in result.stdout.decode().splitlines(): + m = re.match( + r'^\s*(?P\S+):.*\(\s*(?P\d+\.?\d*)%.*', line.strip()) + if m: + try: + map_data[m.group('key')] = float(m.group('value')) + except ValueError: + raise GenericError('Failed to read map data') + m = re.match(r'.*current status:\s+(?P.*)', line.strip()) + if m: + map_data['pass completed'] = bool(m.group('status') == 'finished') + + # Check if 100% done + try: + run_program(['ddrescuelog', '-D', map_path]) + except CalledProcessError: + map_data['full recovery'] = False + else: + map_data['full recovery'] = True + + return map_data + + +def run_ddrescue(state, pass_settings): + """Run ddrescue pass.""" + return_code = None + + if state.finished: + clear_screen() + print_warning('Recovery already completed?') + pause('Press Enter to return to main menu...') + return + + # Set heights + # NOTE: 12/33 is based on min heights for SMART/ddrescue panes (12+22+1sep) + result = run_program(['tput', 'lines']) + height = int(result.stdout.decode().strip()) + height_smart = int(height * (8 / 33)) + height_journal = int(height * (4 / 33)) + height_ddrescue = height - height_smart - height_journal + + # Show SMART status + smart_dev = state.source_path + if state.source.parent: + smart_dev = state.source.parent + smart_pane = tmux_splitw( + '-bdvl', str(height_smart), + '-PF', '#D', + 'watch', '--color', '--no-title', '--interval', '300', + 'ddrescue-tui-smart-display', smart_dev) + + # Show systemd journal output + journal_pane = tmux_splitw( + '-dvl', str(height_journal), + '-PF', '#D', + 'journalctl', '-f') + + # Run pass for each block-pair + for bp in state.block_pairs: + if bp.pass_done[state.current_pass]: + # Skip to next block-pair + continue + update_sidepane(state) + + # Set ddrescue cmd + cmd = [ + 'ddrescue', *pass_settings, + bp.source_path, bp.dest_path, bp.map_path] + if state.mode == 'clone': + cmd.append('--force') + if state.current_pass == 0: + cmd.extend(['--no-trim', '--no-scrape']) + elif state.current_pass == 1: + # Allow trimming + cmd.append('--no-scrape') + elif state.current_pass == 2: + # Allow trimming and scraping + pass + + # Start ddrescue + try: + clear_screen() + print_info('Current dev: {}'.format(bp.source_path)) + ddrescue_proc = popen_program(cmd) + while True: + bp.update_progress(state.current_pass) + update_sidepane(state) + try: + ddrescue_proc.wait(timeout=10) + sleep(2) + bp.update_progress(state.current_pass) + update_sidepane(state) + break + except subprocess.TimeoutExpired: + # Catch to update bp/sidepane + pass + except KeyboardInterrupt: + # Catch user abort + pass + + # Update progress/sidepane again + bp.update_progress(state.current_pass) + update_sidepane(state) + + # Was ddrescue aborted? + return_code = ddrescue_proc.poll() + if return_code is None or return_code is 130: + clear_screen() + print_warning('Aborted') + break + elif return_code: + # i.e. not None and not 0 + print_error('Error(s) encountered, see message above.') + break + else: + # Mark pass finished + bp.finish_pass(state.current_pass) + update_sidepane(state) + + # Done + if str(return_code) != '0': + # Pause on errors + pause('Press Enter to return to main menu... ') + run_program(['tmux', 'kill-pane', '-t', smart_pane]) + run_program(['tmux', 'kill-pane', '-t', journal_pane]) + + +def select_parts(source_device): + """Select partition(s) or whole device, returns list of DevObj()s.""" + selected_parts = [] + children = source_device.details.get('children', []) + + if not children: + # No partitions detected, auto-select whole device. + selected_parts = [source_device] + else: + # Build menu + dev_options = [{ + 'Base Name': '{:<14}(Whole device)'.format(source_device.path), + 'Dev': source_device, + 'Selected': True}] + for c_details in children: + dev_options.append({ + 'Base Name': '{:<14}({:>6} {})'.format( + c_details['name'], + c_details['size'], + c_details['fstype'] if c_details['fstype'] else 'Unknown'), + 'Details': c_details, + 'Dev': DevObj(c_details['name']), + 'Selected': False}) + actions = [ + {'Name': 'Proceed', 'Letter': 'P'}, + {'Name': 'Quit', 'Letter': 'Q'}] + + # Show menu + while True: + one_or_more_devs_selected = False + # Update entries + for dev in dev_options: + if dev['Selected']: + one_or_more_devs_selected = True + dev['Name'] = '* {}'.format(dev['Base Name']) + else: + dev['Name'] = ' {}'.format(dev['Base Name']) + + selection = menu_select( + title='Please select part(s) to image', + main_entries=dev_options, + action_entries=actions) + + if selection.isnumeric(): + # Toggle selection + index = int(selection) - 1 + dev_options[index]['Selected'] = not dev_options[index]['Selected'] + + # Deselect whole device if child selected (this round) + if index > 0: + dev_options[0]['Selected'] = False + + # Deselect all children if whole device selected + if dev_options[0]['Selected']: + for dev in dev_options[1:]: + dev['Selected'] = False + elif selection == 'P' and one_or_more_devs_selected: + break + elif selection == 'Q': + raise GenericAbort() + + # Build list of selected parts + for d in dev_options: + if d['Selected']: + d['Dev'].model = source_device.model + d['Dev'].model_size = source_device.model_size + d['Dev'].update_filename_prefix() + selected_parts.append(d['Dev']) + + return selected_parts + + +def select_path(skip_device=None): + """Optionally mount local dev and select path, returns DirObj.""" + wd = os.path.realpath(global_vars['Env']['PWD']) + selected_path = None + + # Build menu + path_options = [ + {'Name': 'Current directory: {}'.format(wd), 'Path': wd}, + {'Name': 'Local device', 'Path': None}, + {'Name': 'Enter manually', 'Path': None}] + actions = [{'Name': 'Quit', 'Letter': 'Q'}] + + # Show Menu + selection = menu_select( + title='Please make a selection', + main_entries=path_options, + action_entries=actions) + + if selection == 'Q': + raise GenericAbort() + elif selection.isnumeric(): + index = int(selection) - 1 + if path_options[index]['Path'] == wd: + # Current directory + selected_path = DirObj(wd) + + elif path_options[index]['Name'] == 'Local device': + # Local device + local_device = select_device( + skip_device=skip_device) + s_path = '' + + # Mount device volume(s) + report = mount_volumes( + all_devices=False, + device_path=local_device.path, + read_write=True) + + # Select volume + vol_options = [] + for k, v in sorted(report.items()): + disabled = v['show_data']['data'] == 'Failed to mount' + if disabled: + name = '{name} (Failed to mount)'.format(**v) + else: + name = '{name} (mounted on "{mount_point}")'.format(**v) + vol_options.append({ + 'Name': name, + 'Path': v['mount_point'], + 'Disabled': disabled}) + selection = menu_select( + title='Please select a volume', + main_entries=vol_options, + action_entries=actions) + if selection.isnumeric(): + s_path = vol_options[int(selection)-1]['Path'] + elif selection == 'Q': + raise GenericAbort() + + # Create folder + if ask('Create ticket folder?'): + ticket_folder = get_simple_string('Please enter folder name') + s_path = os.path.join(s_path, ticket_folder) + try: + os.makedirs(s_path, exist_ok=True) + except OSError: + raise GenericError( + 'Failed to create folder "{}"'.format(s_path)) + + # Create DirObj + selected_path = DirObj(s_path) + + elif path_options[index]['Name'] == 'Enter manually': + # Manual entry + while not selected_path: + manual_path = input('Please enter path: ').strip() + if manual_path and pathlib.Path(manual_path).is_dir(): + selected_path = DirObj(manual_path) + elif manual_path and pathlib.Path(manual_path).is_file(): + print_error('File "{}" exists'.format(manual_path)) + else: + print_error('Invalid path "{}"'.format(manual_path)) + return selected_path + + +def select_device(description='device', skip_device=None): + """Select device via a menu, returns DevObj.""" + cmd = ( + 'lsblk', + '--json', + '--nodeps', + '--output-all', + '--paths') + result = run_program(cmd) + json_data = json.loads(result.stdout.decode()) + skip_names = [] + if skip_device: + skip_names.append(skip_device.path) + if skip_device.parent: + skip_names.append(skip_device.parent) + + # Build menu + dev_options = [] + for dev in json_data['blockdevices']: + # Disable dev if in skip_names + disabled = dev['name'] in skip_names or dev['pkname'] in skip_names + + # Add to options + dev_options.append({ + 'Name': '{name:12} {tran:5} {size:6} {model} {serial}'.format( + name=dev['name'], + tran=dev['tran'] if dev['tran'] else '', + size=dev['size'] if dev['size'] else '', + model=dev['model'] if dev['model'] else '', + serial=dev['serial'] if dev['serial'] else ''), + 'Dev': DevObj(dev['name']), + 'Disabled': disabled}) + dev_options = sorted(dev_options, key=itemgetter('Name')) + if not dev_options: + raise GenericError('No devices available.') + + # Show Menu + actions = [{'Name': 'Quit', 'Letter': 'Q'}] + selection = menu_select( + title='Please select the {} device'.format(description), + main_entries=dev_options, + action_entries=actions, + disabled_label='ALREADY SELECTED') + + if selection.isnumeric(): + return dev_options[int(selection)-1]['Dev'] + elif selection == 'Q': + raise GenericAbort() + + +def setup_loopback_device(source_path): + """Setup a loopback device for source_path, returns dev_path as str.""" + cmd = ( + 'losetup', + '--find', + '--partscan', + '--show', + source_path) + try: + out = run_program(cmd, check=True) + dev_path = out.stdout.decode().strip() + sleep(1) + except CalledProcessError: + raise GenericError('Failed to setup loopback device for source.') + else: + return dev_path + + +def show_selection_details(state): + """Show selection details.""" + # Source + print_success('Source') + print_standard(state.source.report) + print_standard(' ') + + # Destination + if state.mode == 'clone': + print_success('Destination ', end='') + print_error('(ALL DATA WILL BE DELETED)', timestamp=False) + else: + print_success('Destination') + print_standard(state.dest.report) + print_standard(' ') + + +def show_usage(script_name): + print_info('Usage:') + print_standard(USAGE.format(script_name=script_name)) + pause() + + +def tmux_splitw(*args): + """Run tmux split-window command and return output as str.""" + cmd = ['tmux', 'split-window', *args] + result = run_program(cmd) + return result.stdout.decode().strip() + + +def update_sidepane(state): + """Update progress file for side pane.""" + output = [] + state.update_progress() + if state.mode == 'clone': + output.append(' {BLUE}Cloning Status{CLEAR}'.format(**COLORS)) + else: + output.append(' {BLUE}Imaging Status{CLEAR}'.format(**COLORS)) + output.append('─────────────────────') + + # Overall progress + output.append('{BLUE}Overall Progress{CLEAR}'.format(**COLORS)) + output.append(state.status_percent) + output.append(state.status_amount) + output.append('─────────────────────') + + # Source(s) progress + for bp in state.block_pairs: + if state.source.is_image(): + output.append('{BLUE}Image File{CLEAR}'.format(**COLORS)) + else: + output.append('{BLUE}{source}{CLEAR}'.format( + source=bp.source_path, + **COLORS)) + output.extend(bp.status) + output.append(' ') + + # Add line-endings + output = ['{}\n'.format(line) for line in output] + + with open(state.progress_out, 'w') as f: + f.writelines(output) + + +if __name__ == '__main__': + print("This file is not meant to be called directly.") + +# vim: sts=4 sw=4 ts=4 diff --git a/.bin/Scripts/functions/diags.py b/.bin/Scripts/functions/diags.py index 220eaff3..e55f5b12 100644 --- a/.bin/Scripts/functions/diags.py +++ b/.bin/Scripts/functions/diags.py @@ -1,5 +1,7 @@ # Wizard Kit: Functions - Diagnostics +import ctypes + from functions.common import * # STATIC VARIABLES @@ -30,12 +32,71 @@ def check_connection(): result = try_and_print(message='Ping test...', function=ping, cs='OK') if result['CS']: break + if not ask('ERROR: System appears offline, try again?'): + if ask('Continue anyway?'): + break + else: + abort() + +def check_secure_boot_status(show_alert=False): + """Checks UEFI Secure Boot status via PowerShell.""" + boot_mode = get_boot_mode() + cmd = ['PowerShell', '-Command', 'Confirm-SecureBootUEFI'] + result = run_program(cmd, check=False) + + # Check results + if result.returncode == 0: + out = result.stdout.decode() + if 'True' in out: + # It's on, do nothing + return + elif 'False' in out: + if show_alert: + show_alert_box('Secure Boot DISABLED') + raise SecureBootDisabledError else: - if not ask('ERROR: System appears offline, try again?'): - if ask('Continue anyway?'): - break - else: - abort() + if show_alert: + show_alert_box('Secure Boot status UNKNOWN') + raise SecureBootUnknownError + else: + if boot_mode != 'UEFI': + if (show_alert and + global_vars['OS']['Version'] in ('8', '8.1', '10')): + # OS supports Secure Boot + show_alert_box('Secure Boot DISABLED\n\nOS installed LEGACY') + raise OSInstalledLegacyError + else: + # Check error message + err = result.stderr.decode() + if 'Cmdlet not supported' in err: + if show_alert: + show_alert_box('Secure Boot UNAVAILABLE?') + raise SecureBootNotAvailError + else: + if show_alert: + show_alert_box('Secure Boot ERROR') + raise GenericError + +def get_boot_mode(): + """Check if Windows is booted in UEFI or Legacy mode, returns str.""" + kernel = ctypes.windll.kernel32 + firmware_type = ctypes.c_uint() + + # Get value from kernel32 API + try: + kernel.GetFirmwareType(ctypes.byref(firmware_type)) + except: + # Just set to zero + firmware_type = ctypes.c_uint(0) + + # Set return value + type_str = 'Unknown' + if firmware_type.value == 1: + type_str = 'Legacy' + elif firmware_type.value == 2: + type_str = 'UEFI' + + return type_str def run_autoruns(): """Run AutoRuns in the background with VirusTotal checks enabled.""" @@ -61,11 +122,23 @@ def run_hwinfo_sensors(): f.write('SummaryOnly=0\n') popen_program(global_vars['Tools']['HWiNFO']) +def run_nircmd(*cmd): + """Run custom NirCmd.""" + extract_item('NirCmd', silent=True) + cmd = [global_vars['Tools']['NirCmd'], *cmd] + run_program(cmd, check=False) + def run_xmplay(): """Run XMPlay to test audio.""" extract_item('XMPlay', silent=True) cmd = [global_vars['Tools']['XMPlay'], r'{BinDir}\XMPlay\music.7z'.format(**global_vars)] + + # Unmute audio first + extract_item('NirCmd', silent=True) + run_nircmd('mutesysvolume', '0') + + # Open XMPlay popen_program(cmd) def run_hitmanpro(): @@ -74,7 +147,7 @@ def run_hitmanpro(): cmd = [ global_vars['Tools']['HitmanPro'], '/quiet', '/noinstall', '/noupload', - r'/log={LogDir}\hitman.xml'.format(**global_vars)] + r'/log={LogDir}\Tools\HitmanPro.txt'.format(**global_vars)] popen_program(cmd) def run_process_killer(): @@ -92,23 +165,25 @@ def run_rkill(): extract_item('RKill', silent=True) cmd = [ global_vars['Tools']['RKill'], - '-l', r'{LogDir}\RKill.log'.format(**global_vars), + '-s', '-l', r'{LogDir}\Tools\RKill.log'.format(**global_vars), '-new_console:n', '-new_console:s33V'] run_program(cmd, check=False) wait_for_process('RKill') - kill_process('notepad.exe') # RKill cleanup desktop_path = r'{USERPROFILE}\Desktop'.format(**global_vars['Env']) if os.path.exists(desktop_path): for item in os.scandir(desktop_path): if re.search(r'^RKill', item.name, re.IGNORECASE): - dest = re.sub(r'^(.*)\.', '\1_{Date-Time}.'.format( - **global_vars), item.name) - dest = r'{ClientDir}\Info\{name}'.format( + dest = r'{LogDir}\Tools\{name}'.format( name=dest, **global_vars) dest = non_clobber_rename(dest) shutil.move(item.path, dest) +def show_alert_box(message, title='Wizard Kit Warning'): + """Show Windows alert box with message.""" + message_box = ctypes.windll.user32.MessageBoxW + message_box(None, message, title, 0x00001030) + if __name__ == '__main__': print("This file is not meant to be called directly.") diff --git a/.bin/Scripts/functions/disk.py b/.bin/Scripts/functions/disk.py index 2d7cf0bb..75879ff8 100644 --- a/.bin/Scripts/functions/disk.py +++ b/.bin/Scripts/functions/disk.py @@ -14,13 +14,13 @@ REGEX_DISK_RAW = re.compile(r'Disk ID: 00000000', re.IGNORECASE) def assign_volume_letters(): """Assign a volume letter to all available volumes.""" 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) @@ -35,7 +35,7 @@ def get_boot_mode(): boot_mode = 'UEFI' except: boot_mode = 'Unknown' - + return boot_mode def get_disk_details(disk): @@ -44,7 +44,7 @@ def get_disk_details(disk): script = [ 'select disk {}'.format(disk['Number']), 'detail disk'] - + # Run try: result = run_diskpart(script) @@ -60,13 +60,13 @@ def get_disk_details(disk): 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(): """Get list of attached disks using DiskPart.""" disks = [] - + try: # Run script result = run_diskpart(['list disk']) @@ -79,7 +79,7 @@ def get_disks(): num = tmp[0] size = human_readable_size(tmp[1]) disks.append({'Number': num, 'Size': size}) - + return disks def get_partition_details(disk, partition): @@ -89,7 +89,7 @@ def get_partition_details(disk, partition): 'select disk {}'.format(disk['Number']), 'select partition {}'.format(partition['Number']), 'detail partition'] - + # Diskpart details try: # Run script @@ -111,14 +111,14 @@ def get_partition_details(disk, partition): 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.get('Type')) if guid: details.update({ 'Description': guid.get('Description', '')[:29], 'OS': guid.get('OS', 'Unknown')[:27]}) - + if 'Letter' in details: # Disk usage try: @@ -128,7 +128,7 @@ def get_partition_details(disk, partition): details['Error'] = err.strerror else: details['Used Space'] = human_readable_size(tmp.used) - + # fsutil details cmd = [ 'fsutil', @@ -151,14 +151,14 @@ def get_partition_details(disk, partition): 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', '') not in ['RAW', 'Unknown']: details['FileSystem'] = details.get('File System Name', 'Unknown') - + return details def get_partitions(disk): @@ -167,7 +167,7 @@ def get_partitions(disk): script = [ 'select disk {}'.format(disk['Number']), 'list partition'] - + try: # Run script result = run_diskpart(script) @@ -181,7 +181,7 @@ def get_partitions(disk): num = tmp[0] size = human_readable_size(tmp[1]) partitions.append({'Number': num, 'Size': size}) - + return partitions def get_table_type(disk): @@ -190,7 +190,7 @@ def get_table_type(disk): script = [ 'select disk {}'.format(disk['Number']), 'uniqueid disk'] - + try: result = run_diskpart(script) except subprocess.CalledProcessError: @@ -203,7 +203,7 @@ def get_table_type(disk): part_type = 'MBR' elif REGEX_DISK_RAW.search(output): part_type = 'RAW' - + return part_type def get_volumes(): @@ -218,7 +218,7 @@ def get_volumes(): 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): @@ -229,7 +229,7 @@ def prep_disk_for_formatting(disk=None): """Gather details about the disk and its partitions.""" disk['Format Warnings'] = '\n' width = len(str(len(disk['Partitions']))) - + # Bail early if disk is None: raise Exception('Disk not provided.') @@ -242,7 +242,7 @@ def prep_disk_for_formatting(disk=None): 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' @@ -252,7 +252,7 @@ def prep_disk_for_formatting(disk=None): 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( @@ -290,13 +290,13 @@ def remove_volume_letters(keep=None): """Remove all assigned volume letters using DiskPart.""" 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) @@ -306,12 +306,12 @@ def remove_volume_letters(keep=None): def run_diskpart(script): """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( @@ -335,7 +335,7 @@ def scan_disks(): # 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)) @@ -364,12 +364,12 @@ def select_disk(title='Which disk?', disks=[]): 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( diff --git a/.bin/Scripts/functions/hw_diags.py b/.bin/Scripts/functions/hw_diags.py index 63942ed2..93b73bdb 100644 --- a/.bin/Scripts/functions/hw_diags.py +++ b/.bin/Scripts/functions/hw_diags.py @@ -1,8 +1,23 @@ # Wizard Kit: Functions - HW Diagnostics +import base64 +import Gnuplot import json +import math +import mysql.connector as mariadb +import requests +import time -from functions.common import * +from functions.data import * +from numpy import * + +# Database connection +ost_db = { + 'Connection': None, + 'Cursor': None, + 'Errors': False, + 'Tunnel': None, + } # STATIC VARIABLES ATTRIBUTES = { @@ -19,11 +34,54 @@ ATTRIBUTES = { 184: {'Error': 1}, 187: {'Warning': 1}, 188: {'Warning': 1}, + 196: {'Warning': 1, 'Error': 10, 'Ignore': True}, 197: {'Error': 1}, 198: {'Error': 1}, + 199: {'Error': 1, 'Ignore': True}, 201: {'Warning': 1}, }, } +IO_VARS = { + 'Block Size': 512*1024, + 'Chunk Size': 32*1024**2, + 'Minimum Dev Size': 8*1024**3, + 'Minimum Test Size': 10*1024**3, + 'Alt Test Size Factor': 0.01, + 'Progress Refresh Rate': 5, + 'Scale 8': [2**(0.56*(x+1))+(16*(x+1)) for x in range(8)], + 'Scale 16': [2**(0.56*(x+1))+(16*(x+1)) for x in range(16)], + 'Scale 32': [2**(0.56*(x+1)/2)+(16*(x+1)/2) for x in range(32)], + 'Threshold Graph Fail': 65*1024**2, + 'Threshold Graph Warn': 135*1024**2, + 'Threshold Graph Great': 750*1024**2, + 'Threshold HDD Min': 50*1024**2, + 'Threshold HDD High Avg': 75*1024**2, + 'Threshold HDD Low Avg': 65*1024**2, + 'Threshold SSD Min': 90*1024**2, + 'Threshold SSD High Avg': 135*1024**2, + 'Threshold SSD Low Avg': 100*1024**2, + 'Graph Horizontal': ('▁', '▂', '▃', '▄', '▅', '▆', '▇', '█'), + 'Graph Horizontal Width': 40, + 'Graph Vertical': ( + '▏', '▎', '▍', '▌', + '▋', '▊', '▉', '█', + '█▏', '█▎', '█▍', '█▌', + '█▋', '█▊', '█▉', '██', + '██▏', '██▎', '██▍', '██▌', + '██▋', '██▊', '██▉', '███', + '███▏', '███▎', '███▍', '███▌', + '███▋', '███▊', '███▉', '████'), + } +OST_STAFF_ID = '23' +OST_STAFF_NAME = 'Wizard Kit' +OST_SQL_SET_HOLD = "UPDATE `{db_name}`.`ost_ticket` SET `hold` = '{hold_type}' WHERE `ost_ticket`.`ticket_id` = {ticket_id};" +OST_SQL_SET_FLAG = "UPDATE `{db_name}`.`ost_ticket` SET `{flag}` = '{value}' WHERE `ost_ticket`.`ticket_id` = {ticket_id};" +OST_SQL_POST_REPLY = ("INSERT INTO `{db_name}`.`ost_ticket_response` (ticket_id, staff_id, staff_name, response, created) " + "VALUES ('{ticket_id}', '{staff_id}', '{staff_name}', '{response}', '{created}');") +OST_DRIVE_FLAG = 'zHDTune' +OST_DRIVE_PASSED = 1 +OST_DRIVE_FAILED = 2 +OST_NEEDS_ATTENTION = 4 TESTS = { 'Prime95': { 'Enabled': False, @@ -32,6 +90,7 @@ TESTS = { 'NVMe/SMART': { 'Enabled': False, 'Quick': False, + 'Short Test': {}, 'Status': {}, }, 'badblocks': { @@ -40,12 +99,170 @@ TESTS = { 'Status': {}, }, 'iobenchmark': { + 'Data': {}, 'Enabled': False, 'Results': {}, 'Status': {}, }, } +def connect_to_db(): + """Connect to osTicket database via SSH tunnel.""" + cmd = [ + 'ssh', '-N', '-p', SSH_PORT, '-L3306:127.0.0.1:3306', + '{user}@{host}'.format(user=SSH_USER, host=DB_HOST), + ] + + # Establish SSH tunnel unless one already exists + if not ost_db['Tunnel'] or ost_db['Tunnel'].poll() is not None: + ost_db['Tunnel'] = popen_program(cmd) + + # Establish SQL connection (try a few times in case SSH is slow) + for x in range(5): + sleep(2) + try: + ost_db['Connection'] = mariadb.connect( + user=DB_USER, password=DB_PASS, database=DB_NAME) + ost_db['Cursor'] = ost_db['Connection'].cursor() + except: + # Just try again + pass + else: + break + +def disconnect_from_db(reset_errors=False): + """Disconnect from SQL DB.""" + for c in ['Cursor', 'Connection']: + try: + ost_db[c].close() + except: + # Ignore + pass + ost_db[c] = None + if reset_errors: + ost_db['Errors'] = False + +def export_png_graph(name, dev): + """Exports PNG graph using gnuplot, returns file path as str.""" + max_rate = max(TESTS['iobenchmark']['Data'][name]['Read Rates']) + max_rate /= (1024**2) + max_rate = max(800, max_rate) + out_path = '{}/iobenchmark-{}.png'.format(global_vars['LogDir'], name) + plot_data = '{}/iobenchmark-{}-raw.log'.format(global_vars['LogDir'], name) + + # Adjust Y-axis range to either 1000 or roughly max rate + 200 + ## Round up to the nearest 100 and then add 200 + y_range = (math.ceil(max_rate/100)*100) + 200 + + # Run gnuplot commands + g = Gnuplot.Gnuplot() + g('reset') + g('set output "{}"'.format(out_path)) + g('set terminal png large size 660,300 truecolor font "Noto Sans,11"') + g('set title "I/O Benchmark"') + g('set yrange [0:{}]'.format(y_range)) + g('set style data lines') + g('plot "{data}" title "{size} ({tran}) {model} {serial}"'.format( + data=plot_data, + size=dev['lsblk'].get('size', '???b'), + tran=dev['lsblk'].get('tran', '???'), + model=dev['lsblk'].get('model', 'Unknown Model'), + serial=dev['lsblk'].get('serial', 'Unknown Serial'), + )) + + # Cleanup + g.close() + del(g) + + return out_path + +def generate_horizontal_graph(rates, oneline=False): + """Generate two-line horizontal graph from rates, returns str.""" + line_1 = '' + line_2 = '' + line_3 = '' + line_4 = '' + for r in rates: + step = get_graph_step(r, scale=32) + if oneline: + step = get_graph_step(r, scale=8) + + # Set color + r_color = COLORS['CLEAR'] + if r < IO_VARS['Threshold Graph Fail']: + r_color = COLORS['RED'] + elif r < IO_VARS['Threshold Graph Warn']: + r_color = COLORS['YELLOW'] + elif r > IO_VARS['Threshold Graph Great']: + r_color = COLORS['GREEN'] + + # Build graph + full_block = '{}{}'.format(r_color, IO_VARS['Graph Horizontal'][-1]) + if step >= 24: + line_1 += '{}{}'.format(r_color, IO_VARS['Graph Horizontal'][step-24]) + line_2 += full_block + line_3 += full_block + line_4 += full_block + elif step >= 16: + line_1 += ' ' + line_2 += '{}{}'.format(r_color, IO_VARS['Graph Horizontal'][step-16]) + line_3 += full_block + line_4 += full_block + elif step >= 8: + line_1 += ' ' + line_2 += ' ' + line_3 += '{}{}'.format(r_color, IO_VARS['Graph Horizontal'][step-8]) + line_4 += full_block + else: + line_1 += ' ' + line_2 += ' ' + line_3 += ' ' + line_4 += '{}{}'.format(r_color, IO_VARS['Graph Horizontal'][step]) + line_1 += COLORS['CLEAR'] + line_2 += COLORS['CLEAR'] + line_3 += COLORS['CLEAR'] + line_4 += COLORS['CLEAR'] + if oneline: + return line_4 + else: + return '\n'.join([line_1, line_2, line_3, line_4]) + +def get_graph_step(rate, scale=16): + """Get graph step based on rate and scale, returns int.""" + m_rate = rate / (1024**2) + step = 0 + scale_name = 'Scale {}'.format(scale) + for x in range(scale-1, -1, -1): + # Iterate over scale backwards + if m_rate >= IO_VARS[scale_name][x]: + step = x + break + return step + +def get_osticket_number(): + """Get ticket number and confirm with name from osTicket DB.""" + ticket_number = None + if not ost_db['Cursor']: + # No DB access, return None to disable integration + return None + while ticket_number is None: + print_standard(' ') + _input = input('Enter ticket number (or leave blank to disable): ') + if re.match(r'^\s*$', _input): + if ask('Disable osTicket integration for this run?'): + return None + else: + continue + if not re.match(r'^([0-9]+)$', _input): + continue + _name = osticket_get_ticket_name(_input) + if _name: + print_standard('You have selected ticket #{} {}'.format( + _input, _name)) + if ask('Is this correct?'): + ticket_number = _input + return ticket_number + def get_read_rate(s): """Get read rate in bytes/s from dd progress output.""" real_rate = None @@ -56,7 +273,9 @@ def get_read_rate(s): def get_smart_details(dev): """Get SMART data for dev if possible, returns dict.""" - cmd = 'sudo smartctl --all --json /dev/{}'.format(dev).split() + cmd = 'sudo smartctl --all --json {}{}'.format( + '' if '/dev/' in dev else '/dev/', + dev).split() result = run_program(cmd, check=False) try: return json.loads(result.stdout.decode()) @@ -64,12 +283,21 @@ def get_smart_details(dev): # Let other sections deal with the missing data return {} +def get_smart_value(smart_data, smart_id): + """Get SMART value from table, returns int or None.""" + value = None + table = smart_data.get('ata_smart_attributes', {}).get('table', []) + for row in table: + if str(row.get('id', '?')) == str(smart_id): + value = row.get('raw', {}).get('value', None) + return value + def get_status_color(s): """Get color based on status, returns str.""" color = COLORS['CLEAR'] - if s in ['Denied', 'NS', 'OVERRIDE', 'Unknown']: + if s in ['Denied', 'ERROR', 'NS', 'OVERRIDE']: color = COLORS['RED'] - elif s in ['Aborted', 'Working', 'Skipped']: + elif s in ['Aborted', 'Unknown', 'Working', 'Skipped']: color = COLORS['YELLOW'] elif s in ['CS']: color = COLORS['GREEN'] @@ -122,16 +350,29 @@ def menu_diags(*args): action_entries = actions, spacer = '──────────────────────────') if selection.isnumeric(): + ticket_number = None if diag_modes[int(selection)-1]['Name'] != 'Quick drive test': + clear_screen() + print_standard(' ') + result = try_and_print( + message='Connecting to osTicket database...', + function=connect_to_db, + width=40) + if not result['CS']: + print_warning('osTicket integration disabled for this run.') + pause() + ticket_number = get_osticket_number() + disconnect_from_db() # Save log for non-quick tests - ticket_number = get_ticket_number() - global_vars['LogDir'] = '{}/Logs/{}'.format( + global_vars['Date-Time'] = time.strftime("%Y-%m-%d_%H%M_%z") + global_vars['LogDir'] = '{}/Logs/{}_{}'.format( global_vars['Env']['HOME'], - ticket_number if ticket_number else global_vars['Date-Time']) + ticket_number, + global_vars['Date-Time']) os.makedirs(global_vars['LogDir'], exist_ok=True) global_vars['LogFile'] = '{}/Hardware Diagnostics.log'.format( global_vars['LogDir']) - run_tests(diag_modes[int(selection)-1]['Tests']) + run_tests(diag_modes[int(selection)-1]['Tests'], ticket_number) elif selection == 'A': run_program(['hw-diags-audio'], check=False, pipe=False) pause('Press Enter to return to main menu... ') @@ -147,13 +388,346 @@ def menu_diags(*args): 'pipes -t 0 -t 1 -t 2 -t 3 -p 5 -R -r 4000'.split(), check=False, pipe=False) elif selection == 'R': - run_program(['reboot']) + run_program(['systemctl', 'reboot']) elif selection == 'S': - run_program(['poweroff']) + run_program(['systemctl', 'poweroff']) elif selection == 'Q': break -def run_badblocks(): + # Done + disconnect_from_db(reset_errors=True) + +def osticket_get_ticket_name(ticket_id): + """Lookup ticket and return name as str.""" + ticket_name = 'Unknown' + if not ticket_id: + raise GenericError + if not ost_db['Cursor']: + # Skip section + return + + # Set command + sql_cmd = "SELECT name FROM `ost_ticket` WHERE `ticket_id` = {}".format( + ticket_id) + + # Run command + try: + ost_db['Cursor'].execute(sql_cmd) + for name in ost_db['Cursor']: + ticket_name = name[0] + return ticket_name + except: + ost_db['Errors'] = True + +def osticket_needs_attention(ticket_id): + """[DISABLED] Marks the ticket as "NEEDS ATTENTION" in osTicket.""" + return # This function has been DISABLED due to a repurposing of that flag + if not ticket_id: + raise GenericError + + # Connect to DB + connect_to_db() + if not ost_db['Cursor']: + # Skip section + return + + # Set command + sql_cmd = OST_SQL_SET_HOLD.format( + db_name=DB_NAME, + hold_type=OST_NEEDS_ATTENTION, + ticket_id=ticket_id) + + # Run command + try: + ost_db['Cursor'].execute(sql_cmd) + except: + ost_db['Errors'] = True + disconnect_from_db() + +def osticket_post_reply(ticket_id, response): + """Post a reply to a ticket in osTicket.""" + if not ticket_id: + raise GenericError + + # Connect to DB + connect_to_db() + if not ost_db['Cursor']: + # Skip section + return + + # Set command + sql_cmd = OST_SQL_POST_REPLY.format( + db_name=DB_NAME, + ticket_id=ticket_id, + staff_id=OST_STAFF_ID, + staff_name=OST_STAFF_NAME, + response=response, + created=time.strftime("%Y-%m-%d %H:%M:%S")) + + # Run command + try: + ost_db['Cursor'].execute(sql_cmd) + except: + ost_db['Errors'] = True + disconnect_from_db() + +def osticket_set_drive_result(ticket_id, passed): + """Marks the pass/fail box for the drive(s) in osTicket.""" + if not ticket_id: + raise GenericError + + # Connect to DB + connect_to_db() + if not ost_db['Cursor']: + # Skip section + return + + # Set command + sql_cmd = OST_SQL_SET_FLAG.format( + db_name=DB_NAME, + flag=OST_DRIVE_FLAG, + value=OST_DRIVE_PASSED if passed else OST_DRIVE_FAILED, + ticket_id=ticket_id) + + # Run command + try: + ost_db['Cursor'].execute(sql_cmd) + except: + ost_db['Errors'] = True + disconnect_from_db() + +def pad_with_dots(s, left_pad=True): + """Replace ' ' padding with '..' for osTicket posts.""" + s = str(s).replace(' ', '..') + if '.' in s: + if left_pad: + s = '.' + s + else: + s = s + '.' + return s + +def post_drive_results(ticket_number): + """Post drive test results to osTicket.""" + tested = False + + # Check if test(s) were run + for t in ['NVMe/SMART', 'badblocks', 'iobenchmark']: + tested |= TESTS[t]['Enabled'] + if not tested or TESTS['NVMe/SMART']['Quick']: + # No tests were run so no post necessary + return + + # Build reports for all tested devices + for name, dev in sorted(TESTS['NVMe/SMART']['Devices'].items()): + dev_failed = False + dev_passed = True + dev_unknown = False + report = [] + + # Check all test results for dev + for t in ['NVMe/SMART', 'badblocks', 'iobenchmark']: + if not TESTS[t]['Enabled']: + continue + status = TESTS[t]['Status'].get(name, 'Unknown') + dev_failed |= status == 'NS' + dev_passed &= status == 'CS' + dev_unknown |= status in ('Working', 'Unknown') + + # Start drive report + if dev_failed: + report.append('Drive hardware diagnostics tests: FAILED') + elif dev_unknown: + report.append('Drive hardware diagnostics tests: UNKNOWN') + elif dev_passed: + report.append('Drive hardware diagnostics tests: Passed') + else: + report.append('Drive hardware diagnostics tests: INCOMPLETE') + report.append('') + + # Drive description + report.append('{size} ({tran}) {model} {serial}'.format( + size=dev['lsblk'].get('size', '???b'), + tran=dev['lsblk'].get('tran', '???'), + model=dev['lsblk'].get('model', 'Unknown Model'), + serial=dev['lsblk'].get('serial', 'Unknown Serial'), + )) + report.append('') + + # Warnings (if any) + if dev.get('NVMe Disk', False): + if dev['Quick Health OK']: + report.append('WARNING: NVMe support is still experimental') + else: + report.append('ERROR: NVMe disk is reporting critical warnings') + report.append('') + elif not dev['SMART Support']: + report.append('ERROR: Unable to retrieve SMART data') + report.append('') + elif not dev['SMART Pass']: + report.append('ERROR: SMART overall-health assessment result: FAILED') + report.append('') + + # NVMe/SMART Attributes + if dev.get('NVMe Disk', False): + report.append('NVMe Attributes ({}):'.format( + TESTS['NVMe/SMART']['Status'][name])) + for attrib in sorted(ATTRIBUTES['NVMe'].keys()): + if attrib in dev['nvme-cli']: + report.append('{attrib:30}{value}'.format( + attrib=attrib, + value=dev['nvme-cli'][attrib], + )) + report[-1] = report[-1].strip().replace(' ', '.') + report[-1] = report[-1].replace('_', ' ') + elif dev['smartctl'].get('ata_smart_attributes', None): + report.append('SMART Attributes ({}):'.format( + TESTS['NVMe/SMART']['Status'][name])) + s_table = dev['smartctl'].get('ata_smart_attributes', {}).get( + 'table', {}) + s_table = {a.get('id', 'Unknown'): a for a in s_table} + for attrib in sorted(ATTRIBUTES['SMART'].keys()): + if attrib in s_table: + # Pad attributewith dots for osTicket + hex_str = str(hex(int(attrib))).upper()[2:] + hex_str = pad_with_dots('{:>2}'.format(hex_str)) + dec_str = pad_with_dots('{:>3}'.format(attrib)) + val_str = '{:<20}'.format(s_table[attrib]['raw']['string']) + val_str = pad_with_dots(val_str, left_pad=False) + report.append('{:>2}/{:>3}: {} ({})'.format( + hex_str, + dec_str, + val_str, + s_table[attrib]['name'], + )) + report[-1] = report[-1].replace('_', ' ') + report.append('') + + # SMART Short test result + if TESTS['NVMe/SMART']['Short Test'][name]: + report.append('SMART short test result: {}'.format( + TESTS['NVMe/SMART']['Short Test'][name])) + report.append('') + + # badblocks + bb_status = TESTS['badblocks']['Status'].get(name, None) + if TESTS['badblocks']['Enabled'] and bb_status not in ['Denied', 'Skipped', 'Aborted']: + report.append('badblocks ({}):'.format( + TESTS['badblocks']['Status'][name])) + bb_result = TESTS['badblocks']['Results'].get( + name, + 'ERROR: Failed to read log.') + for line in bb_result.splitlines(): + line = line.strip() + if not line: + continue + if re.search('Pass completed', line, re.IGNORECASE): + line = re.sub( + r'Pass completed,?\s+', + r'', + line, + re.IGNORECASE) + report.append(line) + report.append('') + + # I/O Benchmark + io_status = TESTS['iobenchmark']['Status'].get(name, None) + if TESTS['iobenchmark']['Enabled'] and io_status not in ['Denied', 'ERROR', 'Skipped', 'Aborted']: + one_line_graph = generate_horizontal_graph( + rates=TESTS['iobenchmark']['Data'][name]['Merged Rates'], + oneline=True) + for c in COLORS.values(): + one_line_graph = one_line_graph.replace(c, '') + report.append('I/O Benchmark ({}):'.format( + TESTS['iobenchmark']['Status'][name])) + report.append(one_line_graph) + report.append('{}'.format( + TESTS['iobenchmark']['Data'][name]['Avg/Min/Max'])) + + # Export PNG + try: + png_path = export_png_graph(name, dev) + except: + png_path = None + + # imgur + try: + url = upload_to_imgur(png_path) + report.append('Imgur: {}'.format(url)) + except: + # Oh well + pass + + # Nextcloud + try: + url = upload_to_nextcloud(png_path, ticket_number, name) + report.append('Nextcloud: {}'.format(url)) + except: + # Oh well + pass + + # Used space + report.append('') + report.append('Volumes:') + if dev_failed or dev_unknown: + report.append('Skipped due to error(s) above.') + else: + volume_report = mount_volumes( + all_devices=False, + device_path='/dev/{}'.format(name)) + for vol_path, vol_data in sorted(volume_report.items()): + vol_report = [ + vol_path, + '{q}{label}{q}'.format( + label=vol_data.get('label', ''), + q='"' if vol_data.get('label', '') else ''), + '{}'.format( + vol_data.get('size', 'UNKNOWN').upper()), + '{}'.format( + vol_data.get('size_used', 'UNKNOWN').upper()), + '{}'.format( + vol_data.get('size_avail', 'UNKNOWN').upper()), + ] + if vol_report[2][-1:] != 'N': + vol_report[2] = '{} {}B'.format( + vol_report[2][:-1], + vol_report[2][-1:]) + vol_report = [v.strip().replace(' ', '_') for v in vol_report] + for i in range(5): + pad = 8 + if i < 2: + pad += 4 * (2 - i) + vol_report[i] = pad_with_dots( + left_pad=False, + s='{s:<{p}}'.format( + s=vol_report[i], + p=pad)) + vol_report[-1] = re.sub(r'\.*$', '', vol_report[-1]) + vol_report = [v.replace('_', ' ') for v in vol_report] + line = '{}..{}..Total..{}..(Used..{}..Free..{})'.format( + *vol_report) + report.append(line) + + # Post reply for drive + osticket_post_reply( + ticket_id=ticket_number, + response='\n'.join(report)) + + # Mark ticket HDD/SSD pass/fail checkbox (as needed) + if dev_failed: + osticket_set_drive_result( + ticket_id=ticket_number, + passed=False) + elif dev_unknown: + pass + elif dev_passed: + osticket_set_drive_result( + ticket_id=ticket_number, + passed=True) + + # Mark ticket as NEEDS ATTENTION + osticket_needs_attention(ticket_id=ticket_number) + +def run_badblocks(ticket_number): """Run a read-only test for all detected disks.""" aborted = False clear_screen() @@ -194,25 +768,28 @@ def run_badblocks(): print_standard('Done', timestamp=False) # Check results - with open(progress_file, 'r') as f: - text = f.read() - TESTS['badblocks']['Results'][name] = text - r = re.search(r'Pass completed.*0/0/0 errors', text) - if r: - TESTS['badblocks']['Status'][name] = 'CS' - else: - TESTS['badblocks']['Status'][name] = 'NS' + if os.path.exists(progress_file): + with open(progress_file, 'r') as f: + text = f.read() + TESTS['badblocks']['Results'][name] = text + r = re.search(r'Pass completed.*0/0/0 errors', text) + if r: + TESTS['badblocks']['Status'][name] = 'CS' + else: + TESTS['badblocks']['Status'][name] = 'NS' - # Move temp file - shutil.move(progress_file, '{}/badblocks-{}.log'.format( - global_vars['LogDir'], name)) + # Move temp file + shutil.move(progress_file, '{}/badblocks-{}.log'.format( + global_vars['LogDir'], name)) + else: + TESTS['badblocks']['Status'][name] = 'NS' update_progress() # Done run_program('tmux kill-pane -a'.split(), check=False) pass -def run_iobenchmark(): +def run_iobenchmark(ticket_number): """Run a read-only test for all detected disks.""" aborted = False clear_screen() @@ -249,42 +826,156 @@ def run_iobenchmark(): TESTS['iobenchmark']['Status'][name] = 'Working' update_progress() print_standard(' /dev/{:11} '.format(name+'...'), end='', flush=True) - run_program('tmux split-window -dl 5 {} {} {}'.format( - 'hw-diags-iobenchmark', - '/dev/{}'.format(name), - progress_file).split()) - wait_for_process('dd') + + # Get dev size + cmd = 'sudo lsblk -bdno size /dev/{}'.format(name) + try: + result = run_program(cmd.split()) + dev_size = result.stdout.decode().strip() + dev_size = int(dev_size) + except: + # Failed to get dev size, requires manual testing instead + TESTS['iobenchmark']['Status'][name] = 'ERROR' + continue + if dev_size < IO_VARS['Minimum Dev Size']: + TESTS['iobenchmark']['Status'][name] = 'ERROR' + continue + + # Calculate dd values + ## test_size is the area to be read in bytes + ## If the dev is < 10Gb then it's the whole dev + ## Otherwise it's the larger of 10Gb or 1% of the dev + ## + ## test_chunks is the number of groups of "Chunk Size" in test_size + ## This number is reduced to a multiple of the graph width in + ## order to allow for the data to be condensed cleanly + ## + ## skip_blocks is the number of "Block Size" groups not tested + ## skip_count is the number of blocks to skip per test_chunk + ## skip_extra is how often to add an additional skip block + ## This is needed to ensure an even testing across the dev + ## This is calculated by using the fractional amount left off + ## of the skip_count variable + test_size = min(IO_VARS['Minimum Test Size'], dev_size) + test_size = max( + test_size, dev_size*IO_VARS['Alt Test Size Factor']) + test_chunks = int(test_size // IO_VARS['Chunk Size']) + test_chunks -= test_chunks % IO_VARS['Graph Horizontal Width'] + test_size = test_chunks * IO_VARS['Chunk Size'] + skip_blocks = int((dev_size - test_size) // IO_VARS['Block Size']) + skip_count = int((skip_blocks / test_chunks) // 1) + skip_extra = 0 + try: + skip_extra = 1 + int(1 / ((skip_blocks / test_chunks) % 1)) + except ZeroDivisionError: + # skip_extra == 0 is fine + pass + + # Open dd progress pane after initializing file + with open(progress_file, 'w') as f: + f.write('') + sleep(1) + cmd = 'tmux split-window -dp 75 -PF #D tail -f {}'.format( + progress_file) + result = run_program(cmd.split()) + bottom_pane = result.stdout.decode().strip() + + # Run dd read tests + offset = 0 + TESTS['iobenchmark']['Data'][name] = { + 'Graph': [], + 'Read Rates': []} + for i in range(test_chunks): + i += 1 + s = skip_count + c = int(IO_VARS['Chunk Size'] / IO_VARS['Block Size']) + if skip_extra and i % skip_extra == 0: + s += 1 + cmd = 'sudo dd bs={b} skip={s} count={c} if=/dev/{n} of={o} iflag=direct'.format( + b=IO_VARS['Block Size'], + s=offset+s, + c=c, + n=name, + o='/dev/null') + result = run_program(cmd.split()) + result_str = result.stderr.decode().replace('\n', '') + cur_rate = get_read_rate(result_str) + TESTS['iobenchmark']['Data'][name]['Read Rates'].append( + cur_rate) + TESTS['iobenchmark']['Data'][name]['Graph'].append( + '{percent:0.1f} {rate}'.format( + percent=i/test_chunks*100, + rate=int(cur_rate/(1024**2)))) + if i % IO_VARS['Progress Refresh Rate'] == 0: + # Update vertical graph + update_io_progress( + percent=i/test_chunks*100, + rate=cur_rate, + progress_file=progress_file) + # Update offset + offset += s + c print_standard('Done', timestamp=False) - # Check results - with open(progress_file, 'r') as f: - text = f.read() - io_stats = text.replace('\r', '\n').split('\n') - try: - io_stats = [get_read_rate(s) for s in io_stats] - io_stats = [float(s/1048576) for s in io_stats if s] - TESTS['iobenchmark']['Results'][name] = 'Read speed: {:3.1f} MB/s (Min: {:3.1f}, Max: {:3.1f})'.format( - sum(io_stats) / len(io_stats), - min(io_stats), - max(io_stats)) - TESTS['iobenchmark']['Status'][name] = 'CS' - except: - # Requires manual testing - TESTS['iobenchmark']['Status'][name] = 'NS' + # Close bottom pane + run_program(['tmux', 'kill-pane', '-t', bottom_pane]) - # Move temp file - shutil.move(progress_file, '{}/iobenchmark-{}.log'.format( - global_vars['LogDir'], name)) + # Build report + avg_min_max = 'Average read speed: {:3.1f} MB/s (Min: {:3.1f}, Max: {:3.1f})'.format( + sum(TESTS['iobenchmark']['Data'][name]['Read Rates'])/len( + TESTS['iobenchmark']['Data'][name]['Read Rates'])/(1024**2), + min(TESTS['iobenchmark']['Data'][name]['Read Rates'])/(1024**2), + max(TESTS['iobenchmark']['Data'][name]['Read Rates'])/(1024**2)) + TESTS['iobenchmark']['Data'][name]['Avg/Min/Max'] = avg_min_max + TESTS['iobenchmark']['Data'][name]['Merged Rates'] = [] + pos = 0 + width = int(test_chunks / IO_VARS['Graph Horizontal Width']) + for i in range(IO_VARS['Graph Horizontal Width']): + # Append average rate for WIDTH number of rates to new array + TESTS['iobenchmark']['Data'][name]['Merged Rates'].append(sum( + TESTS['iobenchmark']['Data'][name]['Read Rates'][pos:pos+width])/width) + pos += width + report = generate_horizontal_graph( + TESTS['iobenchmark']['Data'][name]['Merged Rates']) + report += '\n{}'.format(avg_min_max) + TESTS['iobenchmark']['Results'][name] = report + + # Set CS/NS + min_read = min(TESTS['iobenchmark']['Data'][name]['Read Rates']) + avg_read = sum( + TESTS['iobenchmark']['Data'][name]['Read Rates'])/len( + TESTS['iobenchmark']['Data'][name]['Read Rates']) + dev_rotational = dev['lsblk'].get('rota', None) + if dev_rotational == "0": + # Use SSD scale + thresh_min = IO_VARS['Threshold SSD Min'] + thresh_high_avg = IO_VARS['Threshold SSD High Avg'] + thresh_low_avg = IO_VARS['Threshold SSD Low Avg'] + else: + # Use HDD scale + thresh_min = IO_VARS['Threshold HDD Min'] + thresh_high_avg = IO_VARS['Threshold HDD High Avg'] + thresh_low_avg = IO_VARS['Threshold HDD Low Avg'] + if min_read <= thresh_min and avg_read <= thresh_high_avg: + TESTS['iobenchmark']['Status'][name] = 'NS' + elif avg_read <= thresh_low_avg: + TESTS['iobenchmark']['Status'][name] = 'NS' + else: + TESTS['iobenchmark']['Status'][name] = 'CS' + + # Save logs + dest_filename = '{}/iobenchmark-{}.log'.format(global_vars['LogDir'], name) + shutil.move(progress_file, dest_filename) + with open(dest_filename.replace('.', '-raw.'), 'a') as f: + f.write('\n'.join(TESTS['iobenchmark']['Data'][name]['Graph'])) update_progress() # Done run_program('tmux kill-pane -a'.split(), check=False) pass -def run_mprime(): +def run_mprime(ticket_number): """Run Prime95 for MPRIME_LIMIT minutes while showing the temps.""" aborted = False - clear_screen() print_log('\nStart Prime95 test') TESTS['Prime95']['Status'] = 'Working' update_progress() @@ -296,16 +987,24 @@ def run_mprime(): TESTS['Progress Out']).split()) run_program('tmux split-window -bd watch -c -n1 -t hw-sensors'.split()) run_program('tmux resize-pane -y 3'.split()) - + # Start test run_program(['apple-fans', 'max']) - print_standard('Running Prime95 for {} minutes'.format(MPRIME_LIMIT)) - print_warning('If running too hot, press CTL+c to abort the test') try: - sleep(int(MPRIME_LIMIT)*60) + for i in range(int(MPRIME_LIMIT)): + clear_screen() + min_left = int(MPRIME_LIMIT) - i + print_standard('Running Prime95 ({} minute{} left)'.format( + min_left, + 's' if min_left != 1 else '')) + print_warning('If running too hot, press CTRL+c to abort the test') + sleep(60) except KeyboardInterrupt: - # Catch CTL+C + # Catch CTRL+C aborted = True + TESTS['Prime95']['Status'] = 'Aborted' + print_warning('\nAborted.') + update_progress() # Save "final" temps run_program( @@ -353,15 +1052,7 @@ def run_mprime(): TESTS['Prime95']['CS'] = bool(r) # Update status - if aborted: - TESTS['Prime95']['Status'] = 'Aborted' - print_warning('\nAborted.') - update_progress() - if TESTS['NVMe/SMART']['Enabled'] or TESTS['badblocks']['Enabled']: - if not ask('Proceed to next test?'): - run_program('tmux kill-pane -a'.split()) - raise GenericError - else: + if not aborted: if TESTS['Prime95']['NS']: TESTS['Prime95']['Status'] = 'NS' elif TESTS['Prime95']['CS']: @@ -370,10 +1061,53 @@ def run_mprime(): TESTS['Prime95']['Status'] = 'Unknown' update_progress() + # Build osTicket report + if ticket_number: + report = ['Prime95 ({}):'.format(TESTS['Prime95']['Status'])] + log_path = '{}/prime.log'.format(global_vars['LogDir']) + try: + with open(log_path, 'r') as f: + for line in f.readlines(): + line = line.strip() + r = re.search('(completed \d+ tests.*)', line, re.IGNORECASE) + if r: + report.append(r.group(1)) + except: + report.append('ERROR: Failed to read log.') + report.append('') + report.append('Final temps:') + log_path = '{}/Final Temps.log'.format(global_vars['LogDir']) + try: + with open(log_path, 'r') as f: + for line in f.readlines(): + line = line.strip() + if not line: + # Stop after CPU temp(s) + break + report.append(line) + except: + report.append('ERROR: Failed to read log.') + + # Upload osTicket report + osticket_post_reply( + ticket_id=ticket_number, + response='\n'.join(report)) + + if aborted: + if TESTS['NVMe/SMART']['Enabled'] or TESTS['badblocks']['Enabled']: + if not ask('Proceed to next test?'): + for name in TESTS['NVMe/SMART']['Devices'].keys(): + for t in ['NVMe/SMART', 'badblocks', 'iobenchmark']: + cur_status = TESTS[t]['Status'][name] + if cur_status not in ['CS', 'Denied', 'NS']: + TESTS[t]['Status'][name] = 'Aborted' + run_program('tmux kill-pane -a'.split()) + raise GenericError + # Done run_program('tmux kill-pane -a'.split()) -def run_nvme_smart(): +def run_nvme_smart(ticket_number): """Run the built-in NVMe or SMART test for all detected disks.""" aborted = False clear_screen() @@ -395,6 +1129,7 @@ def run_nvme_smart(): # Run for name, dev in sorted(TESTS['NVMe/SMART']['Devices'].items()): + TESTS['NVMe/SMART']['Short Test'][name] = None cur_status = TESTS['NVMe/SMART']['Status'][name] if cur_status == 'OVERRIDE': # Skipping test per user request @@ -425,7 +1160,7 @@ def run_nvme_smart(): run_program( 'sudo smartctl -t short /dev/{}'.format(name).split(), check=False) - + # Wait and show progress (in 10 second increments) for iteration in range(int(test_length*60/10)): # Update SMART data @@ -460,18 +1195,24 @@ def run_nvme_smart(): 'passed', False) if test_passed: TESTS['NVMe/SMART']['Status'][name] = 'CS' + TESTS['NVMe/SMART']['Short Test'][name] = 'CS' else: TESTS['NVMe/SMART']['Status'][name] = 'NS' + TESTS['NVMe/SMART']['Short Test'][name] = 'NS' update_progress() print_standard('Done', timestamp=False) # Done run_program('tmux kill-pane -a'.split(), check=False) -def run_tests(tests): +def run_tests(tests, ticket_number=None): """Run selected hardware test(s).""" - print_log('Starting Hardware Diagnostics') - print_log('\nRunning tests: {}'.format(', '.join(tests))) + clear_screen() + print_standard('Starting Hardware Diagnostics') + if ticket_number: + print_standard(' For osTicket #{}'.format(ticket_number)) + print_standard(' ') + print_standard('Running tests: {}'.format(', '.join(tests))) # Enable selected tests for t in ['Prime95', 'NVMe/SMART', 'badblocks', 'iobenchmark']: TESTS[t]['Enabled'] = t in tests @@ -479,6 +1220,7 @@ def run_tests(tests): # Initialize if TESTS['NVMe/SMART']['Enabled'] or TESTS['badblocks']['Enabled'] or TESTS['iobenchmark']['Enabled']: + print_standard(' ') scan_disks() update_progress() @@ -486,22 +1228,24 @@ def run_tests(tests): mprime_aborted = False if TESTS['Prime95']['Enabled']: try: - run_mprime() + run_mprime(ticket_number) except GenericError: mprime_aborted = True if not mprime_aborted: if TESTS['NVMe/SMART']['Enabled']: - run_nvme_smart() + run_nvme_smart(ticket_number) if TESTS['badblocks']['Enabled']: - run_badblocks() + run_badblocks(ticket_number) if TESTS['iobenchmark']['Enabled']: - run_iobenchmark() - + run_iobenchmark(ticket_number) + # Show results + if ticket_number: + post_drive_results(ticket_number) show_results() # Open log - if not TESTS['NVMe/SMART']['Quick']: + if not TESTS['NVMe/SMART']['Quick'] and ENABLED_OPEN_LOGS: try: popen_program(['nohup', 'leafpad', global_vars['LogFile']], pipe=True) except Exception: @@ -509,12 +1253,16 @@ def run_tests(tests): global_vars['LogFile'])) pause('Press Enter to exit...') -def scan_disks(): +def scan_disks(full_paths=False, only_path=None): """Scan for disks eligible for hardware testing.""" - clear_screen() # Get eligible disk list - result = run_program(['lsblk', '-J', '-O']) + cmd = ['lsblk', '-J', '-O'] + if full_paths: + cmd.append('-p') + if only_path: + cmd.append(only_path) + result = run_program(cmd) json_data = json.loads(result.stdout.decode()) devs = {} for d in json_data.get('blockdevices', []): @@ -526,23 +1274,33 @@ def scan_disks(): TESTS['iobenchmark']['Status'][d['name']] = 'Pending' else: # Skip WizardKit devices - wk_label = '{}_LINUX'.format(KIT_NAME_SHORT) - if wk_label not in [c.get('label', '') for c in d.get('children', [])]: + skip_dev=False + wk_label_regex = r'{}_(LINUX|UFD)'.format(KIT_NAME_SHORT) + for c in d.get('children', []): + r = re.search( + wk_label_regex, c.get('label', ''), re.IGNORECASE) + skip_dev = bool(r) + if not skip_dev: devs[d['name']] = {'lsblk': d} TESTS['NVMe/SMART']['Status'][d['name']] = 'Pending' TESTS['badblocks']['Status'][d['name']] = 'Pending' TESTS['iobenchmark']['Status'][d['name']] = 'Pending' - + for dev, data in devs.items(): # Get SMART attributes run_program( - cmd = 'sudo smartctl -s on /dev/{}'.format(dev).split(), + cmd = 'sudo smartctl -s on {}{}'.format( + '' if full_paths else '/dev/', + dev).split(), check = False) data['smartctl'] = get_smart_details(dev) - + # Get NVMe attributes if data['lsblk']['tran'] == 'nvme': cmd = 'sudo nvme smart-log /dev/{} -o json'.format(dev).split() + cmd = 'sudo nvme smart-log {}{} -o json'.format( + '' if full_paths else '/dev/', + dev).split() result = run_program(cmd, check=False) try: data['nvme-cli'] = json.loads(result.stdout.decode()) @@ -560,6 +1318,12 @@ def scan_disks(): ] if data.get('NVMe Disk', False): crit_warn = data['nvme-cli'].get('critical_warning', 1) + if crit_warn == 0: + dev_name = data['lsblk']['name'] + data['Quick Health OK'] = True + TESTS['NVMe/SMART']['Status'][dev_name] = 'CS' + else: + data['Quick Health OK'] = False data['Quick Health OK'] = True if crit_warn == 0 else False elif set(wanted_smart_list).issubset(data['smartctl'].keys()): data['SMART Pass'] = data['smartctl'].get('smart_status', {}).get( @@ -569,38 +1333,52 @@ def scan_disks(): else: data['Quick Health OK'] = False data['SMART Support'] = False - + # Ask for manual overrides if necessary - if not data['Quick Health OK'] and (TESTS['badblocks']['Enabled'] or TESTS['iobenchmark']['Enabled']): + if TESTS['badblocks']['Enabled'] or TESTS['iobenchmark']['Enabled']: show_disk_details(data) - print_warning("WARNING: Health can't be confirmed for: {}".format( - '/dev/{}'.format(dev))) - dev_name = data['lsblk']['name'] - print_standard(' ') - if ask('Run tests on this device anyway?'): - TESTS['NVMe/SMART']['Status'][dev_name] = 'OVERRIDE' - else: - TESTS['NVMe/SMART']['Status'][dev_name] = 'NS' - TESTS['badblocks']['Status'][dev_name] = 'Denied' - TESTS['iobenchmark']['Status'][dev_name] = 'Denied' - print_standard(' ') # In case there's more than one "OVERRIDE" disk + needs_override = False + if not data['Quick Health OK']: + needs_override = True + print_warning( + "WARNING: Health can't be confirmed for: /dev/{}".format(dev)) + if get_smart_value(data['smartctl'], '199'): + # SMART attribute present and it's value is non-zero + needs_override = True + print_warning( + 'WARNING: SMART 199/C7 error detected on /dev/{}'.format(dev)) + print_standard(' (Have you tried swapping the drive cable?)') + if needs_override: + dev_name = data['lsblk']['name'] + print_standard(' ') + if ask('Run tests on this device anyway?'): + TESTS['NVMe/SMART']['Status'][dev_name] = 'OVERRIDE' + else: + TESTS['NVMe/SMART']['Status'][dev_name] = 'Skipped' + TESTS['badblocks']['Status'][dev_name] = 'Denied' + TESTS['iobenchmark']['Status'][dev_name] = 'Denied' + print_standard(' ') # In case there's more than one "OVERRIDE" disk TESTS['NVMe/SMART']['Devices'] = devs TESTS['badblocks']['Devices'] = devs TESTS['iobenchmark']['Devices'] = devs + return devs -def show_disk_details(dev): +def show_disk_details(dev, only_attributes=False): """Display disk details.""" dev_name = dev['lsblk']['name'] - # Device description - print_info('Device: /dev/{}'.format(dev['lsblk']['name'])) - print_standard(' {:>4} ({}) {} {}'.format( - str(dev['lsblk'].get('size', '???b')).strip(), - str(dev['lsblk'].get('tran', '???')).strip().upper().replace( - 'NVME', 'NVMe'), - str(dev['lsblk'].get('model', 'Unknown Model')).strip(), - str(dev['lsblk'].get('serial', 'Unknown Serial')).strip(), - )) + if not only_attributes: + # Device description + print_info('Device: {}{}'.format( + '' if '/dev/' in dev['lsblk']['name'] else '/dev/', + dev['lsblk']['name'])) + print_standard(' {:>4} ({}) {} {}'.format( + str(dev['lsblk'].get('size', '???b')).strip(), + str(dev['lsblk'].get('tran', '???')).strip().upper().replace( + 'NVME', 'NVMe'), + str(dev['lsblk'].get('model', 'Unknown Model')).strip(), + str(dev['lsblk'].get('serial', 'Unknown Serial')).strip(), + )) # Warnings if dev.get('NVMe Disk', False): @@ -615,7 +1393,12 @@ def show_disk_details(dev): # Attributes if dev.get('NVMe Disk', False): - print_info('Attributes:') + if only_attributes: + print_info('SMART Attributes:', end='') + print_warning(' Updated: {}'.format( + time.strftime('%Y-%m-%d %H:%M %Z'))) + else: + print_info('Attributes:') for attrib, threshold in sorted(ATTRIBUTES['NVMe'].items()): if attrib in dev['nvme-cli']: print_standard( @@ -636,7 +1419,12 @@ def show_disk_details(dev): print_success(raw_str, timestamp=False) elif dev['smartctl'].get('ata_smart_attributes', None): # SMART attributes - print_info('Attributes:') + if only_attributes: + print_info('SMART Attributes:', end='') + print_warning(' Updated: {}'.format( + time.strftime('%Y-%m-%d %H:%M %Z'))) + else: + print_info('Attributes:') s_table = dev['smartctl'].get('ata_smart_attributes', {}).get( 'table', {}) s_table = {a.get('id', 'Unknown'): a for a in s_table} @@ -730,13 +1518,43 @@ def show_results(): and io_status not in ['Denied', 'OVERRIDE', 'Skipped']): print_info('Benchmark:') result = TESTS['iobenchmark']['Results'].get(name, '') - print_standard(' {}'.format(result)) + for line in result.split('\n'): + print_standard(' {}'.format(line)) print_standard(' ') + # osTicket + if ost_db['Errors']: + print_warning('WARNING: Failed to post result(s) to osTicket') + print_standard(' ') + # Done pause('Press Enter to return to main menu... ') run_program('tmux kill-pane -a'.split()) +def update_io_progress(percent, rate, progress_file): + """Update I/O progress file.""" + bar_color = COLORS['CLEAR'] + rate_color = COLORS['CLEAR'] + step = get_graph_step(rate, scale=32) + if rate < IO_VARS['Threshold Graph Fail']: + bar_color = COLORS['RED'] + rate_color = COLORS['YELLOW'] + elif rate < IO_VARS['Threshold Graph Warn']: + bar_color = COLORS['YELLOW'] + rate_color = COLORS['YELLOW'] + elif rate > IO_VARS['Threshold Graph Great']: + bar_color = COLORS['GREEN'] + rate_color = COLORS['GREEN'] + line = ' {p:5.1f}% {b_color}{b:<4} {r_color}{r:6.1f} Mb/s{c}\n'.format( + p=percent, + b_color=bar_color, + b=IO_VARS['Graph Vertical'][step], + r_color=rate_color, + r=rate/(1024**2), + c=COLORS['CLEAR']) + with open(progress_file, 'a') as f: + f.write(line) + def update_progress(): """Update progress file.""" if 'Progress Out' not in TESTS: @@ -789,6 +1607,65 @@ def update_progress(): with open(TESTS['Progress Out'], 'w') as f: f.writelines(output) +def upload_to_imgur(image_path): + """Upload image to Imgur and return image url as str.""" + image_data = None + image_link = None + + # Bail early + if not image_path: + raise GenericError + + # Read image file and convert to base64 then convert to str + with open(image_path, 'rb') as f: + image_data = base64.b64encode(f.read()).decode() + + # POST image + url = "https://api.imgur.com/3/image" + boundary = '----WebKitFormBoundary7MA4YWxkTrZu0gW' + payload = ('--{boundary}\r\nContent-Disposition: form-data; ' + 'name="image"\r\n\r\n{data}\r\n--{boundary}--') + payload = payload.format(boundary=boundary, data=image_data) + headers = { + 'content-type': 'multipart/form-data; boundary={}'.format(boundary), + 'Authorization': 'Client-ID {}'.format(IMGUR_CLIENT_ID), + } + response = requests.request("POST", url, data=payload, headers=headers) + + # Return image link + if response.ok: + json_data = json.loads(response.text) + image_link = json_data['data']['link'] + return image_link + +def upload_to_nextcloud(image_path, ticket_number, dev_name): + """Upload image to Nextcloud server and return folder url as str.""" + image_data = None + + # Bail early + if not image_path: + raise GenericError + + # Read image file and convert to base64 + with open(image_path, 'rb') as f: + image_data = f.read() + + # PUT image + url = '{base_url}/{ticket_number}_iobenchmark_{dev_name}_{date}.png'.format( + base_url=BENCHMARK_SERVER['Url'], + ticket_number=ticket_number, + dev_name=dev_name, + date=global_vars.get('Date-Time', 'Unknown Date-Time')) + requests.put( + url, + data=image_data, + headers = {'X-Requested-With': 'XMLHttpRequest'}, + auth = (BENCHMARK_SERVER['User'], BENCHMARK_SERVER['Pass'])) + + # Return folder link + return BENCHMARK_SERVER['Short Url'] + if __name__ == '__main__': print("This file is not meant to be called directly.") +# vim: sts=4 sw=4 ts=4 diff --git a/.bin/Scripts/functions/info.py b/.bin/Scripts/functions/info.py index b81a4922..7630a766 100644 --- a/.bin/Scripts/functions/info.py +++ b/.bin/Scripts/functions/info.py @@ -68,7 +68,8 @@ def backup_file_list(): def backup_power_plans(): """Export current power plans.""" - os.makedirs(r'{BackupDir}\Power Plans'.format(**global_vars), exist_ok=True) + os.makedirs(r'{BackupDir}\Power Plans\{Date}'.format( + **global_vars), exist_ok=True) plans = run_program(['powercfg', '/L']) plans = plans.stdout.decode().splitlines() plans = [p for p in plans if re.search(r'^Power Scheme', p)] @@ -76,22 +77,24 @@ def backup_power_plans(): guid = re.sub(r'Power Scheme GUID:\s+([0-9a-f\-]+).*', r'\1', p) name = re.sub( r'Power Scheme GUID:\s+[0-9a-f\-]+\s+\(([^\)]+)\).*', r'\1', p) - out = r'{BackupDir}\Power Plans\{name}.pow'.format( + out = r'{BackupDir}\Power Plans\{Date}\{name}.pow'.format( name=name, **global_vars) if not os.path.exists(out): cmd = ['powercfg', '-export', out, guid] run_program(cmd, check=False) -def backup_registry(): +def backup_registry(overwrite=False): """Backup registry including user hives.""" extract_item('erunt', silent=True) cmd = [ global_vars['Tools']['ERUNT'], - r'{BackupDir}\Registry'.format(**global_vars), + r'{BackupDir}\Registry\{Date}'.format(**global_vars), 'sysreg', 'curuser', 'otherusers', '/noprogresswindow'] + if overwrite: + cmd.append('/noconfirmdelete') run_program(cmd) def get_folder_size(path): @@ -162,7 +165,7 @@ def get_installed_office(): def get_shell_path(folder, user='current'): """Get shell path using SHGetKnownFolderPath via knownpaths, returns str. - + NOTE: Only works for the current user. Code based on https://gist.github.com/mkropat/7550097 """ @@ -175,14 +178,14 @@ def get_shell_path(folder, user='current'): except AttributeError: # Unknown folder ID, ignore and return None pass - + if folderid: try: path = knownpaths.get_path(folderid, getattr(knownpaths.UserHandle, user)) except PathNotFoundError: # Folder not found, ignore and return None pass - + return path def get_user_data_paths(user): @@ -196,7 +199,7 @@ def get_user_data_paths(user): 'Extra Folders': {}, } unload_hive = False - + if user['Name'] == global_vars['Env']['USERNAME']: # We can use SHGetKnownFolderPath for the current user paths['Profile']['Path'] = get_shell_path('Profile') @@ -212,7 +215,7 @@ def get_user_data_paths(user): except Exception: # Profile path not found, leaving as None. pass - + # Shell folders (Prep) if not reg_path_exists(HKU, hive_path) and paths['Profile']['Path']: # User not logged-in, loading hive @@ -226,7 +229,7 @@ def get_user_data_paths(user): except subprocess.CalledProcessError: # Failed to load user hive pass - + # Shell folders shell_folders = r'{}\{}'.format(hive_path, REG_SHELL_FOLDERS) if (reg_path_exists(HKU, hive_path) @@ -252,7 +255,7 @@ def get_user_data_paths(user): if (folder not in paths['Shell Folders'] and os.path.exists(folder_path)): paths['Shell Folders'][folder] = {'Path': folder_path} - + # Extra folders if paths['Profile']['Path']: for folder in EXTRA_FOLDERS: @@ -260,12 +263,12 @@ def get_user_data_paths(user): folder=folder, **paths['Profile']) if os.path.exists(folder_path): paths['Extra Folders'][folder] = {'Path': folder_path} - + # Shell folders (cleanup) if unload_hive: cmd = ['reg', 'unload', r'HKU\{}'.format(TMP_HIVE_PATH)] run_program(cmd, check=False) - + # Done return paths @@ -277,7 +280,7 @@ def get_user_folder_sizes(users): with winreg.OpenKey(HKCU, r'Software\Sysinternals\Du', access=winreg.KEY_WRITE) as key: winreg.SetValueEx(key, 'EulaAccepted', 0, winreg.REG_DWORD, 1) - + for u in users: u.update(get_user_data_paths(u)) if u['Profile']['Path']: @@ -292,7 +295,7 @@ def get_user_folder_sizes(users): def get_user_list(): """Get user list via WMIC, returns list of dicts.""" users = [] - + # Get user info from WMI cmd = ['wmic', 'useraccount', 'get', '/format:csv'] try: @@ -300,10 +303,10 @@ def get_user_list(): except subprocess.CalledProcessError: # Meh, return empty list to avoid a full crash return users - + entries = out.stdout.decode().splitlines() entries = [e.strip().split(',') for e in entries if e.strip()] - + # Add user(s) to dict keys = entries[0] for e in entries[1:]: @@ -314,10 +317,10 @@ def get_user_list(): # Assume SIDs ending with 1000+ are "Standard" and others are "System" e['Type'] = 'Standard' if re.search(r'-1\d+$', e['SID']) else 'System' users.append(e) - + # Sort list users.sort(key=itemgetter('Name')) - + # Done return users @@ -368,26 +371,38 @@ def run_aida64(): '/TEXT', '/SILENT', '/SAFEST'] run_program(cmd, check=False) -def run_bleachbit(): +def run_bleachbit(cleaners=None, preview=True): """Run BleachBit preview and save log. - - This is a preview so no files should be deleted.""" - if not os.path.exists(global_vars['LogDir']+r'\BleachBit.log'): - extract_item('BleachBit', silent=True) - cmd = [global_vars['Tools']['BleachBit'], '--preview', '--preset'] - out = run_program(cmd, check=False) - # Save stderr - if out.stderr.decode().splitlines(): - with open(global_vars['LogDir']+r'\BleachBit.err', 'a', - encoding='utf-8') as f: - for line in out.stderr.decode().splitlines(): - f.write(line.strip() + '\n') - # Save stdout - with open(global_vars['LogDir']+r'\BleachBit.log', 'a', - encoding='utf-8') as f: - for line in out.stdout.decode().splitlines(): + + If preview is True then no files should be deleted.""" + error_path = r'{}\Tools\BleachBit.err'.format(global_vars['LogDir']) + log_path = error_path.replace('err', 'log') + extract_item('BleachBit', silent=True) + + # Safety check + if not cleaners: + # Disable cleaning and use preset config + cleaners = ['--preset'] + preview = True + + # Run + cmd = [ + global_vars['Tools']['BleachBit'], + '--preview' if preview else '--clean'] + cmd.extend(cleaners) + out = run_program(cmd, check=False) + + # Save stderr + if out.stderr.decode().splitlines(): + with open(error_path, 'a', encoding='utf-8') as f: + for line in out.stderr.decode().splitlines(): f.write(line.strip() + '\n') + # Save stdout + with open(log_path, 'a', encoding='utf-8') as f: + for line in out.stdout.decode().splitlines(): + f.write(line.strip() + '\n') + def show_disk_usage(disk): """Show free and used space for a specified disk.""" print_standard('{:5}'.format(disk.device.replace('/', ' ')), @@ -459,7 +474,7 @@ def show_os_name(): def show_temp_files_size(): """Show total size of temp files identified by BleachBit.""" size = None - with open(r'{LogDir}\BleachBit.log'.format(**global_vars), 'r') as f: + with open(r'{LogDir}\Tools\BleachBit.log'.format(**global_vars), 'r') as f: for line in f.readlines(): if re.search(r'^disk space to be recovered:', line, re.IGNORECASE): size = re.sub(r'.*: ', '', line.strip()) diff --git a/.bin/Scripts/functions/network.py b/.bin/Scripts/functions/network.py index 0d6beb3a..5735c486 100644 --- a/.bin/Scripts/functions/network.py +++ b/.bin/Scripts/functions/network.py @@ -3,6 +3,7 @@ ## Wizard Kit: Functions - Network import os +import shutil import sys # Init @@ -25,14 +26,9 @@ def connect_to_network(): # Bail if currently connected if is_connected(): return - - # LAN - if 'en' in net_ifs: - # Reload the tg3/broadcom driver (known fix for some Dell systems) - try_and_print(message='Reloading drivers...', function=reload_tg3) - + # WiFi - if not is_connected() and 'wl' in net_ifs: + if 'wl' in net_ifs: cmd = [ 'nmcli', 'dev', 'wifi', 'connect', WIFI_SSID, @@ -71,13 +67,6 @@ def speedtest(): output = [(a, float(b), c) for a, b, c in output] return ['{:10}{:6.2f} {}'.format(*line) for line in output] -def reload_tg3(): - """Reload tg3 module as a workaround for some Dell systems.""" - run_program(['sudo', 'modprobe', '-r', 'tg3']) - run_program(['sudo', 'modprobe', 'broadcom']) - run_program(['sudo', 'modprobe', 'tg3']) - sleep(5) - if __name__ == '__main__': print("This file is not meant to be called directly.") diff --git a/.bin/Scripts/functions/product_keys.py b/.bin/Scripts/functions/product_keys.py index 705f46e9..988d36fd 100644 --- a/.bin/Scripts/functions/product_keys.py +++ b/.bin/Scripts/functions/product_keys.py @@ -39,7 +39,7 @@ def extract_keys(): keys[product] = [] if key not in keys[product]: keys[product].append(key) - + # Done return keys diff --git a/.bin/Scripts/functions/repairs.py b/.bin/Scripts/functions/repairs.py index e4d5e74f..589dccc3 100644 --- a/.bin/Scripts/functions/repairs.py +++ b/.bin/Scripts/functions/repairs.py @@ -24,11 +24,11 @@ def run_chkdsk_scan(): raise GenericError # Save stderr - with open(r'{LogDir}\CHKDSK.err'.format(**global_vars), 'a') as f: + with open(r'{LogDir}\Tools\CHKDSK.err'.format(**global_vars), 'a') as f: for line in out.stderr.decode().splitlines(): f.write(line.strip() + '\n') # Save stdout - with open(r'{LogDir}\CHKDSK.log'.format(**global_vars), 'a') as f: + with open(r'{LogDir}\Tools\CHKDSK.log'.format(**global_vars), 'a') as f: for line in out.stdout.decode().splitlines(): f.write(line.strip() + '\n') @@ -50,7 +50,7 @@ def run_dism(repair=False): cmd = [ 'DISM', '/Online', '/Cleanup-Image', '/RestoreHealth', - r'/LogPath:"{LogDir}\DISM_RestoreHealth.log"'.format( + r'/LogPath:"{LogDir}\Tools\DISM_RestoreHealth.log"'.format( **global_vars), '-new_console:n', '-new_console:s33V'] else: @@ -58,7 +58,7 @@ def run_dism(repair=False): cmd = [ 'DISM', '/Online', '/Cleanup-Image', '/ScanHealth', - r'/LogPath:"{LogDir}\DISM_ScanHealth.log"'.format( + r'/LogPath:"{LogDir}\Tools\DISM_ScanHealth.log"'.format( **global_vars), '-new_console:n', '-new_console:s33V'] run_program(cmd, pipe=False, check=False, shell=True) @@ -67,7 +67,7 @@ def run_dism(repair=False): cmd = [ 'DISM', '/Online', '/Cleanup-Image', '/CheckHealth', - r'/LogPath:"{LogDir}\DISM_CheckHealth.log"'.format(**global_vars)] + r'/LogPath:"{LogDir}\Tools\DISM_CheckHealth.log"'.format(**global_vars)] result = run_program(cmd, shell=True).stdout.decode() # Check result if 'no component store corruption detected' not in result.lower(): @@ -93,11 +93,11 @@ def run_sfc_scan(): '/scannow'] out = run_program(cmd, check=False) # Save stderr - with open(r'{LogDir}\SFC.err'.format(**global_vars), 'a') as f: + with open(r'{LogDir}\Tools\SFC.err'.format(**global_vars), 'a') as f: for line in out.stderr.decode('utf-8', 'ignore').splitlines(): f.write(line.strip() + '\n') # Save stdout - with open(r'{LogDir}\SFC.log'.format(**global_vars), 'a') as f: + with open(r'{LogDir}\Tools\SFC.log'.format(**global_vars), 'a') as f: for line in out.stdout.decode('utf-8', 'ignore').splitlines(): f.write(line.strip() + '\n') # Check result @@ -116,7 +116,7 @@ def run_tdsskiller(): **global_vars), exist_ok=True) cmd = [ global_vars['Tools']['TDSSKiller'], - '-l', r'{LogDir}\TDSSKiller.log'.format(**global_vars), + '-l', r'{LogDir}\Tools\TDSSKiller.log'.format(**global_vars), '-qpath', r'{QuarantineDir}\TDSSKiller'.format(**global_vars), '-accepteula', '-accepteulaksn', '-dcexact', '-tdlfs'] diff --git a/.bin/Scripts/functions/setup.py b/.bin/Scripts/functions/setup.py index d08692b5..0c592623 100644 --- a/.bin/Scripts/functions/setup.py +++ b/.bin/Scripts/functions/setup.py @@ -1,10 +1,17 @@ # Wizard Kit: Functions - Setup from functions.common import * +from functions.update import * +from settings.sources import * # STATIC VARIABLES +HKU = winreg.HKEY_USERS +HKCR = winreg.HKEY_CLASSES_ROOT HKCU = winreg.HKEY_CURRENT_USER HKLM = winreg.HKEY_LOCAL_MACHINE +MOZILLA_FIREFOX_UBO_PATH = r'{}\{}\ublock_origin.xpi'.format( + os.environ.get('PROGRAMFILES'), + r'Mozilla Firefox\distribution\extensions') OTHER_RESULTS = { 'Error': { 'CalledProcessError': 'Unknown Error', @@ -25,16 +32,38 @@ SETTINGS_CLASSIC_START = { }, }, } +SETTINGS_ESET = { + r'Software\ESET\ESET Security\CurrentVersion\gui\UI_CONFIG': { + 'DWORD Items': { + 'FullScreenMode': 0, + 'ShowDesktopAlert': 0, + 'ShowSplash': 0, + }, + }, + } +SETTINGS_EXPLORER_SYSTEM_HW = { + # Enable RegBack + r'System\CurrentControlSet\Control\Session Manager\Configuration Manager': { + 'DWORD Items': {'EnablePeriodicBackup': 1}, + }, + } SETTINGS_EXPLORER_SYSTEM = { + # Disable Location Tracking + r'Software\Microsoft\Windows NT\CurrentVersion\Sensor\Overrides\{BFA794E4-F964-4FDB-90F6-51056BFE4B44}': { + 'DWORD Items': {'SensorPermissionState': 0}, + }, + r'System\CurrentControlSet\Services\lfsvc\Service\Configuration': { + 'Status': {'Value': 0}, + }, # Disable Telemetry - r'SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\DataCollection': { + r'Software\Microsoft\Windows\CurrentVersion\Policies\DataCollection': { 'DWORD Items': {'AllowTelemetry': 0}, }, - r'SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\DataCollection': { + r'Software\Microsoft\Windows\CurrentVersion\Policies\DataCollection': { 'DWORD Items': {'AllowTelemetry': 0}, 'WOW64_32': True, }, - r'SOFTWARE\Policies\Microsoft\Windows\DataCollection': { + r'Software\Policies\Microsoft\Windows\DataCollection': { 'DWORD Items': {'AllowTelemetry': 0}, }, # Disable Wi-Fi Sense @@ -44,27 +73,23 @@ SETTINGS_EXPLORER_SYSTEM = { r'Software\Microsoft\PolicyManager\default\WiFi\AllowAutoConnectToWiFiSenseHotspots': { 'DWORD Items': {'Value': 0}, }, - # Disable Location Tracking - r'SOFTWARE\Microsoft\Windows NT\CurrentVersion\Sensor\Overrides\{BFA794E4-F964-4FDB-90F6-51056BFE4B44}': { - 'DWORD Items': {'SensorPermissionState': 0}, - }, - r'System\CurrentControlSet\Services\lfsvc\Service\Configuration': { - 'Status': {'Value': 0}, + # Enable RegBack + r'System\CurrentControlSet\Control\Session Manager\Configuration Manager': { + 'DWORD Items': {'EnablePeriodicBackup': 1}, }, } SETTINGS_EXPLORER_USER = { - # Disable Cortana - r'Software\Microsoft\Personalization\Settings': { - 'DWORD Items': {'AcceptedPrivacyPolicy': 0}, + # Disable silently installed apps + r'Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager': { + 'DWORD Items': {'SilentInstalledAppsEnabled': 0}, }, - r'Software\Microsoft\InputPersonalization': { - 'DWORD Items': { - 'RestrictImplicitTextCollection': 1, - 'RestrictImplicitInkCollection': 1 - }, + # Disable Tips and Tricks + r'Software\Microsoft\Windows\CurrentVersion\ContentDeliveryManager': { + 'DWORD Items': {'SoftLandingEnabled ': 0}, }, - r'Software\Microsoft\InputPersonalization\TrainedDataStore': { - 'DWORD Items': {'HarvestContacts': 1}, + # Hide People bar + r'Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\People': { + 'DWORD Items': {'PeopleBand': 0}, }, # Hide Search button / box r'Software\Microsoft\Windows\CurrentVersion\Search': { @@ -76,9 +101,6 @@ SETTINGS_EXPLORER_USER = { }, } SETTINGS_GOOGLE_CHROME = { - r'Software\Google\Chrome\Extensions': { - 'WOW64_32': True, - }, r'Software\Google\Chrome\Extensions\cjpalhdlnbpafiamejdnhcphjbkeiagm': { 'SZ Items': { 'update_url': 'https://clients2.google.com/service/update2/crx'}, @@ -90,11 +112,20 @@ SETTINGS_GOOGLE_CHROME = { 'WOW64_32': True, }, } +SETTINGS_MOZILLA_FIREFOX_32 = { + r'Software\Mozilla\Firefox\Extensions': { + 'SZ Items': { + 'uBlock0@raymondhill.net': MOZILLA_FIREFOX_UBO_PATH}, + 'WOW64_32': True, + }, + } +SETTINGS_MOZILLA_FIREFOX_64 = { + r'Software\Mozilla\Firefox\Extensions': { + 'SZ Items': { + 'uBlock0@raymondhill.net': MOZILLA_FIREFOX_UBO_PATH}, + }, + } VCR_REDISTS = [ - {'Name': 'Visual C++ 2008 SP1 x32...', - 'Cmd': [r'2008sp1\x32\vcredist.exe', '/qb! /norestart']}, - {'Name': 'Visual C++ 2008 SP1 x64...', - 'Cmd': [r'2008sp1\x64\vcredist.exe', '/qb! /norestart']}, {'Name': 'Visual C++ 2010 x32...', 'Cmd': [r'2010sp1\x32\vcredist.exe', '/passive', '/norestart']}, {'Name': 'Visual C++ 2010 x64...', @@ -169,24 +200,9 @@ def config_classicstart(): sleep(1) popen_program(cs_exe) -def write_registry_settings(settings, all_users=False): - """Write registry values from custom dict of dicts.""" - hive = HKCU - if all_users: - hive = HKLM - for k, v in settings.items(): - # CreateKey - access = winreg.KEY_WRITE - if 'WOW64_32' in v: - access = access | winreg.KEY_WOW64_32KEY - winreg.CreateKeyEx(hive, k, 0, access) - - # Create values - with winreg.OpenKeyEx(hive, k, 0, access) as key: - for name, value in v.get('DWORD Items', {}).items(): - winreg.SetValueEx(key, name, 0, winreg.REG_DWORD, value) - for name, value in v.get('SZ Items', {}).items(): - winreg.SetValueEx(key, name, 0, winreg.REG_SZ, value) +def config_explorer_system_hw(): + """Configure Windows Explorer for all users via Registry settings (HW).""" + write_registry_settings(SETTINGS_EXPLORER_SYSTEM_HW, all_users=True) def config_explorer_system(): """Configure Windows Explorer for all users via Registry settings.""" @@ -196,6 +212,32 @@ def config_explorer_user(): """Configure Windows Explorer for current user via Registry settings.""" write_registry_settings(SETTINGS_EXPLORER_USER, all_users=False) +def config_privacy_settings(): + """Configure Windows 10 privacy settings with O&O ShutUp10.""" + extract_item('ShutUp10', silent=True) + cmd = [ + r'{BinDir}\ShutUp10\OOSU10.exe'.format(**global_vars), + r'{BinDir}\ShutUp10\1201.cfg'.format(**global_vars), + '/quiet'] + run_program(cmd) + +def enable_system_restore(): + """Enable System Restore and set disk usage to 5%""" + cmd = [ + 'PowerShell', + '-Command', 'Enable-ComputerRestore', + '-Drive', '{}\\'.format(global_vars['Env']['SYSTEMDRIVE'])] + run_program(cmd) + + # Set disk usage + cmd = [ + r'{}\System32\vssadmin.exe'.format(global_vars['Env']['SYSTEMROOT']), + 'resize', 'shadowstorage', + '/on={}'.format(global_vars['Env']['SYSTEMDRIVE']), + '/for={}'.format(global_vars['Env']['SYSTEMDRIVE']), + '/maxsize=5%'] + run_program(cmd) + def update_clock(): """Set Timezone and sync clock.""" run_program(['tzutil' ,'/s', WINDOWS_TIME_ZONE], check=False) @@ -208,6 +250,25 @@ def update_clock(): run_program(['net', 'start', 'w32ime'], check=False) run_program(['w32tm', '/resync', '/nowait'], check=False) +def write_registry_settings(settings, all_users=False): + """Write registry values from custom dict of dicts.""" + hive = HKCU + if all_users: + hive = HKLM + for k, v in settings.items(): + # CreateKey + access = winreg.KEY_WRITE + if 'WOW64_32' in v: + access = access | winreg.KEY_WOW64_32KEY + winreg.CreateKeyEx(hive, k, 0, access) + + # Create values + with winreg.OpenKeyEx(hive, k, 0, access) as key: + for name, value in v.get('DWORD Items', {}).items(): + winreg.SetValueEx(key, name, 0, winreg.REG_DWORD, value) + for name, value in v.get('SZ Items', {}).items(): + winreg.SetValueEx(key, name, 0, winreg.REG_SZ, value) + # Installations def install_adobe_reader(): """Install Adobe Reader.""" @@ -221,7 +282,7 @@ def install_adobe_reader(): run_program(cmd) def install_chrome_extensions(): - """Update registry to 'install' Google Chrome extensions for all users.""" + """Update registry to install Google Chrome extensions for all users.""" write_registry_settings(SETTINGS_GOOGLE_CHROME, all_users=True) def install_classicstart_skin(): @@ -237,17 +298,52 @@ def install_classicstart_skin(): os.makedirs(dest_path, exist_ok=True) shutil.copy(source, dest) +def install_eset_nod32_av(scan_pups=True): + """Install ESET NOD32 AV with custom config.""" + extract_item('ESETConfigs', silent=True) + config_file = r'{BinDir}\ESETConfigs\{config_file}.xml'.format( + config_file='eset-config' if scan_pups else 'eset-config-no-pup', + **global_vars) + + # Apply user configuration + write_registry_settings(SETTINGS_ESET, all_users=False) + + # Download + result = try_and_print(message='Downloading Setup...', cs='Done', + other_results=OTHER_RESULTS, function=download_generic, + out_dir=global_vars['ClientDir'], + out_name='eav_nt64.exe', + source_url=SOURCE_URLS['ESET NOD32 AV']) + installer = r'{ClientDir}\eav_nt64.exe'.format(**global_vars) + if not result['CS']: + raise GenericError('Failed to download ESET NOD32 AV') + + # Install + cmd = [installer, + '--silent', '--accepteula', '--msi-property', + 'PRODUCTTYPE=eav', 'PRODUCT_LANG=1033', 'PRODUCT_LANG_CODE=en-US', + 'ADMINCFG="{}"'.format(config_file)] + try_and_print(message='Installing ESET NOD32 AV...', + other_results=OTHER_RESULTS, function=run_program, cmd=cmd) + + # Delete installer + remove_item(installer) + def install_firefox_extensions(): - """Extract Firefox extensions to installation folder.""" + """Update registry to install Firefox extensions for all users.""" dist_path = r'{PROGRAMFILES}\Mozilla Firefox\distribution\extensions'.format( **global_vars['Env']) source_path = r'{CBinDir}\FirefoxExtensions.7z'.format(**global_vars) if not os.path.exists(source_path): raise FileNotFoundError - + + # Update registry + write_registry_settings(SETTINGS_MOZILLA_FIREFOX_32, all_users=True) + write_registry_settings(SETTINGS_MOZILLA_FIREFOX_64, all_users=True) + # Extract extension(s) to distribution folder cmd = [ - global_vars['Tools']['SevenZip'], 'x', '-aos', '-bso0', '-bse0', + global_vars['Tools']['SevenZip'], 'e', '-aos', '-bso0', '-bse0', '-p{ArchivePassword}'.format(**global_vars), '-o{dist_path}'.format(dist_path=dist_path), source_path] diff --git a/.bin/Scripts/functions/update.py b/.bin/Scripts/functions/update.py index 6825f9ba..ff151bc1 100644 --- a/.bin/Scripts/functions/update.py +++ b/.bin/Scripts/functions/update.py @@ -28,7 +28,7 @@ def compress_item(item): wd = os.path.abspath(r'{}\{}'.format(wd, os.path.pardir)) include_str = item.name os.chdir(wd) - + # Compress cmd = [ global_vars['Tools']['SevenZip'], @@ -38,7 +38,7 @@ def compress_item(item): include_str, ] run_program(cmd) - + # Done os.chdir(prev_dir) @@ -96,7 +96,7 @@ def generate_launcher(section, name, options): dest = global_vars['BaseDir'] full_path = r'{}\{}.cmd'.format(dest, name) template = r'{}\Scripts\Launcher_Template.cmd'.format(global_vars['BinDir']) - + # Format options f_options = {} for opt in options.keys(): @@ -106,7 +106,7 @@ def generate_launcher(section, name, options): elif re.search(r'^L_\w+', opt, re.IGNORECASE): new_opt = 'set {}='.format(opt) f_options[new_opt] = ['set {}={}'.format(opt, options[opt])] - + # Read template and update using f_options out_text = [] with open(template, 'r') as f: @@ -118,7 +118,7 @@ def generate_launcher(section, name, options): out_text.extend(f_options[line]) else: out_text.append(line) - + # Write file os.makedirs(dest, exist_ok=True) with open(full_path, 'w') as f: @@ -138,7 +138,9 @@ def remove_from_kit(item): item_locations = [] for p in [global_vars['BinDir'], global_vars['CBinDir']]: item_locations.append(r'{}\{}'.format(p, item)) + item_locations.append(r'{}\{}.7z'.format(p, item)) item_locations.append(r'{}\_Drivers\{}'.format(p, item)) + item_locations.append(r'{}\_Drivers\{}.7z'.format(p, item)) for item_path in item_locations: remove_item(item_path) @@ -172,7 +174,7 @@ def scan_for_net_installers(server, family_name, min_year): """Scan network shares for installers.""" if not server['Mounted']: mount_network_share(server) - + if server['Mounted']: for year in os.scandir(r'\\{IP}\{Share}'.format(**server)): try: @@ -204,13 +206,13 @@ def update_testdisk(): for exe in ['fidentify_win.exe', 'photorec_win.exe', 'qphotorec_win.exe', 'testdisk_win.exe']: kill_process(exe) - + # Remove existing folders remove_from_kit('TestDisk') - + # Download download_to_temp('testdisk_wip.zip', SOURCE_URLS['TestDisk']) - + # Extract files extract_temp_to_cbin('testdisk_wip.zip', 'TestDisk') dest = r'{}\TestDisk'.format(global_vars['CBinDir']) @@ -220,7 +222,7 @@ def update_testdisk(): shutil.move(item.path, dest_item) shutil.rmtree( r'{}\TestDisk\testdisk-7.1-WIP'.format(global_vars['CBinDir'])) - + # Cleanup remove_from_temp('testdisk_wip.zip') @@ -230,36 +232,91 @@ def update_fastcopy(): # Stop running processes for process in ['FastCopy.exe', 'FastCopy64.exe']: kill_process(process) - + # Remove existing folders remove_from_kit('FastCopy') - + # Download - download_to_temp('FastCopy32.zip', SOURCE_URLS['FastCopy32']) - download_to_temp('FastCopy64.zip', SOURCE_URLS['FastCopy64']) - - # Extract - extract_temp_to_bin('FastCopy64.zip', 'FastCopy', sz_args=['FastCopy.exe']) + download_to_temp('FastCopy.zip', SOURCE_URLS['FastCopy']) + + # Extract installer + extract_temp_to_bin('FastCopy.zip', 'FastCopy') + _path = r'{}\FastCopy'.format(global_vars['BinDir']) + _installer = 'FastCopy354_installer.exe' + + # Extract 64-bit + cmd = [ + r'{}\{}'.format(_path, _installer), + '/NOSUBDIR', '/DIR={}'.format(_path), + '/EXTRACT64'] + run_program(cmd) shutil.move( r'{}\FastCopy\FastCopy.exe'.format(global_vars['BinDir']), r'{}\FastCopy\FastCopy64.exe'.format(global_vars['BinDir'])) - extract_temp_to_bin('FastCopy32.zip', 'FastCopy', sz_args=[r'-x!setup.exe', r'-x!*.dll']) - + + # Extract 32-bit + cmd = [ + r'{}\{}'.format(_path, _installer), + '/NOSUBDIR', '/DIR={}'.format(_path), + '/EXTRACT32'] + run_program(cmd) + # Cleanup - remove_from_temp('FastCopy32.zip') - remove_from_temp('FastCopy64.zip') + os.remove(r'{}\{}'.format(_path, _installer)) + os.remove(r'{}\setup.exe'.format(_path, _installer)) + remove_from_temp('FastCopy.zip') + +def update_linux_reader(): + # Stop running processes + for exe in ['LinuxReader.exe', 'LinuxReader64.exe']: + kill_process(exe) + + # Remove existing folders + remove_from_kit('LinuxReader') + + # Prep + install_dir = r'{}\LinuxReaderTemp'.format(global_vars['TmpDir']) + dest = r'{}\LinuxReader'.format(global_vars['CBinDir']) + uninstaller = None + + # Download + download_to_temp('LinuxReader.exe', SOURCE_URLS['Linux Reader']) + + # Install to temp + cmd = [ + r'{}\LinuxReader.exe'.format(global_vars['TmpDir']), + '/S', + '/D={}'.format(install_dir)] + run_program(cmd) + + # Copy files + shutil.copytree(install_dir, dest) + for item in os.scandir(dest): + r = re.search(r'^uninstall.*(dat|exe)$', item.name, re.IGNORECASE) + if r: + if 'exe' in item.name: + uninstaller = r'{}\{}'.format(install_dir, item.name) + remove_item(item.path) + + # Uninstall from temp + if uninstaller: + cmd = [uninstaller, '/S'] + run_program(cmd) + + # Cleanup + remove_from_temp('LinuxReader.exe') def update_wimlib(): # Stop running processes kill_process('wimlib-imagex.exe') - + # Remove existing folders remove_from_kit('wimlib') - + # Download download_to_temp('wimlib32.zip', SOURCE_URLS['wimlib32']) download_to_temp('wimlib64.zip', SOURCE_URLS['wimlib64']) - + # Extract extract_generic( r'{}\wimlib32.zip'.format(global_vars['TmpDir']), @@ -267,7 +324,7 @@ def update_wimlib(): extract_generic( r'{}\wimlib64.zip'.format(global_vars['TmpDir']), r'{}\wimlib\x64'.format(global_vars['CBinDir'])) - + # Cleanup remove_from_temp('wimlib32.zip') remove_from_temp('wimlib64.zip') @@ -275,16 +332,16 @@ def update_wimlib(): def update_xyplorer(): # Stop running processes kill_process('XYplorerFree.exe') - + # Remove existing folders remove_from_kit('XYplorerFree') - + # Download download_to_temp('xyplorer_free.zip', SOURCE_URLS['XYplorerFree']) - + # Extract files extract_temp_to_cbin('xyplorer_free.zip', 'XYplorerFree') - + # Cleanup remove_from_temp('xyplorer_free.zip') @@ -292,16 +349,16 @@ def update_xyplorer(): def update_aida64(): # Stop running processes kill_process('notepadplusplus.exe') - + # Remove existing folders remove_from_kit('AIDA64') - + # Download download_to_temp('aida64.zip', SOURCE_URLS['AIDA64']) - + # Extract files extract_temp_to_cbin('aida64.zip', 'AIDA64') - + # Cleanup remove_from_temp('aida64.zip') @@ -309,37 +366,37 @@ def update_autoruns(): # Stop running processes kill_process('Autoruns.exe') kill_process('Autoruns64.exe') - + # Remove existing folders remove_from_kit('Autoruns') - + # Download download_to_temp('Autoruns.zip', SOURCE_URLS['Autoruns']) - + # Extract files extract_temp_to_cbin('Autoruns.zip', 'Autoruns') - + # Cleanup remove_from_temp('Autoruns.zip') def update_bleachbit(): # Stop running processes kill_process('bleachbit.exe') - + # Remove existing folders remove_from_kit('BleachBit') - + # Download download_to_temp('bleachbit.zip', SOURCE_URLS['BleachBit']) download_to_temp('Winapp2.zip', SOURCE_URLS['Winapp2']) - + # Extract files extract_temp_to_cbin('bleachbit.zip', 'BleachBit') extract_generic( r'{}\Winapp2.zip'.format(global_vars['TmpDir']), r'{}\BleachBit\cleaners'.format(global_vars['CBinDir']), mode='e', sz_args=[r'Winapp2-master\Non-CCleaner\Winapp2.ini']) - + # Move files into place dest = r'{}\BleachBit'.format(global_vars['CBinDir']) for item in os.scandir(r'{}\BleachBit-Portable'.format(dest)): @@ -348,7 +405,7 @@ def update_bleachbit(): shutil.move(item.path, dest_item) shutil.rmtree( r'{}\BleachBit\BleachBit-Portable'.format(global_vars['CBinDir'])) - + # Cleanup remove_from_temp('bleachbit.zip') remove_from_temp('Winapp2.zip') @@ -357,21 +414,21 @@ def update_bluescreenview(): # Stop running processes for exe in ['BlueScreenView.exe', 'BlueScreenView64.exe']: kill_process(exe) - + # Remove existing folders remove_from_kit('BlueScreenView') - + # Download download_to_temp('bluescreenview32.zip', SOURCE_URLS['BlueScreenView32']) download_to_temp('bluescreenview64.zip', SOURCE_URLS['BlueScreenView64']) - + # Extract files extract_temp_to_cbin('bluescreenview64.zip', 'BlueScreenView', sz_args=['BlueScreenView.exe']) shutil.move( r'{}\BlueScreenView\BlueScreenView.exe'.format(global_vars['CBinDir']), r'{}\BlueScreenView\BlueScreenView64.exe'.format(global_vars['CBinDir'])) extract_temp_to_cbin('bluescreenview32.zip', 'BlueScreenView') - + # Cleanup remove_from_temp('bluescreenview32.zip') remove_from_temp('bluescreenview64.zip') @@ -379,27 +436,67 @@ def update_bluescreenview(): def update_erunt(): # Stop running processes kill_process('ERUNT.EXE') - + # Remove existing folders remove_from_kit('ERUNT') - + # Download download_to_temp('erunt.zip', SOURCE_URLS['ERUNT']) - + # Extract files extract_temp_to_cbin('erunt.zip', 'ERUNT') - + # Cleanup remove_from_temp('erunt.zip') +def update_furmark(): + # Stop running processes + for exe in ['cpuburner.exe', 'FurMark.exe', 'gpushark.exe', 'gpuz.exe']: + kill_process(exe) + + # Remove existing folders + remove_from_kit('FurMark') + + # Prep + install_dir = r'{}\FurMarkTemp'.format(global_vars['TmpDir']) + dest = r'{}\FurMark'.format(global_vars['CBinDir']) + uninstaller = None + + # Download + download_to_temp('furmark_setup.exe', SOURCE_URLS['FurMark']) + + # Install to temp + cmd = [ + r'{}\furmark_setup.exe'.format(global_vars['TmpDir']), + '/DIR={}'.format(install_dir), + '/SILENT'] + run_program(cmd) + + # Copy files + shutil.copytree(install_dir, dest) + for item in os.scandir(dest): + r = re.search(r'^unins\d+\.(dat|exe)$', item.name, re.IGNORECASE) + if r: + if 'exe' in item.name: + uninstaller = r'{}\{}'.format(install_dir, item.name) + remove_item(item.path) + + # Uninstall from temp + if uninstaller: + cmd = [uninstaller, '/SILENT'] + run_program(cmd) + + # Cleanup + remove_from_temp('furmark_setup.exe') + def update_hitmanpro(): # Stop running processes for exe in ['HitmanPro.exe', 'HitmanPro64.exe']: kill_process(exe) - + # Remove existing folders remove_from_kit('HitmanPro') - + # Download dest = r'{}\HitmanPro'.format(global_vars['CBinDir']) download_generic(dest, 'HitmanPro.exe', SOURCE_URLS['HitmanPro32']) @@ -410,35 +507,58 @@ def update_hwinfo(): # Stop running processes for exe in ['HWiNFO32.exe', 'HWiNFO64.exe']: kill_process(exe) - + # Download download_to_temp('HWiNFO.zip', SOURCE_URLS['HWiNFO']) - + # Extract files extract_temp_to_bin('HWiNFO.zip', 'HWiNFO') - + # Cleanup remove_from_temp('HWiNFO.zip') +def update_nircmd(): + # Stop running processes + for exe in ['nircmdc.exe', 'nircmdc64.exe']: + kill_process(exe) + + # Remove existing folders + remove_from_kit('NirCmd') + + # Download + download_to_temp('nircmd32.zip', SOURCE_URLS['NirCmd32']) + download_to_temp('nircmd64.zip', SOURCE_URLS['NirCmd64']) + + # Extract files + extract_temp_to_cbin('nircmd64.zip', 'NirCmd', sz_args=['nircmdc.exe']) + shutil.move( + r'{}\NirCmd\nircmdc.exe'.format(global_vars['CBinDir']), + r'{}\NirCmd\nircmdc64.exe'.format(global_vars['CBinDir'])) + extract_temp_to_cbin('nircmd32.zip', 'NirCmd', sz_args=['nircmdc.exe']) + + # Cleanup + remove_from_temp('nircmd32.zip') + remove_from_temp('nircmd64.zip') + def update_produkey(): # Stop running processes for exe in ['ProduKey.exe', 'ProduKey64.exe']: kill_process(exe) - + # Remove existing folders remove_from_kit('ProduKey') - + # Download download_to_temp('produkey32.zip', SOURCE_URLS['ProduKey32']) download_to_temp('produkey64.zip', SOURCE_URLS['ProduKey64']) - + # Extract files extract_temp_to_cbin('produkey64.zip', 'ProduKey', sz_args=['ProduKey.exe']) shutil.move( r'{}\ProduKey\ProduKey.exe'.format(global_vars['CBinDir']), r'{}\ProduKey\ProduKey64.exe'.format(global_vars['CBinDir'])) extract_temp_to_cbin('produkey32.zip', 'ProduKey') - + # Cleanup remove_from_temp('produkey32.zip') remove_from_temp('produkey64.zip') @@ -447,14 +567,14 @@ def update_produkey(): def update_intel_rst(): # Remove existing folders remove_from_kit('Intel RST') - + # Prep dest = r'{}\_Drivers\Intel RST'.format(global_vars['CBinDir']) include_path = r'{}\_include\_Drivers\Intel RST'.format( global_vars['CBinDir']) if os.path.exists(include_path): shutil.copytree(include_path, dest) - + # Download for name, url in RST_SOURCES.items(): download_generic(dest, name, url) @@ -462,7 +582,7 @@ def update_intel_rst(): def update_intel_ssd_toolbox(): # Remove existing folders remove_from_kit('Intel SSD Toolbox.exe') - + # Download download_generic( r'{}\_Drivers\Intel SSD Toolbox'.format(global_vars['CBinDir']), @@ -472,12 +592,20 @@ def update_intel_ssd_toolbox(): def update_samsung_magician(): # Remove existing folders remove_from_kit('Samsung Magician.exe') - + # Download - download_generic( - r'{}\_Drivers\Samsung Magician'.format(global_vars['CBinDir']), - 'Samsung Magician.exe', - SOURCE_URLS['Samsung Magician']) + download_to_temp('Samsung Magician.zip', SOURCE_URLS['Samsung Magician']) + + # Extract + extract_temp_to_cbin('Samsung Magician.zip', '_Drivers\Samsung Magician') + shutil.move( + r'{}\_Drivers\Samsung Magician\Samsung_Magician_Installer.exe'.format( + global_vars['CBinDir']), + r'{}\_Drivers\Samsung Magician\Samsung Magician.exe'.format( + global_vars['CBinDir'])) + + # Cleanup + remove_from_temp('Samsung Magician.zip') def update_sdi_origin(): # Download aria2 @@ -486,7 +614,7 @@ def update_sdi_origin(): aria_dest = r'{}\aria2'.format(global_vars['TmpDir']) aria = r'{}\aria2c.exe'.format(aria_dest) extract_generic(aria_source, aria_dest, mode='e') - + # Prep for torrent download download_to_temp('sdio.torrent', SOURCE_URLS['SDIO Torrent']) sdio_torrent = r'{}\sdio.torrent'.format(global_vars['TmpDir']) @@ -497,7 +625,7 @@ def update_sdi_origin(): if r and not re.search(r'(\.(bat|inf)|Video|Server|Printer|XP)', line, re.IGNORECASE): indexes.append(int(r.group(1))) indexes = [str(i) for i in sorted(indexes)] - + # Download SDI Origin cmd = [ aria, @@ -510,13 +638,13 @@ def update_sdi_origin(): run_program(cmd, pipe=False, check=False, shell=True) sleep(1) wait_for_process('aria2c') - + # Download SDI Origin extra themes download_to_temp('sdio_themes.zip', SOURCE_URLS['SDIO Themes']) theme_source = r'{}\sdio_themes.zip'.format(global_vars['TmpDir']) theme_dest = r'{}\SDIO_Update\tools\SDI\themes'.format(aria_dest) extract_generic(theme_source, theme_dest) - + # Move files into place for item in os.scandir(r'{}\SDIO_Update'.format(aria_dest)): dest_item = '{}\_Drivers\SDIO\{}'.format( @@ -528,7 +656,7 @@ def update_sdi_origin(): if (not os.path.exists(dest_item) and not re.search(r'\.(inf|bat)$', item.name, re.IGNORECASE)): shutil.move(item.path, dest_item) - + # Cleanup remove_from_temp('aria2') remove_from_temp('aria2.zip') @@ -540,29 +668,51 @@ def update_adobe_reader_dc(): # Prep dest = r'{}\Installers\Extras\Office'.format( global_vars['BaseDir']) - + # Remove existing installer try: os.remove(r'{}\Adobe Reader DC.exe'.format(dest)) except FileNotFoundError: pass - + # Download download_generic( dest, 'Adobe Reader DC.exe', SOURCE_URLS['Adobe Reader DC']) +def update_eset_config(): + """Copy config files to .cbin before compress_item""" + dest = r'{}\ESETConfigs'.format(global_vars['CBinDir']) + include_path = r'{}\_include\ESETConfigs'.format(global_vars['CBinDir']) + if os.path.exists(include_path): + shutil.copytree(include_path, dest) + +def update_macs_fan_control(): + # Prep + dest = r'{}\Installers'.format( + global_vars['BaseDir']) + + # Remove existing installer + try: + os.remove(r'{}\Macs Fan Control.exe'.format(dest)) + except FileNotFoundError: + pass + + # Download + download_generic( + dest, 'Macs Fan Control.exe', SOURCE_URLS['Macs Fan Control']) + def update_office(): # Remove existing folders remove_from_kit('_Office') - + # Prep dest = r'{}\_Office'.format(global_vars['CBinDir']) include_path = r'{}\_include\_Office'.format(global_vars['CBinDir']) if os.path.exists(include_path): shutil.copytree(include_path, dest) - - # Download and extract - for year in ['2013', '2016']: + + for year in ['2016']: + # Download and extract name = 'odt{}.exe'.format(year) url = 'Office Deployment Tool {}'.format(year) download_to_temp(name, SOURCE_URLS[url]) @@ -575,15 +725,14 @@ def update_office(): shutil.move( r'{}\{}'.format(global_vars['TmpDir'], year), r'{}\_Office\{}'.format(global_vars['CBinDir'], year)) - - # Cleanup - remove_from_temp('odt2013.exe') - remove_from_temp('odt2016.exe') + + # Cleanup + remove_from_temp('odt{}.exe'.format(year)) def update_classic_start_skin(): # Remove existing folders remove_from_kit('ClassicStartSkin') - + # Download download_generic( r'{}\ClassicStartSkin'.format(global_vars['CBinDir']), @@ -593,13 +742,13 @@ def update_classic_start_skin(): def update_vcredists(): # Remove existing folders remove_from_kit('_vcredists') - + # Prep dest = r'{}\_vcredists'.format(global_vars['CBinDir']) include_path = r'{}\_include\_vcredists'.format(global_vars['CBinDir']) if os.path.exists(include_path): shutil.copytree(include_path, dest) - + # Download for year in VCREDIST_SOURCES.keys(): for bit in ['32', '64']: @@ -613,10 +762,10 @@ def update_vcredists(): def update_one_ninite(section, dest, name, url, indent=8, width=40): # Prep url = 'https://ninite.com/{}/ninite.exe'.format(url) - + # Download download_generic(out_dir=dest, out_name=name, source_url=url) - + # Copy to Installers folder installer_parent = r'{}\Installers\Extras\{}'.format( global_vars['BaseDir'], section) @@ -640,16 +789,16 @@ def update_all_ninite(indent=8, width=40, other_results={}): def update_caffeine(): # Stop running processes kill_process('caffeine.exe') - + # Remove existing folders remove_from_kit('Caffeine') - + # Download download_to_temp('caffeine.zip', SOURCE_URLS['Caffeine']) - + # Extract files extract_temp_to_cbin('caffeine.zip', 'Caffeine') - + # Cleanup remove_from_temp('caffeine.zip') @@ -657,16 +806,16 @@ def update_du(): # Stop running processes kill_process('du.exe') kill_process('du64.exe') - + # Remove existing folders remove_from_kit('Du') - + # Download download_to_temp('du.zip', SOURCE_URLS['Du']) - + # Extract files extract_temp_to_cbin('du.zip', 'Du') - + # Cleanup remove_from_temp('du.zip') @@ -674,21 +823,21 @@ def update_everything(): # Stop running processes for exe in ['Everything.exe', 'Everything64.exe']: kill_process(exe) - + # Remove existing folders remove_from_kit('Everything') - + # Download download_to_temp('everything32.zip', SOURCE_URLS['Everything32']) download_to_temp('everything64.zip', SOURCE_URLS['Everything64']) - + # Extract files extract_temp_to_cbin('everything64.zip', 'Everything', sz_args=['Everything.exe']) shutil.move( r'{}\Everything\Everything.exe'.format(global_vars['CBinDir']), r'{}\Everything\Everything64.exe'.format(global_vars['CBinDir'])) extract_temp_to_cbin('everything32.zip', 'Everything') - + # Cleanup remove_from_temp('everything32.zip') remove_from_temp('everything64.zip') @@ -696,86 +845,100 @@ def update_everything(): def update_firefox_ublock_origin(): # Remove existing folders remove_from_kit('FirefoxExtensions') - + # Download - download_to_temp('ff-uBO.xpi', SOURCE_URLS['Firefox uBO']) - - # Extract files - extract_generic( - r'{}\ff-uBO.xpi'.format(global_vars['TmpDir']), - r'{}\FirefoxExtensions\uBlock0@raymondhill.net'.format( - global_vars['CBinDir'])) - - # Cleanup - remove_from_temp('ff-uBO.xpi') + download_generic( + r'{}\FirefoxExtensions'.format(global_vars['CBinDir']), + 'ublock_origin.xpi', + SOURCE_URLS['Firefox uBO']) def update_notepadplusplus(): # Stop running processes kill_process('notepadplusplus.exe') - + # Remove existing folders remove_from_kit('NotepadPlusPlus') - + # Download download_to_temp('npp.7z', SOURCE_URLS['NotepadPlusPlus']) - + # Extract files extract_temp_to_cbin('npp.7z', 'NotepadPlusPlus') shutil.move( r'{}\NotepadPlusPlus\notepad++.exe'.format(global_vars['CBinDir']), r'{}\NotepadPlusPlus\notepadplusplus.exe'.format(global_vars['CBinDir']) ) - + # Cleanup remove_from_temp('npp.7z') def update_putty(): # Stop running processes kill_process('PUTTY.EXE') - + # Remove existing folders remove_from_kit('PuTTY') - + # Download download_to_temp('putty.zip', SOURCE_URLS['PuTTY']) - + # Extract files extract_temp_to_cbin('putty.zip', 'PuTTY') - + # Cleanup remove_from_temp('putty.zip') -def update_treesizefree(): +def update_shutup10(): # Stop running processes - kill_process('TreeSizeFree.exe') - + kill_process('OOSU10.exe') + # Remove existing folders - remove_from_kit('TreeSizeFree') - + remove_from_kit('ShutUp10') + + # Copy settings + dest = r'{}\ShutUp10'.format(global_vars['CBinDir']) + include_path = r'{}\_include\ShutUp10'.format(global_vars['CBinDir']) + if os.path.exists(include_path): + shutil.copytree(include_path, dest) + + # Download + download_generic( + r'{}\ShutUp10'.format(global_vars['CBinDir']), + 'OOSU10.exe', + SOURCE_URLS['ShutUp10']) + +def update_wiztree(): + # Stop running processes + for process in ['WizTree.exe', 'WizTree64.exe']: + kill_process(process) + + # Remove existing folders + remove_from_kit('WizTree') + # Download download_to_temp( - 'treesizefree.zip', SOURCE_URLS['TreeSizeFree']) - + 'wiztree.zip', SOURCE_URLS['WizTree']) + # Extract files - extract_temp_to_cbin('treesizefree.zip', 'TreeSizeFree') - + extract_temp_to_cbin('wiztree.zip', 'WizTree') + # Cleanup - remove_from_temp('treesizefree.zip') + remove_from_temp('wiztree.zip') def update_xmplay(): # Stop running processes kill_process('xmplay.exe') - + # Remove existing folders remove_from_kit('XMPlay') - + # Download download_to_temp('xmplay.zip', SOURCE_URLS['XMPlay']) download_to_temp('xmp-7z.zip', SOURCE_URLS['XMPlay 7z']) download_to_temp('xmp-gme.zip', SOURCE_URLS['XMPlay Game']) download_to_temp('xmp-rar.zip', SOURCE_URLS['XMPlay RAR']) download_to_temp('WAModern.zip', SOURCE_URLS['XMPlay WAModern']) - + # Extract files extract_temp_to_cbin('xmplay.zip', 'XMPlay', mode='e', sz_args=['xmplay.exe', 'xmplay.txt']) @@ -787,7 +950,7 @@ def update_xmplay(): r'{}\{}.zip'.format(global_vars['TmpDir'], item), r'{}\XMPlay\plugins'.format(global_vars['CBinDir']), mode='e', sz_args=filter) - + # Download Music dest = r'{}\XMPlay\music_tmp\MOD'.format(global_vars['CBinDir']) for mod in MUSIC_MOD: @@ -799,7 +962,7 @@ def update_xmplay(): name = '{}.rsn'.format(game) url = 'http://snesmusic.org/v2/download.php?spcNow={}'.format(game) download_generic(dest, name, url) - + # Compress Music cmd = [ global_vars['Tools']['SevenZip'], @@ -808,7 +971,7 @@ def update_xmplay(): r'{}\XMPlay\music_tmp\*'.format(global_vars['CBinDir']), ] run_program(cmd) - + # Cleanup remove_item(r'{}\XMPlay\music_tmp'.format(global_vars['CBinDir'])) remove_from_temp('xmplay.zip') @@ -821,24 +984,23 @@ def update_xmplay(): def update_adwcleaner(): # Stop running processes kill_process('AdwCleaner.exe') - + # Remove existing folders remove_from_kit('AdwCleaner') - + # Download - url = resolve_dynamic_url( - SOURCE_URLS['AdwCleaner'], - 'id="downloadLink"') download_generic( - r'{}\AdwCleaner'.format(global_vars['CBinDir']), 'AdwCleaner.exe', url) + r'{}\AdwCleaner'.format(global_vars['CBinDir']), + 'AdwCleaner.exe', + SOURCE_URLS['AdwCleaner']) def update_kvrt(): # Stop running processes kill_process('KVRT.exe') - + # Remove existing folders remove_from_kit('KVRT') - + # Download download_generic( r'{}\KVRT'.format(global_vars['CBinDir']), @@ -848,10 +1010,10 @@ def update_kvrt(): def update_rkill(): # Stop running processes kill_process('RKill.exe') - + # Remove existing folders remove_from_kit('RKill') - + # Download url = resolve_dynamic_url( SOURCE_URLS['RKill'], @@ -862,36 +1024,56 @@ def update_rkill(): def update_tdsskiller(): # Stop running processes kill_process('TDSSKiller.exe') - + # Remove existing folders remove_from_kit('TDSSKiller') - + # Download download_generic( r'{}\TDSSKiller'.format(global_vars['CBinDir']), 'TDSSKiller.exe', SOURCE_URLS['TDSSKiller']) +def update_winaiorepair(): + # Stop running processes + kill_process('Repair_Windows.exe') + + # Download + download_to_temp('winaio.zip', SOURCE_URLS['WinAIO Repair']) + + # Extract + extract_temp_to_cbin('winaio.zip', 'WinAIORepair') + dest = r'{}\WinAIORepair'.format(global_vars['CBinDir']) + for item in os.scandir(r'{}\Tweaking.com - Windows Repair'.format(dest)): + dest_item = '{}\{}'.format(dest, item.name) + if not os.path.exists(dest_item): + shutil.move(item.path, dest_item) + shutil.rmtree( + r'{}\WinAIORepair\Tweaking.com - Windows Repair'.format(global_vars['CBinDir'])) + + # Cleanup + remove_from_temp('winaio.zip') + ## Uninstallers ## def update_iobit_uninstaller(): # Stop running processes kill_process('IObitUninstallerPortable.exe') - + # Remove existing folders remove_from_kit('IObitUninstallerPortable') - + # Download download_generic( global_vars['CBinDir'], 'IObitUninstallerPortable.exe', SOURCE_URLS['IOBit_Uninstaller']) - + # "Install" cmd = r'{}\IObitUninstallerPortable.exe'.format(global_vars['CBinDir']) popen_program(cmd) sleep(1) wait_for_process('IObitUninstallerPortable') - + # Cleanup remove_from_kit('IObitUninstallerPortable.exe') diff --git a/.bin/Scripts/functions/windows_setup.py b/.bin/Scripts/functions/windows_setup.py index cd7f8444..0952e64d 100644 --- a/.bin/Scripts/functions/windows_setup.py +++ b/.bin/Scripts/functions/windows_setup.py @@ -17,7 +17,7 @@ WINDOWS_VERSIONS = [ {'Name': 'Windows 7 Ultimate', 'Image File': 'Win7', 'Image Name': 'Windows 7 ULTIMATE'}, - + {'Name': 'Windows 8.1', 'Image File': 'Win8', 'Image Name': 'Windows 8.1', @@ -25,7 +25,7 @@ WINDOWS_VERSIONS = [ {'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', @@ -75,7 +75,7 @@ def find_windows_image(windows_version): 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'])) @@ -122,7 +122,7 @@ def format_gpt(disk): 'set id="de94bba4-06d1-4d40-a16a-bfd50179d6ac"', 'gpt attributes=0x8000000000000001', ] - + # Run run_diskpart(script) @@ -151,7 +151,7 @@ def format_mbr(disk): 'assign letter="T"', 'set id=27', ] - + # Run run_diskpart(script) @@ -197,11 +197,11 @@ 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), @@ -231,7 +231,7 @@ def wim_contains_image(filename, imagename): run_program(cmd) except subprocess.CalledProcessError: return False - + return True if __name__ == '__main__': diff --git a/.bin/Scripts/functions/winpe_menus.py b/.bin/Scripts/functions/winpe_menus.py index 64ffb666..1c732eca 100644 --- a/.bin/Scripts/functions/winpe_menus.py +++ b/.bin/Scripts/functions/winpe_menus.py @@ -90,7 +90,7 @@ def menu_backup(): message = 'Assigning letters...', function = assign_volume_letters, other_results = other_results) - + # Mount backup shares mount_backup_shares(read_write=True) @@ -107,12 +107,12 @@ def menu_backup(): 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, backup_prefix) @@ -150,7 +150,7 @@ def menu_backup(): # 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']: @@ -163,7 +163,7 @@ def menu_backup(): 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\nVerifying backup images(s)\n') @@ -270,7 +270,7 @@ def menu_setup(): # Select the version of Windows to apply windows_version = select_windows_version() - + # Find Windows image # NOTE: Reassign volume letters to ensure all devices are scanned try_and_print( @@ -289,12 +289,12 @@ def menu_setup(): 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) @@ -323,10 +323,10 @@ def menu_setup(): 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 ' @@ -342,7 +342,7 @@ def menu_setup(): function = remove_volume_letters, other_results = other_results, keep=windows_image['Letter']) - + # Assign new letter for local source if necessary if windows_image['Local'] and windows_image['Letter'] in ['S', 'T', 'W']: new_letter = try_and_print( @@ -377,13 +377,13 @@ def menu_setup(): # 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...', @@ -392,8 +392,8 @@ def menu_setup(): windows_version = windows_version) # Copy WinPE log(s) - source = r'{}\Info'.format(global_vars['ClientDir']) - dest = r'W:\{}\Info'.format(KIT_NAME_SHORT) + source = r'{}\Logs'.format(global_vars['ClientDir']) + dest = r'W:\{}\Logs\WinPE'.format(KIT_NAME_SHORT) shutil.copytree(source, dest) # Print summary diff --git a/.bin/Scripts/hw-diags b/.bin/Scripts/hw-diags index c1d7d3ca..d3a1cb21 100755 --- a/.bin/Scripts/hw-diags +++ b/.bin/Scripts/hw-diags @@ -8,7 +8,7 @@ MENU="hw-diags-menu" function ask() { while :; do - read -p "$1 " -r answer + read -p "$1 [Y/N] " -r answer if echo "$answer" | egrep -iq '^(y|yes|sure)$'; then return 0 elif echo "$answer" | egrep -iq '^(n|no|nope)$'; then @@ -24,9 +24,12 @@ die () { # Check for running session if tmux list-session | grep -q "$SESSION_NAME"; then - echo "WARNING: hw-diags tmux session already exists." + echo "WARNING: tmux session $SESSION_NAME already exists." echo "" - if ask "Kill current session?"; then + if ask "Connect to current session?"; then + # Do nothing, the command below will attach/connect + echo "" + elif ask "Kill current session and start new session?"; then tmux kill-session -t "$SESSION_NAME" || \ die "Failed to kill session: $SESSION_NAME" else @@ -39,5 +42,5 @@ if tmux list-session | grep -q "$SESSION_NAME"; then fi # Start session -tmux new-session -s "$SESSION_NAME" -n "$WINDOW_NAME" "$MENU" $* +tmux new-session -A -s "$SESSION_NAME" -n "$WINDOW_NAME" "$MENU" $* diff --git a/.bin/Scripts/hw-sensors b/.bin/Scripts/hw-sensors index 2a1a46e0..f251c589 100755 --- a/.bin/Scripts/hw-sensors +++ b/.bin/Scripts/hw-sensors @@ -67,7 +67,11 @@ def get_feature_string(chip, feature): for sf in sfs: name = sf.name[skipname:].decode("utf-8").strip() - val = sensors.get_value(chip, sf.number) + try: + val = sensors.get_value(chip, sf.number) + except Exception: + # Ignore upstream sensor bugs and lie instead + val = -123456789 if 'alarm' in name: # Skip continue diff --git a/.bin/Scripts/init_client_dir.cmd b/.bin/Scripts/init_client_dir.cmd index 4d73e7ab..cbbe9fbc 100644 --- a/.bin/Scripts/init_client_dir.cmd +++ b/.bin/Scripts/init_client_dir.cmd @@ -33,7 +33,7 @@ for /f "tokens=* usebackq" %%f in (`findstr KIT_NAME_SHORT "%SETTINGS%"`) do ( set "KIT_NAME_SHORT=!_v:~0,-1!" ) set "client_dir=%systemdrive%\%KIT_NAME_SHORT%" -set "log_dir=%client_dir%\Info\%iso_date%" +set "log_dir=%client_dir%\Logs\%iso_date%" :Flags set _backups= @@ -45,7 +45,7 @@ set _transfer= for %%f in (%*) do ( if /i "%%f" == "/DEBUG" (@echo on) if /i "%%f" == "/Backups" set _backups=True - if /i "%%f" == "/Info" set _info=True + if /i "%%f" == "/Logs" set _logs=True if /i "%%f" == "/Office" set _office=True if /i "%%f" == "/Quarantine" set _quarantine=True if /i "%%f" == "/QuickBooks" set _quickbooks=True @@ -54,7 +54,10 @@ for %%f in (%*) do ( :CreateDirs if defined _backups mkdir "%client_dir%\Backups">nul 2>&1 -if defined _info mkdir "%client_dir%\Info">nul 2>&1 +if defined _logs ( + mkdir "%log_dir%\%KIT_NAME_FULL%">nul 2>&1 + mkdir "%log_dir%\d7II">nul 2>&1 + mkdir "%log_dir%\Tools">nul 2>&1) if defined _office mkdir "%client_dir%\Office">nul 2>&1 if defined _quarantine mkdir "%client_dir%\Quarantine">nul 2>&1 if defined _quickbooks mkdir "%client_dir%\QuickBooks">nul 2>&1 diff --git a/.bin/Scripts/install_eset_nod32_av.py b/.bin/Scripts/install_eset_nod32_av.py new file mode 100644 index 00000000..b53adfb6 --- /dev/null +++ b/.bin/Scripts/install_eset_nod32_av.py @@ -0,0 +1,26 @@ +# Wizard Kit: Install ESET NOD32 AV + +import os +import sys + +# Init +os.chdir(os.path.dirname(os.path.realpath(__file__))) +sys.path.append(os.getcwd()) +from functions.setup import * +init_global_vars() +os.system('title {}: Install ESET NOD32 AV'.format(KIT_NAME_FULL)) +set_log_file('Install ESET NOD32 AV.log') + +if __name__ == '__main__': + try: + stay_awake() + clear_screen() + print_info('{}: Install ESET NOD32 AV\n'.format(KIT_NAME_FULL)) + scan_pups = ask('Enable PUP scans in ESET?') + install_eset_nod32_av(scan_pups) + print_standard('\nDone.') + exit_script() + except SystemExit: + pass + except: + major_exception() diff --git a/.bin/Scripts/install_sw_bundle.py b/.bin/Scripts/install_sw_bundle.py index d98eb8d2..e04ea88a 100644 --- a/.bin/Scripts/install_sw_bundle.py +++ b/.bin/Scripts/install_sw_bundle.py @@ -9,7 +9,8 @@ sys.path.append(os.getcwd()) from functions.setup import * init_global_vars() os.system('title {}: SW Bundle Tool'.format(KIT_NAME_FULL)) -global_vars['LogFile'] = r'{LogDir}\Install SW Bundle.log'.format(**global_vars) +set_log_file('Install SW Bundle.log') +D7_MODE = 'd7mode' in sys.argv if __name__ == '__main__': try: @@ -25,20 +26,17 @@ if __name__ == '__main__': 'GenericRepair': 'Repaired', 'UnsupportedOSError': 'Unsupported OS', }} - answer_extensions = ask('Install Extensions?') - answer_adobe_reader = ask('Install Adobe Reader?') - answer_vcr = ask('Install Visual C++ Runtimes?') - answer_ninite = ask('Install Ninite Bundle?') - if answer_ninite and global_vars['OS']['Version'] in ['7']: + answer_extensions = D7_MODE or ask('Install Extensions?') + answer_vcr = D7_MODE or ask('Install Visual C++ Runtimes?') + answer_ninite = D7_MODE or ask('Install Ninite Bundle?') + if not D7_MODE and ( + answer_ninite and global_vars['OS']['Version'] in ['7']): # Vista is dead, not going to check for it answer_mse = ask('Install MSE?') else: answer_mse = False - + print_info('Installing Programs') - if answer_adobe_reader: - try_and_print(message='Adobe Reader DC...', - function=install_adobe_reader, other_results=other_results) if answer_vcr: install_vcredists() if answer_ninite: @@ -62,3 +60,5 @@ if __name__ == '__main__': pass except: major_exception() + +# vim: sts=4 sw=4 ts=4 diff --git a/.bin/Scripts/install_vcredists.py b/.bin/Scripts/install_vcredists.py index 4a1f53ea..fd953551 100644 --- a/.bin/Scripts/install_vcredists.py +++ b/.bin/Scripts/install_vcredists.py @@ -9,7 +9,7 @@ sys.path.append(os.getcwd()) from functions.setup import * init_global_vars() os.system('title {}: Install Visual C++ Runtimes'.format(KIT_NAME_FULL)) -global_vars['LogFile'] = r'{LogDir}\Install Visual C++ Runtimes.log'.format(**global_vars) +set_log_file('Install Visual C++ Runtimes.log') if __name__ == '__main__': try: @@ -20,12 +20,12 @@ if __name__ == '__main__': 'Error': { 'CalledProcessError': 'Unknown Error', }} - + if ask('Install Visual C++ Runtimes?'): install_vcredists() else: abort() - + print_standard('\nDone.') exit_script() except SystemExit: diff --git a/.bin/Scripts/mount-all-volumes b/.bin/Scripts/mount-all-volumes index d743d656..9e5de0ea 100755 --- a/.bin/Scripts/mount-all-volumes +++ b/.bin/Scripts/mount-all-volumes @@ -18,7 +18,7 @@ if __name__ == '__main__': print_standard('{}: Volume mount tool'.format(KIT_NAME_FULL)) # Mount volumes - report = mount_all_volumes() + report = mount_volumes(all_devices=True) # Print report print_info('\nResults') diff --git a/.bin/Scripts/mount-raw-image b/.bin/Scripts/mount-raw-image index e738c445..6a183859 100755 --- a/.bin/Scripts/mount-raw-image +++ b/.bin/Scripts/mount-raw-image @@ -24,7 +24,7 @@ if [[ -f "${1:-}" ]]; then done else # losetup did not detect partitions, attempt whole image - udevil mount -o to "${LOOPDEV}" || true + udevil mount -o ro "${LOOPDEV}" || true fi else usage diff --git a/.bin/Scripts/network_stability_test.py b/.bin/Scripts/network_stability_test.py new file mode 100644 index 00000000..6a7f4f56 --- /dev/null +++ b/.bin/Scripts/network_stability_test.py @@ -0,0 +1,43 @@ +# Wizard Kit: Network Stability Test + +import os +import sys + +# Init +os.chdir(os.path.dirname(os.path.realpath(__file__))) +sys.path.append(os.getcwd()) +from functions.common import * +init_global_vars() +os.system('title {}: Network Stability Test'.format(KIT_NAME_FULL)) + +# STATIC VARIABLES +NETWORK_TEST_URL = 'https://testmy.net/auto?extraID=A&schType=&st=1&r_time=0.1666667&xtimes=12&minDFS=&minUFS=' +YOUTUBE_VID_URL = 'https://youtu.be/z7VYVjR_nwE' +PING_URL = 'google.com' + +if __name__ == '__main__': + try: + stay_awake() + clear_screen() + print_info('{}: Network Stability Test\n'.format(KIT_NAME_FULL)) + + # Open programs + print_success('Starting browser tests') + popen_program(['start', '', NETWORK_TEST_URL.replace('&', '^&')], shell=True) + popen_program(['start', '', YOUTUBE_VID_URL], shell=True) + + # Start pinging + try: + run_program(['ping', '/t', PING_URL], pipe=False) + except KeyboardInterrupt: + # Gracefully close on interrupt + pass + + # Done + print_standard('\nDone.') + pause('Press Enter to exit...') + exit_script() + except SystemExit: + pass + except: + major_exception() diff --git a/.bin/Scripts/pacinit b/.bin/Scripts/pacinit new file mode 100755 index 00000000..eda3f960 --- /dev/null +++ b/.bin/Scripts/pacinit @@ -0,0 +1,15 @@ +#!/bin/bash +# +## Wizard Kit: Update pacman settings to usage in live sessions + +# Disable custom repo (used at build-time) +sudo sed -i -r "s/^(\[custom\])/#\1/" /etc/pacman.conf +sudo sed -i -r "s/^(SigLevel = Optional TrustAll)/#\1/" /etc/pacman.conf +sudo sed -i -r "s/^(Server = )/#\1/" /etc/pacman.conf + +# Disable signature checks +sudo sed -i -r "s/^SigLevel.*/SigLevel = Never/" /etc/pacman.conf + +# Refresh package databases +sudo pacman -Sy + diff --git a/.bin/Scripts/photorec-sort b/.bin/Scripts/photorec-sort new file mode 100755 index 00000000..6f11b0a6 --- /dev/null +++ b/.bin/Scripts/photorec-sort @@ -0,0 +1,150 @@ +#!/bin/bash +# +## sort photorec results into something usefull + +## Set paths +recup_dir="${1%/}" +[ -n "$recup_dir" ] || recup_dir="." +recup_dir="$(realpath "$recup_dir")" +out_dir="$recup_dir/Recovered" +bad_dir="$recup_dir/Corrupt" + +## Test path before starting (using current dir if not specified) +for d in $recup_dir/recup*; do + ### Source: http://stackoverflow.com/a/6364244 + ## Check if the glob gets expanded to existing files. + ## If not, f here will be exactly the pattern above + ## and the exists test will evaluate to false. + [ -e "$d" ] && echo "Found recup folder(s)" || { + echo "ERROR: No recup folders found" + echo "Usage: $0 recup_dir" + exit 1 + } + + ## This is all we needed to know, so we can break after the first iteration + break +done + +# Hard link files into folders by type +for d in $recup_dir/recup*; do + if [ -d "$d" ]; then + echo "Linking $d" + pushd $d >/dev/null + find -type f | while read k; do + file="$(basename "$k")" + src="$(realpath "$k")" + ext="$(echo "${file##*.}" | tr '[:upper:]' '[:lower:]')" + ext_dir="$out_dir/$ext" + if [ "${file##*.}" = "$file" ]; then + ext_dir="$out_dir/_MISC_" + elif [ "$ext" = "jpg" ] && [ "${file:0:1}" = "t" ]; then + ext_dir="$out_dir/jpg-thumbnail" + fi + #echo " $file -> $ext_dir" + [ -d "$ext_dir" ] || mkdir -p "$ext_dir" + ln "$src" "$ext_dir" + done + popd >/dev/null + else + echo "ERROR: '$d' not a directory" + fi +done + +## Check the files output by photorec for corruption +pushd "$out_dir" >/dev/null + +# Check archives with 7-Zip +#for d in 7z bz2 gz lzh lzo rar tar xz zip; do +# if [ -d "$d" ]; then +# echo "Checking $d files" +# pushd "$d" >/dev/null +# for f in *; do +# if ! 7z t "$f" >/dev/null 2>&1; then +# #echo " BAD: $f" +# [ -d "$bad_dir/$d" ] || mkdir -p "$bad_dir/$d" +# mv -n "$f" "$bad_dir/$d/$f" +# fi +# done +# popd >/dev/null +# fi +#done + +# Check Audio/Video files with ffprobe +for d in avi flac flv m4a m4p m4v mkv mid mov mp2 mp3 mp4 mpg mpg2 ogg ts vob wav; do + if [ -d "$d" ]; then + echo "Checking $d files" + pushd "$d" >/dev/null + for f in *; do + if ! ffprobe "$f" >/dev/null 2>&1; then + #echo " BAD: $f" + [ -d "$bad_dir/$d" ] || mkdir -p "$bad_dir/$d" + mv -n "$f" "$bad_dir/$d/$f" + fi + done + popd >/dev/null + fi +done + +# Check .doc files with antiword +if [ -d "doc" ]; then + echo "Checking doc files" + pushd "doc" >/dev/null + for f in *doc; do + if ! antiword "$f" >/dev/null 2>&1; then + #echo " BAD: $f" + [ -d "$bad_dir/doc" ] || mkdir -p "$bad_dir/doc" + mv -n "$f" "$bad_dir/doc/$f" + fi + done + popd >/dev/null +fi + +# Check .docx files with 7z and grep +if [ -d "docx" ]; then + echo "Checking docx files" + pushd "docx" >/dev/null + for f in *docx; do + if ! 7z l "$f" | grep -q -s "word/document.xml"; then + #echo " BAD: $f" + [ -d "$bad_dir/docx" ] || mkdir -p "$bad_dir/docx" + mv -n "$f" "$bad_dir/docx/$f" + fi + done + popd >/dev/null +fi + +# Sort pictures by date (only for common camera formats) +for d in jpg mrw orf raf raw rw2 tif x3f; do + if [ -d "$d" ]; then + echo "Sorting $d files by date" + pushd "$d" >/dev/null + for f in *; do + date_dir="$(date -d "$(stat -c %y "$f")" +"%F")" + [ -d "$date_dir" ] || mkdir "$date_dir" + mv -n "$f" "$date_dir/" + done + popd >/dev/null + fi +done + +# Sort mov files by encoded date +if [ -d "mov" ]; then + echo "Sorting mov files by date" + pushd "mov" >/dev/null + for f in *mov; do + enc_date="$(mediainfo "$f" | grep -i "Encoded date" | head -1 | sed -r 's/.*: //')" + date_dir="$(date -d "$enc_date" +"%F")" + echo "$date_dir" | grep -E -q -s '^[0-9]{4}-[0-9]{2}-[0-9]{2}$' || date_dir="Unknown Date" + [ -d "$date_dir" ] || mkdir "$date_dir" + mv -n "$f" "$date_dir/" + done + popd >/dev/null +fi + +## sort audio files by tags + +## sort matroska files by metadata + +## return to original dir +popd >/dev/null + diff --git a/.bin/Scripts/post_d7.py b/.bin/Scripts/post_d7.py new file mode 100644 index 00000000..e72c5869 --- /dev/null +++ b/.bin/Scripts/post_d7.py @@ -0,0 +1,50 @@ +# Wizard Kit: Post-d7II items + +import os +import sys + +# Init +os.chdir(os.path.dirname(os.path.realpath(__file__))) +sys.path.append(os.getcwd()) +from functions.browsers import * +from functions.cleanup import * +from functions.setup import * +init_global_vars() +os.system('title {}: Post-d7II Work'.format(KIT_NAME_FULL)) +set_log_file('Post-d7II Work.log') + +if __name__ == '__main__': + try: + stay_awake() + clear_screen() + print_info('{}: Post-d7II Work\n'.format(KIT_NAME_FULL)) + other_results = { + 'Warning': { + 'NotInstalledError': 'Not installed', + 'NoProfilesError': 'No profiles found', + }} + + # Scan for Firefox browsers + print_info('Scanning for Firefox browsers') + scan_for_browsers(just_firefox=True) + + # Install uBlock Origin + print_info('Installing uBlock Origin') + install_adblock(just_firefox=True) + + # Cleanup + print_info('Cleanup') + try_and_print(message='d7II...', + function=cleanup_d7ii, cs='Done') + try_and_print(message='{}...'.format(KIT_NAME_FULL), + function=delete_empty_folders, cs='Done', + folder_path=global_vars['ClientDir']) + + # Done + print_standard('\nDone.') + pause('Press Enter to exit...') + exit_script() + except SystemExit: + pass + except: + major_exception() diff --git a/.bin/Scripts/remount-rw b/.bin/Scripts/remount-rw index 4a0b833e..1ba4b41d 100755 --- a/.bin/Scripts/remount-rw +++ b/.bin/Scripts/remount-rw @@ -18,6 +18,4 @@ if udevil mount $DEVICE; then else echo "Failed" fi - -sleep 2s exit 0 diff --git a/.bin/Scripts/reset_browsers.py b/.bin/Scripts/reset_browsers.py new file mode 100644 index 00000000..4f1efbf9 --- /dev/null +++ b/.bin/Scripts/reset_browsers.py @@ -0,0 +1,53 @@ +# Wizard Kit: Reset Browsers + +import os +import sys + +# Init +os.chdir(os.path.dirname(os.path.realpath(__file__))) +sys.path.append(os.getcwd()) +from functions.browsers import * +from functions.cleanup import * +from functions.setup import * +init_global_vars() +os.system('title {}: Browser Reset Tool'.format(KIT_NAME_FULL)) +set_log_file('Browser Reset ({USERNAME}).log'.format(**global_vars['Env'])) +D7_MODE = 'd7mode' in sys.argv + +if __name__ == '__main__': + try: + stay_awake() + clear_screen() + print_info('{}: Browser Reset\n'.format(KIT_NAME_FULL)) + other_results = { + 'Warning': { + 'NotInstalledError': 'Not installed', + 'NoProfilesError': 'No profiles found', + }} + + # Bail early + if not D7_MODE and not ask('Reset browsers to safe defaults first?'): + exit_script() + + # Scan for supported browsers + print_info('Scanning for browsers') + scan_for_browsers() + + # Homepages + print_info('Current homepages') + list_homepages() + + # Backup + print_info('Backing up browsers') + backup_browsers() + + # Reset + print_info('Resetting browsers') + reset_browsers() + + # Done + exit_script() + except SystemExit: + pass + except: + major_exception() diff --git a/.bin/Scripts/safemode_enter.py b/.bin/Scripts/safemode_enter.py index c3213cb9..cce7e28a 100644 --- a/.bin/Scripts/safemode_enter.py +++ b/.bin/Scripts/safemode_enter.py @@ -17,16 +17,16 @@ if __name__ == '__main__': other_results = { 'Error': {'CalledProcessError': 'Unknown Error'}, 'Warning': {}} - + if not ask('Enable booting to SafeMode (with Networking)?'): abort() - + # Configure SafeMode try_and_print(message='Set BCD option...', function=enable_safemode, other_results=other_results) try_and_print(message='Enable MSI in SafeMode...', function=enable_safemode_msi, other_results=other_results) - + # Done print_standard('\nDone.') pause('Press Enter to reboot...') diff --git a/.bin/Scripts/safemode_exit.py b/.bin/Scripts/safemode_exit.py index 1449cff5..af66222e 100644 --- a/.bin/Scripts/safemode_exit.py +++ b/.bin/Scripts/safemode_exit.py @@ -17,16 +17,16 @@ if __name__ == '__main__': other_results = { 'Error': {'CalledProcessError': 'Unknown Error'}, 'Warning': {}} - + if not ask('Disable booting to SafeMode?'): abort() - + # Configure SafeMode try_and_print(message='Remove BCD option...', function=disable_safemode, other_results=other_results) try_and_print(message='Disable MSI in SafeMode...', function=disable_safemode_msi, other_results=other_results) - + # Done print_standard('\nDone.') pause('Press Enter to reboot...') diff --git a/.bin/Scripts/settings/launchers.py b/.bin/Scripts/settings/launchers.py index 6e011691..fb194764 100644 --- a/.bin/Scripts/settings/launchers.py +++ b/.bin/Scripts/settings/launchers.py @@ -8,16 +8,27 @@ LAUNCHERS = { 'L_ITEM': 'activate.py', 'L_ELEV': 'True', }, + 'd7II': { + 'L_TYPE': 'Executable', + 'L_PATH': 'd7II', + 'L_ITEM': 'd7II.exe', + }, + 'Post-d7II Work': { + 'L_TYPE': 'PyScript', + 'L_PATH': 'Scripts', + 'L_ITEM': 'post_d7.py', + 'L_ELEV': 'True', + }, 'System Checklist': { 'L_TYPE': 'PyScript', 'L_PATH': 'Scripts', 'L_ITEM': 'system_checklist.py', 'L_ELEV': 'True', }, - 'System Diagnostics': { + 'System Checklist (HW)': { 'L_TYPE': 'PyScript', 'L_PATH': 'Scripts', - 'L_ITEM': 'system_diagnostics.py', + 'L_ITEM': 'system_checklist_hw.py', 'L_ELEV': 'True', }, 'User Checklist': { @@ -26,6 +37,41 @@ LAUNCHERS = { 'L_ITEM': 'user_checklist.py', }, }, + r'.bin\Scripts\launchers_for_d7': { + 'Browser Reset': { + 'L_TYPE': 'PyScript', + 'L_PATH': 'Scripts', + 'L_ITEM': 'reset_browsers.py', + 'L_ARGS': 'd7mode', + }, + 'Install SW Bundle': { + 'L_TYPE': 'PyScript', + 'L_PATH': 'Scripts', + 'L_ITEM': 'install_sw_bundle.py', + 'L_ARGS': 'd7mode', + 'L_ELEV': 'True', + }, + 'System Checklist': { + 'L_TYPE': 'PyScript', + 'L_PATH': 'Scripts', + 'L_ITEM': 'system_checklist.py', + 'L_ARGS': 'd7mode', + 'L_ELEV': 'True', + }, + 'System Diagnostics': { + 'L_TYPE': 'PyScript', + 'L_PATH': 'Scripts', + 'L_ITEM': 'system_diagnostics.py', + 'L_ARGS': 'd7mode', + 'L_ELEV': 'True', + }, + 'User Checklist': { + 'L_TYPE': 'PyScript', + 'L_PATH': 'Scripts', + 'L_ITEM': 'user_checklist.py', + 'L_ARGS': 'd7mode', + }, + }, r'Data Recovery': { 'PhotoRec (CLI)': { 'L_TYPE': 'Executable', @@ -49,12 +95,17 @@ LAUNCHERS = { }, }, r'Data Transfers': { + "Fab's Autobackup Pro": { + 'L_TYPE': 'Executable', + 'L_PATH': 'AutoBackupPro', + 'L_ITEM': 'autobackup6pro.exe', + }, 'FastCopy (as ADMIN)': { 'L_TYPE': 'Executable', 'L_PATH': 'FastCopy', 'L_ITEM': 'FastCopy.exe', 'L_ARGS': ( - r' /logfile=%log_dir%\FastCopy.log' + r' /logfile=%log_dir%\Tools\FastCopy.log' r' /cmd=noexist_only' r' /utf8' r' /skip_empty_dir' @@ -94,7 +145,7 @@ LAUNCHERS = { ), 'L_ELEV': 'True', 'Extra Code': [ - r'call "%bin%\Scripts\init_client_dir.cmd" /Info /Transfer', + r'call "%bin%\Scripts\init_client_dir.cmd" /Logs /Transfer', ], }, 'FastCopy': { @@ -102,7 +153,7 @@ LAUNCHERS = { 'L_PATH': 'FastCopy', 'L_ITEM': 'FastCopy.exe', 'L_ARGS': ( - r' /logfile=%log_dir%\FastCopy.log' + r' /logfile=%log_dir%\Tools\FastCopy.log' r' /cmd=noexist_only' r' /utf8' r' /skip_empty_dir' @@ -141,7 +192,7 @@ LAUNCHERS = { r' /to=%client_dir%\Transfer_%iso_date%\ ' ), 'Extra Code': [ - r'call "%bin%\Scripts\init_client_dir.cmd" /Info /Transfer', + r'call "%bin%\Scripts\init_client_dir.cmd" /Logs /Transfer', ], }, 'KVRT': { @@ -161,6 +212,12 @@ LAUNCHERS = { r'mkdir "%q_dir%">nul 2>&1', ], }, + 'Mac & Linux Reader': { + 'L_TYPE': 'Executable', + 'L_PATH': 'LinuxReader', + 'L_ITEM': 'LinuxReader.exe', + 'L_ELEV': 'True', + }, 'Transferred Keys': { 'L_TYPE': 'PyScript', 'L_PATH': 'Scripts', @@ -188,17 +245,10 @@ LAUNCHERS = { }, }, r'Diagnostics': { - 'HWiNFO': { + 'AIDA64': { 'L_TYPE': 'Executable', - 'L_PATH': 'HWiNFO', - 'L_ITEM': 'HWiNFO.exe', - 'Extra Code': [ - r'for %%a in (32 64) do (', - r' copy /y "%bin%\HWiNFO\general.ini" "%bin%\HWiNFO\HWiNFO%%a.ini"', - r' (echo SensorsOnly=0)>>"%bin%\HWiNFO\HWiNFO%%a.ini"', - r' (echo SummaryOnly=0)>>"%bin%\HWiNFO\HWiNFO%%a.ini"', - r')', - ], + 'L_PATH': 'AIDA64', + 'L_ITEM': 'aida64.exe', }, 'ProduKey': { 'L_TYPE': 'Executable', @@ -212,13 +262,14 @@ LAUNCHERS = { r')', ], }, + 'System Diagnostics': { + 'L_TYPE': 'PyScript', + 'L_PATH': 'Scripts', + 'L_ITEM': 'system_diagnostics.py', + 'L_ELEV': 'True', + }, }, r'Diagnostics\Extras': { - 'AIDA64': { - 'L_TYPE': 'Executable', - 'L_PATH': 'AIDA64', - 'L_ITEM': 'aida64.exe', - }, 'Autoruns (with VirusTotal Scan)': { 'L_TYPE': 'Executable', 'L_PATH': 'Autoruns', @@ -251,18 +302,40 @@ LAUNCHERS = { 'L_TYPE': 'Executable', 'L_PATH': 'erunt', 'L_ITEM': 'ERUNT.EXE', - 'L_ARGS': '%client_dir%\Backups\%iso_date%\Registry sysreg curuser otherusers', + 'L_ARGS': '%client_dir%\Backups\Registry\%iso_date% sysreg curuser otherusers', 'L_ELEV': 'True', 'Extra Code': [ - r'call "%bin%\Scripts\init_client_dir.cmd" /Info', + r'call "%bin%\Scripts\init_client_dir.cmd" /Logs', ], }, + 'FurMark': { + 'L_TYPE': 'Executable', + 'L_PATH': 'FurMark', + 'L_ITEM': 'FurMark.exe', + }, + 'HDTune Pro': { + 'L_TYPE': 'Executable', + 'L_PATH': 'HDTunePro', + 'L_ITEM': 'HDTunePro.exe', + }, 'HitmanPro': { 'L_TYPE': 'Executable', 'L_PATH': 'HitmanPro', 'L_ITEM': 'HitmanPro.exe', 'Extra Code': [ - r'call "%bin%\Scripts\init_client_dir.cmd" /Info', + r'call "%bin%\Scripts\init_client_dir.cmd" /Logs', + ], + }, + 'HWiNFO': { + 'L_TYPE': 'Executable', + 'L_PATH': 'HWiNFO', + 'L_ITEM': 'HWiNFO.exe', + 'Extra Code': [ + r'for %%a in (32 64) do (', + r' copy /y "%bin%\HWiNFO\general.ini" "%bin%\HWiNFO\HWiNFO%%a.ini"', + r' (echo SensorsOnly=0)>>"%bin%\HWiNFO\HWiNFO%%a.ini"', + r' (echo SummaryOnly=0)>>"%bin%\HWiNFO\HWiNFO%%a.ini"', + r')', ], }, 'HWiNFO (Sensors)': { @@ -282,8 +355,8 @@ LAUNCHERS = { 'Intel RST (Current Release)': { 'L_TYPE': 'Executable', 'L_PATH': '_Drivers\Intel RST', - 'L_ITEM': 'SetupRST_16.0.exe', - 'L_7ZIP': 'SetupRST_16.0.exe', + 'L_ITEM': 'SetupRST_16.5.exe', + 'L_7ZIP': 'SetupRST_16.5.exe', }, 'Intel RST (Previous Releases)': { 'L_TYPE': 'Folder', @@ -349,6 +422,12 @@ LAUNCHERS = { }, }, r'Installers': { + 'ESET NOD32 AV': { + 'L_TYPE': 'PyScript', + 'L_PATH': 'Scripts', + 'L_ITEM': 'install_eset_nod32_av.py', + 'L_ELEV': 'True', + }, 'SW Bundle': { 'L_TYPE': 'PyScript', 'L_PATH': 'Scripts', @@ -356,32 +435,6 @@ LAUNCHERS = { 'L_ELEV': 'True', }, }, - r'Installers\Extras\Office\2013': { - 'Home and Business 2013 (x32)': { - 'L_TYPE': 'Office', - 'L_PATH': '2013', - 'L_ITEM': 'hb_32.xml', - 'L_NCMD': 'True', - }, - 'Home and Business 2013 (x64)': { - 'L_TYPE': 'Office', - 'L_PATH': '2013', - 'L_ITEM': 'hb_64.xml', - 'L_NCMD': 'True', - }, - 'Home and Student 2013 (x32)': { - 'L_TYPE': 'Office', - 'L_PATH': '2013', - 'L_ITEM': 'hs_32.xml', - 'L_NCMD': 'True', - }, - 'Home and Student 2013 (x64)': { - 'L_TYPE': 'Office', - 'L_PATH': '2013', - 'L_ITEM': 'hs_64.xml', - 'L_NCMD': 'True', - }, - }, r'Installers\Extras\Office\2016': { 'Home and Business 2016 (x32)': { 'L_TYPE': 'Office', @@ -465,6 +518,11 @@ LAUNCHERS = { 'L_ITEM': 'safemode_exit.py', 'L_ELEV': 'True', }, + 'Network Stability Test': { + 'L_TYPE': 'PyScript', + 'L_PATH': 'Scripts', + 'L_ITEM': 'network_stability_test.py', + }, 'Notepad++': { 'L_TYPE': 'Executable', 'L_PATH': 'notepadplusplus', @@ -475,17 +533,28 @@ LAUNCHERS = { 'L_PATH': 'PuTTY', 'L_ITEM': 'PUTTY.EXE', }, - 'TreeSizeFree': { + 'ShutUp10': { 'L_TYPE': 'Executable', - 'L_PATH': 'TreeSizeFree', - 'L_ITEM': 'TreeSizeFree.exe', - 'L_ELEV': 'True', + 'L_PATH': 'ShutUp10', + 'L_ITEM': 'OOSU10.exe', + }, + 'ShutUp10 (1201 Minimal Selection)': { + 'L_TYPE': 'Executable', + 'L_PATH': 'ShutUp10', + 'L_ITEM': 'OOSU10.exe', + 'L_ARGS': '1201.cfg', }, 'Update Kit': { 'L_TYPE': 'PyScript', 'L_PATH': 'Scripts', 'L_ITEM': 'update_kit.py', }, + 'WizTree': { + 'L_TYPE': 'Executable', + 'L_PATH': 'WizTree', + 'L_ITEM': 'WizTree.exe', + 'L_ELEV': 'True', + }, 'XMPlay': { 'L_TYPE': 'Executable', 'L_PATH': 'XMPlay', @@ -529,6 +598,11 @@ LAUNCHERS = { 'L_ITEM': 'dism.py', 'L_ELEV': 'True', }, + 'ESET Online Scanner': { + 'L_TYPE': 'Executable', + 'L_PATH': 'ESET', + 'L_ITEM': 'ESET.exe', + }, 'KVRT': { 'L_TYPE': 'Executable', 'L_PATH': 'KVRT', @@ -550,8 +624,10 @@ LAUNCHERS = { 'L_TYPE': 'Executable', 'L_PATH': 'RKill', 'L_ITEM': 'RKill.exe', + 'L_ARGS': '-s -l %log_dir%\Tools\RKill.log', + 'L_ELEV': 'True', 'Extra Code': [ - r'call "%bin%\Scripts\init_client_dir.cmd" /Info', + r'call "%bin%\Scripts\init_client_dir.cmd" /Logs', ], }, 'SFC Scan': { @@ -565,7 +641,7 @@ LAUNCHERS = { 'L_PATH': 'TDSSKiller', 'L_ITEM': 'TDSSKiller.exe', 'L_ARGS': ( - r' -l %log_dir%\TDSSKiller.log' + r' -l %log_dir%\Tools\TDSSKiller.log' r' -qpath %q_dir%' r' -accepteula' r' -accepteulaksn' @@ -578,6 +654,33 @@ LAUNCHERS = { r'mkdir "%q_dir%">nul 2>&1', ], }, + 'WinAIO Repair': { + 'L_TYPE': 'Executable', + 'L_PATH': 'WinAIO Repair', + 'L_ITEM': 'Repair_Windows.exe', + 'L_ELEV': 'True', + 'Extra Code': [ + r'copy /y "%bin%\WinAIORepair\__empty.ini" "%bin%\WinAIORepair\settings.ini"', + ], + }, + 'WinAIO Repair (Fix Associations)': { + 'L_TYPE': 'Executable', + 'L_PATH': 'WinAIO Repair', + 'L_ITEM': 'Repair_Windows.exe', + 'L_ELEV': 'True', + 'Extra Code': [ + r'copy /y "%bin%\WinAIORepair\__associations.ini" "%bin%\WinAIORepair\settings.ini"', + ], + }, + 'WinAIO Repair (Fix Permissions)': { + 'L_TYPE': 'Executable', + 'L_PATH': 'WinAIO Repair', + 'L_ITEM': 'Repair_Windows.exe', + 'L_ELEV': 'True', + 'Extra Code': [ + r'copy /y "%bin%\WinAIORepair\__permissions.ini" "%bin%\WinAIORepair\settings.ini"', + ], + }, }, r'Uninstallers': { 'IObit Uninstaller': { diff --git a/.bin/Scripts/settings/main.py b/.bin/Scripts/settings/main.py index c49da96e..b59dce45 100644 --- a/.bin/Scripts/settings/main.py +++ b/.bin/Scripts/settings/main.py @@ -1,89 +1,99 @@ # Wizard Kit: Settings - Main / Branding # Features -ENABLED_UPLOAD_DATA = False +ENABLED_OPEN_LOGS = False ENABLED_TICKET_NUMBERS = False +ENABLED_UPLOAD_DATA = True # STATIC VARIABLES (also used by BASH and BATCH files) ## NOTE: There are no spaces around the = for easier parsing in BASH and BATCH # Main Kit -ARCHIVE_PASSWORD='Abracadabra' -KIT_NAME_FULL='Wizard Kit' -KIT_NAME_SHORT='WK' -SUPPORT_MESSAGE='Please let 2Shirt know by opening an issue on GitHub' +ARCHIVE_PASSWORD='Sorted1201' +KIT_NAME_FULL='1201-WizardKit' +KIT_NAME_SHORT='1201' +SUPPORT_MESSAGE='Please let support know by opening an issue on Gogs' +# osTicket +DB_HOST='osticket.1201.com' +DB_NAME='osticket' +DB_USER='wizardkit' +DB_PASS='U9bJnF9eamVkfsVw' +SSH_PORT='22' +SSH_USER='sql_tunnel' +# imgur +IMGUR_CLIENT_ID='3d1ee1d38707b85' # Live Linux MPRIME_LIMIT='7' # of minutes to run Prime95 during hw-diags -ROOT_PASSWORD='Abracadabra' -TECH_PASSWORD='Abracadabra' +ROOT_PASSWORD='1201 loves computers!' +TECH_PASSWORD='Sorted1201' +# Root Certificate Authority +ROOT_CA_NAME='1201_Root_CA.crt' # Server IP addresses -OFFICE_SERVER_IP='10.0.0.10' -QUICKBOOKS_SERVER_IP='10.0.0.10' +OFFICE_SERVER_IP='10.11.1.20' +QUICKBOOKS_SERVER_IP='10.11.1.20' # Time Zones LINUX_TIME_ZONE='America/Los_Angeles' # See 'timedatectl list-timezones' for valid values WINDOWS_TIME_ZONE='Pacific Standard Time' # See 'tzutil /l' for valid values # WiFi -WIFI_SSID='SomeWifi' -WIFI_PASSWORD='Abracadabra' +WIFI_SSID='1201Computers' +WIFI_PASSWORD='justintime!' # 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', + { 'IP': '10.11.1.20', + 'Name': 'Anaconda', 'Mounted': False, 'Share': 'Backups', - 'User': 'restore', - 'Pass': 'Abracadabra', + 'User': 'cx', + 'Pass': 'cx', 'RW-User': 'backup', - 'RW-Pass': 'Abracadabra', - }, - { 'IP': '10.0.0.11', - 'Name': 'ServerTwo', - 'Mounted': False, - 'Share': 'Backups', - 'User': 'restore', - 'Pass': 'Abracadabra', - 'RW-User': 'backup', - 'RW-Pass': 'Abracadabra', + 'RW-Pass': '1201 loves computers!', }, ] +BENCHMARK_SERVER = { + 'Name': 'Nextcloud', + 'Short Url': 'https://1201north.ddns.net:8001/index.php/f/27892', + 'Url': 'https://1201north.ddns.net:8001/public.php/webdav/Benchmarks', + 'User': 'RAE7ajRk25CBnW6', + 'Pass': '', +} CRASH_SERVER = { - 'Name': 'CrashServer', - 'Url': '', - 'User': '', + 'Name': 'Nextcloud', + 'Url': 'https://1201north.ddns.net:8001/public.php/webdav/WizardKit_Issues', + 'User': 'LoQ97J3r6CFGT2T', 'Pass': '', } OFFICE_SERVER = { 'IP': OFFICE_SERVER_IP, - 'Name': 'ServerOne', + 'Name': 'Anaconda', 'Mounted': False, - 'Share': 'Office', - 'User': 'restore', - 'Pass': 'Abracadabra', + 'Share': r'Public\Office\MS Office', + 'User': 'cx', + 'Pass': 'cx', 'RW-User': 'backup', - 'RW-Pass': 'Abracadabra', + 'RW-Pass': '1201 loves computers!', } QUICKBOOKS_SERVER = { 'IP': QUICKBOOKS_SERVER_IP, - 'Name': 'ServerOne', + 'Name': 'Anaconda', 'Mounted': False, - 'Share': 'QuickBooks', - 'User': 'restore', - 'Pass': 'Abracadabra', + 'Share': r'Public\QuickBooks', + 'User': 'cx', + 'Pass': 'cx', 'RW-User': 'backup', - 'RW-Pass': 'Abracadabra', + 'RW-Pass': '1201 loves computers!', } WINDOWS_SERVER = { - 'IP': '10.0.0.10', - 'Name': 'ServerOne', + 'IP': '10.11.1.20', + 'Name': 'Anaconda', 'Mounted': False, - 'Share': 'Windows', - 'User': 'restore', - 'Pass': 'Abracadabra', + 'Share': r'Public\Windows', + 'User': 'cx', + 'Pass': 'cx', 'RW-User': 'backup', - 'RW-Pass': 'Abracadabra', + 'RW-Pass': '1201 loves computers!', } if __name__ == '__main__': diff --git a/.bin/Scripts/settings/sources.py b/.bin/Scripts/settings/sources.py index 3560b092..c65735f2 100644 --- a/.bin/Scripts/settings/sources.py +++ b/.bin/Scripts/settings/sources.py @@ -1,9 +1,10 @@ # Wizard Kit: Settings - Sources SOURCE_URLS = { + 'Adobe Reader DC': 'http://ardownload.adobe.com/pub/adobe/reader/win/AcrobatDC/1801120058/AcroRdrDC1801120058_en_US.exe', + 'AdwCleaner': 'https://downloads.malwarebytes.com/file/adwcleaner', 'AIDA64': 'http://download.aida64.com/aida64engineer597.zip', - 'Adobe Reader DC': 'http://ardownload.adobe.com/pub/adobe/reader/win/AcrobatDC/1801120040/AcroRdrDC1801120040_en_US.exe', - 'AdwCleaner': 'https://toolslib.net/downloads/finish/1-adwcleaner/', + 'aria2': 'https://github.com/aria2/aria2/releases/download/release-1.34.0/aria2-1.34.0-win-32bit-build1.zip', 'Autoruns': 'https://download.sysinternals.com/files/Autoruns.zip', 'BleachBit': 'https://download.bleachbit.org/BleachBit-2.0-portable.zip', 'BlueScreenView32': 'http://www.nirsoft.net/utils/bluescreenview.zip', @@ -12,46 +13,47 @@ SOURCE_URLS = { 'ClassicStartSkin': 'http://www.classicshell.net/forum/download/file.php?id=3001&sid=9a195960d98fd754867dcb63d9315335', 'Du': 'https://download.sysinternals.com/files/DU.zip', 'ERUNT': 'http://www.aumha.org/downloads/erunt.zip', + 'ESET NOD32 AV': 'https://download.eset.com/com/eset/apps/home/eav/windows/latest/eav_nt64.exe', 'Everything32': 'https://www.voidtools.com/Everything-1.4.1.895.x86.zip', 'Everything64': 'https://www.voidtools.com/Everything-1.4.1.895.x64.zip', - 'FastCopy32': 'http://ftp.vector.co.jp/69/93/2323/FastCopy341.zip', - 'FastCopy64': 'http://ftp.vector.co.jp/69/93/2323/FastCopy341_x64.zip', - 'Firefox uBO': 'https://addons.mozilla.org/firefox/downloads/file/956394/ublock_origin-1.16.6-an+fx.xpi', - 'HWiNFO': 'http://app.oldfoss.com:81/download/HWiNFO/hwi_582.zip', + 'FastCopy': 'http://ftp.vector.co.jp/70/64/2323/FastCopy354_installer.zip', + 'FurMark': 'https://geeks3d.com/dl/get/569', + 'Firefox uBO': 'https://addons.mozilla.org/firefox/downloads/file/1056733/ublock_origin-1.16.20-an+fx.xpi', 'HitmanPro32': 'https://dl.surfright.nl/HitmanPro.exe', 'HitmanPro64': 'https://dl.surfright.nl/HitmanPro_x64.exe', - 'IOBit_Uninstaller': 'https://portableapps.com/redirect/?a=IObitUninstallerPortable&t=http%3A%2F%2Fdownloads.portableapps.com%2Fportableapps%2Fiobituninstallerportable%2FIObitUninstallerPortable_7.3.0.13.paf.exe', + 'HWiNFO': 'http://app.oldfoss.com:81/download/HWiNFO/hwi_588.zip', 'Intel SSD Toolbox': r'https://downloadmirror.intel.com/27656/eng/Intel%20SSD%20Toolbox%20-%20v3.5.2.exe', + 'IOBit_Uninstaller': 'https://portableapps.duckduckgo.com/IObitUninstallerPortable_7.5.0.7.paf.exe', 'KVRT': 'http://devbuilds.kaspersky-labs.com/devbuilds/KVRT/latest/full/KVRT.exe', - 'NotepadPlusPlus': 'https://notepad-plus-plus.org/repository/7.x/7.5.6/npp.7.5.6.bin.minimalist.7z', - 'Office Deployment Tool 2013': 'https://download.microsoft.com/download/6/2/3/6230F7A2-D8A9-478B-AC5C-57091B632FCF/officedeploymenttool_x86_4827-1000.exe', - 'Office Deployment Tool 2016': 'https://download.microsoft.com/download/2/7/A/27AF1BE6-DD20-4CB4-B154-EBAB8A7D4A7E/officedeploymenttool_9326.3600.exe', + 'Linux Reader': 'https://www.diskinternals.com/download/Linux_Reader.exe', + 'Macs Fan Control': 'https://www.crystalidea.com/downloads/macsfancontrol_setup.exe', + 'NirCmd32': 'https://www.nirsoft.net/utils/nircmd.zip', + 'NirCmd64': 'https://www.nirsoft.net/utils/nircmd-x64.zip', + 'NotepadPlusPlus': 'https://notepad-plus-plus.org/repository/7.x/7.5.8/npp.7.5.8.bin.minimalist.7z', + 'Office Deployment Tool 2016': 'https://download.microsoft.com/download/2/7/A/27AF1BE6-DD20-4CB4-B154-EBAB8A7D4A7E/officedeploymenttool_10810.33603.exe', 'ProduKey32': 'http://www.nirsoft.net/utils/produkey.zip', 'ProduKey64': 'http://www.nirsoft.net/utils/produkey-x64.zip', 'PuTTY': 'https://the.earth.li/~sgtatham/putty/latest/w32/putty.zip', 'RKill': 'https://www.bleepingcomputer.com/download/rkill/dl/10/', + 'Samsung Magician': 'https://s3.ap-northeast-2.amazonaws.com/global.semi.static/SAMSUNG_SSD_v5_2_1_180523/CD0CFAC4675B9E502899B41BE00525C3909ECE3AD57CC1A2FB6B74A766B2A1EA/Samsung_Magician_Installer.zip', 'SDIO Themes': 'http://snappy-driver-installer.org/downloads/SDIO_Themes.zip', 'SDIO Torrent': 'http://snappy-driver-installer.org/downloads/SDIO_Update.torrent', - 'Samsung Magician': 'http://downloadcenter.samsung.com/content/SW/201801/20180123130636806/Samsung_Magician_Installer.exe', + 'ShutUp10': 'https://dl5.oo-software.com/files/ooshutup10/OOSU10.exe', 'TDSSKiller': 'https://media.kaspersky.com/utilities/VirusUtilities/EN/tdsskiller.exe', 'TestDisk': 'https://www.cgsecurity.org/testdisk-7.1-WIP.win.zip', - 'TreeSizeFree': 'https://www.jam-software.com/treesize_free/TreeSizeFree-Portable.zip', 'wimlib32': 'https://wimlib.net/downloads/wimlib-1.12.0-windows-i686-bin.zip', 'wimlib64': 'https://wimlib.net/downloads/wimlib-1.12.0-windows-x86_64-bin.zip', + 'WinAIO Repair': 'http://www.tweaking.com/files/setups/tweaking.com_windows_repair_aio.zip', 'Winapp2': 'https://github.com/MoscaDotTo/Winapp2/archive/master.zip', - 'XMPlay 7z': 'http://support.xmplay.com/files/16/xmp-7z.zip?v=800962', - 'XMPlay Game': 'http://support.xmplay.com/files/12/xmp-gme.zip?v=515637', - 'XMPlay RAR': 'http://support.xmplay.com/files/16/xmp-rar.zip?v=409646', - 'XMPlay WAModern': 'http://support.xmplay.com/files/10/WAModern.zip?v=207099', - 'XMPlay': 'http://support.xmplay.com/files/20/xmplay383.zip?v=298195', + 'WizTree': 'https://antibody-software.com/files/wiztree_3_26_portable.zip', + 'XMPlay 7z': 'https://support.xmplay.com/files/16/xmp-7z.zip?v=800962', + 'XMPlay Game': 'https://support.xmplay.com/files/12/xmp-gme.zip?v=515637', + 'XMPlay RAR': 'https://support.xmplay.com/files/16/xmp-rar.zip?v=409646', + 'XMPlay WAModern': 'https://support.xmplay.com/files/10/WAModern.zip?v=207099', + 'XMPlay': 'https://support.xmplay.com/files/20/xmplay383.zip?v=298195', 'XYplorerFree': 'https://www.xyplorer.com/download/xyplorer_free_noinstall.zip', - 'aria2': 'https://github.com/aria2/aria2/releases/download/release-1.33.1/aria2-1.33.1-win-32bit-build1.zip', } VCREDIST_SOURCES = { - '2008sp1': { - '32': 'https://download.microsoft.com/download/5/D/8/5D8C65CB-C849-4025-8E95-C3966CAFD8AE/vcredist_x86.exe', - '64': 'https://download.microsoft.com/download/5/D/8/5D8C65CB-C849-4025-8E95-C3966CAFD8AE/vcredist_x64.exe', - }, '2010sp1': { '32': 'https://download.microsoft.com/download/1/6/5/165255E7-1014-4D0A-B094-B6A430A6BFFC/vcredist_x86.exe', '64': 'https://download.microsoft.com/download/1/6/5/165255E7-1014-4D0A-B094-B6A430A6BFFC/vcredist_x64.exe', @@ -65,15 +67,14 @@ VCREDIST_SOURCES = { '64': 'https://download.microsoft.com/download/0/5/6/056dcda9-d667-4e27-8001-8a0c6971d6b1/vcredist_x64.exe', }, '2017': { - '32': 'https://download.visualstudio.microsoft.com/download/pr/100349138/88b50ce70017bf10f2d56d60fcba6ab1/VC_redist.x86.exe', - '64': 'https://download.visualstudio.microsoft.com/download/pr/100349091/2cd2dba5748dc95950a5c42c2d2d78e4/VC_redist.x64.exe', + '32': 'https://aka.ms/vs/15/release/vc_redist.x86.exe', + '64': 'https://aka.ms/vs/15/release/vc_redist.x64.exe', }, } NINITE_SOURCES = { 'Bundles': { - 'Runtimes.exe': '.net4.7.1-air-java8-silverlight', - 'Legacy.exe': '.net4.7.1-7zip-air-chrome-firefox-java8-silverlight-vlc', - 'Modern.exe': '.net4.7.1-7zip-air-chrome-classicstart-firefox-java8-silverlight-vlc', + 'Legacy.exe': '.net4.7.2-7zip-chrome-firefox-sumatrapdf-vlc', + 'Modern.exe': '.net4.7.2-7zip-chrome-classicstart-firefox-sumatrapdf-vlc', }, 'Audio-Video': { 'AIMP.exe': 'aimp', @@ -98,6 +99,7 @@ NINITE_SOURCES = { 'SugarSync.exe': 'sugarsync', }, 'Communication': { + 'Discord': 'discord', 'Pidgin.exe': 'pidgin', 'Skype.exe': 'skype', 'Trillian.exe': 'trillian', @@ -109,7 +111,6 @@ NINITE_SOURCES = { }, 'Developer': { 'Eclipse.exe': 'eclipse', - 'FileZilla.exe': 'filezilla', 'JDK 8.exe': 'jdk8', 'JDK 8 (x64).exe': 'jdkx8', 'Notepad++.exe': 'notepadplusplus', @@ -153,7 +154,7 @@ NINITE_SOURCES = { }, 'Runtimes': { 'Adobe Air.exe': 'air', - 'dotNET.exe': '.net4.7.1', + 'dotNET.exe': '.net4.7.2', 'Java 8.exe': 'java8', 'Shockwave.exe': 'shockwave', 'Silverlight.exe': 'silverlight', @@ -197,8 +198,10 @@ RST_SOURCES = { 'SetupRST_15.8.exe': 'https://downloadmirror.intel.com/27442/eng/SetupRST.exe', 'SetupRST_15.9.exe': 'https://downloadmirror.intel.com/27400/eng/SetupRST.exe', 'SetupRST_16.0.exe': 'https://downloadmirror.intel.com/27681/eng/SetupRST.exe', + 'SetupRST_16.5.exe': 'https://downloadmirror.intel.com/27984/eng/SetupRST.exe', } - if __name__ == '__main__': print("This file is not meant to be called directly.") + +# vim: sts=4 sw=4 ts=4 tw=0 nowrap diff --git a/.bin/Scripts/settings/tools.py b/.bin/Scripts/settings/tools.py index bb2cda60..b470603c 100644 --- a/.bin/Scripts/settings/tools.py +++ b/.bin/Scripts/settings/tools.py @@ -30,6 +30,9 @@ TOOLS = { '64': r'HWiNFO\HWiNFO64.exe'}, 'KVRT': { '32': r'KVRT\KVRT.exe'}, + 'NirCmd': { + '32': r'NirCmd\nircmdc.exe', + '64': r'NirCmd\nircmdc64.exe'}, 'NotepadPlusPlus': { '32': r'NotepadPlusPlus\notepadplusplus.exe'}, 'ProduKey': { diff --git a/.bin/Scripts/settings/windows_builds.py b/.bin/Scripts/settings/windows_builds.py index bdac8bf4..6c642928 100644 --- a/.bin/Scripts/settings/windows_builds.py +++ b/.bin/Scripts/settings/windows_builds.py @@ -6,16 +6,16 @@ WINDOWS_BUILDS = { '6000': ( 'Vista', 'RTM', 'Longhorn', None, 'unsupported'), '6001': ( 'Vista', 'SP1', 'Longhorn', None, 'unsupported'), '6002': ( 'Vista', 'SP2', 'Longhorn', None, 'unsupported'), - + '7600': ( '7', 'RTM', 'Vienna', None, 'unsupported'), '7601': ( '7', 'SP1', 'Vienna', None, 'outdated'), - + #9199 is a fake build since Win 8 is 6.2.9200 but that collides with Win 8.1 (6.3.9200) '9199': ( '8', 'RTM', None, None, 'unsupported'), '9200': ( '8.1', None, 'Blue', None, 'outdated'), '9600': ( '8.1', None, 'Update', None, None), - + '9841': ( '10', None, 'Threshold 1', None, 'preview build'), '9860': ( '10', None, 'Threshold 1', None, 'preview build'), '9879': ( '10', None, 'Threshold 1', None, 'preview build'), diff --git a/.bin/Scripts/sfc_scan.py b/.bin/Scripts/sfc_scan.py index 81211747..d7a3d3fc 100644 --- a/.bin/Scripts/sfc_scan.py +++ b/.bin/Scripts/sfc_scan.py @@ -9,7 +9,7 @@ sys.path.append(os.getcwd()) from functions.repairs import * init_global_vars() os.system('title {}: SFC Tool'.format(KIT_NAME_FULL)) -global_vars['LogFile'] = r'{LogDir}\SFC Tool.log'.format(**global_vars) +set_log_file('SFC Tool.log') if __name__ == '__main__': try: @@ -28,7 +28,7 @@ if __name__ == '__main__': function=run_sfc_scan, other_results=other_results) else: abort() - + # Done print_standard('\nDone.') pause('Press Enter to exit...') diff --git a/.bin/Scripts/system_checklist.py b/.bin/Scripts/system_checklist.py index 73410d92..9803d90c 100644 --- a/.bin/Scripts/system_checklist.py +++ b/.bin/Scripts/system_checklist.py @@ -14,7 +14,8 @@ from functions.product_keys import * from functions.setup import * init_global_vars() os.system('title {}: System Checklist Tool'.format(KIT_NAME_FULL)) -global_vars['LogFile'] = r'{LogDir}\System Checklist.log'.format(**global_vars) +set_log_file('System Checklist.log') +D7_MODE = 'd7mode' in sys.argv if __name__ == '__main__': try: @@ -24,11 +25,17 @@ if __name__ == '__main__': ticket_number = get_ticket_number() other_results = { 'Error': { - 'CalledProcessError': 'Unknown Error', - 'BIOSKeyNotFoundError': 'BIOS key not found', - 'FileNotFoundError': 'File not found', + 'BIOSKeyNotFoundError': 'BIOS key not found', + 'CalledProcessError': 'Unknown Error', + 'FileNotFoundError': 'File not found', + 'GenericError': 'Unknown Error', + 'SecureBootDisabledError': 'Disabled', }, - 'Warning': {}} + 'Warning': { + 'OSInstalledLegacyError': 'OS installed Legacy', + 'SecureBootNotAvailError': 'Not available', + 'SecureBootUnknownError': 'Unknown', + }} if ENABLED_TICKET_NUMBERS: print_info('Starting System Checklist for Ticket #{}\n'.format( ticket_number)) @@ -38,28 +45,40 @@ if __name__ == '__main__': if global_vars['OS']['Version'] == '10': try_and_print(message='Explorer...', function=config_explorer_system, cs='Done') + try_and_print(message='Privacy...', + function=config_privacy_settings, cs='Done') try_and_print(message='Updating Clock...', function=update_clock, cs='Done') + try_and_print(message='Enabling System Restore...', + function=enable_system_restore, cs='Done') # Cleanup print_info('Cleanup') - try_and_print(message='Desktop...', - function=cleanup_desktop, cs='Done') try_and_print(message='AdwCleaner...', function=cleanup_adwcleaner, cs='Done', other_results=other_results) + try_and_print(message='Desktop...', + function=cleanup_desktop, cs='Done') + try_and_print(message='Emsisoft a2cmd...', + function=cleanup_emsisoft, cs='Done') + try_and_print(message='Registry Backup(s)...', + function=cleanup_regbackups, cs='Done') + try_and_print(message='{}...'.format(KIT_NAME_FULL), + function=delete_empty_folders, cs='Done', + folder_path=global_vars['ClientDir']) # Export system info - print_info('Backup System Information') - try_and_print(message='AIDA64 reports...', - function=run_aida64, cs='Done', other_results=other_results) - try_and_print(message='File listing...', - function=backup_file_list, cs='Done', other_results=other_results) - try_and_print(message='Power plans...', - function=backup_power_plans, cs='Done') - try_and_print(message='Product Keys...', other_results=other_results, - function=run_produkey, cs='Done') - try_and_print(message='Registry...', - function=backup_registry, cs='Done', other_results=other_results) + if not D7_MODE: + print_info('Backup System Information') + try_and_print(message='AIDA64 reports...', + function=run_aida64, cs='Done', other_results=other_results) + try_and_print(message='File listing...', + function=backup_file_list, cs='Done', other_results=other_results) + try_and_print(message='Power plans...', + function=backup_power_plans, cs='Done') + try_and_print(message='Product Keys...', other_results=other_results, + function=run_produkey, cs='Done') + try_and_print(message='Registry...', + function=backup_registry, cs='Done', other_results=other_results) # User data print_info('User Data') @@ -76,6 +95,8 @@ if __name__ == '__main__': try_and_print(message='BIOS Activation:', function=activate_with_bios, other_results=other_results) + try_and_print(message='Secure Boot Status:', + function=check_secure_boot_status, other_results=other_results) try_and_print(message='Installed RAM:', function=show_installed_ram, ns='Unknown', silent_function=False) show_free_space() @@ -85,6 +106,9 @@ if __name__ == '__main__': try_and_print(message='Installed Office:', function=get_installed_office, ns='Unknown', other_results=other_results, print_return=True) + if D7_MODE: + try_and_print(message='Product Keys:', + function=get_product_keys, ns='Unknown', print_return=True) # Play audio, show devices, open Windows updates, and open Activation try_and_print(message='Opening Device Manager...', @@ -99,6 +123,11 @@ if __name__ == '__main__': sleep(3) try_and_print(message='Running XMPlay...', function=run_xmplay, cs='Started', other_results=other_results) + try: + check_secure_boot_status(show_alert=True) + except: + # Only trying to open alert message boxes + pass # Done print_standard('\nDone.') diff --git a/.bin/Scripts/system_checklist_hw.py b/.bin/Scripts/system_checklist_hw.py new file mode 100644 index 00000000..ba696934 --- /dev/null +++ b/.bin/Scripts/system_checklist_hw.py @@ -0,0 +1,117 @@ +# Wizard Kit: System HW Checklist + +import os +import sys + +# Init +os.chdir(os.path.dirname(os.path.realpath(__file__))) +sys.path.append(os.getcwd()) +from functions.activation import * +from functions.cleanup import * +from functions.diags import * +from functions.info import * +from functions.product_keys import * +from functions.setup import * +init_global_vars() +os.system('title {}: System HW Checklist Tool'.format(KIT_NAME_FULL)) +set_log_file('System HW Checklist.log') + +if __name__ == '__main__': + try: + stay_awake() + clear_screen() + print_info('{}: System HW Checklist Tool\n'.format(KIT_NAME_FULL)) + ticket_number = get_ticket_number() + other_results = { + 'Error': { + 'BIOSKeyNotFoundError': 'BIOS key not found', + 'CalledProcessError': 'Unknown Error', + 'FileNotFoundError': 'File not found', + 'GenericError': 'Unknown Error', + 'SecureBootDisabledError': 'Disabled', + }, + 'Warning': { + 'OSInstalledLegacyError': 'OS installed Legacy', + 'SecureBootNotAvailError': 'Not available', + 'SecureBootUnknownError': 'Unknown', + }} + if ENABLED_TICKET_NUMBERS: + print_info('Starting System Checklist for Ticket #{}\n'.format( + ticket_number)) + + # Configure + print_info('Configure') + if global_vars['OS']['Version'] == '10': + try_and_print(message='Explorer...', + function=config_explorer_system_hw, cs='Done') + try_and_print(message='Enabling System Restore...', + function=enable_system_restore, cs='Done') + + # Export system info + print_info('Backup System Information') + try_and_print(message='AIDA64 reports...', + function=run_aida64, cs='Done', other_results=other_results) + try_and_print(message='File listing...', + function=backup_file_list, cs='Done', other_results=other_results) + try_and_print(message='Power plans...', + function=backup_power_plans, cs='Done') + try_and_print(message='Product Keys...', other_results=other_results, + function=run_produkey, cs='Done') + try_and_print(message='Registry...', + function=backup_registry, cs='Done', other_results=other_results) + + # Cleanup + print_info('Cleanup') + try_and_print(message='{}...'.format(KIT_NAME_FULL), + function=delete_empty_folders, cs='Done', + folder_path=global_vars['ClientDir']) + + # User data + print_info('User Data') + show_user_data_summary() + + # Summary + print_info('Summary') + try_and_print(message='Operating System:', + function=show_os_name, ns='Unknown', silent_function=False) + try_and_print(message='Activation:', + function=show_os_activation, ns='Unknown', silent_function=False) + try_and_print(message='Secure Boot Status:', + function=check_secure_boot_status, other_results=other_results) + try_and_print(message='Installed RAM:', + function=show_installed_ram, ns='Unknown', silent_function=False) + show_free_space() + try_and_print(message='Installed Antivirus:', + function=get_installed_antivirus, ns='Unknown', + other_results=other_results, print_return=True) + try_and_print(message='Installed Office:', + function=get_installed_office, ns='Unknown', + other_results=other_results, print_return=True) + + # Play audio, show devices, open Windows updates, and open Activation + try_and_print(message='Opening Device Manager...', + function=open_device_manager, cs='Started') + try_and_print(message='Opening HWiNFO (Sensors)...', + function=run_hwinfo_sensors, cs='Started', other_results=other_results) + try_and_print(message='Opening Windows Updates...', + function=open_windows_updates, cs='Started') + if not windows_is_activated(): + try_and_print(message='Opening Windows Activation...', + function=open_windows_activation, cs='Started') + sleep(3) + try_and_print(message='Running XMPlay...', + function=run_xmplay, cs='Started', other_results=other_results) + try: + check_secure_boot_status(show_alert=True) + except: + # Only trying to open alert message boxes + pass + + # Done + print_standard('\nDone.') + pause('Press Enter exit...') + exit_script() + except SystemExit: + pass + except: + major_exception() diff --git a/.bin/Scripts/system_diagnostics.py b/.bin/Scripts/system_diagnostics.py index 9a6e1c0b..affc4b4b 100644 --- a/.bin/Scripts/system_diagnostics.py +++ b/.bin/Scripts/system_diagnostics.py @@ -13,8 +13,68 @@ from functions.product_keys import * from functions.repairs import * init_global_vars() os.system('title {}: System Diagnostics Tool'.format(KIT_NAME_FULL)) -global_vars['LogFile'] = r'{LogDir}\System Diagnostics.log'.format( - **global_vars) +set_log_file('System Diagnostics.log') +D7_MODE = 'd7mode' in sys.argv + +# Static Variables +BLEACH_BIT_CLEANERS = { + 'Applications': ( + 'adobe_reader.cache', + 'adobe_reader.tmp', + 'amule.tmp', + 'flash.cache', + 'gimp.tmp', + 'hippo_opensim_viewer.cache', + 'java.cache', + 'libreoffice.cache', + 'liferea.cache', + 'miro.cache', + 'openofficeorg.cache', + 'pidgin.cache', + 'secondlife_viewer.Cache', + 'thunderbird.cache', + 'vuze.backup_files', + 'vuze.cache', + 'vuze.tmp', + 'yahoo_messenger.cache', + ), + 'Browsers': ( + 'chromium.cache', + 'chromium.current_session', + 'firefox.cache', + 'firefox.session_restore', + 'google_chrome.cache', + 'google_chrome.session', + 'google_earth.temporary_files', + 'internet_explorer.temporary_files', + 'opera.cache', + 'opera.current_session', + 'safari.cache', + 'seamonkey.cache', + ), + 'System': ( + 'system.clipboard', + 'system.tmp', + 'winapp2_windows.jump_lists', + 'winapp2_windows.ms_search', + 'windows_explorer.run', + 'windows_explorer.search_history', + 'windows_explorer.thumbnails', + ), +} + + +def check_result(result, other_results): + """Check result for warnings and errors.""" + result_ok = True + if not result['CS']: + for warning in other_results.get('Warning', {}).keys(): + if warning in str(result['Error']): + # Ignore warnings and repair statements + return True + # Error is not a warning + result_ok = False + return result_ok if __name__ == '__main__': try: @@ -22,6 +82,7 @@ if __name__ == '__main__': clear_screen() print_info('{}: System Diagnostics Tool\n'.format(KIT_NAME_FULL)) ticket_number = get_ticket_number() + system_ok = True other_results = { 'Error': { 'CalledProcessError': 'Unknown Error', @@ -34,48 +95,66 @@ if __name__ == '__main__': if ENABLED_TICKET_NUMBERS: print_info('Starting System Diagnostics for Ticket #{}\n'.format( ticket_number)) - + # Sanitize Environment print_info('Sanitizing Environment') - # try_and_print(message='Killing processes...', - # function=run_process_killer, cs='Done') - try_and_print(message='Running RKill...', - function=run_rkill, cs='Done', other_results=other_results) - try_and_print(message='Running TDSSKiller...', - function=run_tdsskiller, cs='Done', other_results=other_results) - + if not D7_MODE: + try_and_print(message='Running RKill...', + function=run_rkill, cs='Done', other_results=other_results) + try_and_print(message='Running TDSSKiller...', + function=run_tdsskiller, cs='Done', other_results=other_results) + # Re-run if earlier process was stopped. stay_awake() - + # Start diags - print_info('Starting Background Scans') - check_connection() - try_and_print(message='Running HitmanPro...', - function=run_hitmanpro, cs='Started', other_results=other_results) - try_and_print(message='Running Autoruns...', - function=run_autoruns, cs='Started', other_results=other_results) - + if not D7_MODE: + print_info('Starting Background Scans') + check_connection() + try_and_print(message='Running HitmanPro...', + function=run_hitmanpro, cs='Started', other_results=other_results) + try_and_print(message='Running Autoruns...', + function=run_autoruns, cs='Started', other_results=other_results) + # OS Health Checks print_info('OS Health Checks') - try_and_print( + result = try_and_print( message='CHKDSK ({SYSTEMDRIVE})...'.format(**global_vars['Env']), function=run_chkdsk, other_results=other_results) - try_and_print(message='SFC scan...', + system_ok &= check_result(result, other_results) + result = try_and_print(message='SFC scan...', function=run_sfc_scan, other_results=other_results) - try_and_print(message='DISM CheckHealth...', - function=run_dism, other_results=other_results, repair=False) - - # Scan for supported browsers - print_info('Scanning for browsers') - scan_for_browsers() - + system_ok &= check_result(result, other_results) + if D7_MODE: + result = try_and_print(message='DISM RestoreHealth...', + function=run_dism, other_results=other_results, repair=True) + system_ok &= check_result(result, other_results) + else: + try_and_print(message='DISM CheckHealth...', + function=run_dism, other_results=other_results, repair=False) + + if D7_MODE: + # Archive all browsers for all users + archive_all_users() + else: + # Scan for supported browsers + print_info('Scanning for browsers') + scan_for_browsers() + + # Run BleachBit cleaners + print_info('BleachBit Cleanup') + for k, v in sorted(BLEACH_BIT_CLEANERS.items()): + try_and_print(message='{}...'.format(k), + function=run_bleachbit, + cs='Done', other_results=other_results, + cleaners=v, preview=bool(not D7_MODE)) + # Export system info print_info('Backup System Information') try_and_print(message='AIDA64 reports...', function=run_aida64, cs='Done', other_results=other_results) - try_and_print(message='BleachBit report...', - function=run_bleachbit, cs='Done', other_results=other_results) - backup_browsers() + if not D7_MODE: + backup_browsers() try_and_print(message='File listing...', function=backup_file_list, cs='Done', other_results=other_results) try_and_print(message='Power plans...', @@ -83,40 +162,46 @@ if __name__ == '__main__': try_and_print(message='Product Keys...', function=run_produkey, cs='Done', other_results=other_results) try_and_print(message='Registry...', - function=backup_registry, cs='Done', other_results=other_results) - + function=backup_registry, cs='Done', other_results=other_results, + overwrite=True) + # Summary - print_info('Summary') - try_and_print(message='Operating System:', - function=show_os_name, ns='Unknown', silent_function=False) - try_and_print(message='Activation:', - function=show_os_activation, ns='Unknown', silent_function=False) - try_and_print(message='Installed RAM:', - function=show_installed_ram, ns='Unknown', silent_function=False) - show_free_space() - try_and_print(message='Temp Size:', - function=show_temp_files_size, silent_function=False) - try_and_print(message='Installed Antivirus:', - function=get_installed_antivirus, ns='Unknown', - other_results=other_results, print_return=True) - try_and_print(message='Installed Office:', - function=get_installed_office, ns='Unknown', - other_results=other_results, print_return=True) - try_and_print(message='Product Keys:', - function=get_product_keys, ns='Unknown', print_return=True) - + if not D7_MODE: + print_info('Summary') + try_and_print(message='Operating System:', + function=show_os_name, ns='Unknown', silent_function=False) + try_and_print(message='Activation:', + function=show_os_activation, ns='Unknown', silent_function=False) + try_and_print(message='Installed RAM:', + function=show_installed_ram, ns='Unknown', silent_function=False) + show_free_space() + try_and_print(message='Temp Size:', + function=show_temp_files_size, silent_function=False) + try_and_print(message='Installed Antivirus:', + function=get_installed_antivirus, ns='Unknown', + other_results=other_results, print_return=True) + try_and_print(message='Installed Office:', + function=get_installed_office, ns='Unknown', + other_results=other_results, print_return=True) + try_and_print(message='Product Keys:', + function=get_product_keys, ns='Unknown', print_return=True) + # User data - print_info('User Data') - try: - show_user_data_summary() - except Exception: - print_error(' Unknown error.') - + if not D7_MODE: + print_info('User Data') + try: + show_user_data_summary() + except Exception: + print_error(' Unknown error.') + # Done - print_standard('\nDone.') - pause('Press Enter to exit...') + if not D7_MODE or not system_ok: + print_standard('\nDone.') + pause('Press Enter to exit...') exit_script() except SystemExit: pass except: major_exception() + +# vim: sts=4 sw=4 ts=4 diff --git a/.bin/Scripts/transferred_keys.py b/.bin/Scripts/transferred_keys.py index 9829207e..b95ff3c9 100644 --- a/.bin/Scripts/transferred_keys.py +++ b/.bin/Scripts/transferred_keys.py @@ -9,7 +9,7 @@ sys.path.append(os.getcwd()) from functions.product_keys import * init_global_vars() os.system('title {}: Transferred Key Finder'.format(KIT_NAME_FULL)) -global_vars['LogFile'] = r'{LogDir}\Transferred Keys.log'.format(**global_vars) +set_log_file('Transferred Keys.log') if __name__ == '__main__': try: @@ -18,7 +18,7 @@ if __name__ == '__main__': print_info('{}: Transferred Key Finder\n'.format(KIT_NAME_FULL)) try_and_print(message='Searching for keys...', function=list_clientdir_keys, print_return=True) - + # Done print_standard('\nDone.') exit_script() diff --git a/.bin/Scripts/update_kit.py b/.bin/Scripts/update_kit.py index 6a5cdf82..aec91c6b 100644 --- a/.bin/Scripts/update_kit.py +++ b/.bin/Scripts/update_kit.py @@ -18,34 +18,37 @@ if __name__ == '__main__': 'Error': { 'CalledProcessError': 'Unknown Error', }} - + ## Prep ## update_sdio = ask('Update SDI Origin?') - + ## Download ## print_success('Downloading tools') - + # Data Recovery print_info(' Data Recovery') try_and_print(message='TestDisk / PhotoRec...', function=update_testdisk, other_results=other_results, width=40) - + # Data Transfers print_info(' Data Transfers') try_and_print(message='FastCopy...', function=update_fastcopy, other_results=other_results, width=40) + try_and_print(message='Linux Reader...', function=update_linux_reader, other_results=other_results, width=40) try_and_print(message='wimlib...', function=update_wimlib, other_results=other_results, width=40) try_and_print(message='XYplorer...', function=update_xyplorer, other_results=other_results, width=40) - + # Diagnostics print_info(' Diagnostics') try_and_print(message='AIDA64...', function=update_aida64, other_results=other_results, width=40) try_and_print(message='Autoruns...', function=update_autoruns, other_results=other_results, width=40) try_and_print(message='BleachBit...', function=update_bleachbit, other_results=other_results, width=40) - try_and_print(message='BlueScreenView...', function=update_bluescreenview, other_results=other_results, width=40) + try_and_print(message='Blue Screen View...', function=update_bluescreenview, other_results=other_results, width=40) try_and_print(message='ERUNT...', function=update_erunt, other_results=other_results, width=40) - try_and_print(message='HitmanPro...', function=update_hitmanpro, other_results=other_results, width=40) + try_and_print(message='FurMark...', function=update_furmark, other_results=other_results, width=40) + try_and_print(message='Hitman Pro...', function=update_hitmanpro, other_results=other_results, width=40) try_and_print(message='HWiNFO...', function=update_hwinfo, other_results=other_results, width=40) + try_and_print(message='NirCmd...', function=update_nircmd, other_results=other_results, width=40) try_and_print(message='ProduKey...', function=update_produkey, other_results=other_results, width=40) - + # Drivers print_info(' Drivers') try_and_print(message='Intel RST...', function=update_intel_rst, other_results=other_results, width=40) @@ -53,41 +56,45 @@ if __name__ == '__main__': try_and_print(message='Samsing Magician...', function=update_samsung_magician, other_results=other_results, width=40) if update_sdio: try_and_print(message='Snappy Driver Installer Origin...', function=update_sdi_origin, other_results=other_results, width=40) - + # Installers print_info(' Installers') try_and_print(message='Adobe Reader DC...', function=update_adobe_reader_dc, other_results=other_results, width=40) + try_and_print(message='ESET Configs...', function=update_eset_config, other_results=other_results, width=40) + try_and_print(message='Macs Fan Control...', function=update_macs_fan_control, other_results=other_results, width=40) try_and_print(message='MS Office...', function=update_office, other_results=other_results, width=40) try_and_print(message='Visual C++ Runtimes...', function=update_vcredists, other_results=other_results, width=40) update_all_ninite(other_results=other_results, width=40) - + # Misc print_info(' Misc') try_and_print(message='Caffeine...', function=update_caffeine, other_results=other_results, width=40) try_and_print(message='Classic Start Skin...', function=update_classic_start_skin, other_results=other_results, width=40) try_and_print(message='Du...', function=update_du, other_results=other_results, width=40) try_and_print(message='Everything...', function=update_everything, other_results=other_results, width=40) - try_and_print(message='FirefoxExtensions...', function=update_firefox_ublock_origin, other_results=other_results, width=40) + try_and_print(message='Firefox Extensions...', function=update_firefox_ublock_origin, other_results=other_results, width=40) try_and_print(message='PuTTY...', function=update_putty, other_results=other_results, width=40) + try_and_print(message='ShutUp10...', function=update_shutup10, other_results=other_results, width=40) try_and_print(message='Notepad++...', function=update_notepadplusplus, other_results=other_results, width=40) - try_and_print(message='TreeSizeFree...', function=update_treesizefree, other_results=other_results, width=40) + try_and_print(message='WizTree...', function=update_wiztree, other_results=other_results, width=40) try_and_print(message='XMPlay...', function=update_xmplay, other_results=other_results, width=40) - + # Repairs print_info(' Repairs') try_and_print(message='AdwCleaner...', function=update_adwcleaner, other_results=other_results, width=40) try_and_print(message='KVRT...', function=update_kvrt, other_results=other_results, width=40) try_and_print(message='RKill...', function=update_rkill, other_results=other_results, width=40) - try_and_print(message='TDSSKiller...', function=update_tdsskiller, other_results=other_results, width=40) - + try_and_print(message='TDSS Killer...', function=update_tdsskiller, other_results=other_results, width=40) + try_and_print(message='WinAIO Repair...', function=update_winaiorepair, other_results=other_results, width=40) + # Uninstallers print_info(' Uninstallers') try_and_print(message='IObit Uninstaller...', function=update_iobit_uninstaller, other_results=other_results, width=40) - + ## Review ## print_standard('Please review the results and download/extract any missing items to .cbin') pause('Press Enter to compress the .cbin items') - + ## Compress ## print_success('Compressing tools') print_info(' _Drivers') @@ -108,12 +115,12 @@ if __name__ == '__main__': other_results = other_results, width=40, item = item) - + ## Search for network Office/QuickBooks installers & add to LAUNCHERS print_success('Scanning for network installers') scan_for_net_installers(OFFICE_SERVER, 'Office', min_year=2010) scan_for_net_installers(QUICKBOOKS_SERVER, 'QuickBooks', min_year=2015) - + ## Generate Launchers print_success('Generating launchers') for section in sorted(LAUNCHERS.keys()): @@ -122,7 +129,7 @@ if __name__ == '__main__': try_and_print(message=name, function=generate_launcher, section=section, name=name, options=options, other_results=other_results, width=40) - + # Rename "Copy WizardKit.cmd" (if necessary) source = r'{}\Scripts\Copy WizardKit.cmd'.format(global_vars['BinDir']) dest = r'{}\Copy {}.cmd'.format(global_vars['BaseDir'], KIT_NAME_FULL) @@ -132,7 +139,7 @@ if __name__ == '__main__': except Exception: print_error(' Failed to rename "{}.cmd" to "{}.cmd"'.format( 'Copy WizardKit', KIT_NAME_FULL)) - + # Done print_standard('\nDone.') pause("Press Enter to exit...") diff --git a/.bin/Scripts/user_checklist.py b/.bin/Scripts/user_checklist.py index 72697af7..29accf82 100644 --- a/.bin/Scripts/user_checklist.py +++ b/.bin/Scripts/user_checklist.py @@ -11,8 +11,8 @@ from functions.cleanup import * from functions.setup import * init_global_vars() os.system('title {}: User Checklist Tool'.format(KIT_NAME_FULL)) -global_vars['LogFile'] = r'{LogDir}\User Checklist ({USERNAME}).log'.format( - **global_vars, **global_vars['Env']) +set_log_file('User Checklist ({USERNAME}).log'.format(**global_vars['Env'])) +D7_MODE = 'd7mode' in sys.argv if __name__ == '__main__': try: @@ -24,36 +24,46 @@ if __name__ == '__main__': 'NotInstalledError': 'Not installed', 'NoProfilesError': 'No profiles found', }} - answer_config_browsers = ask('Install adblock?') + #answer_config_browsers = ask('Install adblock?') + answer_config_browsers = True if answer_config_browsers: - answer_reset_browsers = ask( - 'Reset browsers to safe defaults first?') + if D7_MODE: + # This is handled by another script option in d7ii + answer_reset_browsers = False + else: + answer_reset_browsers = ask( + 'Reset browsers to safe defaults first?') if global_vars['OS']['Version'] == '10': - answer_config_classicshell = ask('Configure ClassicShell?') - answer_config_explorer_user = ask('Configure Explorer?') - + #answer_config_classicshell = ask('Configure ClassicShell?') + #answer_config_explorer_user = ask('Configure Explorer?') + answer_config_classicshell = True + answer_config_explorer_user = True + # Cleanup print_info('Cleanup') try_and_print(message='Desktop...', function=cleanup_desktop, cs='Done') - + # Scan for supported browsers print_info('Scanning for browsers') scan_for_browsers() - + # Homepages - print_info('Current homepages') - list_homepages() - + if not D7_MODE: + print_info('Current homepages') + list_homepages() + # Backup - print_info('Backing up browsers') - backup_browsers() - + if not D7_MODE: + # Done during system_diagnostics + print_info('Backing up browsers') + backup_browsers() + # Reset if answer_config_browsers and answer_reset_browsers: print_info('Resetting browsers') reset_browsers() - + # Configure print_info('Configuring programs') if answer_config_browsers: @@ -75,10 +85,11 @@ if __name__ == '__main__': # Run speedtest popen_program(['start', '', 'https://fast.com'], shell=True) - + # Done - print_standard('\nDone.') - pause('Press Enter to exit...') + if not D7_MODE: + print_standard('\nDone.') + pause('Press Enter to exit...') exit_script() except SystemExit: pass diff --git a/.bin/Scripts/user_data_transfer.py b/.bin/Scripts/user_data_transfer.py index ce572f69..981e235a 100644 --- a/.bin/Scripts/user_data_transfer.py +++ b/.bin/Scripts/user_data_transfer.py @@ -10,7 +10,7 @@ from functions.data import * from functions.repairs import * init_global_vars() os.system('title {}: User Data Transfer Tool'.format(KIT_NAME_FULL)) -global_vars['LogFile'] = r'{LogDir}\User Data Transfer.log'.format(**global_vars) +set_log_file('User Data Transfer.log') if __name__ == '__main__': try: @@ -18,7 +18,7 @@ if __name__ == '__main__': stay_awake() clear_screen() print_info('{}: User Data Transfer Tool\n'.format(KIT_NAME_FULL)) - + # Get backup name prefix ticket_number = get_ticket_number() if ENABLED_TICKET_NUMBERS: @@ -26,16 +26,16 @@ if __name__ == '__main__': else: backup_prefix = get_simple_string(prompt='Enter backup name prefix') backup_prefix = backup_prefix.replace(' ', '_') - + # Set destination folder_path = r'{}\Transfer'.format(KIT_NAME_SHORT) dest = select_destination(folder_path=folder_path, prompt='Which disk are we transferring to?') - + # Set source items source = select_source(backup_prefix) items = scan_source(source, dest) - + # Transfer clear_screen() print_info('Transfer Details:\n') @@ -43,17 +43,17 @@ if __name__ == '__main__': show_data('Ticket:', ticket_number) show_data('Source:', source.path) show_data('Destination:', dest) - + if (not ask('Proceed with transfer?')): umount_backup_shares() abort() - + print_info('Transferring Data') transfer_source(source, dest, items) try_and_print(message='Removing extra files...', function=cleanup_transfer, cs='Done', dest_path=dest) umount_backup_shares() - + # Done try_and_print(message='Running KVRT...', function=run_kvrt, cs='Started') diff --git a/.bin/Scripts/winpe_root_menu.py b/.bin/Scripts/winpe_root_menu.py index 03c763af..743d987b 100644 --- a/.bin/Scripts/winpe_root_menu.py +++ b/.bin/Scripts/winpe_root_menu.py @@ -11,7 +11,7 @@ from functions.winpe_menus import * TOOLS['SevenZip'].pop('64') init_global_vars() set_title('{}: Root Menu'.format(KIT_NAME_FULL)) -global_vars['LogFile'] = r'{LogDir}\WinPE.log'.format(**global_vars) +set_log_file('WinPE.log') if __name__ == '__main__': try: diff --git a/.bin/Scripts/wk-power-command b/.bin/Scripts/wk-power-command new file mode 100755 index 00000000..92af02fb --- /dev/null +++ b/.bin/Scripts/wk-power-command @@ -0,0 +1,21 @@ +#!/bin/bash +# +## Wizard Kit: Wrapper for logout, reboot, & poweroff + +# Unmount filesystems +find /media -maxdepth 1 -mindepth 1 -type d \ + -exec udevil umount "{}" \; + +# Flush write cache +sudo sync + +# Perform requested action +case "${1:-x}" in + poweroff) + sudo systemctl poweroff;; + reboot) + sudo systemctl reboot;; + *) + openbox --exit;; +esac +exit 0 diff --git a/.bin/WinAIO Repair/__associations.ini b/.bin/WinAIO Repair/__associations.ini new file mode 100644 index 00000000..e5e98326 Binary files /dev/null and b/.bin/WinAIO Repair/__associations.ini differ diff --git a/.bin/WinAIO Repair/__empty.ini b/.bin/WinAIO Repair/__empty.ini new file mode 100644 index 00000000..7f99a0b9 Binary files /dev/null and b/.bin/WinAIO Repair/__empty.ini differ diff --git a/.bin/WinAIO Repair/__permissions.ini b/.bin/WinAIO Repair/__permissions.ini new file mode 100644 index 00000000..7ef67e77 Binary files /dev/null and b/.bin/WinAIO Repair/__permissions.ini differ diff --git a/.bin/d7ii/3rd Party Tools/MBAM_Install.cmd b/.bin/d7ii/3rd Party Tools/MBAM_Install.cmd new file mode 100644 index 00000000..ef7edc09 --- /dev/null +++ b/.bin/d7ii/3rd Party Tools/MBAM_Install.cmd @@ -0,0 +1,27 @@ +@echo off + +setlocal +pushd "%~dp0" + +rem Remove stale marker if present +if exist "%SYSTEMDRIVE%\1201\Preserve-MBAM.marker" ( + del /f "%SYSTEMDRIVE%\1201\Preserve-MBAM.marker" +) + +rem Set marker to prevent unintended MBAM removal +if exist "%PROGRAMFILES%\Malwarebytes\Anti-Malware\mbam.exe" ( + echo Previous Malwarebytes installation detected. + echo. > "%SYSTEMDRIVE%\1201\Preserve-MBAM.marker" +) +if exist "%PROGRAMFILES(X86)%\Malwarebytes Anti-Malware\mbam.exe" ( + rem MBAM v2 installation + echo Previous Malwarebytes [v2] installation detected. + echo. > "%SYSTEMDRIVE%\1201\Preserve-MBAM.marker" +) + +rem Install/Upgrade MBAM +echo Installing Malwarebytes... +start "" /wait mbam-setup.exe /VERYSILENT /NORESTART + +popd +endlocal \ No newline at end of file diff --git a/.bin/d7ii/3rd Party Tools/MBAM_Uninstall.cmd b/.bin/d7ii/3rd Party Tools/MBAM_Uninstall.cmd new file mode 100644 index 00000000..15ee7722 --- /dev/null +++ b/.bin/d7ii/3rd Party Tools/MBAM_Uninstall.cmd @@ -0,0 +1,63 @@ +@echo off + +setlocal +pushd "%~dp0" + +:GetDate +:: Credit to SS64.com Code taken from http://ss64.com/nt/syntax-getdate.html +:: Use WMIC to retrieve date and time in ISO 8601 format. +for /f "skip=1 tokens=1-6" %%G in ('WMIC Path Win32_LocalTime Get Day^,Hour^,Minute^,Month^,Second^,Year /Format:table') do ( + if "%%~L"=="" goto s_done + set _yyyy=%%L + set _mm=00%%J + set _dd=00%%G + set _hour=00%%H + set _minute=00%%I +) +:s_done +:: Pad digits with leading zeros +set _mm=%_mm:~-2% +set _dd=%_dd:~-2% +set _hour=%_hour:~-2% +set _minute=%_minute:~-2% +set iso_date=%_yyyy%-%_mm%-%_dd% + +rem Get uninstaller path from registry +set "uninstaller=" +for /f usebackq^ tokens^=2^ delims^=^" %%s in ( + `reg query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{35065F43-4BB2-439A-BFF7-0F1014F2E0CD}_is1" /v UninstallString` +) do ( + set "uninstaller=%%s" +) + +rem Copy logs to 1201 folder +echo "Copying logs..." +robocopy /e "%PROGRAMDATA%\Malwarebytes\MBAMService\LOGS" "%SYSTEMDRIVE%\1201\Logs\%iso_date%\Tools\MBAM" >nul +robocopy /e "%PROGRAMDATA%\Malwarebytes\MBAMService\ScanResults" "%SYSTEMDRIVE%\1201\Logs\%iso_date%\Tools\MBAM" >nul + +if exist "%SYSTEMDRIVE%\1201\Preserve-MBAM.marker" ( + rem Keep MBAM + echo Previous Malwarebytes installation detected. +) else ( + rem Move Quarantine to 1201 folder + move "%PROGRAMDATA%\Malwarebytes\Malwarebytes Anti-Malware\Quarantine" "%SYSTEMDRIVE%\1201\Quarantine\MBAM_%iso_date%_%_hour%%_minute%" + + rem Remove MBAM + echo No previous Malwarebytes installation detected. + if exist "%uninstaller%" ( + echo "Uninstalling Malwarebytes..." + start "" /wait "%uninstaller%" /VERYSILENT /NORESTART /LOG + ) else ( + color 4e + echo "Malwarebytes installation not found." + echo "" + echo "Press any key to exit... " + pause >nul + ) +) + +rem Remove marker +del /f "%SYSTEMDRIVE%\1201\Preserve-MBAM.marker" + +popd +endlocal \ No newline at end of file diff --git a/.bin/d7ii/3rd Party Tools/WizardKit Launcher.cmd b/.bin/d7ii/3rd Party Tools/WizardKit Launcher.cmd new file mode 100644 index 00000000..0102cd6b --- /dev/null +++ b/.bin/d7ii/3rd Party Tools/WizardKit Launcher.cmd @@ -0,0 +1,14 @@ +:: Launch WizardKit item +@echo off + +setlocal +pushd "%~dp0\..\..\.." + +rem Run WizardKit Launcher +call "%*" + +rem Sleep for 5 sec so d7II can wait for launched proc +"%systemroot%\System32\ping.exe" -n 5 127.0.0.1>nul + +popd +endlocal \ No newline at end of file diff --git a/.bin/d7ii/Config/1201Logo.bmp b/.bin/d7ii/Config/1201Logo.bmp new file mode 100644 index 00000000..99c948f7 Binary files /dev/null and b/.bin/d7ii/Config/1201Logo.bmp differ diff --git a/.bin/d7ii/Config/AltText.ini b/.bin/d7ii/Config/AltText.ini new file mode 100644 index 00000000..b58b6c23 --- /dev/null +++ b/.bin/d7ii/Config/AltText.ini @@ -0,0 +1,39 @@ +[ShortDesc] +Autoruns=Manages Startup Items +Autoruns_Copy=Manages Startup Items +Autoruns (Verify and Log)=Manages Startup Items +Google Chrome Software Removal Tool=Remove add-ons, extensions, toolbars, and other software that may interfere with the operation of Google Chrome. +VipreRescueScanner (Deep Scan)=Virus scanner (Designed for both the Malware Removal and the Offline Operations tab) +VipreRescueScanner (Quick Scan)=Virus scanner (Designed for both the Malware Removal and the Offline Operations tab) +=Install/Upgrade MBAM +[ReportDesc] +Autoruns=Examined Windows startup items and removed unnecessary entries. +Autoruns_Copy=Examined Windows startup items and removed unnecessary entries. +Autoruns (Verify and Log)=Examined Windows startup items and removed unnecessary entries. +Google Chrome Software Removal Tool=Scanned for and removed any toolbars/extensions/add-ons that may interfere with the operation of Google Chrome. +VipreRescueScanner (Deep Scan)=Ran virus scans (Vipre) +VipreRescueScanner (Quick Scan)=Ran virus scans (Vipre) +28=Created a System Restore point. +32=Ran a Zero Access malware scan. +2=Uninstalled unnecessary applications +41=Re-wrote the default Safe Mode services to prevent potential issues with blue screens when entering Safe Mode. +33=Backed up all Registry Hives. +1=Uninstalled unnecessary applications +9=Repaired file associations for executable files. +10=Removed restrictive Windows policy settings. +11=Cleared proxy settings. +18=Scanned for known malware files and registry entries and removed anything found. +12=Deleted unnecessary temporary files from user profiles and temporary files used by Windows. +13=Deleted temporary internet cache from user profiles. +34=Scanned for viruses/malware with Microsoft Security Essentials / Windows Defender. +49=Scanned for Windows system component corruption to repair any issues found. +24=Repaired the built-in Windows firewall. +31=Set all network adapters to DHCP. +75=Apply static DNS settings to all NICs. +21=Ran repair and reset procedures on networking components. +25=Reset all settings to defaults for the built-in Windows firewall. +36=Manually examined the HOSTS file for hijacks or other issues. +22=Repaired the Windows Update services responsible for Windows Update functionality. +38=Performed repair routines to ensure the Winsock is operating properly. +83=Examined internet speed/bandwidth. +=Malwarebytes installed successfully. diff --git a/.bin/d7ii/Config/AppOverrides.ini b/.bin/d7ii/Config/AppOverrides.ini new file mode 100644 index 00000000..2d55f1f7 --- /dev/null +++ b/.bin/d7ii/Config/AppOverrides.ini @@ -0,0 +1,42 @@ +[Autoruns] +PostRunApp= +AlwaysAttemptDownload=1 +DLafterXdays=7 +EmailBeforeExecution=0 +PriorAlert=1 +[Autoruns_Copy] +PostRunApp= +AlwaysAttemptDownload=1 +DLafterXdays=7 +EmailBeforeExecution=0 +PriorAlert=1 +[Autoruns (Verify and Log)] +PostRunApp= +AlwaysAttemptDownload=1 +DLafterXdays=7 +EmailBeforeExecution=0 +PriorAlert=0 +[Google Chrome Software Removal Tool] +PostRunApp= +AlwaysAttemptDownload=1 +DLafterXdays=0 +EmailBeforeExecution=0 +PriorAlert=1 +[VipreRescueScanner (Deep Scan)] +PostRunApp= +AlwaysAttemptDownload=1 +DLafterXdays=1 +EmailBeforeExecution=0 +PriorAlert=0 +[VipreRescueScanner (Quick Scan)] +PostRunApp= +AlwaysAttemptDownload=1 +DLafterXdays=1 +EmailBeforeExecution=0 +PriorAlert=0 +[] +PostRunApp= +AlwaysAttemptDownload=1 +DLafterXdays=.5 +EmailBeforeExecution=0 +PriorAlert=0 diff --git a/.bin/d7ii/Config/CustomApps/AdwCleaner (Updated).cfg b/.bin/d7ii/Config/CustomApps/AdwCleaner (Updated).cfg new file mode 100644 index 00000000..c4fcef59 --- /dev/null +++ b/.bin/d7ii/Config/CustomApps/AdwCleaner (Updated).cfg @@ -0,0 +1,37 @@ +[Config] +LastEditDate=10/8/2018 10:56:15 PM +PostRunApp= +AppWebsite=https://www.malwarebytes.com/adwcleaner/ +AppDLPage=https://downloads.malwarebytes.com/file/adwcleaner +AppDesc=Toolbar Remover +App=AdwCleaner.exe +UseFTPServer=0 +AppURL=https://downloads.malwarebytes.com/file/adwcleaner +AppDLName=AdwCleaner.exe +AlwaysAttemptDownload=1 +DLafterXdays=.5 +AppWait=1 +EmailBeforeExecution=0 +PriorAlert=1 +ServiceWait=1 +AppMsgBox=0 +AppRandomize=0 +SaveConfigAfter=0 +MoveSnatchReports=1 +SnatchReportsLoc=%systemdrive%\AdwCleaner\AdwCleaner*.txt +SnatchReportsToMalwareLogs=1 +RunInCMD=0 +SendEnter=0 +RunWithSystemAccess=0 +IsDLInstaller=0 +LogVerbiage=Removed unnecessary internet browser add-ins (e.g. Toolbars) [AdwCleaner] +32=1 +64=1 +XP=1 +Vista=1 +7=1 +8=1 +Servers=1 +NonDirectURLs=0 +AutoFlag=0 +LastDownload=8/14/2018 diff --git a/.bin/d7ii/Config/CustomApps/HitmanPro (Auto).cfg b/.bin/d7ii/Config/CustomApps/HitmanPro (Auto).cfg new file mode 100644 index 00000000..b2ec938d --- /dev/null +++ b/.bin/d7ii/Config/CustomApps/HitmanPro (Auto).cfg @@ -0,0 +1,45 @@ +[Config] +Author=2Shirt +LastEditDate=10/8/2018 10:56:18 PM +PostRunApp= +AppWebsite=http://www.surfright.nl/en/hitmanpro/ +AppDLPage=http://www.surfright.nl/en/downloads/ +AppDesc=Malware scanner +App=HitmanPro.exe +App64=HitmanPro_x64.exe +AppParms=/clean /noinstall /excludelist="%3rdpath%\HMP_Excludes.txt" /logtype=txt /log="%malreportdir%\HitmanPro_Scan_Log_%date%.txt" +AppURL64=https://dl.surfright.nl/HitmanPro_x64.exe +AppURL64B=http://dl.surfright.nl/FoolishIT/HitmanPro_x64.exe +AppDLName64=HitmanPro_x64.exe +UseFTPServer=0 +AppURL=https://dl.surfright.nl/HitmanPro.exe +AppURLB=http://dl.surfright.nl/FoolishIT/HitmanPro.exe +AppDLName=HitmanPro.exe +AlwaysAttemptDownload=1 +DLafterXdays=.5 +AppWait=1 +EmailBeforeExecution=0 +PriorAlert=0 +ServiceWait=0 +AppMsgBox=1 +AppWaitTime=60 +AppRandomize=1 +CopyConfigFirst=HMP.cmd +SaveConfigAfter=0 +MoveSnatchReports=0 +SnatchReportsToMalwareLogs=1 +RunInCMD=0 +SendEnter=0 +RunWithSystemAccess=0 +IsDLInstaller=0 +LogVerbiage=Ran Malware Scans (HitmanPro) +32=1 +64=1 +XP=1 +Vista=1 +7=1 +8=1 +Servers=1 +NonDirectURLs=0 +AutoFlag=1 +LastDownload=8/19/2018 diff --git a/.bin/d7ii/Config/CustomApps/IObit Uninstaller.cfg b/.bin/d7ii/Config/CustomApps/IObit Uninstaller.cfg new file mode 100644 index 00000000..3ad516fc --- /dev/null +++ b/.bin/d7ii/Config/CustomApps/IObit Uninstaller.cfg @@ -0,0 +1,34 @@ +[Config] +LastEditDate=8/25/2018 3:50:11 PM +PostRunApp= +App=WizardKit Launcher.cmd +UseFTPServer=0 +AlwaysAttemptDownload=0 +DLafterXdays=5 +AppWait=1 +EmailBeforeExecution=0 +PriorAlert=1 +ServiceWait=0 +AppMsgBox=1 +AppRandomize=0 +SaveConfigAfter=0 +MoveSnatchReports=0 +SnatchReportsToMalwareLogs=1 +RunInCMD=0 +SendEnter=0 +RunWithSystemAccess=0 +IsDLInstaller=0 +32=1 +64=1 +XP=1 +Vista=1 +7=1 +8=1 +Servers=1 +NonDirectURLs=0 +AutoFlag=0 +LogVerbiage=Uninstalled unnecessary / junk programs. +AppDesc=Application uninstaller and cleanup utility +AppParms=Uninstallers\IObit Uninstaller.cmd +WaitOnProcesses=IObitUninstallerPortable.exe +AppWaitTime=60 diff --git a/.bin/d7ii/Config/CustomApps/Install SW Bundle.cfg b/.bin/d7ii/Config/CustomApps/Install SW Bundle.cfg new file mode 100644 index 00000000..33d1196d --- /dev/null +++ b/.bin/d7ii/Config/CustomApps/Install SW Bundle.cfg @@ -0,0 +1,34 @@ +[Config] +LastEditDate=8/30/2018 10:49:46 AM +PostRunApp= +AppParms=.bin\Scripts\launchers_for_d7\Install SW Bundle.cmd +UseFTPServer=0 +AlwaysAttemptDownload=0 +DLafterXdays=5 +AppWait=1 +EmailBeforeExecution=0 +PriorAlert=0 +ServiceWait=0 +AppMsgBox=1 +AppRandomize=0 +SaveConfigAfter=0 +MoveSnatchReports=0 +SnatchReportsToMalwareLogs=1 +RunInCMD=0 +SendEnter=0 +RunWithSystemAccess=0 +IsDLInstaller=0 +32=1 +64=1 +XP=1 +Vista=1 +7=1 +8=1 +Servers=1 +NonDirectURLs=0 +App=WizardKit Launcher.cmd +AutoFlag=0 +WaitOnProcesses=ConEmu.exe;ConEmuC.exe;ConEmu64.exe;ConEmuC64.exe;python.exe;Ninite.exe +AppDesc=Install software bundle +LogVerbiage=Installed or updated commonly used applications (Adobe Reader, Google Chrome, etc) +AppWaitTime=60 diff --git a/.bin/d7ii/Config/CustomApps/Malwarebytes Download.cfg b/.bin/d7ii/Config/CustomApps/Malwarebytes Download.cfg new file mode 100644 index 00000000..c321701a --- /dev/null +++ b/.bin/d7ii/Config/CustomApps/Malwarebytes Download.cfg @@ -0,0 +1,35 @@ +[Config] +LastEditDate=10/8/2018 10:55:27 PM +PostRunApp= +AppWebsite=https://www.malwarebytes.com/ +AppDLPage=https://downloads.malwarebytes.com/file/mb3/ +AppDesc=Download MBAM setup +UseFTPServer=0 +AppURL=https://downloads.malwarebytes.com/file/mb3/ +AppDLName=mbam-setup.exe +AlwaysAttemptDownload=1 +DLafterXdays=3 +AppWait=1 +EmailBeforeExecution=0 +PriorAlert=0 +ServiceWait=0 +AppMsgBox=0 +AppRandomize=0 +SaveConfigAfter=0 +MoveSnatchReports=0 +SnatchReportsToMalwareLogs=1 +RunInCMD=1 +SendEnter=0 +RunWithSystemAccess=0 +IsDLInstaller=0 +32=1 +64=1 +XP=1 +Vista=1 +7=1 +8=1 +Servers=1 +NonDirectURLs=0 +AutoFlag=1 +App=exit +LastDownload=10/7/2018 diff --git a/.bin/d7ii/Config/CustomApps/Malwarebytes Install.cfg b/.bin/d7ii/Config/CustomApps/Malwarebytes Install.cfg new file mode 100644 index 00000000..5aea34ab --- /dev/null +++ b/.bin/d7ii/Config/CustomApps/Malwarebytes Install.cfg @@ -0,0 +1,34 @@ +[Config] +LastEditDate=10/7/2018 3:51:22 PM +PostRunApp= +App=MBAM_Install.cmd +UseFTPServer=0 +AlwaysAttemptDownload=0 +DLafterXdays=0 +AppWait=1 +EmailBeforeExecution=0 +PriorAlert=0 +ServiceWait=0 +AppMsgBox=1 +AppRandomize=0 +SaveConfigAfter=0 +MoveSnatchReports=0 +SnatchReportsToMalwareLogs=1 +RunInCMD=0 +SendEnter=0 +RunWithSystemAccess=0 +IsDLInstaller=0 +32=1 +64=1 +XP=1 +Vista=1 +7=1 +8=1 +Servers=1 +NonDirectURLs=0 +AutoFlag=1 +AppDesc=Install/Upgrade MBAM +LogVerbiage=Malwarebytes installed successfully. +LastDownload=8/18/2018 +Author=2Shirt +AppWaitTime=5 diff --git a/.bin/d7ii/Config/CustomApps/Malwarebytes Scan.cfg b/.bin/d7ii/Config/CustomApps/Malwarebytes Scan.cfg new file mode 100644 index 00000000..21d0df01 --- /dev/null +++ b/.bin/d7ii/Config/CustomApps/Malwarebytes Scan.cfg @@ -0,0 +1,34 @@ +[Config] +LastEditDate=8/13/2018 4:48:53 PM +PostRunApp= +AppWebsite=https://www.malwarebytes.com/ +AppDLPage=https://downloads.malwarebytes.com/file/mb3/ +AppDesc=Malwarebytes Execution +App=%programfiles%\Malwarebytes\Anti-Malware\mbam.exe +App64=%programfiles%\Malwarebytes\Anti-Malware\mbam.exe +UseFTPServer=0 +AlwaysAttemptDownload=0 +DLafterXdays=5 +AppWait=1 +EmailBeforeExecution=0 +PriorAlert=1 +ServiceWait=0 +AppMsgBox=0 +AppRandomize=1 +SaveConfigAfter=0 +MoveSnatchReports=0 +SnatchReportsToMalwareLogs=1 +RunInCMD=0 +SendEnter=0 +RunWithSystemAccess=0 +IsDLInstaller=0 +LogVerbiage=Malwarebytes ran successfully. +32=1 +64=1 +XP=1 +Vista=1 +7=1 +8=1 +Servers=1 +NonDirectURLs=0 +AutoFlag=0 diff --git a/.bin/d7ii/Config/CustomApps/Malwarebytes Uninstall.cfg b/.bin/d7ii/Config/CustomApps/Malwarebytes Uninstall.cfg new file mode 100644 index 00000000..272c9a6d --- /dev/null +++ b/.bin/d7ii/Config/CustomApps/Malwarebytes Uninstall.cfg @@ -0,0 +1,30 @@ +[Config] +LastEditDate=8/13/2018 7:32:30 PM +PostRunApp= +App=MBAM_Uninstall.cmd +UseFTPServer=0 +AlwaysAttemptDownload=0 +DLafterXdays=5 +AppWait=1 +EmailBeforeExecution=0 +PriorAlert=0 +ServiceWait=0 +AppMsgBox=0 +AppRandomize=0 +SaveConfigAfter=0 +MoveSnatchReports=0 +SnatchReportsToMalwareLogs=1 +RunInCMD=0 +SendEnter=0 +RunWithSystemAccess=0 +IsDLInstaller=0 +32=1 +64=1 +XP=1 +Vista=1 +7=1 +8=1 +Servers=1 +NonDirectURLs=0 +AutoFlag=1 +AppDesc=Uninstall MBAM (if not previously installed) diff --git a/.bin/d7ii/Config/CustomApps/RKill (Auto).cfg b/.bin/d7ii/Config/CustomApps/RKill (Auto).cfg new file mode 100644 index 00000000..3cbf5939 --- /dev/null +++ b/.bin/d7ii/Config/CustomApps/RKill (Auto).cfg @@ -0,0 +1,40 @@ +[Config] +Author=2Shirt +LastEditDate=10/8/2018 10:56:23 PM +PostRunApp= +AppWebsite=http://www.bleepingcomputer.com/forums/t/308364/rkill-what-it-does-and-what-it-doesnt-a-brief-introduction-to-the-program/ +AppDLPage=http://www.bleepingcomputer.com/download/rkill/ +AppDesc=Anti-Malware app. +App=rkill.exe +AppParms=-s -w "%3rdpath%\rkill_Excludes.txt" +UseFTPServer=0 +AppURL=https://download.bleepingcomputer.com/grinler/rkill.exe +AppDLName=rkill.exe +AlwaysAttemptDownload=1 +DLafterXdays=.5 +AppWait=1 +EmailBeforeExecution=0 +PriorAlert=0 +ServiceWait=0 +AppMsgBox=0 +AppRandomize=1 +CopyConfigFirst=rkill.cmd +SaveConfigAfter=0 +MoveSnatchReports=1 +SnatchReportsLoc=%userprofile%\Desktop\rkill*.txt +SnatchReportsToMalwareLogs=1 +RunInCMD=0 +SendEnter=0 +RunWithSystemAccess=0 +IsDLInstaller=0 +LogVerbiage=Ran Malware Scan (RKill) +32=1 +64=1 +XP=1 +Vista=1 +7=1 +8=1 +Servers=1 +NonDirectURLs=0 +AutoFlag=1 +LastDownload=10/7/2018 diff --git a/.bin/d7ii/Config/CustomApps/WizardKit Browser Reset.cfg b/.bin/d7ii/Config/CustomApps/WizardKit Browser Reset.cfg new file mode 100644 index 00000000..1014745e --- /dev/null +++ b/.bin/d7ii/Config/CustomApps/WizardKit Browser Reset.cfg @@ -0,0 +1,35 @@ +[Config] +Author=2Shirt +LastEditDate=8/25/2018 3:50:41 PM +PostRunApp= +AppDesc=WizardKit browser reset script (d7II mode) +App=WizardKit Launcher.cmd +AppParms=.bin\Scripts\launchers_for_d7\Browser Reset.cmd +UseFTPServer=0 +AlwaysAttemptDownload=0 +DLafterXdays=5 +AppWait=1 +WaitOnProcesses=ConEmu.exe;ConEmuC.exe;ConEmu64.exe;ConEmuC64.exe;python.exe +EmailBeforeExecution=0 +PriorAlert=1 +ServiceWait=0 +AppMsgBox=1 +AppRandomize=0 +SaveConfigAfter=0 +MoveSnatchReports=0 +SnatchReportsToMalwareLogs=1 +RunInCMD=0 +SendEnter=0 +RunWithSystemAccess=0 +IsDLInstaller=0 +LogVerbiage=Reset web browsers to safe defaults and removed any malicous addons found. +32=1 +64=1 +XP=1 +Vista=1 +7=1 +8=1 +Servers=1 +NonDirectURLs=0 +AutoFlag=0 +AppWaitTime=30 diff --git a/.bin/d7ii/Config/CustomApps/WizardKit System Checklist.cfg b/.bin/d7ii/Config/CustomApps/WizardKit System Checklist.cfg new file mode 100644 index 00000000..03628cc8 --- /dev/null +++ b/.bin/d7ii/Config/CustomApps/WizardKit System Checklist.cfg @@ -0,0 +1,35 @@ +[Config] +Author=2Shirt +LastEditDate=8/25/2018 3:50:50 PM +PostRunApp= +AppDesc=WizardKit system checklist script (d7II mode) +App=WizardKit Launcher.cmd +AppParms=.bin\Scripts\launchers_for_d7\System Checklist.cmd +UseFTPServer=0 +AlwaysAttemptDownload=0 +DLafterXdays=5 +AppWait=1 +WaitOnProcesses=ConEmu.exe;ConEmuC.exe;ConEmu64.exe;ConEmuC64.exe;python.exe +EmailBeforeExecution=0 +PriorAlert=1 +ServiceWait=0 +AppMsgBox=1 +AppRandomize=0 +SaveConfigAfter=0 +MoveSnatchReports=0 +SnatchReportsToMalwareLogs=1 +RunInCMD=0 +SendEnter=0 +RunWithSystemAccess=0 +IsDLInstaller=0 +32=1 +64=1 +XP=1 +Vista=1 +7=1 +8=1 +Servers=1 +NonDirectURLs=0 +AutoFlag=0 +LogVerbiage=Examined and verified system-wide settings (available updates, drivers, activation, etc) +AppWaitTime=60 diff --git a/.bin/d7ii/Config/CustomApps/WizardKit System Diagnostics.cfg b/.bin/d7ii/Config/CustomApps/WizardKit System Diagnostics.cfg new file mode 100644 index 00000000..f7f239f3 --- /dev/null +++ b/.bin/d7ii/Config/CustomApps/WizardKit System Diagnostics.cfg @@ -0,0 +1,35 @@ +[Config] +Author=2Shirt +LastEditDate=8/25/2018 3:49:49 PM +PostRunApp= +AppDesc=WizardKit system diagnostics script (d7II mode) +App=WizardKit Launcher.cmd +AppParms=.bin\Scripts\launchers_for_d7\System Diagnostics.cmd +UseFTPServer=0 +AlwaysAttemptDownload=0 +DLafterXdays=5 +AppWait=1 +WaitOnProcesses=ConEmu.exe;ConEmuC.exe;ConEmu64.exe;ConEmuC64.exe;python.exe +EmailBeforeExecution=0 +PriorAlert=1 +ServiceWait=0 +AppMsgBox=1 +AppRandomize=0 +SaveConfigAfter=0 +MoveSnatchReports=0 +SnatchReportsToMalwareLogs=1 +RunInCMD=0 +SendEnter=0 +RunWithSystemAccess=0 +IsDLInstaller=0 +32=1 +64=1 +XP=1 +Vista=1 +7=1 +8=1 +Servers=1 +NonDirectURLs=0 +AutoFlag=0 +LogVerbiage=Ran OS built-in repairs and backed up system information +AppWaitTime=60 diff --git a/.bin/d7ii/Config/CustomApps/WizardKit User Checklist.cfg b/.bin/d7ii/Config/CustomApps/WizardKit User Checklist.cfg new file mode 100644 index 00000000..bf53c889 --- /dev/null +++ b/.bin/d7ii/Config/CustomApps/WizardKit User Checklist.cfg @@ -0,0 +1,35 @@ +[Config] +Author=2Shirt +LastEditDate=8/25/2018 3:50:59 PM +PostRunApp= +AppDesc=WizardKit user checklist script (d7II mode) +App=WizardKit Launcher.cmd +AppParms=.bin\Scripts\launchers_for_d7\User Checklist.cmd +UseFTPServer=0 +AlwaysAttemptDownload=0 +DLafterXdays=5 +AppWait=1 +WaitOnProcesses=ConEmu.exe;ConEmuC.exe;ConEmu64.exe;ConEmuC64.exe;python.exe;firefox.exe;chrome.exe +EmailBeforeExecution=0 +PriorAlert=1 +ServiceWait=0 +AppMsgBox=1 +AppRandomize=0 +SaveConfigAfter=0 +MoveSnatchReports=0 +SnatchReportsToMalwareLogs=1 +RunInCMD=0 +SendEnter=0 +RunWithSystemAccess=0 +IsDLInstaller=0 +LogVerbiage=Verified web browser settings and functionality +32=1 +64=1 +XP=1 +Vista=1 +7=1 +8=1 +Servers=1 +NonDirectURLs=0 +AutoFlag=0 +AppWaitTime=60 diff --git a/.bin/d7ii/Config/CustomApps_d7II/3rd Party Configs/Everything.ini b/.bin/d7ii/Config/CustomApps_d7II/3rd Party Configs/Everything.ini new file mode 100644 index 00000000..f787a162 --- /dev/null +++ b/.bin/d7ii/Config/CustomApps_d7II/3rd Party Configs/Everything.ini @@ -0,0 +1,485 @@ +[Everything] +app_data=0 +run_as_admin=1 +window_x=1614 +window_y=186 +window_wide=794 +window_high=664 +maximized=0 +minimized=0 +fullscreen=0 +ontop=0 +match_whole_word=0 +match_path=0 +match_case=0 +match_diacritics=0 +match_regex=0 +selection_mask_right_bottom_inclusive=1 +allow_multiple_windows=0 +allow_multiple_instances=0 +run_in_background=1 +show_tray_icon=1 +alternate_row_color=0 +show_mouseover=0 +check_for_updates_on_startup=0 +beta_updates=0 +show_highlighted_search_terms=1 +text_size=0 +hide_empty_search_results=0 +clear_selection_on_search=1 +new_window_key=0 +show_window_key=0 +toggle_window_key=0 +language=0 +show_selected_item_in_statusbar=0 +open_folder_command2= +open_file_command2= +open_path_command2= +explore_command2= +explore_path_command2= +window_title_format= +taskbar_notification_title_format= +instance_name= +translucent_selection_rectangle_alpha=70 +min_zoom=-6 +max_zoom=27 +context_menu_type=0 +auto_include_fixed_volumes=1 +auto_include_removable_volumes=0 +last_export_type=0 +max_threads=0 +reuse_threads=1 +single_parent_context_menu=0 +auto_size_1=512 +auto_size_2=640 +auto_size_3=768 +auto_size_aspect_ratio_x=9 +auto_size_aspect_ratio_y=7 +auto_size_path_x=1 +auto_size_path_y=2 +sticky_vscroll_bottom=1 +last_options_page=9 +draw_focus_rect=1 +date_format= +time_format= +invert_layout=0 +listview_item_high=0 +debug=0 +home_match_case=0 +home_match_whole_word=0 +home_match_path=0 +home_match_diacritics=0 +home_regex=0 +home_search=1 +home_filter=0 +home_sort=0 +home_index=1 +allow_multiple_windows_from_tray=0 +single_click_tray=0 +close_on_execute=0 +double_click_path=0 +update_display_after_scroll=0 +update_display_after_mask=1 +auto_scroll_view=0 +double_quote_copy_as_path=0 +snap=0 +snaplen=10 +rename_select_filepart_only=0 +rename_move_caret_to_selection_end=0 +search_edit_move_caret_to_selection_end=0 +select_search_on_mouse_click=1 +focus_search_on_activate=0 +reset_vscroll_on_search=1 +wrap_focus=0 +load_icon_priority=0 +load_fileinfo_priority=0 +header_high=0 +hide_on_close=0 +winmm=0 +menu_escape_amp=1 +fast_ascii_search=1 +match_path_when_search_contains_path_separator=1 +allow_literal_operators=0 +allow_round_bracket_parenthesis=0 +expand_environment_variables=0 +search_as_you_type=1 +convert_forward_slash_to_backslash=0 +match_whole_filename_when_using_wildcards=1 +double_buffer=1 +search= +show_number_of_results_with_selection=0 +date_descending_first=0 +size_descending_first=0 +size_format=2 +alpha_select=0 +tooltips=1 +rtl_listview_edit=0 +bookmark_remember_case=1 +bookmark_remember_wholeword=1 +bookmark_remember_path=1 +bookmark_remember_diacritic=1 +bookmark_remember_regex=1 +bookmark_remember_sort=1 +bookmark_remember_filter=1 +bookmark_remember_index=1 +exclude_list_enabled=1 +exclude_hidden_files_and_folders=0 +exclude_system_files_and_folders=0 +include_only_files= +exclude_files= +db_location= +db_multi_user_filename=0 +db_compress=0 +extended_information_cache_monitor=1 +keep_missing_indexes=0 +editor_x=0 +editor_y=0 +editor_wide=0 +editor_high=0 +editor_maximized=0 +file_list_relative_paths=1 +max_recv_size=8388608 +display_full_path_name=0 +size_tiny=10240 +size_small=102400 +size_medium=1048576 +size_large=16777216 +size_huge=134217728 +themed_toolbar=1 +show_copy_path=2 +show_copy_full_name=2 +show_open_path=2 +show_explore=2 +show_explore_path=2 +copy_path_folder_append_backslash=0 +custom_verb01= +custom_verb02= +custom_verb03= +custom_verb04= +custom_verb05= +custom_verb06= +custom_verb07= +custom_verb08= +custom_verb09= +custom_verb10= +custom_verb11= +custom_verb12= +filters_visible=0 +filters_wide=128 +filters_right_align=1 +filters_tab_stop=0 +filter= +filter_everything_name= +sort=Name +sort_ascending=1 +always_keep_sort=0 +index=0 +index_file_list= +index_etp_server= +index_link_type=1 +status_bar_visible=1 +select_search_on_focus_mode=1 +select_search_on_set_mode=2 +search_history_enabled=0 +run_history_enabled=1 +search_history_days_to_keep=90 +run_history_days_to_keep=90 +search_history_always_suggest=0 +search_history_max_results=24 +search_history_show_above=0 +service_port=15485 +etp_server_enabled=0 +etp_server_bindings= +etp_server_port=21 +etp_server_username= +etp_server_password= +etp_server_welcome_message= +etp_server_log_file_name= +etp_server_logging_enabled=1 +etp_server_log_max_size=4194304 +etp_server_log_delta_size=524288 +etp_server_allow_file_download=1 +http_server_enabled=0 +http_server_bindings= +http_title_format= +http_server_port=80 +http_server_username= +http_server_password= +http_server_home= +http_server_default_page= +http_server_log_file_name= +http_server_logging_enabled=1 +http_server_log_max_size=4194304 +http_server_log_delta_size=524288 +http_server_allow_file_download=1 +name_column_pos=0 +name_column_width=256 +path_column_visible=1 +path_column_pos=1 +path_column_width=256 +size_column_visible=1 +size_column_pos=2 +size_column_width=96 +extension_column_visible=0 +extension_column_pos=3 +extension_column_width=96 +type_column_visible=0 +type_column_pos=4 +type_column_width=96 +last_write_time_column_visible=1 +last_write_time_column_pos=3 +last_write_time_column_width=153 +creation_time_column_visible=0 +creation_time_column_pos=6 +creation_time_column_width=140 +date_accessed_column_visible=0 +date_accessed_column_pos=7 +date_accessed_column_width=140 +attribute_column_visible=0 +attribute_column_pos=8 +attribute_column_width=70 +date_recently_changed_column_visible=0 +date_recently_changed_column_pos=9 +date_recently_changed_column_width=96 +run_count_column_visible=0 +run_count_column_pos=10 +run_count_column_width=96 +date_run_column_visible=0 +date_run_column_pos=11 +date_run_column_width=140 +file_list_filename_column_visible=0 +file_list_filename_column_pos=12 +file_list_filename_column_width=96 +translucent_selection_rectangle_background_color= +translucent_selection_rectangle_border_color= +ntfs_volume_paths= +ntfs_volume_includes= +ntfs_volume_load_recent_changes= +ntfs_volume_include_onlys= +ntfs_volume_monitors= +filelists= +folders= +folder_monitor_changes= +folder_update_types= +folder_update_days= +folder_update_ats= +folder_update_intervals= +folder_update_interval_types= +exclude_folders= +connect_history_hosts= +connect_history_ports= +connect_history_usernames= +connect_history_link_types= +file_new_search_window_keys=334 +file_open_file_list_keys=335 +file_close_file_list_keys= +file_close_keys=343,27 +file_export_keys=339 +file_copy_full_name_to_clipboard_keys=9539 +file_copy_path_to_clipboard_keys= +file_set_run_count_keys= +file_create_shortcut_keys= +file_delete_keys=8238 +file_delete_permanently_keys=9262 +file_edit_keys= +file_open_keys=8205 +file_open_selection_and_close_everything_keys= +file_explore_path_keys= +file_open_new_keys= +file_open_path_keys=8461 +file_open_with_keys= +file_open_with_default_verb_keys= +file_play_keys= +file_preview_keys= +file_print_keys= +file_print_to_keys= +file_properties_keys=8717 +file_read_extended_information_keys=8517 +file_rename_keys=8305 +file_run_as_keys= +file_exit_keys=337 +file_custom_verb_1_keys= +file_custom_verb_2_keys= +file_custom_verb_3_keys= +file_custom_verb_4_keys= +file_custom_verb_5_keys= +file_custom_verb_6_keys= +file_custom_verb_7_keys= +file_custom_verb_8_keys= +file_custom_verb_9_keys= +file_custom_verb_10_keys= +file_custom_verb_11_keys= +file_custom_verb_12_keys= +edit_cut_keys=8536 +edit_copy_keys=8515,8493 +edit_paste_keys=8534,9261 +edit_select_all_keys=8513 +edit_invert_selection_keys= +view_filters_keys= +view_status_bar_keys= +view_window_size_small_keys=561 +view_window_size_medium_keys=562 +view_window_size_large_keys=563 +view_window_size_auto_fit_keys=564 +view_zoom_zoom_in_keys=443,363 +view_zoom_zoom_out_keys=445,365 +view_zoom_reset_keys=304,352 +view_go_to_back_keys=549,166 +view_go_to_forward_keys=551,167 +view_go_to_home_keys=548 +view_sort_by_name_keys=305 +view_sort_by_path_keys=306 +view_sort_by_size_keys=307 +view_sort_by_extension_keys=308 +view_sort_by_type_keys=309 +view_sort_by_date_modified_keys=310 +view_sort_by_date_created_keys=311 +view_sort_by_attributes_keys=312 +view_sort_by_file_list_filename_keys= +view_sort_by_run_count_keys= +view_sort_by_date_run_keys= +view_sort_by_date_recently_changed_keys=313 +view_sort_by_date_accessed_keys= +view_sort_by_ascending_keys= +view_sort_by_descending_keys= +view_refresh_keys=116 +view_fullscreen_keys=122 +view_toggle_ltrrtl_keys= +view_on_top_never_keys= +view_on_top_always_keys=340 +view_on_top_while_searching_keys= +search_match_case_keys=329 +search_match_whole_word_keys=322 +search_match_path_keys=341 +search_match_diacritics_keys=333 +search_enable_regex_keys=338 +search_add_to_filters_keys= +search_organize_filters_keys=1350 +bookmarks_add_to_bookmarks_keys=324 +bookmarks_organize_bookmarks_keys=1346 +tools_options_keys=336 +tools_console_keys=448 +tools_file_list_editor_keys= +tools_connect_to_etp_server_keys= +tools_disconnect_from_etp_server_keys= +help_everything_help_keys=112 +help_search_syntax_keys= +help_regex_syntax_keys= +help_command_line_options_keys= +help_everything_website_keys= +help_check_for_updates_keys= +help_about_everything_keys=368 +search_edit_focus_search_edit_keys=326,114 +search_edit_delete_previous_word_keys=4360 +search_edit_auto_complete_search_keys=4384 +search_edit_show_search_history_keys= +search_edit_show_all_search_history_keys=4646,4648 +result_list_item_up_keys=8230,4134 +result_list_item_down_keys=8232,4136 +result_list_page_up_keys=8225,4129 +result_list_page_down_keys=8226,4130 +result_list_start_of_list_keys=8228 +result_list_end_of_list_keys=8227 +result_list_item_up_extend_keys=9254,5158 +result_list_item_down_extend_keys=9256,5160 +result_list_page_up_extend_keys=9249,5153 +result_list_page_down_extend_keys=9250,5154 +result_list_start_of_list_extend_keys=9252 +result_list_end_of_list_extend_keys=9251 +result_list_focus_up_keys=8486,4390 +result_list_focus_down_keys=8488,4392 +result_list_focus_page_up_keys=8481,4385 +result_list_focus_page_down_keys=8482,4386 +result_list_focus_start_of_list_keys=8484 +result_list_focus_end_of_list_keys=8483 +result_list_focus_up_extend_keys=9510,5414 +result_list_focus_down_extend_keys=9512,5416 +result_list_focus_page_up_extend_keys=9505,5409 +result_list_focus_page_down_extend_keys=9506,5410 +result_list_focus_start_of_list_extend_keys=9508 +result_list_focus_end_of_list_extend_keys=9507 +result_list_focus_result_list_keys= +result_list_toggle_path_column_keys=1330 +result_list_toggle_size_column_keys=1331 +result_list_toggle_extension_column_keys=1332 +result_list_toggle_type_column_keys=1333 +result_list_toggle_date_modified_column_keys=1334 +result_list_toggle_date_created_column_keys=1335 +result_list_toggle_attributes_column_keys=1336 +result_list_toggle_file_list_filename_column_keys= +result_list_toggle_run_count_column_keys= +result_list_toggle_date_recently_changed_column_keys=1337 +result_list_toggle_date_accessed_column_keys= +result_list_toggle_date_run_column_keys= +result_list_size_all_columns_to_fit_keys=8555 +result_list_size_result_list_to_fit_keys= +result_list_context_menu_keys=9337 +result_list_scroll_left_keys=8229 +result_list_scroll_right_keys=8231 +result_list_scroll_page_left_keys=8485 +result_list_scroll_page_right_keys=8487 +result_list_select_focus_keys=8224 +result_list_toggle_focus_selection_keys=8480 +result_list_copy_selection_to_clipboard_as_csv_keys= +result_list_font= +result_list_font_size= +search_edit_font= +search_edit_font_size= +status_bar_font= +status_bar_font_size= +header_font= +header_font_size= +normal_background_color= +normal_foreground_color= +normal_bold= +highlighted_background_color= +highlighted_foreground_color= +highlighted_bold= +selected_background_color= +selected_foreground_color= +selected_bold= +highlighted_selected_background_color= +highlighted_selected_foreground_color= +highlighted_selected_bold= +selected_inactive_background_color= +selected_inactive_foreground_color= +selected_inactive_bold= +highlighted_selected_inactive_background_color= +highlighted_selected_inactive_foreground_color= +highlighted_selected_inactive_bold= +drop_target_background_color= +drop_target_foreground_color= +drop_target_bold= +highlighted_drop_target_background_color= +highlighted_drop_target_foreground_color= +highlighted_drop_target_bold= +current_sort_background_color= +current_sort_foreground_color= +current_sort_bold= +highlighted_current_sort_background_color= +highlighted_current_sort_foreground_color= +highlighted_current_sort_bold= +mouseover_background_color= +mouseover_foreground_color= +mouseover_bold= +mouseover_highlighted_background_color= +mouseover_highlighted_foreground_color= +mouseover_highlighted_bold= +current_sort_mouseover_background_color= +current_sort_mouseover_foreground_color= +current_sort_mouseover_bold= +mouseover_current_sort_highlighted_background_color= +mouseover_current_sort_highlighted_foreground_color= +mouseover_current_sort_highlighted_bold= +alternate_row_background_color= +alternate_row_foreground_color= +alternate_row_bold= +alternate_row_highlighted_background_color= +alternate_row_highlighted_foreground_color= +alternate_row_highlighted_bold= +current_sort_alternate_row_background_color= +current_sort_alternate_row_foreground_color= +current_sort_alternate_row_bold= +current_sort_alternate_row_highlighted_background_color= +current_sort_alternate_row_highlighted_foreground_color= +current_sort_alternate_row_highlighted_bold= diff --git a/.bin/d7ii/Config/CustomApps_d7II/3rd Party Configs/HMP.cmd b/.bin/d7ii/Config/CustomApps_d7II/3rd Party Configs/HMP.cmd new file mode 100644 index 00000000..0481ff41 --- /dev/null +++ b/.bin/d7ii/Config/CustomApps_d7II/3rd Party Configs/HMP.cmd @@ -0,0 +1,11 @@ +pushd "%~dp0" +cd.. +set d7IIpath=%cd% +pushd "%~dp0" +echo %d7IIpath%\>HMP_Excludes.txt +echo %programfiles%\dSupportSuite\>>HMP_Excludes.txt +echo %programfiles(x86)%\dSupportSuite\>>HMP_Excludes.txt +echo %programfiles%\CryptoPrevent\>>HMP_Excludes.txt +echo %programfiles(x86)%\CryptoPrevent\>>HMP_Excludes.txt +echo %programfiles%\Foolish IT\CryptoPrevent\>>HMP_Excludes.txt +echo %programfiles(x86)%\Foolish IT\CryptoPrevent\>>HMP_Excludes.txt \ No newline at end of file diff --git a/.bin/d7ii/Config/CustomApps_d7II/3rd Party Configs/JRT_Auto.cmd b/.bin/d7ii/Config/CustomApps_d7II/3rd Party Configs/JRT_Auto.cmd new file mode 100644 index 00000000..549e8e0a --- /dev/null +++ b/.bin/d7ii/Config/CustomApps_d7II/3rd Party Configs/JRT_Auto.cmd @@ -0,0 +1,17 @@ +@echo off&pushd "%~dp0" +start /wait JRT.exe -y -nr +pushd "%temp%\jrt" +if not exist "get.bat" pushd %systemdrive%\JRT +if not exist "get.bat" goto :eof +findstr /v /i "pause" get.bat>tmp.txt +findstr /v /i /b "notepad" tmp.txt>get.bat +echo.>>"%temp%\jrt\wl_services.cfg" +echo d7iisvc>>"%temp%\jrt\wl_services.cfg" +echo dSSEventSvc>>"%temp%\jrt\wl_services.cfg" +echo CryptoPreventEventSvc>>"%temp%\jrt\wl_services.cfg" +echo.>>"%temp%\jrt\wl_processes.cfg" +echo d7ii>>"%temp%\jrt\wl_processes.cfg" +echo dfunk>>"%temp%\jrt\wl_processes.cfg" +echo dSupportSuite>>"%temp%\jrt\wl_processes.cfg" +echo CryptoPrevent>>"%temp%\jrt\wl_processes.cfg" +start /wait cmd.exe /c get.bat \ No newline at end of file diff --git a/.bin/d7ii/Config/CustomApps_d7II/3rd Party Configs/Neutron.ini b/.bin/d7ii/Config/CustomApps_d7II/3rd Party Configs/Neutron.ini new file mode 100644 index 00000000..27c28250 --- /dev/null +++ b/.bin/d7ii/Config/CustomApps_d7II/3rd Party Configs/Neutron.ini @@ -0,0 +1,26 @@ +[Options] +AutoSync=1 +AutoExit=1 +Retry=1 + +[Servers] +0="time-a.nist.gov" +1="time-a.timefreq.bldrdoc.gov" +2="time-b.nist.gov" +3="time-b.timefreq.bldrdoc.gov" +4="time-c.timefreq.bldrdoc.gov" +5="us.pool.ntp.org" +6="1.us.pool.ntp.org" +7="2.us.pool.ntp.org" +8="3.us.pool.ntp.org" +9="pubts1-sj.witime.net" +10="pubts2-sj.witime.net" +11="rolex.usg.edu" +12="timekeeper.isi.edu" +13="nist1.symmetricom.com" +14="clock.via.net" +15="nist1.aol-ca.truetime.com" +16="nist.expertsmi.com" +17="nist1-dc.WiTime.net" +18="nist1-sj.WiTime.net" +19="utcnist.colorado.edu" diff --git a/.bin/d7ii/Config/CustomApps_d7II/3rd Party Configs/PatchMyPC.reg b/.bin/d7ii/Config/CustomApps_d7II/3rd Party Configs/PatchMyPC.reg new file mode 100644 index 00000000..540426a5 Binary files /dev/null and b/.bin/d7ii/Config/CustomApps_d7II/3rd Party Configs/PatchMyPC.reg differ diff --git a/.bin/d7ii/Config/CustomApps_d7II/3rd Party Configs/a2cmd.cmd b/.bin/d7ii/Config/CustomApps_d7II/3rd Party Configs/a2cmd.cmd new file mode 100644 index 00000000..bf44096b --- /dev/null +++ b/.bin/d7ii/Config/CustomApps_d7II/3rd Party Configs/a2cmd.cmd @@ -0,0 +1,167 @@ +:: +:: --- BEGIN INFO --- +:: +:: +:: Applicable Custom App: All 'Emsisoft xxx' app configurations in d7II default custom app configurations. +:: +:: Last Update: 2017-02-03 +:: +:: Created by Nick @ FoolishIT.com [Foolish IT LLC] as an example for the user-configurable d7II custom app's system. +:: +:: +:: - d7II Config Location: (applicable to most anything having to do with this batch file) +:: Open Config (under Main drop down menu) \ Custom Apps (tab) \ (search/find/highlight desired custom app in left column/box first) \ New/Edit App (sub-tab) +:: +:: - This batch file is referenced from custom app configuration items in d7II Config, and may make references to other data available from within +:: the custom app configuration or used by it such as noted here. +:: +:: - The 'Whitelist.txt' file created by this batch file will by referenced in the command line arguments passed to the custom app; the configuration +:: for this is located in custom apps config as mentioned above \ then the Execution (sub-tab) +:: +:: - This batch file is called into action when configured in the 'Import Config Before Execution' setting in a d7II custom app configuration, +:: which can be found on the 'Pre-Execution' tab of the custom app configuration mentioned above. +:: +:: NOTES: * When a .BAT/.CMD file such as this is found configured under this setting (as opposed to any other text or data file) it will be +:: copied to the custom app's final running directory (the same as any other files would be) but then executed as a batch script (after +:: the installer is executed if one is configured, but prior to execution of the main custom app itself. +:: +:: * Similarly, a .VBS file would be copied to the custom app directory and executed as a script as above. +:: +:: * Further, a .REG file would be imported to the registry if found configured for this setting. +:: +:: * This setting may reference multiple files separated by a comma with no spacing required; e.g. 'file1.bat,file2.txt,file3.reg' +:: +:: * All files (no paths) configured here must be located within your 'd7II\Config\CustomApps\3rd Party Configs' path (create the last +:: dirs if not exist.) They will likely work if located in the 'd7II\Config\CustomApps_d7II\3rd Party Configs' path, but with all +:: d7II default custom app configurations, this path with all content will be deleted and rewritten during updates to the default apps. +:: +:: +:: Batch File Objectives: +:: +:: 1. Obtain d7II path via registry; use this in creating a whitelist to be used by the custom app +:: (to include all custom apps in subdirs of d7II) +:: +:: 2. Obtain 3rd Party Tools path via registry; if this is not a subdir of the main d7II Path, then +:: add this to a whitelist to be used by the custom app (to include all custom apps in subdirs) +:: +:: 3. create a2cmd whitelist as a new file in the location/directory of the custom app (overwrite existing if any) +:: - batch file current directory should be same as the main executable of the custom app (Execution tab) +:: - add d7II path and include all custom apps within the d7II subdir structure) and other Foolish IT apps +:: to a new file (overwrite) in the current directory (of the custom app whitelist for a2cmd.) +:: +:: +:: --- BEGIN CODE --- +:: Disable local echo, clear screen, output a blank line. +:: +@echo off&cls&echo. +:: Set window title to visually identify what this console window is doing. +title [a2cmd] Performing Additional Custom App Tasks... +:: Change from the Current Working Directory (available to the %cd% variable) +:: to the Current Directory (available as %~dp0 below) where the file actually "lives" +:: and was the location where this batch file was copied to by d7II.exe prior to running it. +:: +:: - This should be the path of the main exe for this custom app as configured in d7II; +:: located in custom apps config as mentioned above \ then the Execution (sub-tab) +:: +:: - Syntax explanation: +:: +:: '~' removes wrapping quotes (never use in a variable if possible, instead wrap the variable as necessary!) +:: 'd' returns a drive letter and colon +:: 'p' returns a full directory path (without a prepended driveletter, and including a trailing backslash) +:: '0' refers to self (this batch file) as the subject of the above conditions +:: +pushd "%~dp0" +:: Set variables for registry value queries and app info +:: +set "RegKey=HKLM\Software\Foolish IT\d7II\Session\Paths" +set "RegNameEXE=AppEXE" +set "RegName3PT=3PTDir" +set "MainPath=%systemdrive%\EmsisoftCmd" +set "MainEXE=a2cmd.exe" +set "InstEXE32=EmsisoftCommandlineScanner32.exe" +set "InstEXE64=EmsisoftCommandlineScanner64.exe" +set "InstParms=/S" +:: Determine if 64bit paths should be used. Note that by using the syntax '%programfiles% (x86)' and not the single +:: '%programfiles(x86)%' then we avoid any errors with the variable not existing and throwing off the actual exist check. +:: +if "[%programfiles(x86)%]" NEQ "[]" if exist "%programfiles% (x86)" set Win64=True +:: +if defined Win64 ( + set "ProgramDir32=%programfiles(x86)%" + set "InstEXE=%InstEXE64%" +) else ( + set "ProgramDir32=%programfiles%" + set "InstEXE=%InstEXE32%" +) +:: Run installer/self-extractor +:: +if not exist "%MainPath%\%MainEXE%" if exist %InstEXE% start "" /wait "%InstEXE%" %InstParms% +:: Exit if install path does not exist... +:: +if not exist "%MainPath%" ( + goto :eof +) else ( + pushd "%MainPath%" +) +:: Add exclusions for other Foolish IT product paths (unrelated to d7II) that may be on a system; +:: While we could first test for dir exist, the dumb addition of a few extra exclusions to the +:: whitelist without checking for their existence will make much of a difference to any custom app... +:: +:: - NOTE: observe the first code line using a single ">" chr prior to the whitelist filename, +:: this creates new or overwrites an existing file; all subsequent usage for the same +:: filename must include the syntax of double ">>" chrs, which creates new or appends +:: to an existing file. +:: +echo %ProgramDir32%\dSupportSuite\>a2cmd_Whitelist.txt +echo %ProgramDir32%\CryptoPrevent\>>a2cmd_Whitelist.txt +echo %ProgramDir32%\Foolish IT\CryptoPrevent\>>a2cmd_Whitelist.txt +:: Extract the full path to d7II.exe for the "d7IIPath" variable; obtain d7II path for the currently active +:: d7II 'session' via a registry query to the registry's copy of d7II's current session configuration. +:: +:: - NOTE: The ' 2^>nul' syntax below redirects errors from the 'reg query' command to 'nul' in order to +:: keep garbage/error messages from defining this variable on an unexpected error... +:: +:: Also, similar to the '%~dp0' syntax used with pushd at the beginning of the batch file, the +:: variable syntax '~dp' is used with the variable '%%_' to ensure output as a drive\path without +:: without a filename and without wrapping quotes (a trailing backslash is included in the output +:: and for these purposes it is also expected syntax for the custom app whitelist. +:: +for /f "usebackq tokens=2*" %%a in (`reg query "%RegKey%" /v "%RegNameEXE%" 2^>nul`) do set "d7IIPath=%%~dpb" +:: +:: Check for a result; if variable is defined above then add this path to the whitelist. +:: +if defined d7IIPath echo %d7IIpath%>>a2cmd_Whitelist.txt +:: Next get the path to d7II custom apps / 3rd party tools via reg query, to provide redundancy if this path +:: for any reason is not located within a subdir of d7II.exe itself. First set the new registry value name. +:: +for /f "usebackq tokens=2*" %%a in (`reg query "%RegKey%" /v "%RegName3PT%" 2^>nul`) do set "ToolsPath=%%~b" +:: +:: Check for a result; if variable is defined above then add this path to the whitelist, otherwise the rest +:: of this script is useless, so exit. +:: +if not defined ToolsPath goto :eof +echo %ToolsPath%\>>a2cmd_Whitelist.txt +:: If no parameters were passed to this batch file, it is being run as part of the "Copy Config" custom app +:: setting (it will be run a second time with parameters for the execution of the custom app itself, which is +:: configured to run this batch file again instead of %MainEXE% as the actual configured exe for this custom +:: app.) +:: +:: Test to find out if any parameters were passed to this batch file, and if none are found just update... +:: +if [%1] EQU [] goto :RunUpdate +:: If we make it this far then this batch file was launched with command line parameters intended for %MainEXE%, +:: so run the custom app passing all parameters as received and waiting for exit. +:: +echo Running scan... (in a separate window; please do NOT close this window!) +:: +start "" /wait "%MainEXE%" %* +goto :eof +:RunUpdate +:: +:: Since getting here means no parameters were passed, run %MainEXE% using parameters for it's own internal +:: definition/signature update, then exit. +:: +echo Starting update... (in a separate window; please do NOT close this window!) +:: +start "" /wait "%MainEXE%" /update +goto :eof \ No newline at end of file diff --git a/.bin/d7ii/Config/CustomApps_d7II/3rd Party Configs/cpuz.ini b/.bin/d7ii/Config/CustomApps_d7II/3rd Party Configs/cpuz.ini new file mode 100644 index 00000000..e31404cd Binary files /dev/null and b/.bin/d7ii/Config/CustomApps_d7II/3rd Party Configs/cpuz.ini differ diff --git a/.bin/d7ii/Config/CustomApps_d7II/3rd Party Configs/pagedfrg.reg b/.bin/d7ii/Config/CustomApps_d7II/3rd Party Configs/pagedfrg.reg new file mode 100644 index 00000000..de812262 Binary files /dev/null and b/.bin/d7ii/Config/CustomApps_d7II/3rd Party Configs/pagedfrg.reg differ diff --git a/.bin/d7ii/Config/CustomApps_d7II/3rd Party Configs/rkill.cmd b/.bin/d7ii/Config/CustomApps_d7II/3rd Party Configs/rkill.cmd new file mode 100644 index 00000000..6cca7c3a --- /dev/null +++ b/.bin/d7ii/Config/CustomApps_d7II/3rd Party Configs/rkill.cmd @@ -0,0 +1,5 @@ +pushd "%~dp0" +cd.. +set d7IIpath=%cd% +pushd "%~dp0" +echo %d7IIpath%\d7II.exe>rkill_Excludes.txt diff --git a/.bin/d7ii/Config/CustomApps_d7II/AS SSD Benchmark.cfg b/.bin/d7ii/Config/CustomApps_d7II/AS SSD Benchmark.cfg new file mode 100644 index 00000000..220e910d --- /dev/null +++ b/.bin/d7ii/Config/CustomApps_d7II/AS SSD Benchmark.cfg @@ -0,0 +1,35 @@ +[Config] +DisableCloudShare=0 +AppURL=http://www.alex-is.de/PHP/fusion/downloads.php?cat_id=4&file_id=9 +AppDLName=AS SSD Benchmark.zip +AlwaysAttemptDownload=1 +AppWait=1 +ServiceWait=0 +AppMsgBox=0 +AppRandomize=0 +SaveConfigAfter=0 +MoveSnatchReports=0 +SnatchReportsToMalwareLogs=1 +RunInCMD=0 +RunWithSystemAccess=0 +IsDLInstaller=0 +32=1 +64=1 +XP=1 +Vista=1 +7=1 +8=1 +Servers=1 +App=AS SSD Benchmark\AS SSD Benchmark.exe +UseFTPServer=0 +DLafterXdays=7 +PriorAlert=0 +LogVerbiage=Ran SSD testing/benchmark +LastDownload=10/27/2017 +AppWebsite=www.alex-is.de/PHP/fusion/downloads.php?cat_id=4&download_id=9 +Author=FoolishTech +LastEditDate=2/7/2014 9:45:12 AM +NonDirectURLs=0 +AppDLPage=www.alex-is.de/PHP/fusion/downloads.php?cat_id=4&download_id=9 +AppDesc=SSD Benchmark Utility +AutoFlag=0 diff --git a/.bin/d7ii/Config/CustomApps_d7II/AdwCleaner.cfg b/.bin/d7ii/Config/CustomApps_d7II/AdwCleaner.cfg new file mode 100644 index 00000000..db51c8a9 --- /dev/null +++ b/.bin/d7ii/Config/CustomApps_d7II/AdwCleaner.cfg @@ -0,0 +1,36 @@ +[Config] +Author=FoolishTech +LastEditDate=7/21/2014 11:16:06 AM +AppWebsite=http://www.bleepingcomputer.com/download/adwcleaner/ +AppDLPage=http://www.bleepingcomputer.com/download/adwcleaner/ +AppDesc=Toolbar Remover +App=AdwCleaner.exe +UseFTPServer=0 +AppURL=http://download.bleepingcomputer.com/Xplode/AdwCleaner.exe +AppURLB=http://general-changelog-team.fr/fr/downloads/finish/20-outils-de-xplode/2-adwcleaner +AppDLName=AdwCleaner.exe +AlwaysAttemptDownload=1 +DLafterXdays=.5 +AppWait=1 +PriorAlert=1 +ServiceWait=1 +AppMsgBox=0 +AppRandomize=0 +SaveConfigAfter=0 +MoveSnatchReports=1 +SnatchReportsLoc=%systemdrive%\AdwCleaner\AdwCleaner*.txt +SnatchReportsToMalwareLogs=1 +RunInCMD=0 +RunWithSystemAccess=0 +IsDLInstaller=0 +LogVerbiage=Removed unnecessary internet browser add-ins (e.g. Toolbars) [AdwCleaner] +32=1 +64=1 +XP=1 +Vista=1 +7=1 +8=1 +Servers=1 +NonDirectURLs=0 +LastDownload=10/27/2017 +AutoFlag=0 diff --git a/.bin/d7ii/Config/CustomApps_d7II/Auslogics DD Portable.cfg b/.bin/d7ii/Config/CustomApps_d7II/Auslogics DD Portable.cfg new file mode 100644 index 00000000..5b9d818f --- /dev/null +++ b/.bin/d7ii/Config/CustomApps_d7II/Auslogics DD Portable.cfg @@ -0,0 +1,34 @@ +[Config] +DisableCloudShare=0 +AppWebsite=http://www.auslogics.com/en/software/disk-defrag/command-line/ +App=ausdiskdefragportable.exe +AppURL=http://www.auslogics.com/en/downloads/disk-defrag/ausdiskdefragportable.exe +AppDLName=ausdiskdefragportable.exe +AlwaysAttemptDownload=1 +AppWait=1 +ServiceWait=0 +AppMsgBox=0 +AppRandomize=0 +SaveConfigAfter=0 +MoveSnatchReports=0 +SnatchReportsToMalwareLogs=0 +RunInCMD=0 +RunWithSystemAccess=0 +IsDLInstaller=0 +32=1 +64=1 +XP=1 +Vista=1 +7=1 +8=1 +Servers=0 +UseFTPServer=0 +DLafterXdays=7 +PriorAlert=1 +LogVerbiage=Defragmented file system (Auslogics) +Author=FoolishTech +LastEditDate=2/7/2014 9:45:41 AM +NonDirectURLs=0 +AppDesc=Disk Defragmenter +AppDLPage=http://www.auslogics.com/en/software/disk-defrag/ +AutoFlag=0 \ No newline at end of file diff --git a/.bin/d7ii/Config/CustomApps_d7II/Autoruns.cfg b/.bin/d7ii/Config/CustomApps_d7II/Autoruns.cfg new file mode 100644 index 00000000..3b75ac6f --- /dev/null +++ b/.bin/d7ii/Config/CustomApps_d7II/Autoruns.cfg @@ -0,0 +1,36 @@ +[Config] +App=autoruns\autoruns.exe +AppURL=http://download.sysinternals.com/files/Autoruns.zip +AppDLName=autoruns.zip +AppWait=1 +AppMsgBox=0 +AppRandomize=1 +MoveSnatchReports=0 +SnatchReportsToMalwareLogs=1 +RunInCMD=0 +AppParms=-accepteula +DisableCloudShare=0 +UseFTPServer=0 +AlwaysAttemptDownload=1 +DLafterXdays=7 +PriorAlert=1 +ServiceWait=0 +SaveConfigAfter=0 +RunWithSystemAccess=0 +IsDLInstaller=0 +32=1 +64=1 +XP=1 +Vista=1 +7=1 +8=1 +Servers=1 +AppWebsite=http://technet.microsoft.com/en-us/sysinternals/bb963902 +LogVerbiage=Examined Windows startup items and removed unnecessary entries. +LastDownload=10/27/2017 +Author=FoolishTech +LastEditDate=2/7/2014 9:46:37 AM +NonDirectURLs=0 +AppDLPage=http://technet.microsoft.com/en-us/sysinternals/bb963902 +AppDesc=Manages Startup Items +AutoFlag=0 diff --git a/.bin/d7ii/Config/CustomApps_d7II/Avast! aswMBR.cfg b/.bin/d7ii/Config/CustomApps_d7II/Avast! aswMBR.cfg new file mode 100644 index 00000000..dd51702d --- /dev/null +++ b/.bin/d7ii/Config/CustomApps_d7II/Avast! aswMBR.cfg @@ -0,0 +1,33 @@ +[Config] +App=aswMBR.exe +AppURL=http://public.avast.com/~gmerek/aswMBR.exe +AppWait=1 +AppMsgBox=0 +AppRandomize=1 +MoveSnatchReports=0 +SnatchReportsToMalwareLogs=1 +RunInCMD=0 +AppDLName=aswMBR.exe +DisableCloudShare=0 +UseFTPServer=0 +AlwaysAttemptDownload=0 +PriorAlert=1 +ServiceWait=0 +SaveConfigAfter=0 +RunWithSystemAccess=0 +IsDLInstaller=0 +32=1 +64=1 +XP=1 +Vista=1 +7=1 +8=1 +Servers=1 +AppWebsite=http://public.avast.com/~gmerek/aswMBR.htm +LogVerbiage=Checked MBR for infections and scanned for additional malicious items (Avast!). +Author=FoolishTech +LastEditDate=2/7/2014 9:46:53 AM +AppDLPage=http://public.avast.com/~gmerek/aswMBR.htm +AppDesc=MBR Checker and Virus Scanner +NonDirectURLs=0 +AutoFlag=0 \ No newline at end of file diff --git a/.bin/d7ii/Config/CustomApps_d7II/BatteryInfoView.cfg b/.bin/d7ii/Config/CustomApps_d7II/BatteryInfoView.cfg new file mode 100644 index 00000000..1f4ed47b --- /dev/null +++ b/.bin/d7ii/Config/CustomApps_d7II/BatteryInfoView.cfg @@ -0,0 +1,34 @@ +[Config] +DisableCloudShare=0 +App=batteryinfoview.exe +AppURL=http://www.nirsoft.net/panel/batteryinfoview.exe +AppDLName=batteryinfoview.exe +AlwaysAttemptDownload=0 +AppWait=1 +ServiceWait=0 +AppMsgBox=0 +AppRandomize=0 +SaveConfigAfter=0 +MoveSnatchReports=0 +SnatchReportsToMalwareLogs=0 +RunInCMD=0 +RunWithSystemAccess=0 +IsDLInstaller=0 +32=1 +64=1 +XP=1 +Vista=1 +7=1 +8=1 +Servers=1 +AppWebsite=www.nirsoft.net/utils/battery_information_view.html +UseFTPServer=0 +PriorAlert=0 +LogVerbiage=Checked battery life and wear level. +Author=FoolishTech +LastEditDate=2/7/2014 9:47:17 AM +AppDLPage=www.nirsoft.net/utils/battery_information_view.html +AppDesc=Detailed info on installed batteries +NonDirectURLs=0 +AutoFlag=0 +LastDownload=10/27/2017 diff --git a/.bin/d7ii/Config/CustomApps_d7II/Belarc Advisor (Install-Report).cfg b/.bin/d7ii/Config/CustomApps_d7II/Belarc Advisor (Install-Report).cfg new file mode 100644 index 00000000..83d765cf --- /dev/null +++ b/.bin/d7ii/Config/CustomApps_d7II/Belarc Advisor (Install-Report).cfg @@ -0,0 +1,36 @@ +[Config] +Author=FoolishTech +LastEditDate=2/7/2014 9:49:58 AM +App=advisorinstaller.exe +AppParms=/silent +UseFTPServer=0 +AppURL=http://www.belarc.com/Programs/advisorinstaller.exe +AppDLName=advisorinstaller.exe +AlwaysAttemptDownload=0 +DLafterXdays=5 +AppWait=1 +WaitOnProcesses=Belarc~1.exe +PriorAlert=0 +ServiceWait=0 +AppMsgBox=0 +AppRandomize=0 +SaveConfigAfter=0 +MoveSnatchReports=0 +SnatchReportsLoc=%programfiles(x86)%\Belarc\BelarcAdvisor\System\tmp\(%computername%).html +SnatchReportsToMalwareLogs=0 +RunInCMD=0 +RunWithSystemAccess=0 +IsDLInstaller=0 +32=1 +64=1 +XP=1 +Vista=1 +7=1 +8=1 +Servers=1 +NonDirectURLs=0 +AppWebsite=http://www.belarc.com/free_download.html +AppDLPage=http://www.belarc.com/free_download.html +AppDesc=System Information Utility (Not 'Portable' - Installation Necessary) +AutoFlag=1 +LastDownload=10/27/2017 diff --git a/.bin/d7ii/Config/CustomApps_d7II/Bitdefender Rootkit Remover.cfg b/.bin/d7ii/Config/CustomApps_d7II/Bitdefender Rootkit Remover.cfg new file mode 100644 index 00000000..d93b1328 --- /dev/null +++ b/.bin/d7ii/Config/CustomApps_d7II/Bitdefender Rootkit Remover.cfg @@ -0,0 +1,38 @@ +[Config] +DisableCloudShare=0 +App=BootkitRemoval_x86.exe +App64=BootkitRemoval_x64.exe +AppURL64=http://download.bitdefender.com/removal_tools/BootkitRemoval_x64.exe +AppDLName64=BootkitRemoval_x64.exe +UseFTPServer=0 +AppURL=http://download.bitdefender.com/removal_tools/BootkitRemoval_x86.exe +AppDLName=BootkitRemoval_x86.exe +AlwaysAttemptDownload=1 +DLafterXdays=5 +AppWait=1 +PriorAlert=1 +ServiceWait=0 +AppMsgBox=0 +AppRandomize=1 +SaveConfigAfter=0 +MoveSnatchReports=0 +SnatchReportsToMalwareLogs=1 +RunInCMD=0 +RunWithSystemAccess=0 +IsDLInstaller=0 +32=1 +64=1 +XP=1 +Vista=1 +7=1 +8=1 +Servers=1 +AppWebsite=http://labs.bitdefender.com/projects/rootkit-remover/rootkit-remover/ +LogVerbiage=Performed additional rootkit scanning. (BRR) +Author=FoolishTech +LastEditDate=2/7/2014 9:50:38 AM +AppDLPage=http://labs.bitdefender.com/projects/rootkit-remover/rootkit-remover/ +AppDesc=Bitdefender Rootkit Remover +NonDirectURLs=0 +AutoFlag=0 +LastDownload=8/13/2018 diff --git a/.bin/d7ii/Config/CustomApps_d7II/BluescreenView.cfg b/.bin/d7ii/Config/CustomApps_d7II/BluescreenView.cfg new file mode 100644 index 00000000..51997f14 --- /dev/null +++ b/.bin/d7ii/Config/CustomApps_d7II/BluescreenView.cfg @@ -0,0 +1,34 @@ +[Config] +DisableCloudShare=0 +App=bluescreenview.exe +AppURL=http://www.nirsoft.net/panel/bluescreenview.exe +AppDLName=bluescreenview.exe +AlwaysAttemptDownload=0 +AppWait=1 +ServiceWait=0 +AppMsgBox=0 +AppRandomize=0 +SaveConfigAfter=0 +MoveSnatchReports=0 +SnatchReportsToMalwareLogs=0 +RunInCMD=0 +RunWithSystemAccess=0 +IsDLInstaller=0 +32=1 +64=1 +XP=1 +Vista=1 +7=1 +8=1 +Servers=1 +UseFTPServer=0 +PriorAlert=0 +LogVerbiage=Checked for previous blue screens / crash dumps. +AppWebsite=www.nirsoft.net/utils/blue_screen_view.html +Author=FoolishTech +LastEditDate=2/7/2014 9:51:06 AM +AppDLPage=www.nirsoft.net/utils/blue_screen_view.html +AppDesc=Analyze blue screens / memory dumps created by Windows +NonDirectURLs=0 +AutoFlag=0 +LastDownload=10/27/2017 diff --git a/.bin/d7ii/Config/CustomApps_d7II/CPU-Z.cfg b/.bin/d7ii/Config/CustomApps_d7II/CPU-Z.cfg new file mode 100644 index 00000000..29700743 --- /dev/null +++ b/.bin/d7ii/Config/CustomApps_d7II/CPU-Z.cfg @@ -0,0 +1,39 @@ +[Config] +Author=FoolishIT +LastEditDate=12/8/2015 9:51:43 AM +PostRunApp= +AppWebsite=http://www.cpuid.com/softwares/cpu-z.html +AppDLPage=http://www.cpuid.com/softwares/cpu-z.html +App=cpu-z\cpuz_x32.exe +App64=cpu-z\cpuz_x64.exe +UseFTPServer=0 +AppURL=http://download.cpuid.com/cpu-z/cpu-z_1.74-en.zip +AppDLName=cpu-z.zip +AlwaysAttemptDownload=1 +DLafterXdays=5 +AppWait=1 +EmailBeforeExecution=0 +PriorAlert=0 +ServiceWait=0 +AppMsgBox=0 +AppRandomize=0 +SaveConfigAfter=1 +MoveSnatchReports=0 +SnatchReportsToMalwareLogs=0 +RunInCMD=0 +SendEnter=0 +RunWithSystemAccess=0 +IsDLInstaller=0 +32=1 +64=1 +XP=1 +Vista=1 +7=1 +8=1 +Servers=1 +NonDirectURLs=0 +AutoFlag=0 +AppDesc=Display hardware information (CPU, RAM, MB) +LogVerbiage=Reviewed hardware information of the system. +LastDownload=12/8/2015 +CopyConfigFirst=cpuz.ini diff --git a/.bin/d7ii/Config/CustomApps_d7II/ComboFix (Uninstall).cfg b/.bin/d7ii/Config/CustomApps_d7II/ComboFix (Uninstall).cfg new file mode 100644 index 00000000..0593ef70 --- /dev/null +++ b/.bin/d7ii/Config/CustomApps_d7II/ComboFix (Uninstall).cfg @@ -0,0 +1,33 @@ +[Config] +App=combofix.exe +AppParms=/uninstall +AppURL=http://download.bleepingcomputer.com/sUBs/ComboFix.exe +AppDLName=combofix.exe +AppWait=1 +AppMsgBox=0 +AppRandomize=0 +MoveSnatchReports=0 +SnatchReportsToMalwareLogs=1 +RunInCMD=0 +32=1 +64=1 +XP=1 +Vista=1 +7=1 +8=0 +AlwaysAttemptDownload=0 +SaveConfigAfter=0 +DisableCloudShare=0 +UseFTPServer=0 +PriorAlert=1 +ServiceWait=1 +RunWithSystemAccess=0 +IsDLInstaller=0 +Servers=1 +AppWebsite=http://www.bleepingcomputer.com/download/combofix/ +Author=FoolishTech +LastEditDate=2/7/2014 9:51:39 AM +AppDLPage=http://www.bleepingcomputer.com/download/combofix/ +AppDesc=Uninstalls Combofix, cleaning up any leftover files/settings. +NonDirectURLs=0 +AutoFlag=0 \ No newline at end of file diff --git a/.bin/d7ii/Config/CustomApps_d7II/ComboFix.cfg b/.bin/d7ii/Config/CustomApps_d7II/ComboFix.cfg new file mode 100644 index 00000000..c0986c15 --- /dev/null +++ b/.bin/d7ii/Config/CustomApps_d7II/ComboFix.cfg @@ -0,0 +1,34 @@ +[Config] +App=combofix.exe +AppURL=http://download.bleepingcomputer.com/sUBs/ComboFix.exe +AppDLName=combofix.exe +AppWait=1 +AppMsgBox=0 +AppRandomize=0 +MoveSnatchReports=0 +SnatchReportsToMalwareLogs=1 +RunInCMD=0 +AlwaysAttemptDownload=1 +SaveConfigAfter=0 +32=1 +64=1 +XP=1 +Vista=1 +7=1 +8=0 +DisableCloudShare=0 +UseFTPServer=0 +DLafterXdays=.5 +PriorAlert=1 +ServiceWait=1 +RunWithSystemAccess=0 +IsDLInstaller=0 +Servers=1 +AppWebsite=http://www.bleepingcomputer.com/download/combofix/ +LogVerbiage=Ran malware scans (Combofix) +Author=FoolishTech +LastEditDate=2/7/2014 9:52:03 AM +AppDLPage=http://www.bleepingcomputer.com/download/combofix/ +AppDesc=Malware removal tool. +NonDirectURLs=0 +AutoFlag=0 \ No newline at end of file diff --git a/.bin/d7ii/Config/CustomApps_d7II/CrowdInspect.cfg b/.bin/d7ii/Config/CustomApps_d7II/CrowdInspect.cfg new file mode 100644 index 00000000..f98fb150 --- /dev/null +++ b/.bin/d7ii/Config/CustomApps_d7II/CrowdInspect.cfg @@ -0,0 +1,33 @@ +[Config] +Author=FoolishTech +LastEditDate=3/15/2014 3:49:54 PM +AppWebsite=www.crowdstrike.com +AppDLPage=www.crowdstrike.com/crowdinspect/ +AppDesc=Analyze running processes against VirusTotal, Web of Trust, and the Malware Hash Project. +App=CrowdInspect\CrowdInspect.exe +UseFTPServer=0 +AppURL=http://download.crowdstrike.com/crowdinspect/CrowdInspect.zip +AppDLName=CrowdInspect.zip +AlwaysAttemptDownload=0 +DLafterXdays=5 +AppWait=1 +PriorAlert=1 +ServiceWait=0 +AppMsgBox=0 +AppRandomize=0 +SaveConfigAfter=0 +MoveSnatchReports=1 +SnatchReportsToMalwareLogs=1 +RunInCMD=0 +RunWithSystemAccess=0 +IsDLInstaller=0 +32=1 +64=1 +XP=1 +Vista=1 +7=1 +8=1 +Servers=1 +NonDirectURLs=0 +AutoFlag=0 +LastDownload=10/27/2017 diff --git a/.bin/d7ii/Config/CustomApps_d7II/CrystalDiskInfo.cfg b/.bin/d7ii/Config/CustomApps_d7II/CrystalDiskInfo.cfg new file mode 100644 index 00000000..08d02f4b --- /dev/null +++ b/.bin/d7ii/Config/CustomApps_d7II/CrystalDiskInfo.cfg @@ -0,0 +1,37 @@ +[Config] +Author=FoolishTech +LastEditDate=4/1/2016 12:41:03 PM +PostRunApp= +AppWebsite=http://crystalmark.info/software/CrystalDiskInfo/index-e.html +AppDLPage=http://crystalmark.info/software/CrystalDiskInfo/index-e.html +AppDesc=Hard drive diagnostics / information. +App=CrystalDiskInfo\DiskInfo.exe +App64=CrystalDiskInfo\DiskInfoX64.exe +UseFTPServer=0 +AppURL=https://osdn.jp/frs/redir.php?m=tcpdiag&f=%2Fcrystaldiskinfo%2F65634%2FCrystalDiskInfo6_8_2.zip +AppDLName=CrystalDiskInfo.zip +AlwaysAttemptDownload=0 +AppWait=1 +EmailBeforeExecution=0 +PriorAlert=0 +ServiceWait=0 +AppMsgBox=0 +AppRandomize=0 +SaveConfigAfter=0 +MoveSnatchReports=0 +SnatchReportsToMalwareLogs=1 +RunInCMD=0 +SendEnter=0 +RunWithSystemAccess=0 +IsDLInstaller=0 +LogVerbiage=Examined Hard Drive health (CrystalDiskInfo) +32=1 +64=1 +XP=1 +Vista=1 +7=1 +8=1 +Servers=1 +NonDirectURLs=0 +AutoFlag=0 +LastDownload=10/27/2017 diff --git a/.bin/d7ii/Config/CustomApps_d7II/CurrPorts.cfg b/.bin/d7ii/Config/CustomApps_d7II/CurrPorts.cfg new file mode 100644 index 00000000..17acbaa3 --- /dev/null +++ b/.bin/d7ii/Config/CustomApps_d7II/CurrPorts.cfg @@ -0,0 +1,39 @@ +[Config] +Author=dSupportOnline +LastEditDate=11/6/2014 10:33:04 PM +PostRunApp= +AppWebsite=http://www.nirsoft.net/utils/cports.html +AppDLPage=http://www.nirsoft.net/utils/cports.html +AppDesc=Displays current ports in use on system and by which process +App=cports\cports.exe +AppURLSpoof=http://www.nirsoft.net/utils/cports.html +UseFTPServer=0 +AppURL=http://www.nirsoft.net/utils/cports.zip +AppDLName=cports.zip +AlwaysAttemptDownload=1 +DLafterXdays=5 +AppWait=1 +EmailBeforeExecution=0 +PriorAlert=0 +ServiceWait=0 +AppMsgBox=0 +AppRandomize=0 +CopyConfigFirst=cports.cfg +SaveConfigAfter=1 +MoveSnatchReports=0 +SnatchReportsToMalwareLogs=1 +RunInCMD=0 +SendEnter=0 +RunWithSystemAccess=0 +IsDLInstaller=0 +LogVerbiage=Reviewed current ports in use by various applications on the system +32=1 +64=1 +XP=1 +Vista=1 +7=1 +8=1 +Servers=1 +NonDirectURLs=0 +AutoFlag=0 +LastDownload=10/27/2017 diff --git a/.bin/d7ii/Config/CustomApps_d7II/ESET Smart Installer.cfg b/.bin/d7ii/Config/CustomApps_d7II/ESET Smart Installer.cfg new file mode 100644 index 00000000..9eea5090 --- /dev/null +++ b/.bin/d7ii/Config/CustomApps_d7II/ESET Smart Installer.cfg @@ -0,0 +1,36 @@ +[Config] +DisableCloudShare=0 +App=esetsmartinstaller_enu.exe +AppURL=http://download.eset.com/special/eos/esetsmartinstaller_enu.exe +AppDLName=esetsmartinstaller_enu.exe +AlwaysAttemptDownload=1 +AppWait=1 +AppMsgBox=0 +AppRandomize=0 +SaveConfigAfter=0 +MoveSnatchReports=0 +SnatchReportsToMalwareLogs=1 +RunInCMD=0 +RunWithSystemAccess=0 +32=1 +64=1 +XP=1 +Vista=1 +7=1 +8=1 +UseFTPServer=0 +DLafterXdays=7 +PriorAlert=1 +ServiceWait=0 +IsDLInstaller=0 +Servers=1 +AppWebsite=http://www.eset.com/int/online-scanner-popup/ +LogVerbiage=Ran Virus/Malware scans (ESET) +LastDownload=9/28/2013 +WaitOnProcesses=onlinescannerapp.exe +NonDirectURLs=0 +Author=FoolishTech +LastEditDate=2/7/2014 9:53:54 AM +AppDLPage=http://www.eset.com/int/online-scanner-popup/ +AppDesc=Online Virus Scanner +AutoFlag=0 \ No newline at end of file diff --git a/.bin/d7ii/Config/CustomApps_d7II/Emsisoft a2cmd Deep Scan (Offline).cfg b/.bin/d7ii/Config/CustomApps_d7II/Emsisoft a2cmd Deep Scan (Offline).cfg new file mode 100644 index 00000000..45d584b2 --- /dev/null +++ b/.bin/d7ii/Config/CustomApps_d7II/Emsisoft a2cmd Deep Scan (Offline).cfg @@ -0,0 +1,42 @@ +[Config] +Author=FoolishTech +LastEditDate=2/3/2017 5:45:31 PM +PostRunApp= +AppWebsite=http://www.emsisoft.com/en/software/cmd/ +AppDLPage=http://www.emsisoft.com/en/software/cmd/ +AppDesc=Virus Scanner (configured for scanning from the Offline Operations tab) +AppParms=/f=%tdrive% /deep /rk /pup /a /n /ac /dq /la="%malreportdir%\a2cmd_deep_log_offline_%date%.txt" +AppURL64=http://dl.emsisoft.com/EmsisoftCommandlineScanner64.exe +AppDLName64=Emsisoft_a2cmd\EmsisoftCommandlineScanner64.exe +UseFTPServer=0 +AppURL=http://dl.emsisoft.com/EmsisoftCommandlineScanner32.exe +AppDLName=Emsisoft_a2cmd\EmsisoftCommandlineScanner32.exe +AlwaysAttemptDownload=1 +DLafterXdays=1 +AppWait=1 +EmailBeforeExecution=0 +PriorAlert=0 +ServiceWait=0 +AppMsgBox=0 +AppRandomize=0 +SaveConfigAfter=0 +MoveSnatchReports=1 +SnatchReportsToMalwareLogs=1 +RunInCMD=0 +SendEnter=0 +RunWithSystemAccess=0 +IsDLInstaller=0 +LogVerbiage=Ran deep virus scans (Emsisoft) +32=1 +64=1 +XP=1 +Vista=1 +7=1 +8=1 +Servers=1 +NonDirectURLs=0 +AutoFlag=1 +App=Emsisoft_a2cmd\a2cmd.cmd +CopyConfigFirst=a2cmd.cmd +WaitOnProcesses=a2cmd.exe +LastDownload=10/27/2017 diff --git a/.bin/d7ii/Config/CustomApps_d7II/Emsisoft a2cmd Deep Scan.cfg b/.bin/d7ii/Config/CustomApps_d7II/Emsisoft a2cmd Deep Scan.cfg new file mode 100644 index 00000000..570ca229 --- /dev/null +++ b/.bin/d7ii/Config/CustomApps_d7II/Emsisoft a2cmd Deep Scan.cfg @@ -0,0 +1,42 @@ +[Config] +Author=FoolishTech +LastEditDate=2/3/2017 5:45:31 PM +PostRunApp= +AppWebsite=http://www.emsisoft.com/en/software/cmd/ +AppDLPage=http://www.emsisoft.com/en/software/cmd/ +AppDesc=Virus Scanner - Scans all files on all hard disks thoroughly. (does not need prior update) +AppParms=/f=%tdrive% /deep /rk /m /t /c /pup /a /n /ac /d /wl="%systemdrive%\EmsisoftCmd\a2cmd_Whitelist.txt" /la="%malreportdir%\a2cmd_deep_log_%date%.txt" +AppURL64=http://dl.emsisoft.com/EmsisoftCommandlineScanner64.exe +AppDLName64=Emsisoft_a2cmd\EmsisoftCommandlineScanner64.exe +UseFTPServer=0 +AppURL=http://dl.emsisoft.com/EmsisoftCommandlineScanner32.exe +AppDLName=Emsisoft_a2cmd\EmsisoftCommandlineScanner32.exe +AlwaysAttemptDownload=1 +DLafterXdays=1 +AppWait=1 +EmailBeforeExecution=0 +PriorAlert=0 +ServiceWait=0 +AppMsgBox=0 +AppRandomize=0 +SaveConfigAfter=0 +MoveSnatchReports=1 +SnatchReportsToMalwareLogs=1 +RunInCMD=0 +SendEnter=0 +RunWithSystemAccess=0 +IsDLInstaller=0 +LogVerbiage=Ran deep virus scans (Emsisoft) +32=1 +64=1 +XP=1 +Vista=1 +7=1 +8=1 +Servers=1 +NonDirectURLs=0 +AutoFlag=1 +App=Emsisoft_a2cmd\a2cmd.cmd +CopyConfigFirst=a2cmd.cmd +WaitOnProcesses=a2cmd.exe +LastDownload=10/7/2018 diff --git a/.bin/d7ii/Config/CustomApps_d7II/Emsisoft a2cmd Quick Scan.cfg b/.bin/d7ii/Config/CustomApps_d7II/Emsisoft a2cmd Quick Scan.cfg new file mode 100644 index 00000000..bce3d597 --- /dev/null +++ b/.bin/d7ii/Config/CustomApps_d7II/Emsisoft a2cmd Quick Scan.cfg @@ -0,0 +1,41 @@ +[Config] +Author=FoolishTech +LastEditDate=2/3/2017 5:45:31 PM +PostRunApp= +AppWebsite=http://www.emsisoft.com/en/software/cmd/ +AppDLPage=http://www.emsisoft.com/en/software/cmd/ +AppDesc=Virus Scanner - Scans all active programs, malware traces (registry, files) and Tracking Cookies. Skips ADS, archive files, and some cookies. (does not need prior update) +AppParms=/f=%tdrive% /quick /rk /m /t /pup /ac /d /wl="%systemdrive%\EmsisoftCmd\a2cmd_Whitelist.txt" /la="%malreportdir%\a2cmd_quick_log_%date%.txt" +AppURL64=http://dl.emsisoft.com/EmsisoftCommandlineScanner64.exe +AppDLName64=Emsisoft_a2cmd\EmsisoftCommandlineScanner64.exe +UseFTPServer=0 +AppURL=http://dl.emsisoft.com/EmsisoftCommandlineScanner32.exe +AppDLName=Emsisoft_a2cmd\EmsisoftCommandlineScanner32.exe +AlwaysAttemptDownload=1 +DLafterXdays=1 +AppWait=1 +EmailBeforeExecution=0 +PriorAlert=0 +ServiceWait=0 +AppMsgBox=0 +AppRandomize=0 +SaveConfigAfter=0 +MoveSnatchReports=1 +SnatchReportsToMalwareLogs=1 +RunInCMD=0 +SendEnter=0 +RunWithSystemAccess=0 +IsDLInstaller=0 +LogVerbiage=Ran virus scans (Emsisoft) +32=1 +64=1 +XP=1 +Vista=1 +7=1 +8=1 +Servers=1 +NonDirectURLs=0 +AutoFlag=1 +App=Emsisoft_a2cmd\a2cmd.cmd +CopyConfigFirst=a2cmd.cmd +WaitOnProcesses=a2cmd.exe diff --git a/.bin/d7ii/Config/CustomApps_d7II/Emsisoft a2cmd Smart Scan.cfg b/.bin/d7ii/Config/CustomApps_d7II/Emsisoft a2cmd Smart Scan.cfg new file mode 100644 index 00000000..22fc69b5 --- /dev/null +++ b/.bin/d7ii/Config/CustomApps_d7II/Emsisoft a2cmd Smart Scan.cfg @@ -0,0 +1,41 @@ +[Config] +Author=FoolishTech +LastEditDate=2/3/2017 5:45:31 PM +PostRunApp= +AppWebsite=http://www.emsisoft.com/en/software/cmd/ +AppDLPage=http://www.emsisoft.com/en/software/cmd/ +AppDesc=Virus Scanner - Scans the Windows and program files folders in addition to everything scanned by the quick scan. Skips ADS, archive files, and some cookies. (does not need prior update) +AppParms=/f=%tdrive% /smart /rk /m /t /pup /ac /d /wl="%systemdrive%\EmsisoftCmd\a2cmd_Whitelist.txt" /la="%malreportdir%\a2cmd_smart_log_%date%.txt" +AppURL64=http://dl.emsisoft.com/EmsisoftCommandlineScanner64.exe +AppDLName64=Emsisoft_a2cmd\EmsisoftCommandlineScanner64.exe +UseFTPServer=0 +AppURL=http://dl.emsisoft.com/EmsisoftCommandlineScanner32.exe +AppDLName=Emsisoft_a2cmd\EmsisoftCommandlineScanner32.exe +AlwaysAttemptDownload=1 +DLafterXdays=1 +AppWait=1 +EmailBeforeExecution=0 +PriorAlert=0 +ServiceWait=0 +AppMsgBox=0 +AppRandomize=0 +SaveConfigAfter=0 +MoveSnatchReports=1 +SnatchReportsToMalwareLogs=1 +RunInCMD=0 +SendEnter=0 +RunWithSystemAccess=0 +IsDLInstaller=0 +LogVerbiage=Ran virus scans (Emsisoft) +32=1 +64=1 +XP=1 +Vista=1 +7=1 +8=1 +Servers=1 +NonDirectURLs=0 +AutoFlag=1 +App=Emsisoft_a2cmd\a2cmd.cmd +CopyConfigFirst=a2cmd.cmd +WaitOnProcesses=a2cmd.exe diff --git a/.bin/d7ii/Config/CustomApps_d7II/Everything Search Engine.cfg b/.bin/d7ii/Config/CustomApps_d7II/Everything Search Engine.cfg new file mode 100644 index 00000000..2bee29c2 --- /dev/null +++ b/.bin/d7ii/Config/CustomApps_d7II/Everything Search Engine.cfg @@ -0,0 +1,39 @@ +[Config] +Author=dSupportOnline +LastEditDate=10/9/2014 1:20:00 PM +PostRunApp= +AppWebsite=http://www.voidtools.com/support/everything/ +AppDLPage=http://www.voidtools.com/downloads/ +App=everything32\Everything.exe +App64=everything64\Everything.exe +AppURL64=http://www.voidtools.com/Everything-1.3.4.686.x64.zip +AppDLName64=everything64.zip +UseFTPServer=0 +AppURL=http://www.voidtools.com/Everything-1.3.4.686.x86.zip +AppDLName=everything32.zip +AlwaysAttemptDownload=0 +AppWait=1 +EmailBeforeExecution=0 +PriorAlert=0 +ServiceWait=0 +AppMsgBox=0 +AppRandomize=0 +CopyConfigFirst=Everything.ini +SaveConfigAfter=1 +MoveSnatchReports=0 +SnatchReportsToMalwareLogs=1 +RunInCMD=0 +SendEnter=0 +RunWithSystemAccess=0 +IsDLInstaller=0 +32=1 +64=1 +XP=1 +Vista=1 +7=1 +8=1 +Servers=1 +NonDirectURLs=0 +AutoFlag=0 +AppDesc=Quickly searches files and folders +LogVerbiage=Searched system for files and folders to further inspect or remove. diff --git a/.bin/d7ii/Config/CustomApps_d7II/ExecutedProgramsList.cfg b/.bin/d7ii/Config/CustomApps_d7II/ExecutedProgramsList.cfg new file mode 100644 index 00000000..ceecc1fc --- /dev/null +++ b/.bin/d7ii/Config/CustomApps_d7II/ExecutedProgramsList.cfg @@ -0,0 +1,37 @@ +[Config] +LastEditDate=3/29/2016 4:09:19 PM +PostRunApp= +UseFTPServer=0 +AppURL=http://www.nirsoft.net/utils/executedprogramslist.zip +AppDLName=ExecutedProgramsList.zip +AlwaysAttemptDownload=1 +DLafterXdays=30 +AppWait=1 +EmailBeforeExecution=0 +PriorAlert=0 +ServiceWait=0 +AppMsgBox=0 +AppRandomize=0 +SaveConfigAfter=0 +MoveSnatchReports=0 +SnatchReportsToMalwareLogs=1 +RunInCMD=0 +SendEnter=0 +RunWithSystemAccess=0 +IsDLInstaller=0 +32=1 +64=1 +XP=1 +Vista=1 +7=1 +8=1 +Servers=1 +NonDirectURLs=0 +Author=Foolish IT +AppWebsite=http://www.nirsoft.net/utils/executed_programs_list.html +AppDLPage=http://www.nirsoft.net/utils/executed_programs_list.html +AutoFlag=0 +App=ExecutedProgramsList\ExecutedProgramsList.exe +AppDesc=List out recently executed programs. +LogVerbiage=Checked recently executed programs. +LastDownload=3/29/2016 diff --git a/.bin/d7ii/Config/CustomApps_d7II/GMER.cfg b/.bin/d7ii/Config/CustomApps_d7II/GMER.cfg new file mode 100644 index 00000000..07e11961 --- /dev/null +++ b/.bin/d7ii/Config/CustomApps_d7II/GMER.cfg @@ -0,0 +1,34 @@ +[Config] +App=gmer\gmer.exe +AppURL=http://www2.gmer.net/gmer.zip +AppDLName=gmer.zip +AppWait=1 +AppMsgBox=0 +AppRandomize=1 +MoveSnatchReports=0 +SnatchReportsToMalwareLogs=1 +RunInCMD=0 +DisableCloudShare=0 +UseFTPServer=0 +AlwaysAttemptDownload=1 +DLafterXdays=7 +PriorAlert=1 +ServiceWait=0 +SaveConfigAfter=0 +RunWithSystemAccess=0 +IsDLInstaller=0 +32=1 +64=1 +XP=1 +Vista=1 +7=1 +8=1 +Servers=1 +AppWebsite=http://www.gmer.net/ +LogVerbiage=Manually scanned for rootkit activity. +Author=FoolishTech +LastEditDate=2/7/2014 9:54:39 AM +AppDLPage=http://www.gmer.net/ +AppDesc=Rootkit / Malware Scanner +NonDirectURLs=0 +AutoFlag=0 \ No newline at end of file diff --git a/.bin/d7ii/Config/CustomApps_d7II/GPU-Z Report.cfg b/.bin/d7ii/Config/CustomApps_d7II/GPU-Z Report.cfg new file mode 100644 index 00000000..c17fdc0e --- /dev/null +++ b/.bin/d7ii/Config/CustomApps_d7II/GPU-Z Report.cfg @@ -0,0 +1,37 @@ +[Config] +Author=Proctor Foolish IT +LastEditDate=3/2/2016 5:09:19 PM +PostRunApp= +AppWebsite=https://www.techpowerup.com/gpuz/ +AppDesc=Reported on Graphis Adapter Information +LogVerbiage=Reviewed hardware information of the system. +UseFTPServer=0 +AppURL=https://www.techpowerup.com/downloads/2627/techpowerup-gpu-z-v0-8-7/start?server=6 +AppDLName=GPU-Z.exe +AlwaysAttemptDownload=0 +DLafterXdays=5 +AppWait=1 +EmailBeforeExecution=0 +PriorAlert=0 +ServiceWait=0 +AppMsgBox=0 +AppRandomize=0 +SaveConfigAfter=0 +MoveSnatchReports=1 +SnatchReportsToMalwareLogs=0 +RunInCMD=0 +SendEnter=0 +RunWithSystemAccess=0 +IsDLInstaller=0 +32=1 +64=1 +XP=1 +Vista=1 +7=1 +8=1 +Servers=1 +NonDirectURLs=0 +AutoFlag=1 +AppParms=-dump gpu-z.xml +SnatchReportsLoc=gpu-z.xml +App=GPU-Z.exe diff --git a/.bin/d7ii/Config/CustomApps_d7II/GPU-Z.cfg b/.bin/d7ii/Config/CustomApps_d7II/GPU-Z.cfg new file mode 100644 index 00000000..fdfe4d6f --- /dev/null +++ b/.bin/d7ii/Config/CustomApps_d7II/GPU-Z.cfg @@ -0,0 +1,35 @@ +[Config] +Author=Proctor Foolish IT +LastEditDate=3/2/2016 4:24:41 PM +PostRunApp=GPU-Z Report +AppWebsite=https://www.techpowerup.com/gpuz/ +App64=GPU-Z.exe +UseFTPServer=0 +AppURL=https://www.techpowerup.com/downloads/2627/techpowerup-gpu-z-v0-8-7/start?server=6 +AppDLName=GPU-Z.exe +AlwaysAttemptDownload=0 +DLafterXdays=5 +AppWait=1 +EmailBeforeExecution=0 +PriorAlert=0 +ServiceWait=0 +AppMsgBox=0 +AppRandomize=0 +SaveConfigAfter=0 +MoveSnatchReports=0 +SnatchReportsToMalwareLogs=1 +RunInCMD=0 +SendEnter=0 +RunWithSystemAccess=0 +IsDLInstaller=0 +32=1 +64=1 +XP=1 +Vista=1 +7=1 +8=1 +Servers=1 +NonDirectURLs=0 +AutoFlag=1 +AppDesc=Review Graphis Adapter Information +LogVerbiage=Reviewed hardware information of the system. \ No newline at end of file diff --git a/.bin/d7ii/Config/CustomApps_d7II/Google Chrome Software Removal Tool.cfg b/.bin/d7ii/Config/CustomApps_d7II/Google Chrome Software Removal Tool.cfg new file mode 100644 index 00000000..6796bd7a --- /dev/null +++ b/.bin/d7ii/Config/CustomApps_d7II/Google Chrome Software Removal Tool.cfg @@ -0,0 +1,36 @@ +[Config] +LastEditDate=10/13/2014 6:35:14 AM +PostRunApp= +AppWebsite=https://support.google.com/chrome/answer/6086368?p=ui_software_removal_tool&rd=1 +AppDLPage=https://www.google.com/chrome/srt/ +App=software_removal_tool.exe +UseFTPServer=0 +AppURL=https://dl.google.com/dl/softwareremovaltool/win/software_removal_tool.exe +AppDLName=software_removal_tool.exe +AlwaysAttemptDownload=1 +DLafterXdays=0 +AppWait=1 +EmailBeforeExecution=0 +PriorAlert=1 +ServiceWait=0 +AppMsgBox=0 +AppRandomize=0 +SaveConfigAfter=0 +MoveSnatchReports=0 +SnatchReportsToMalwareLogs=1 +RunInCMD=0 +SendEnter=0 +RunWithSystemAccess=0 +IsDLInstaller=0 +32=1 +64=1 +XP=1 +Vista=1 +7=1 +8=1 +Servers=1 +NonDirectURLs=0 +AutoFlag=0 +Author=FoolishTech +AppDesc=Remove add-ons, extensions, toolbars, and other software that may interfere with the operation of Google Chrome. +LogVerbiage=Scanned for and removed any toolbars/extensions/add-ons that may interfere with the operation of Google Chrome. diff --git a/.bin/d7ii/Config/CustomApps_d7II/HeavyLoad.cfg b/.bin/d7ii/Config/CustomApps_d7II/HeavyLoad.cfg new file mode 100644 index 00000000..63e6354f --- /dev/null +++ b/.bin/d7ii/Config/CustomApps_d7II/HeavyLoad.cfg @@ -0,0 +1,39 @@ +[Config] +Author=Foolish IT +LastEditDate=3/30/2016 11:11:09 AM +PostRunApp= +AppWebsite=https://www.jam-software.de/heavyload/ +AppDLPage=https://www.jam-software.de/heavyload/ +App=HeavyLoadx86\HeavyLoad.exe +UseFTPServer=0 +AppURL=http://www.jam-software.com/heavyload/HeavyLoad-x86.zip +AppDLName=HeavyLoadx86.zip +AlwaysAttemptDownload=1 +DLafterXdays=5 +AppWait=1 +EmailBeforeExecution=0 +PriorAlert=0 +ServiceWait=0 +AppMsgBox=0 +AppRandomize=0 +SaveConfigAfter=0 +MoveSnatchReports=0 +SnatchReportsToMalwareLogs=1 +RunInCMD=0 +SendEnter=0 +RunWithSystemAccess=0 +IsDLInstaller=0 +32=1 +64=1 +XP=1 +Vista=1 +7=1 +8=1 +Servers=1 +NonDirectURLs=0 +AutoFlag=0 +AppURL64=http://www.jam-software.com/heavyload/HeavyLoad-x64.zip +AppDLName64=HeavyLoadx64.zip +App64=HeavyLoadx64\HeavyLoad.exe +AppDesc=Stress Testing Application +LogVerbiage=Stress Tested System diff --git a/.bin/d7ii/Config/CustomApps_d7II/HitmanPro (Manual).cfg b/.bin/d7ii/Config/CustomApps_d7II/HitmanPro (Manual).cfg new file mode 100644 index 00000000..dd2c393e --- /dev/null +++ b/.bin/d7ii/Config/CustomApps_d7II/HitmanPro (Manual).cfg @@ -0,0 +1,44 @@ +[Config] +Author=FoolishTech +LastEditDate=10/10/2014 4:14:36 AM +PostRunApp= +AppWebsite=http://www.surfright.nl/en/hitmanpro/ +AppDLPage=http://www.surfright.nl/en/downloads/ +AppDesc=Malware scanner (Manual removal) +App=HitmanPro.exe +App64=HitmanPro_x64.exe +AppParms=/noinstall /excludelist="%3rdpath%\HMP_Excludes.txt" /log="%malreportdir%\HitmanPro_Scan_Log_%date%.txt" +AppURL64=http://dl.surfright.nl/HitmanPro_x64.exe +AppURL64B=http://dl.surfright.nl/FoolishIT/HitmanPro_x64.exe +AppDLName64=HitmanPro_x64.exe +UseFTPServer=0 +AppURL=http://dl.surfright.nl/HitmanPro.exe +AppURLB=http://dl.surfright.nl/FoolishIT/HitmanPro.exe +AppDLName=HitmanPro.exe +AlwaysAttemptDownload=1 +DLafterXdays=4 +AppWait=1 +EmailBeforeExecution=0 +PriorAlert=0 +ServiceWait=0 +AppMsgBox=1 +AppWaitTime=60 +AppRandomize=1 +CopyConfigFirst=HMP.cmd +SaveConfigAfter=0 +MoveSnatchReports=0 +SnatchReportsToMalwareLogs=1 +RunInCMD=0 +SendEnter=0 +RunWithSystemAccess=0 +IsDLInstaller=0 +LogVerbiage=Ran Malware Scans and manually investigated results (HitmanPro) +32=1 +64=1 +XP=1 +Vista=1 +7=1 +8=1 +Servers=1 +NonDirectURLs=0 +AutoFlag=0 diff --git a/.bin/d7ii/Config/CustomApps_d7II/HitmanPro.cfg b/.bin/d7ii/Config/CustomApps_d7II/HitmanPro.cfg new file mode 100644 index 00000000..9a9655ed --- /dev/null +++ b/.bin/d7ii/Config/CustomApps_d7II/HitmanPro.cfg @@ -0,0 +1,45 @@ +[Config] +Author=FoolishTech +LastEditDate=7/13/2015 10:52:20 AM +PostRunApp= +AppWebsite=http://www.surfright.nl/en/hitmanpro/ +AppDLPage=http://www.surfright.nl/en/downloads/ +AppDesc=Malware scanner +App=HitmanPro.exe +App64=HitmanPro_x64.exe +AppParms=/clean /noinstall /excludelist="%3rdpath%\HMP_Excludes.txt" /log="%malreportdir%\HitmanPro_Scan_Log_%date%.txt" +AppURL64=http://dl.surfright.nl/HitmanPro_x64.exe +AppURL64B=http://dl.surfright.nl/FoolishIT/HitmanPro_x64.exe +AppDLName64=HitmanPro_x64.exe +UseFTPServer=0 +AppURL=http://dl.surfright.nl/HitmanPro.exe +AppURLB=http://dl.surfright.nl/FoolishIT/HitmanPro.exe +AppDLName=HitmanPro.exe +AlwaysAttemptDownload=1 +DLafterXdays=3 +AppWait=1 +EmailBeforeExecution=0 +PriorAlert=0 +ServiceWait=0 +AppMsgBox=1 +AppWaitTime=60 +AppRandomize=1 +CopyConfigFirst=HMP.cmd +SaveConfigAfter=0 +MoveSnatchReports=0 +SnatchReportsToMalwareLogs=1 +RunInCMD=0 +SendEnter=0 +RunWithSystemAccess=0 +IsDLInstaller=0 +LogVerbiage=Ran Malware Scans (HitmanPro) +32=1 +64=1 +XP=1 +Vista=1 +7=1 +8=1 +Servers=1 +NonDirectURLs=0 +AutoFlag=1 +LastDownload=10/7/2018 diff --git a/.bin/d7ii/Config/CustomApps_d7II/JRT.cfg b/.bin/d7ii/Config/CustomApps_d7II/JRT.cfg new file mode 100644 index 00000000..e2e0776d --- /dev/null +++ b/.bin/d7ii/Config/CustomApps_d7II/JRT.cfg @@ -0,0 +1,42 @@ +[Config] +Author=FoolishTech +LastEditDate=7/13/2015 9:38:52 AM +PostRunApp= +AppWebsite=http://thisisudax.org/ +AppDLPage=http://thisisudax.org/ +AppDesc=Junkware Removal Tool - toolbar remover. +App=JRT.exe +AppParms=-y -om1 -nr +UseFTPServer=0 +AppURL=http://thisisudax.org/downloads/JRT.exe +AppDLName=JRT.exe +AlwaysAttemptDownload=1 +DLafterXdays=1 +AppWait=1 +EmailBeforeExecution=0 +PriorAlert=0 +ServiceWait=0 +AppMsgBox=0 +AppRandomize=0 +CopyConfigFirst=JRT_Auto.cmd +SaveConfigAfter=0 +MoveSnatchReports=1 +SnatchReportsLoc=%userprofile%\Desktop\JRT.txt +SnatchReportsToMalwareLogs=1 +RunInCMD=0 +SendEnter=0 +RunWithSystemAccess=0 +IsDLInstaller=0 +LogVerbiage=Removed unnecessary internet browser add-ins (e.g. Toolbars) [JRT] +32=1 +64=1 +XP=1 +Vista=1 +7=1 +8=1 +Servers=1 +NonDirectURLs=0 +AutoFlag=1 +WaitOnProcesses=wget.dat,jq.dat,nircmd.dat,sed.dat,grep.dat,cut.dat,reg.exe +LastDownload=8/19/2018 +AppWaitTime=30 diff --git a/.bin/d7ii/Config/CustomApps_d7II/Kaspersky TDSSKiller (Silent).cfg b/.bin/d7ii/Config/CustomApps_d7II/Kaspersky TDSSKiller (Silent).cfg new file mode 100644 index 00000000..4b1a5000 --- /dev/null +++ b/.bin/d7ii/Config/CustomApps_d7II/Kaspersky TDSSKiller (Silent).cfg @@ -0,0 +1,35 @@ +[Config] +Author=FoolishTech +LastEditDate=5/27/2014 1:45:37 PM +AppWebsite=http://support.kaspersky.com/5350 +AppDLPage=http://support.kaspersky.com/viruses/disinfection/5350 +AppDesc=TDSS / Rootkit scanner +App=TDSSKiller.exe +AppParms=-accepteula -accepteulaksn -l "%malreportdir%\TDSSKiller_Report_%date%.txt" -tdlfs -dcexact -silent +UseFTPServer=0 +AppURL=http://media.kaspersky.com/utilities/VirusUtilities/EN/tdsskiller.exe +AppDLName=tdsskiller.exe +AlwaysAttemptDownload=1 +DLafterXdays=3 +AppWait=1 +PriorAlert=0 +ServiceWait=0 +AppMsgBox=0 +AppRandomize=1 +SaveConfigAfter=0 +MoveSnatchReports=0 +SnatchReportsToMalwareLogs=1 +RunInCMD=0 +RunWithSystemAccess=0 +IsDLInstaller=0 +LogVerbiage=Scanned for MBR infections / rootkits (TDSSKiller) +32=1 +64=1 +XP=1 +Vista=1 +7=1 +8=1 +Servers=1 +NonDirectURLs=0 +AutoFlag=2 +LastDownload=10/7/2018 diff --git a/.bin/d7ii/Config/CustomApps_d7II/Kaspersky TDSSKiller.cfg b/.bin/d7ii/Config/CustomApps_d7II/Kaspersky TDSSKiller.cfg new file mode 100644 index 00000000..f59338ad --- /dev/null +++ b/.bin/d7ii/Config/CustomApps_d7II/Kaspersky TDSSKiller.cfg @@ -0,0 +1,35 @@ +[Config] +Author=FoolishTech +LastEditDate=5/27/2014 1:45:26 PM +AppWebsite=http://support.kaspersky.com/5350 +AppDLPage=http://support.kaspersky.com/viruses/disinfection/5350 +AppDesc=TDSS / Rootkit scanner +App=TDSSKiller.exe +AppParms=-accepteula -accepteulaksn -l "%malreportdir%\TDSSKiller_Report_%date%.txt" -tdlfs -dcexact +UseFTPServer=0 +AppURL=http://media.kaspersky.com/utilities/VirusUtilities/EN/tdsskiller.exe +AppDLName=tdsskiller.exe +AlwaysAttemptDownload=1 +DLafterXdays=3 +AppWait=1 +PriorAlert=1 +ServiceWait=0 +AppMsgBox=0 +AppRandomize=1 +SaveConfigAfter=0 +MoveSnatchReports=0 +SnatchReportsToMalwareLogs=1 +RunInCMD=0 +RunWithSystemAccess=0 +IsDLInstaller=0 +LogVerbiage=Scanned for MBR infections / rootkits (TDSSKiller) +32=1 +64=1 +XP=1 +Vista=1 +7=1 +8=1 +Servers=1 +NonDirectURLs=0 +AutoFlag=0 +LastDownload=10/27/2017 diff --git a/.bin/d7ii/Config/CustomApps_d7II/KillEmAll v5.cfg b/.bin/d7ii/Config/CustomApps_d7II/KillEmAll v5.cfg new file mode 100644 index 00000000..05b5991b --- /dev/null +++ b/.bin/d7ii/Config/CustomApps_d7II/KillEmAll v5.cfg @@ -0,0 +1,36 @@ +[Config] +Author=Foolish IT +LastEditDate=1/28/2016 3:33:42 PM +PostRunApp= +AppWebsite=https://www.foolishit.com/d7x/killemall/ +AppDLPage=https://www.foolishit.com/d7x/killemall/ +UseFTPServer=0 +AppURL=http://download.foolishit.com/killemall/KillEmAll_Portable.zip +AppDLName=KillEmAll_Portable.zip +AlwaysAttemptDownload=1 +DLafterXdays=5 +AppWait=1 +EmailBeforeExecution=0 +PriorAlert=0 +ServiceWait=0 +AppMsgBox=0 +AppRandomize=0 +SaveConfigAfter=0 +MoveSnatchReports=0 +SnatchReportsToMalwareLogs=1 +RunInCMD=0 +SendEnter=0 +RunWithSystemAccess=0 +IsDLInstaller=0 +32=1 +64=1 +XP=1 +Vista=1 +7=1 +8=1 +Servers=1 +NonDirectURLs=0 +App=KillEmAll_Portable\KillEmAll.exe +AutoFlag=0 +AppDesc=Kills non-essential processes +LastDownload=5/17/2016 diff --git a/.bin/d7ii/Config/CustomApps_d7II/MBRCheck (Offline).cfg b/.bin/d7ii/Config/CustomApps_d7II/MBRCheck (Offline).cfg new file mode 100644 index 00000000..5c521f98 --- /dev/null +++ b/.bin/d7ii/Config/CustomApps_d7II/MBRCheck (Offline).cfg @@ -0,0 +1,36 @@ +[Config] +DisableCloudShare=0 +App=MBRCheck.exe +AppURL=http://ad13.geekstogo.com/MBRCheck.exe +AppDLName=MBRCheck.exe +AlwaysAttemptDownload=1 +AppWait=1 +AppMsgBox=0 +AppRandomize=0 +SaveConfigAfter=0 +MoveSnatchReports=1 +SnatchReportsLoc=%userprofile%\Desktop\MBRCheck*.txt +SnatchReportsToMalwareLogs=1 +RunInCMD=0 +RunWithSystemAccess=0 +32=1 +64=1 +XP=1 +Vista=1 +7=1 +8=1 +Servers=1 +UseFTPServer=0 +DLafterXdays=7 +PriorAlert=1 +ServiceWait=0 +IsDLInstaller=0 +AppWebsite=http://www.majorgeeks.com/files/details/mbrcheck.html +LogVerbiage=Checked MBR for infections. +Author=FoolishTech +LastEditDate=2/7/2014 9:59:38 AM +AppDLPage=http://www.majorgeeks.com/files/details/mbrcheck.html +AppDesc=MBR scanner, this profile is intended to be used from the Offline Operations page. +NonDirectURLs=0 +AutoFlag=0 +LastDownload=10/27/2017 diff --git a/.bin/d7ii/Config/CustomApps_d7II/MBRCheck (Report Only).cfg b/.bin/d7ii/Config/CustomApps_d7II/MBRCheck (Report Only).cfg new file mode 100644 index 00000000..7f897aaf --- /dev/null +++ b/.bin/d7ii/Config/CustomApps_d7II/MBRCheck (Report Only).cfg @@ -0,0 +1,38 @@ +[Config] +Author=FoolishTech +LastEditDate=9/28/2014 4:13:43 PM +PostRunApp=Autoruns_Copy +AppWebsite=http://www.majorgeeks.com/files/details/mbrcheck.html +AppDLPage=http://www.majorgeeks.com/files/details/mbrcheck.html +AppDesc=MBR scanner - use as a second opinion, not reliable especially to repair any damage. +App=MBRCheck.exe +UseFTPServer=0 +AppURL=http://ad13.geekstogo.com/MBRCheck.exe +AppDLName=MBRCheck.exe +AlwaysAttemptDownload=1 +DLafterXdays=7 +AppWait=1 +EmailBeforeExecution=0 +PriorAlert=1 +ServiceWait=0 +AppMsgBox=0 +AppRandomize=1 +SaveConfigAfter=0 +MoveSnatchReports=1 +SnatchReportsLoc=%userprofile%\Desktop\MBRCheck*.txt +SnatchReportsToMalwareLogs=1 +RunInCMD=1 +SendEnter=1 +RunWithSystemAccess=0 +IsDLInstaller=0 +LogVerbiage=Checked MBR for infections. +32=1 +64=1 +XP=1 +Vista=1 +7=1 +8=1 +Servers=1 +NonDirectURLs=0 +AutoFlag=2 +LastDownload=9/28/2014 diff --git a/.bin/d7ii/Config/CustomApps_d7II/MBRCheck.cfg b/.bin/d7ii/Config/CustomApps_d7II/MBRCheck.cfg new file mode 100644 index 00000000..4bb5e8a5 --- /dev/null +++ b/.bin/d7ii/Config/CustomApps_d7II/MBRCheck.cfg @@ -0,0 +1,36 @@ +[Config] +DisableCloudShare=0 +App=MBRCheck.exe +AppURL=http://ad13.geekstogo.com/MBRCheck.exe +AppDLName=MBRCheck.exe +AlwaysAttemptDownload=1 +AppWait=1 +AppMsgBox=0 +AppRandomize=1 +SaveConfigAfter=0 +MoveSnatchReports=1 +SnatchReportsLoc=%userprofile%\Desktop\MBRCheck*.txt +SnatchReportsToMalwareLogs=1 +RunInCMD=0 +RunWithSystemAccess=0 +32=1 +64=1 +XP=1 +Vista=1 +7=1 +8=1 +Servers=1 +UseFTPServer=0 +DLafterXdays=7 +PriorAlert=1 +ServiceWait=0 +IsDLInstaller=0 +AppWebsite=http://www.majorgeeks.com/files/details/mbrcheck.html +LogVerbiage=Checked MBR for infections. +Author=FoolishTech +LastEditDate=2/7/2014 10:00:33 AM +AppDLPage=http://www.majorgeeks.com/files/details/mbrcheck.html +AppDesc=MBR scanner - use as a second opinion, not reliable especially to repair any damage. +NonDirectURLs=0 +AutoFlag=0 +LastDownload=10/27/2017 diff --git a/.bin/d7ii/Config/CustomApps_d7II/MS Office Config Analyzer Tool (Install).cfg b/.bin/d7ii/Config/CustomApps_d7II/MS Office Config Analyzer Tool (Install).cfg new file mode 100644 index 00000000..2bc228a2 --- /dev/null +++ b/.bin/d7ii/Config/CustomApps_d7II/MS Office Config Analyzer Tool (Install).cfg @@ -0,0 +1,35 @@ +[Config] +Author=FoolishTech +LastEditDate=2/8/2014 1:17:11 AM +AppWebsite=http://support.microsoft.com/kb/2812744 +AppDLPage=http://www.microsoft.com/en-us/download/details.aspx?id=36852 +AppDesc=Fixes a wide variety of issues with Microsoft Office - Installer version +App=%programfiles(x86)%\Microsoft OffCAT\OffCAT.exe +UseFTPServer=0 +InstallerParms=/passive +InstallerName=OffCAT.msi +AppURL=http://go.microsoft.com/fwlink/?LinkID=286211 +AppDLName=OffCAT.msi +AlwaysAttemptDownload=0 +DLafterXdays=5 +AppWait=1 +PriorAlert=1 +ServiceWait=0 +AppMsgBox=0 +AppRandomize=0 +SaveConfigAfter=0 +MoveSnatchReports=0 +SnatchReportsToMalwareLogs=1 +RunInCMD=0 +RunWithSystemAccess=0 +IsDLInstaller=1 +32=1 +64=1 +XP=1 +Vista=1 +7=1 +8=1 +Servers=1 +NonDirectURLs=0 +AutoFlag=0 +LastDownload=10/27/2017 diff --git a/.bin/d7ii/Config/CustomApps_d7II/MS Office Config Analyzer Tool (Portable).cfg b/.bin/d7ii/Config/CustomApps_d7II/MS Office Config Analyzer Tool (Portable).cfg new file mode 100644 index 00000000..85b483e6 --- /dev/null +++ b/.bin/d7ii/Config/CustomApps_d7II/MS Office Config Analyzer Tool (Portable).cfg @@ -0,0 +1,32 @@ +[Config] +Author=FoolishTech +LastEditDate=2/8/2014 1:17:02 AM +AppWebsite=http://support.microsoft.com/kb/2812744 +AppDLPage=http://www.microsoft.com/en-us/download/details.aspx?id=36852 +AppDesc=Fixes a wide variety of issues with Microsoft Office - Portable Version +App=OffCAT\OffCAT.exe +UseFTPServer=0 +AppURL=http://go.microsoft.com/fwlink/?LinkID=286208 +AppDLName=OffCAT.zip +AlwaysAttemptDownload=0 +DLafterXdays=5 +AppWait=1 +PriorAlert=1 +ServiceWait=0 +AppMsgBox=0 +AppRandomize=0 +SaveConfigAfter=0 +MoveSnatchReports=0 +SnatchReportsToMalwareLogs=1 +RunInCMD=0 +RunWithSystemAccess=0 +IsDLInstaller=0 +32=1 +64=1 +XP=1 +Vista=1 +7=1 +8=1 +Servers=1 +NonDirectURLs=0 +AutoFlag=0 \ No newline at end of file diff --git a/.bin/d7ii/Config/CustomApps_d7II/MalwareBytes Anti-Rootkit.cfg b/.bin/d7ii/Config/CustomApps_d7II/MalwareBytes Anti-Rootkit.cfg new file mode 100644 index 00000000..342f6fcd --- /dev/null +++ b/.bin/d7ii/Config/CustomApps_d7II/MalwareBytes Anti-Rootkit.cfg @@ -0,0 +1,37 @@ +[Config] +DisableCloudShare=0 +App=mbar\mbar\mbar.exe +AppURL=http://downloads.malwarebytes.org/file/mbar +AppDLName=mbar.7z +AlwaysAttemptDownload=1 +AppWait=1 +AppMsgBox=0 +AppRandomize=1 +SaveConfigAfter=0 +MoveSnatchReports=1 +SnatchReportsToMalwareLogs=1 +RunInCMD=1 +RunWithSystemAccess=0 +32=1 +64=1 +XP=1 +Vista=1 +7=1 +8=1 +ServiceWait=0 +SnatchReportsLoc=%3rdpath%\system-log.txt +IsDLInstaller=0 +Servers=1 +UseFTPServer=0 +DLafterXdays=7 +PriorAlert=1 +LogVerbiage=Scanned for MBR infections / rootkits (MBAR) +AppWebsite=http://www.malwarebytes.org/products/mbar/ +LastDownload=11/3/2013 +NonDirectURLs=0 +WaitOnProcesses=mbar.exe +Author=FoolishTech +LastEditDate=2/7/2014 9:59:08 AM +AppDLPage=http://www.malwarebytes.org/products/mbar/ +AppDesc=Rootkit scanner +AutoFlag=0 \ No newline at end of file diff --git a/.bin/d7ii/Config/CustomApps_d7II/Malwarebytes v2.cfg b/.bin/d7ii/Config/CustomApps_d7II/Malwarebytes v2.cfg new file mode 100644 index 00000000..624c9305 --- /dev/null +++ b/.bin/d7ii/Config/CustomApps_d7II/Malwarebytes v2.cfg @@ -0,0 +1,39 @@ +[Config] +Author=FoolishTech +LastEditDate=1/26/2015 3:38:04 PM +PostRunApp= +AppWebsite=http://www.malwarebytes.org/products/malwarebytes_free/ +AppDLPage=http://www.malwarebytes.org/products/malwarebytes_free/ +AppDesc=Malware scanner +App=%programfiles(x86)%\Malwarebytes Anti-Malware\mbam.exe +UseFTPServer=0 +InstallerParms=/silent /suppressmsgboxes /norestart /nocancel /lang=1033 +InstallerName=mbam2-setup.exe +AppURL=http://downloads.malwarebytes.org/file/mbam/ +AppDLName=mbam2-setup.exe +AlwaysAttemptDownload=1 +DLafterXdays=0 +AppWait=1 +EmailBeforeExecution=0 +PriorAlert=1 +ServiceWait=0 +AppMsgBox=0 +AppRandomize=1 +SaveConfigAfter=0 +MoveSnatchReports=0 +SnatchReportsLoc=%programdata%\Malwarebytes\Malwarebytes Anti-Malware\Logs\*.xml +SnatchReportsToMalwareLogs=1 +RunInCMD=0 +SendEnter=0 +RunWithSystemAccess=0 +IsDLInstaller=1 +LogVerbiage=Scanned for Malware (MBAM) +32=1 +64=1 +XP=1 +Vista=1 +7=1 +8=1 +Servers=1 +NonDirectURLs=0 +AutoFlag=0 diff --git a/.bin/d7ii/Config/CustomApps_d7II/McAfee Stinger (Offline).cfg b/.bin/d7ii/Config/CustomApps_d7II/McAfee Stinger (Offline).cfg new file mode 100644 index 00000000..6958a699 --- /dev/null +++ b/.bin/d7ii/Config/CustomApps_d7II/McAfee Stinger (Offline).cfg @@ -0,0 +1,38 @@ +[Config] +DisableCloudShare=0 +App=stinger32.exe +App64=stinger64.exe +AppParms=--go --repair --noprocess --noregistry --scanpath=%tdrive% --reportpath="%malreportdir%" +AppURL64=http://downloadcenter.mcafee.com/products/mcafee-avert/Stinger/stinger64.exe +AppDLName64=stinger64.exe +AppURL=http://downloadcenter.mcafee.com/products/mcafee-avert/Stinger/stinger32.exe +AppDLName=stinger32.exe +AlwaysAttemptDownload=1 +AppWait=1 +AppMsgBox=0 +AppRandomize=0 +SaveConfigAfter=0 +MoveSnatchReports=1 +SnatchReportsToMalwareLogs=1 +RunInCMD=0 +RunWithSystemAccess=0 +32=1 +64=1 +XP=1 +Vista=1 +7=1 +8=1 +Servers=1 +ServiceWait=1 +AppWebsite=http://www.mcafee.com/us/downloads/free-tools/stinger.aspx +UseFTPServer=0 +PriorAlert=1 +IsDLInstaller=0 +LogVerbiage=Ran virus scans (McAfee Stinger) +Author=FoolishTech +LastEditDate=2/7/2014 10:01:11 AM +AppDLPage=http://www.mcafee.com/us/downloads/free-tools/stinger.aspx +AppDesc=Virus scanner - meant to be used from the Offline Operations tab. +NonDirectURLs=0 +AutoFlag=0 +LastDownload=10/27/2017 diff --git a/.bin/d7ii/Config/CustomApps_d7II/McAfee Stinger (Silent).cfg b/.bin/d7ii/Config/CustomApps_d7II/McAfee Stinger (Silent).cfg new file mode 100644 index 00000000..3c6918ee --- /dev/null +++ b/.bin/d7ii/Config/CustomApps_d7II/McAfee Stinger (Silent).cfg @@ -0,0 +1,37 @@ +[Config] +Author=FoolishTech +LastEditDate=5/27/2014 1:47:06 PM +AppWebsite=http://www.mcafee.com/us/downloads/free-tools/stinger.aspx +AppDLPage=http://www.mcafee.com/us/downloads/free-tools/stinger.aspx +AppDesc=Virus scanner +App=stinger32.exe +App64=stinger64.exe +AppParms=--silent --go --repair --adl --reportpath="%malreportdir%" +AppURL64=http://downloadcenter.mcafee.com/products/mcafee-avert/Stinger/stinger64.exe +AppDLName64=stinger64.exe +UseFTPServer=0 +AppURL=http://downloadcenter.mcafee.com/products/mcafee-avert/Stinger/stinger32.exe +AppDLName=stinger32.exe +AlwaysAttemptDownload=1 +DLafterXdays=3 +AppWait=1 +PriorAlert=0 +ServiceWait=1 +AppMsgBox=0 +AppRandomize=0 +SaveConfigAfter=0 +MoveSnatchReports=1 +SnatchReportsToMalwareLogs=1 +RunInCMD=0 +RunWithSystemAccess=0 +IsDLInstaller=0 +LogVerbiage=Ran virus scans (McAfee Stinger) +32=1 +64=1 +XP=1 +Vista=1 +7=1 +8=1 +Servers=1 +NonDirectURLs=0 +AutoFlag=2 \ No newline at end of file diff --git a/.bin/d7ii/Config/CustomApps_d7II/McAfee Stinger (Silent-Offline).cfg b/.bin/d7ii/Config/CustomApps_d7II/McAfee Stinger (Silent-Offline).cfg new file mode 100644 index 00000000..c41cb0b3 --- /dev/null +++ b/.bin/d7ii/Config/CustomApps_d7II/McAfee Stinger (Silent-Offline).cfg @@ -0,0 +1,38 @@ +[Config] +DisableCloudShare=0 +AppWebsite=http://www.mcafee.com/us/downloads/free-tools/stinger.aspx +App=stinger32.exe +App64=stinger64.exe +AppParms=--silent --go --repair --noprocess --noregistry --scanpath=%tdrive% --reportpath="%malreportdir%" +AppURL64=http://downloadcenter.mcafee.com/products/mcafee-avert/Stinger/stinger64.exe +AppDLName64=stinger64.exe +UseFTPServer=0 +AppURL=http://downloadcenter.mcafee.com/products/mcafee-avert/Stinger/stinger32.exe +AppDLName=stinger32.exe +AlwaysAttemptDownload=1 +AppWait=1 +PriorAlert=0 +ServiceWait=1 +AppMsgBox=0 +AppRandomize=0 +SaveConfigAfter=0 +MoveSnatchReports=1 +SnatchReportsToMalwareLogs=1 +RunInCMD=0 +RunWithSystemAccess=0 +IsDLInstaller=0 +LogVerbiage=Ran virus scans (McAfee Stinger) +32=1 +64=1 +XP=1 +Vista=1 +7=1 +8=1 +Servers=1 +Author=FoolishTech +LastEditDate=2/7/2014 10:01:42 AM +AppDLPage=http://www.mcafee.com/us/downloads/free-tools/stinger.aspx +AppDesc=Virus scanner - meant to be used from the Offline Operations tab. +NonDirectURLs=0 +AutoFlag=2 +LastDownload=10/27/2017 diff --git a/.bin/d7ii/Config/CustomApps_d7II/McAfee Stinger.cfg b/.bin/d7ii/Config/CustomApps_d7II/McAfee Stinger.cfg new file mode 100644 index 00000000..9d2cb718 --- /dev/null +++ b/.bin/d7ii/Config/CustomApps_d7II/McAfee Stinger.cfg @@ -0,0 +1,38 @@ +[Config] +Author=FoolishTech +LastEditDate=5/27/2014 1:46:41 PM +AppWebsite=http://www.mcafee.com/us/downloads/free-tools/stinger.aspx +AppDLPage=http://www.mcafee.com/us/downloads/free-tools/stinger.aspx +AppDesc=Virus scanner +App=stinger32.exe +App64=stinger64.exe +AppParms=--go --repair --adl --reportpath="%malreportdir%" +AppURL64=http://downloadcenter.mcafee.com/products/mcafee-avert/Stinger/stinger64.exe +AppDLName64=stinger64.exe +UseFTPServer=0 +AppURL=http://downloadcenter.mcafee.com/products/mcafee-avert/Stinger/stinger32.exe +AppDLName=stinger32.exe +AlwaysAttemptDownload=1 +DLafterXdays=3 +AppWait=1 +PriorAlert=1 +ServiceWait=0 +AppMsgBox=0 +AppRandomize=0 +SaveConfigAfter=0 +MoveSnatchReports=1 +SnatchReportsToMalwareLogs=1 +RunInCMD=0 +RunWithSystemAccess=0 +IsDLInstaller=0 +LogVerbiage=Ran virus scans (McAfee Stinger) +32=1 +64=1 +XP=1 +Vista=1 +7=1 +8=1 +Servers=1 +NonDirectURLs=0 +AutoFlag=0 +LastDownload=10/27/2017 diff --git a/.bin/d7ii/Config/CustomApps_d7II/Microsoft .NET Framework Repair Tool.cfg b/.bin/d7ii/Config/CustomApps_d7II/Microsoft .NET Framework Repair Tool.cfg new file mode 100644 index 00000000..e7f181da --- /dev/null +++ b/.bin/d7ii/Config/CustomApps_d7II/Microsoft .NET Framework Repair Tool.cfg @@ -0,0 +1,35 @@ +[Config] +Author=Microsoft +LastEditDate=6/20/2016 2:00:27 PM +PostRunApp= +AppWebsite=https://support.microsoft.com/en-us/kb/2698555 +AppDLPage=http://go.microsoft.com/fwlink/?LinkID=246062 +App=NetFxRepairTool.exe +UseFTPServer=0 +AppURL=https://download.microsoft.com/download/2/B/D/2BDE5459-2225-48B8-830C-AE19CAF038F1/NetFxRepairTool.exe +AlwaysAttemptDownload=0 +DLafterXdays=30 +AppWait=1 +EmailBeforeExecution=0 +PriorAlert=0 +ServiceWait=0 +AppMsgBox=0 +AppRandomize=0 +SaveConfigAfter=0 +MoveSnatchReports=0 +SnatchReportsToMalwareLogs=1 +RunInCMD=0 +SendEnter=0 +RunWithSystemAccess=0 +IsDLInstaller=0 +32=1 +64=1 +XP=1 +Vista=1 +7=1 +8=1 +Servers=1 +NonDirectURLs=1 +LastDownload=6/20/2016 +AppDLName=NetFxRepairTool.exe +AutoFlag=0 diff --git a/.bin/d7ii/Config/CustomApps_d7II/Microsoft FixIt Portable.cfg b/.bin/d7ii/Config/CustomApps_d7II/Microsoft FixIt Portable.cfg new file mode 100644 index 00000000..cc0f0ba8 --- /dev/null +++ b/.bin/d7ii/Config/CustomApps_d7II/Microsoft FixIt Portable.cfg @@ -0,0 +1,34 @@ +[Config] +LastEditDate=2/8/2014 12:42:30 AM +AppWebsite=www.microsoft.com +AppDLPage=http://go.microsoft.com/?linkid=9775982 +AppDesc=Fix a wide variety of Windows issues all in one portable MS FixIT +App=MicrosoftFixit-portable.exe +UseFTPServer=0 +AppURL=http://download.microsoft.com/download/E/2/3/E237A32D-E0A9-4863-B864-9E820C1C6F9A/MicrosoftFixit-portable.exe +AppDLName=MicrosoftFixit-portable.exe +AlwaysAttemptDownload=0 +DLafterXdays=5 +AppWait=1 +PriorAlert=1 +ServiceWait=0 +AppMsgBox=0 +AppRandomize=0 +SaveConfigAfter=0 +MoveSnatchReports=0 +SnatchReportsToMalwareLogs=1 +RunInCMD=0 +RunWithSystemAccess=0 +IsDLInstaller=0 +LogVerbiage=Fixed misc. broken Windows functions with %app% +32=1 +64=1 +XP=1 +Vista=1 +7=1 +8=1 +Servers=0 +NonDirectURLs=0 +Author=FoolishTech +AutoFlag=0 +LastDownload=10/27/2017 diff --git a/.bin/d7ii/Config/CustomApps_d7II/Microsoft FixIt Win Update (Auto).cfg b/.bin/d7ii/Config/CustomApps_d7II/Microsoft FixIt Win Update (Auto).cfg new file mode 100644 index 00000000..c2013713 --- /dev/null +++ b/.bin/d7ii/Config/CustomApps_d7II/Microsoft FixIt Win Update (Auto).cfg @@ -0,0 +1,34 @@ +[Config] +Author=FoolishTech +LastEditDate=2/8/2014 1:20:09 AM +AppWebsite=http://support.microsoft.com/kb/971058/en-US +AppDLPage=http://go.microsoft.com/?linkid=9665683 +AppDesc=MS FixIt 50202 fixes issues with Windows Update - This will reboot! +App=MicrosoftFixIt50202.msi +AppParms=/passive +UseFTPServer=0 +AppURL=http://go.microsoft.com/?linkid=9665683 +AppDLName=MicrosoftFixIt50202.msi +AlwaysAttemptDownload=0 +DLafterXdays=5 +AppWait=1 +PriorAlert=0 +ServiceWait=0 +AppMsgBox=0 +AppRandomize=0 +SaveConfigAfter=0 +MoveSnatchReports=0 +SnatchReportsToMalwareLogs=1 +RunInCMD=0 +RunWithSystemAccess=0 +IsDLInstaller=0 +32=1 +64=1 +XP=1 +Vista=1 +7=1 +8=1 +Servers=1 +NonDirectURLs=0 +LastDownload=10/27/2017 +AutoFlag=1 diff --git a/.bin/d7ii/Config/CustomApps_d7II/Microsoft FixIt Winsock (Auto).cfg b/.bin/d7ii/Config/CustomApps_d7II/Microsoft FixIt Winsock (Auto).cfg new file mode 100644 index 00000000..604ce04c --- /dev/null +++ b/.bin/d7ii/Config/CustomApps_d7II/Microsoft FixIt Winsock (Auto).cfg @@ -0,0 +1,34 @@ +[Config] +Author=FoolishTech +LastEditDate=2/8/2014 1:03:54 AM +AppWebsite=http://support.microsoft.com/kb/811259 +AppDLPage=http://go.microsoft.com/?linkid=9662461 +AppDesc=Microsoft FixIt 50203 fixes Winsock corruption issues - This will reboot! +App=MicrosoftFixit50203.msi +AppParms=/passive +UseFTPServer=0 +AppURL=http://go.microsoft.com/?linkid=9662461 +AppDLName=MicrosoftFixit50203.msi +AlwaysAttemptDownload=0 +DLafterXdays=5 +AppWait=1 +PriorAlert=0 +ServiceWait=0 +AppMsgBox=0 +AppRandomize=0 +SaveConfigAfter=0 +MoveSnatchReports=0 +SnatchReportsToMalwareLogs=1 +RunInCMD=0 +RunWithSystemAccess=0 +IsDLInstaller=0 +32=1 +64=1 +XP=1 +Vista=1 +7=1 +8=1 +Servers=1 +NonDirectURLs=0 +AutoFlag=1 +LastDownload=10/27/2017 diff --git a/.bin/d7ii/Config/CustomApps_d7II/Microsoft Safety Scanner.cfg b/.bin/d7ii/Config/CustomApps_d7II/Microsoft Safety Scanner.cfg new file mode 100644 index 00000000..0b92f8e3 --- /dev/null +++ b/.bin/d7ii/Config/CustomApps_d7II/Microsoft Safety Scanner.cfg @@ -0,0 +1,38 @@ +[Config] +Author=Microsoft +LastEditDate=7/11/2016 1:23:26 PM +PostRunApp= +AppWebsite=https://www.microsoft.com/security/scanner/en-us/default.aspx +AppDLPage=https://www.microsoft.com/security/scanner/en-us/default.aspx +App=msert.exe +App64=msert.exe +AppURL64=http://definitionupdates.microsoft.com/download/definitionupdates/safetyscanner/amd64/msert.exe +AppDLName64=msert.exe +UseFTPServer=0 +AppURL=http://definitionupdates.microsoft.com/download/definitionupdates/safetyscanner/x86/msert.exe +AppDLName=msert.exe +AlwaysAttemptDownload=1 +DLafterXdays=9 +AppWait=1 +EmailBeforeExecution=0 +PriorAlert=0 +ServiceWait=0 +AppMsgBox=0 +AppRandomize=0 +SaveConfigAfter=0 +MoveSnatchReports=0 +SnatchReportsToMalwareLogs=1 +RunInCMD=0 +SendEnter=0 +RunWithSystemAccess=0 +IsDLInstaller=0 +32=1 +64=1 +XP=1 +Vista=1 +7=1 +8=1 +Servers=1 +NonDirectURLs=0 +AutoFlag=0 +LastDownload=7/11/2016 diff --git a/.bin/d7ii/Config/CustomApps_d7II/Neutron (Sync Time).cfg b/.bin/d7ii/Config/CustomApps_d7II/Neutron (Sync Time).cfg new file mode 100644 index 00000000..41d9c8d2 --- /dev/null +++ b/.bin/d7ii/Config/CustomApps_d7II/Neutron (Sync Time).cfg @@ -0,0 +1,35 @@ +[Config] +DisableCloudShare=0 +AppWebsite=http://keir.net/neutron.html +App=neutron\Neutron.exe +UseFTPServer=0 +AppURL=http://keir.net/download/neutron.zip +AppDLName=neutron.zip +AlwaysAttemptDownload=0 +AppWait=1 +ServiceWait=0 +AppMsgBox=0 +AppRandomize=0 +CopyConfigFirst=neutron.ini +SaveConfigAfter=0 +MoveSnatchReports=0 +SnatchReportsToMalwareLogs=1 +RunInCMD=0 +RunWithSystemAccess=0 +IsDLInstaller=0 +32=1 +64=1 +XP=1 +Vista=1 +7=1 +8=1 +Servers=1 +PriorAlert=0 +LogVerbiage=Synced Windows time with the atomic clock. +Author=FoolishTech +LastEditDate=2/7/2014 10:03:42 AM +AppDLPage=http://keir.net/neutron.html +AppDesc=Sync time with an internet time server +NonDirectURLs=0 +AutoFlag=1 +LastDownload=10/8/2018 diff --git a/.bin/d7ii/Config/CustomApps_d7II/OTL.cfg b/.bin/d7ii/Config/CustomApps_d7II/OTL.cfg new file mode 100644 index 00000000..aad5fad7 --- /dev/null +++ b/.bin/d7ii/Config/CustomApps_d7II/OTL.cfg @@ -0,0 +1,34 @@ +[Config] +App=OTL.exe +AppURL=http://oldtimer.geekstogo.com/OTL.exe +AppDLName=OTL.exe +AppWait=1 +AppMsgBox=0 +AppRandomize=1 +MoveSnatchReports=0 +SnatchReportsToMalwareLogs=1 +RunInCMD=0 +DisableCloudShare=0 +UseFTPServer=0 +AlwaysAttemptDownload=1 +DLafterXdays=7 +PriorAlert=1 +ServiceWait=0 +SaveConfigAfter=0 +RunWithSystemAccess=0 +IsDLInstaller=0 +32=1 +64=1 +XP=1 +Vista=1 +7=1 +8=1 +Servers=1 +AppWebsite=http://www.geekstogo.com/forum/topic/277391-otl-tutorial-how-to-use-oldtimer-listit/ +LogVerbiage=Performed manual inspection for viruses/malware. +Author=FoolishTech +LastEditDate=2/7/2014 10:05:19 AM +AppDLPage=http://www.geekstogo.com/forum/topic/277391-otl-tutorial-how-to-use-oldtimer-listit/ +AppDesc=Malware scanner and startup manager. +NonDirectURLs=0 +AutoFlag=0 \ No newline at end of file diff --git a/.bin/d7ii/Config/CustomApps_d7II/OpenHardwareMonitor.cfg b/.bin/d7ii/Config/CustomApps_d7II/OpenHardwareMonitor.cfg new file mode 100644 index 00000000..63170062 --- /dev/null +++ b/.bin/d7ii/Config/CustomApps_d7II/OpenHardwareMonitor.cfg @@ -0,0 +1,34 @@ +[Config] +DisableCloudShare=0 +App=openhardwaremonitor\OpenHardwareMonitor\OpenHardwareMonitor.exe +AppURL=http://openhardwaremonitor.org/files/openhardwaremonitor-v0.6.0-beta.zip +AppDLName=openhardwaremonitor.zip +AlwaysAttemptDownload=0 +AppWait=1 +ServiceWait=0 +AppMsgBox=0 +AppRandomize=0 +SaveConfigAfter=0 +MoveSnatchReports=0 +SnatchReportsToMalwareLogs=0 +RunInCMD=0 +RunWithSystemAccess=0 +IsDLInstaller=0 +32=1 +64=1 +XP=1 +Vista=1 +7=1 +8=1 +Servers=1 +AppWebsite=http://openhardwaremonitor.org/ +UseFTPServer=0 +PriorAlert=0 +LogVerbiage=Checked hardware temperatures / fan speeds. +Author=FoolishTech +LastEditDate=2/7/2014 10:04:27 AM +AppDLPage=http://openhardwaremonitor.org/downloads/ +AppDesc=Detailed hardware information +NonDirectURLs=0 +AutoFlag=0 +LastDownload=10/27/2017 diff --git a/.bin/d7ii/Config/CustomApps_d7II/Opened Files View.cfg b/.bin/d7ii/Config/CustomApps_d7II/Opened Files View.cfg new file mode 100644 index 00000000..b7aa3a54 --- /dev/null +++ b/.bin/d7ii/Config/CustomApps_d7II/Opened Files View.cfg @@ -0,0 +1,42 @@ +[Config] +Author=dSupportOnline +LastEditDate=10/29/2014 9:41:55 AM +PostRunApp= +AppWebsite=http://www.nirsoft.net/utils/opened_files_view.html +AppDLPage=http://www.nirsoft.net/utils/opened_files_view.html +AppDesc=Shows currently opened files in use by the system +App=ofview\OpenedFilesView.exe +App64=ofview-x64\OpenedFilesView.exe +AppURL64=http://www.nirsoft.net/utils/ofview-x64.zip +AppDLName64=ofview-x64.zip +AppURLSpoof=http://www.nirsoft.net/utils/opened_files_view.html +UseFTPServer=0 +AppURL=http://www.nirsoft.net/utils/ofview.zip +AppDLName=ofview.zip +AlwaysAttemptDownload=1 +DLafterXdays=5 +AppWait=1 +EmailBeforeExecution=0 +PriorAlert=0 +ServiceWait=0 +AppMsgBox=0 +AppRandomize=0 +SaveConfigAfter=1 +MoveSnatchReports=0 +SnatchReportsToMalwareLogs=1 +RunInCMD=0 +SendEnter=0 +RunWithSystemAccess=0 +IsDLInstaller=0 +LogVerbiage=Detected currently open files and manipulated as necessary. +32=1 +64=1 +XP=1 +Vista=1 +7=1 +8=1 +Servers=1 +NonDirectURLs=0 +AutoFlag=0 +LastDownload=10/27/2017 +CopyConfigFirst=OpenedFilesView.cfg diff --git a/.bin/d7ii/Config/CustomApps_d7II/OpenedFilesView.cfg b/.bin/d7ii/Config/CustomApps_d7II/OpenedFilesView.cfg new file mode 100644 index 00000000..9b86f336 --- /dev/null +++ b/.bin/d7ii/Config/CustomApps_d7II/OpenedFilesView.cfg @@ -0,0 +1,24 @@ +[General] +ToolTipTimeAutoPop=-1 +ToolTipTimeInitial=10 +ToolTipTimeReshow=10 +TrayIcon=0 +ShowGridLines=0 +ShowOpenedFiles=1 +ShowOpenedDirectories=0 +ShowNetworkFiles=0 +SortOnRefresh=0 +HideWindowsFiles=0 +HideSystemProcessFiles=0 +HideSvchostFiles=0 +AddExportHeaderLine=0 +ShowInfoTip=1 +AutoRefresh=0 +SaveFilterIndex=0 +ConvertToLongPath=0 +MarkModifiedFilenames=1 +MarkPositionChange=1 +MarkOddEvenRows=0 +WinPos=2C 00 00 00 00 00 00 00 01 00 00 00 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 00 00 00 00 00 00 00 00 80 02 00 00 E0 01 00 00 +Columns=82 00 00 00 2C 01 01 00 3C 00 02 00 78 00 03 00 78 00 04 00 46 00 05 00 64 00 06 00 3C 00 07 00 3C 00 08 00 3C 00 09 00 3C 00 0A 00 3C 00 0B 00 3C 00 0C 00 50 00 0D 00 50 00 0E 00 50 00 0F 00 78 00 10 00 FA 00 11 00 50 00 12 00 50 00 13 00 +Sort=0 diff --git a/.bin/d7ii/Config/CustomApps_d7II/PatchMyPC (Auto).cfg b/.bin/d7ii/Config/CustomApps_d7II/PatchMyPC (Auto).cfg new file mode 100644 index 00000000..debc4dc2 --- /dev/null +++ b/.bin/d7ii/Config/CustomApps_d7II/PatchMyPC (Auto).cfg @@ -0,0 +1,37 @@ +[Config] +Author=FoolishTech +LastEditDate=5/27/2014 1:45:01 PM +AppWebsite=www.patchmypc.net +AppDLPage=www.patchmypc.net +AppDesc=Windows and misc application updater +App=PatchMyPC.exe +AppParms=/auto /update +UseFTPServer=0 +AppURL=https://patchmypc.net/freeupdater/PatchMyPC.exe +AppDLName=PatchMyPC.exe +AlwaysAttemptDownload=1 +DLafterXdays=3 +AppWait=1 +PriorAlert=0 +ServiceWait=0 +AppMsgBox=0 +AppRandomize=0 +CopyConfigFirst=PatchMyPC.reg +SaveConfigAfter=0 +MoveSnatchReports=1 +SnatchReportsLoc=%systemdrive%\%computername%.rtf +SnatchReportsToMalwareLogs=0 +RunInCMD=0 +RunWithSystemAccess=0 +IsDLInstaller=0 +LogVerbiage=Installed updates Windows and commonly used applications. +32=1 +64=1 +XP=1 +Vista=1 +7=1 +8=1 +Servers=1 +NonDirectURLs=0 +AutoFlag=1 +LastDownload=10/27/2017 diff --git a/.bin/d7ii/Config/CustomApps_d7II/PatchMyPC.cfg b/.bin/d7ii/Config/CustomApps_d7II/PatchMyPC.cfg new file mode 100644 index 00000000..9c19d3f4 --- /dev/null +++ b/.bin/d7ii/Config/CustomApps_d7II/PatchMyPC.cfg @@ -0,0 +1,37 @@ +[Config] +Author=FoolishTech +LastEditDate=5/27/2014 1:44:22 PM +AppWebsite=www.patchmypc.net +AppDLPage=www.patchmypc.net +AppDesc=Windows and misc application updater +App=PatchMyPC.exe +UseFTPServer=0 +AppURL=http://www.patchmypc.net/PatchMyPC.exe +AppDLName=PatchMyPC.exe +AlwaysAttemptDownload=1 +DLafterXdays=3 +AppWait=1 +PriorAlert=1 +ServiceWait=0 +AppMsgBox=0 +AppRandomize=0 +CopyConfigFirst=PatchMyPC.reg +ExportRegAfter=HKLM\Software\Patch My PC\Options +SaveConfigAfter=1 +MoveSnatchReports=1 +SnatchReportsLoc=%systemdrive%\%computername%.rtf +SnatchReportsToMalwareLogs=0 +RunInCMD=0 +RunWithSystemAccess=0 +IsDLInstaller=0 +LogVerbiage=Installed updates Windows and commonly used applications. +32=1 +64=1 +XP=1 +Vista=1 +7=1 +8=1 +Servers=1 +NonDirectURLs=0 +AutoFlag=0 +LastDownload=10/27/2017 diff --git a/.bin/d7ii/Config/CustomApps_d7II/Petya Encryption Fix.cfg b/.bin/d7ii/Config/CustomApps_d7II/Petya Encryption Fix.cfg new file mode 100644 index 00000000..01a4564a --- /dev/null +++ b/.bin/d7ii/Config/CustomApps_d7II/Petya Encryption Fix.cfg @@ -0,0 +1,36 @@ +[Config] +Author=Foolish Proctor +LastEditDate=4/13/2016 3:12:07 PM +PostRunApp= +AppWebsite=http://rmprepusb.blogspot.co.uk/2016/04/petya-whole-disk-encryption-fix.html +AppDLPage=http://rmprepusb.blogspot.co.uk/2016/04/petya-whole-disk-encryption-fix.html +App=PetyaExtractor\PetyaExtractor.exe +UseFTPServer=0 +AppURL=http://download.bleepingcomputer.com/fabian-wosar/PetyaExtractor.zip +AppDLName=PetyaExtractor.zip +AlwaysAttemptDownload=1 +DLafterXdays=7 +AppWait=1 +EmailBeforeExecution=0 +PriorAlert=0 +ServiceWait=0 +AppMsgBox=0 +AppRandomize=0 +SaveConfigAfter=0 +MoveSnatchReports=0 +SnatchReportsToMalwareLogs=1 +RunInCMD=0 +SendEnter=0 +RunWithSystemAccess=0 +IsDLInstaller=0 +32=1 +64=1 +XP=1 +Vista=1 +7=1 +8=1 +Servers=1 +NonDirectURLs=0 +AutoFlag=0 +AppDesc=Decrypt Disk with Petya malware infection +LogVerbiage=Decrypt Disk infected with Petya malware diff --git a/.bin/d7ii/Config/CustomApps_d7II/Piriform CCleaner (Auto).cfg b/.bin/d7ii/Config/CustomApps_d7II/Piriform CCleaner (Auto).cfg new file mode 100644 index 00000000..dafd8912 --- /dev/null +++ b/.bin/d7ii/Config/CustomApps_d7II/Piriform CCleaner (Auto).cfg @@ -0,0 +1,38 @@ +[Config] +App=ccleaner\CCleaner.exe +App64=ccleaner\CCleaner64.exe +AppParms=/auto +AppURL=http://www.piriform.com/ccleaner/download/portable/downloadfile +AppDLName=ccleaner.zip +AppWait=0 +AppMsgBox=0 +AppRandomize=0 +MoveSnatchReports=0 +SnatchReportsToMalwareLogs=1 +RunInCMD=0 +32=1 +64=1 +XP=1 +Vista=1 +7=1 +8=1 +AlwaysAttemptDownload=1 +CopyConfigFirst=CCleaner.ini +SaveConfigAfter=0 +DisableCloudShare=0 +UseFTPServer=0 +DLafterXdays=7 +PriorAlert=0 +ServiceWait=0 +RunWithSystemAccess=0 +IsDLInstaller=0 +Servers=1 +AppWebsite=www.piriform.com/ccleaner +LogVerbiage=Scanned registry for unnecessary data and removed. +Author=FoolishTech +LastEditDate=2/7/2014 10:06:48 AM +AppDLPage=http://www.piriform.com/ccleaner/builds +AppDesc=Temp file remover and registry cleaner +NonDirectURLs=0 +AutoFlag=1 +LastDownload=8/13/2018 diff --git a/.bin/d7ii/Config/CustomApps_d7II/Piriform CCleaner.cfg b/.bin/d7ii/Config/CustomApps_d7II/Piriform CCleaner.cfg new file mode 100644 index 00000000..dfe51f34 --- /dev/null +++ b/.bin/d7ii/Config/CustomApps_d7II/Piriform CCleaner.cfg @@ -0,0 +1,37 @@ +[Config] +App=ccleaner\CCleaner.exe +App64=ccleaner\CCleaner64.exe +AppURL=http://www.piriform.com/ccleaner/download/portable/downloadfile +AppDLName=ccleaner.zip +AppWait=0 +AppMsgBox=0 +AppRandomize=0 +MoveSnatchReports=0 +SnatchReportsToMalwareLogs=1 +RunInCMD=0 +32=1 +64=1 +XP=1 +Vista=1 +7=1 +8=1 +AlwaysAttemptDownload=1 +CopyConfigFirst=CCleaner.ini +SaveConfigAfter=1 +DisableCloudShare=0 +UseFTPServer=0 +DLafterXdays=7 +PriorAlert=1 +ServiceWait=0 +RunWithSystemAccess=0 +IsDLInstaller=0 +Servers=1 +AppWebsite=www.piriform.com/ccleaner +LogVerbiage=Scanned registry for unnecessary data and removed. +LastEditDate=2/7/2014 10:07:10 AM +AppDLPage=http://www.piriform.com/ccleaner/builds +NonDirectURLs=0 +Author=FoolishTech +AppDesc=Temp file remover and registry cleaner +AutoFlag=0 +LastDownload=10/27/2017 diff --git a/.bin/d7ii/Config/CustomApps_d7II/Piriform Defraggler (Auto).cfg b/.bin/d7ii/Config/CustomApps_d7II/Piriform Defraggler (Auto).cfg new file mode 100644 index 00000000..03e6459e --- /dev/null +++ b/.bin/d7ii/Config/CustomApps_d7II/Piriform Defraggler (Auto).cfg @@ -0,0 +1,38 @@ +[Config] +App=defraggler\df.exe +App64=defraggler\df64.exe +AppParms=%systemdrive% +AppURL=http://www.piriform.com/defraggler/download/portable/downloadfile +AppDLName=defraggler.zip +AppWait=1 +AppMsgBox=0 +AppRandomize=0 +MoveSnatchReports=0 +SnatchReportsToMalwareLogs=1 +RunInCMD=0 +32=1 +64=1 +XP=1 +Vista=1 +7=1 +8=1 +AlwaysAttemptDownload=1 +CopyConfigFirst=Defraggler.ini +SaveConfigAfter=0 +DisableCloudShare=0 +UseFTPServer=0 +DLafterXdays=7 +PriorAlert=0 +ServiceWait=0 +RunWithSystemAccess=0 +IsDLInstaller=0 +Servers=1 +AppWebsite=www.piriform.com/defraggler +LogVerbiage=Defragmented file system (Defraggler) +Author=FoolishTech +LastEditDate=2/7/2014 10:07:50 AM +AppDLPage=http://www.piriform.com/defraggler/builds +AppDesc=Disk defragmenter +NonDirectURLs=0 +AutoFlag=1 +LastDownload=10/27/2017 diff --git a/.bin/d7ii/Config/CustomApps_d7II/Piriform Defraggler.cfg b/.bin/d7ii/Config/CustomApps_d7II/Piriform Defraggler.cfg new file mode 100644 index 00000000..6ed8075f --- /dev/null +++ b/.bin/d7ii/Config/CustomApps_d7II/Piriform Defraggler.cfg @@ -0,0 +1,37 @@ +[Config] +App=Defraggler\Defraggler.exe +App64=Defraggler\Defraggler64.exe +AppURL=http://www.piriform.com/defraggler/download/portable/downloadfile +AppDLName=defraggler.zip +AppWait=1 +AppMsgBox=0 +AppRandomize=0 +MoveSnatchReports=0 +SnatchReportsToMalwareLogs=1 +RunInCMD=0 +32=1 +64=1 +XP=1 +Vista=1 +7=1 +8=1 +AlwaysAttemptDownload=1 +CopyConfigFirst=Defraggler.ini +SaveConfigAfter=1 +DisableCloudShare=0 +UseFTPServer=0 +DLafterXdays=7 +PriorAlert=1 +ServiceWait=0 +RunWithSystemAccess=0 +IsDLInstaller=0 +Servers=1 +AppWebsite=www.piriform.com/defraggler +LogVerbiage=Defragmented file system (Defraggler) +Author=FoolishTech +LastEditDate=2/7/2014 10:08:05 AM +AppDLPage=http://www.piriform.com/defraggler/builds +AppDesc=Disk defragmenter +NonDirectURLs=0 +AutoFlag=0 +LastDownload=10/27/2017 diff --git a/.bin/d7ii/Config/CustomApps_d7II/Piriform Recuva.cfg b/.bin/d7ii/Config/CustomApps_d7II/Piriform Recuva.cfg new file mode 100644 index 00000000..90630b8a --- /dev/null +++ b/.bin/d7ii/Config/CustomApps_d7II/Piriform Recuva.cfg @@ -0,0 +1,33 @@ +[Config] +DisableCloudShare=0 +App=recuva\recuva.exe +App64=recuva\recuva64.exe +AppURL=http://www.piriform.com/recuva/download/portable/downloadfile +AppDLName=recuva.zip +AlwaysAttemptDownload=0 +AppWait=1 +ServiceWait=0 +AppMsgBox=0 +AppRandomize=0 +SaveConfigAfter=0 +MoveSnatchReports=0 +SnatchReportsToMalwareLogs=0 +RunInCMD=0 +RunWithSystemAccess=0 +IsDLInstaller=0 +32=1 +64=1 +XP=1 +Vista=1 +7=1 +8=1 +Servers=1 +AppWebsite=www.piriform.com/recuva +UseFTPServer=0 +PriorAlert=0 +Author=FoolishTech +LastEditDate=2/7/2014 10:08:40 AM +AppDLPage=http://www.piriform.com/recuva/builds +AppDesc=File undelete utility +NonDirectURLs=0 +AutoFlag=0 \ No newline at end of file diff --git a/.bin/d7ii/Config/CustomApps_d7II/Piriform Speccy.cfg b/.bin/d7ii/Config/CustomApps_d7II/Piriform Speccy.cfg new file mode 100644 index 00000000..a232d7d6 --- /dev/null +++ b/.bin/d7ii/Config/CustomApps_d7II/Piriform Speccy.cfg @@ -0,0 +1,35 @@ +[Config] +DisableCloudShare=0 +App=speccy\Speccy.exe +App64=speccy\Speccy64.exe +AppURL=http://www.piriform.com/speccy/download/portable/downloadfile +AppDLName=speccy.zip +AlwaysAttemptDownload=0 +AppWait=1 +ServiceWait=0 +AppMsgBox=0 +AppRandomize=0 +SaveConfigAfter=0 +MoveSnatchReports=0 +SnatchReportsToMalwareLogs=0 +RunInCMD=0 +RunWithSystemAccess=0 +IsDLInstaller=0 +32=1 +64=1 +XP=1 +Vista=1 +7=1 +8=1 +Servers=1 +AppWebsite=www.piriform.com/speccy +UseFTPServer=0 +PriorAlert=0 +LogVerbiage=Gathered information on system specs. +Author=FoolishTech +LastEditDate=2/7/2014 10:09:08 AM +AppDLPage=http://www.piriform.com/speccy/builds +AppDesc=System information utility. +NonDirectURLs=0 +AutoFlag=0 +LastDownload=10/27/2017 diff --git a/.bin/d7ii/Config/CustomApps_d7II/PreviousFilesRecovery.cfg b/.bin/d7ii/Config/CustomApps_d7II/PreviousFilesRecovery.cfg new file mode 100644 index 00000000..f6a46778 --- /dev/null +++ b/.bin/d7ii/Config/CustomApps_d7II/PreviousFilesRecovery.cfg @@ -0,0 +1,39 @@ +[Config] +LastEditDate=7/14/2016 4:49:58 PM +PostRunApp= +AppWebsite=http://www.nirsoft.net/utils/previous_files_recovery.html +AppDLPage=http://www.nirsoft.net/utils/previous_files_recovery.html +AppDesc=Recover Previous Files +App=previousfilesrecovery\PreviousFilesRecovery.exe +App64=previousfilesrecovery-x64\PreviousFilesRecovery.exe +AppURL64=http://www.nirsoft.net/utils/previousfilesrecovery-x64.zip +AppDLName64=previousfilesrecovery-x64.zip +UseFTPServer=0 +AppURL=http://www.nirsoft.net/utils/previousfilesrecovery.zip +AppDLName=previousfilesrecovery.zip +AlwaysAttemptDownload=1 +DLafterXdays=30 +AppWait=1 +EmailBeforeExecution=0 +PriorAlert=0 +ServiceWait=0 +AppMsgBox=0 +AppRandomize=0 +SaveConfigAfter=0 +MoveSnatchReports=0 +SnatchReportsToMalwareLogs=1 +RunInCMD=0 +SendEnter=0 +RunWithSystemAccess=0 +IsDLInstaller=0 +LogVerbiage=Recover Previous Files +32=1 +64=1 +XP=1 +Vista=1 +7=1 +8=1 +Servers=1 +NonDirectURLs=0 +AutoFlag=0 +Author=FoolishProctor diff --git a/.bin/d7ii/Config/CustomApps_d7II/RegFromApp-x32.cfg b/.bin/d7ii/Config/CustomApps_d7II/RegFromApp-x32.cfg new file mode 100644 index 00000000..63b97c50 --- /dev/null +++ b/.bin/d7ii/Config/CustomApps_d7II/RegFromApp-x32.cfg @@ -0,0 +1,39 @@ +[Config] +Author=dSupportOnline +LastEditDate=10/29/2014 9:50:53 AM +PostRunApp= +AppWebsite=http://www.nirsoft.net/utils/reg_file_from_application.html +AppDLPage=http://www.nirsoft.net/utils/reg_file_from_application.html +AppDesc=Shows registry entries created by a selected process +App=regfromapp\RegFromApp.exe +AppURLSpoof=http://www.nirsoft.net/utils/reg_file_from_application.html +UseFTPServer=0 +AppURL=http://www.nirsoft.net/utils/regfromapp.zip +AppDLName=regfromapp.zip +AlwaysAttemptDownload=1 +DLafterXdays=5 +AppWait=1 +EmailBeforeExecution=0 +PriorAlert=0 +ServiceWait=0 +AppMsgBox=0 +AppRandomize=0 +CopyConfigFirst=RegFromApp.cfg +SaveConfigAfter=1 +MoveSnatchReports=0 +SnatchReportsToMalwareLogs=1 +RunInCMD=0 +SendEnter=0 +RunWithSystemAccess=0 +IsDLInstaller=0 +LogVerbiage=Detected registry entries created by 32-bit application. +32=1 +64=1 +XP=1 +Vista=1 +7=1 +8=1 +Servers=1 +NonDirectURLs=0 +AutoFlag=0 +LastDownload=10/27/2017 diff --git a/.bin/d7ii/Config/CustomApps_d7II/RegFromApp-x64.cfg b/.bin/d7ii/Config/CustomApps_d7II/RegFromApp-x64.cfg new file mode 100644 index 00000000..d8b62c75 --- /dev/null +++ b/.bin/d7ii/Config/CustomApps_d7II/RegFromApp-x64.cfg @@ -0,0 +1,39 @@ +[Config] +Author=dSupportOnline +LastEditDate=10/29/2014 9:52:31 AM +PostRunApp= +AppWebsite=http://www.nirsoft.net/utils/reg_file_from_application.html +AppDLPage=http://www.nirsoft.net/utils/reg_file_from_application.html +AppDesc=Shows registry entries created by a selected 64-bit process +App=regfromapp-x64\RegFromApp.exe +AppURLSpoof=http://www.nirsoft.net/utils/reg_file_from_application.html +UseFTPServer=0 +AppURL=http://www.nirsoft.net/utils/regfromapp-x64.zip +AppDLName=regfromapp-x64.zip +AlwaysAttemptDownload=1 +DLafterXdays=5 +AppWait=1 +EmailBeforeExecution=0 +PriorAlert=0 +ServiceWait=0 +AppMsgBox=0 +AppRandomize=0 +CopyConfigFirst=RegFromApp.cfg +SaveConfigAfter=1 +MoveSnatchReports=0 +SnatchReportsToMalwareLogs=1 +RunInCMD=0 +SendEnter=0 +RunWithSystemAccess=0 +IsDLInstaller=0 +LogVerbiage=Detected registry entries created by 64-bit application. +32=0 +64=1 +XP=1 +Vista=1 +7=1 +8=1 +Servers=1 +NonDirectURLs=0 +AutoFlag=0 +LastDownload=10/27/2017 diff --git a/.bin/d7ii/Config/CustomApps_d7II/RegFromApp.cfg b/.bin/d7ii/Config/CustomApps_d7II/RegFromApp.cfg new file mode 100644 index 00000000..7b7eeb26 --- /dev/null +++ b/.bin/d7ii/Config/CustomApps_d7II/RegFromApp.cfg @@ -0,0 +1,9 @@ +[General] +RegFileVersion=5 +AddOnlyModifiedValues=1 +DisplayMode=1 +ProcessPath= +ProcessParams= +StartImmediately=0 +ListViewSortProcess=0 +WinPos=2C 00 00 00 00 00 00 00 01 00 00 00 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 00 00 00 00 00 00 00 00 80 02 00 00 E0 01 00 00 diff --git a/.bin/d7ii/Config/CustomApps_d7II/Revo Uninstaller.cfg b/.bin/d7ii/Config/CustomApps_d7II/Revo Uninstaller.cfg new file mode 100644 index 00000000..bb8854dd --- /dev/null +++ b/.bin/d7ii/Config/CustomApps_d7II/Revo Uninstaller.cfg @@ -0,0 +1,38 @@ +[Config] +Author=FoolishTech +LastEditDate=8/30/2016 3:23:42 PM +PostRunApp= +AppWebsite=http://www.revouninstaller.com/ +AppDLPage=http://www.revouninstaller.com/download-free-portable.php +AppDesc=Application uninstaller and cleanup utility +App=revouninstaller\RevoUninstaller_Portable\x86\RevoUn.exe +App64=revouninstaller\RevoUninstaller_Portable\x64\RevoUn.exe +UseFTPServer=0 +AppURL=http://www.revouninstaller.com/download/revouninstaller.zip +AppDLName=revouninstaller.zip +AlwaysAttemptDownload=1 +DLafterXdays=7 +AppWait=1 +EmailBeforeExecution=0 +PriorAlert=1 +ServiceWait=0 +AppMsgBox=0 +AppRandomize=0 +SaveConfigAfter=0 +MoveSnatchReports=0 +SnatchReportsToMalwareLogs=1 +RunInCMD=0 +SendEnter=0 +RunWithSystemAccess=0 +IsDLInstaller=0 +LogVerbiage=Uninstalled unnecessary / junk programs. +32=1 +64=1 +XP=1 +Vista=1 +7=1 +8=1 +Servers=1 +NonDirectURLs=0 +AutoFlag=0 +LastDownload=10/27/2017 diff --git a/.bin/d7ii/Config/CustomApps_d7II/Rogue Killer.cfg b/.bin/d7ii/Config/CustomApps_d7II/Rogue Killer.cfg new file mode 100644 index 00000000..5b2e53e4 --- /dev/null +++ b/.bin/d7ii/Config/CustomApps_d7II/Rogue Killer.cfg @@ -0,0 +1,41 @@ +[Config] +Author=FoolishTech +LastEditDate=6/19/2015 4:06:02 PM +PostRunApp= +AppWebsite=http://www.adlice.com/softwares/roguekiller/ +AppDLPage=http://www.adlice.com/softwares/roguekiller/ +AppDesc=Rogue malware remover. +App=RogueKiller.exe +App64=RogueKillerX64.exe +AppURL64=http://download.adlice.com/RogueKiller/RogueKillerX64.exe +AppDLName64=RogueKillerX64.exe +UseFTPServer=0 +AppURL=http://download.adlice.com/RogueKiller/RogueKiller.exe +AppDLName=RogueKiller.exe +AlwaysAttemptDownload=1 +DLafterXdays=3 +AppWait=1 +EmailBeforeExecution=0 +PriorAlert=1 +ServiceWait=1 +AppMsgBox=0 +AppRandomize=1 +SaveConfigAfter=0 +MoveSnatchReports=1 +SnatchReportsLoc=%programdata%\RogueKiller\Logs\RKreport*.txt +SnatchReportsToMalwareLogs=1 +RunInCMD=0 +SendEnter=0 +RunWithSystemAccess=0 +IsDLInstaller=0 +LogVerbiage=Scanned for rogue applications and malware (RogueKiller) +32=1 +64=1 +XP=1 +Vista=1 +7=1 +8=1 +Servers=0 +NonDirectURLs=0 +AutoFlag=0 +LastDownload=6/19/2015 diff --git a/.bin/d7ii/Config/CustomApps_d7II/ShadowCopyView.cfg b/.bin/d7ii/Config/CustomApps_d7II/ShadowCopyView.cfg new file mode 100644 index 00000000..0a4a6159 --- /dev/null +++ b/.bin/d7ii/Config/CustomApps_d7II/ShadowCopyView.cfg @@ -0,0 +1,39 @@ +[Config] +Author=Proctor Foolish IT LLC +LastEditDate=6/27/2016 9:46:36 AM +PostRunApp= +AppWebsite=http://www.nirsoft.net/utils/shadow_copy_view.html +AppDLPage=http://www.nirsoft.net/utils/shadow_copy_view.html +App=shadowcopyview\ShadowCopyView.exe +App64=shadowcopyview-x64\ShadowCopyView.exe +AppURL64=http://www.nirsoft.net/utils/shadowcopyview-x64.zip +AppDLName64=shadowcopyview-x64.zip +UseFTPServer=0 +AppURL=http://www.nirsoft.net/utils/shadowcopyview.zip +AppDLName=shadowcopyview.zip +AlwaysAttemptDownload=1 +DLafterXdays=30 +AppWait=1 +EmailBeforeExecution=0 +PriorAlert=0 +ServiceWait=0 +AppMsgBox=0 +AppRandomize=0 +SaveConfigAfter=0 +MoveSnatchReports=0 +SnatchReportsToMalwareLogs=1 +RunInCMD=0 +SendEnter=0 +RunWithSystemAccess=0 +IsDLInstaller=0 +32=1 +64=1 +XP=1 +Vista=1 +7=1 +8=1 +Servers=1 +NonDirectURLs=0 +AppDesc=Manage Shadow Copy files +LogVerbiage=Manage Shadow Copy files +LastDownload=6/27/2016 diff --git a/.bin/d7ii/Config/CustomApps_d7II/Should I Remove It (Uninstall).cfg b/.bin/d7ii/Config/CustomApps_d7II/Should I Remove It (Uninstall).cfg new file mode 100644 index 00000000..b2546e6e --- /dev/null +++ b/.bin/d7ii/Config/CustomApps_d7II/Should I Remove It (Uninstall).cfg @@ -0,0 +1,33 @@ +[Config] +Author=dSupportOnline +LastEditDate=10/9/2014 1:41:32 PM +PostRunApp= +AppWebsite=http://www.shouldiremoveit.com +App=%WINDIR%\System32\MsiExec.exe +App64=%WINDIR%\SysWow64\MsiExec.exe +AppParms=/X{4E62123C-4C0D-4123-A8A2-C0103B92D7EA} /qn +UseFTPServer=0 +AlwaysAttemptDownload=0 +DLafterXdays=5 +AppWait=1 +EmailBeforeExecution=0 +PriorAlert=0 +ServiceWait=0 +AppMsgBox=0 +AppRandomize=0 +SaveConfigAfter=0 +MoveSnatchReports=0 +SnatchReportsToMalwareLogs=1 +RunInCMD=0 +SendEnter=0 +RunWithSystemAccess=0 +IsDLInstaller=0 +32=1 +64=1 +XP=1 +Vista=1 +7=1 +8=1 +Servers=0 +NonDirectURLs=0 +AutoFlag=1 diff --git a/.bin/d7ii/Config/CustomApps_d7II/Should I Remove It.cfg b/.bin/d7ii/Config/CustomApps_d7II/Should I Remove It.cfg new file mode 100644 index 00000000..15f9227b --- /dev/null +++ b/.bin/d7ii/Config/CustomApps_d7II/Should I Remove It.cfg @@ -0,0 +1,39 @@ +[Config] +LastEditDate=10/9/2014 2:12:59 PM +AppWebsite=http://www.shouldiremoveit.com +AppDLPage=http://www.shouldiremoveit.com/download.aspx +UseFTPServer=0 +InstallerParms=/qn +InstallerName=ShouldIRemoveIt_Setup.exe +AppURL=http://www.shouldiremoveit.com/installers/ShouldIRemoveIt_Setup.exe +AppDLName=ShouldIRemoveIt_Setup.exe +AlwaysAttemptDownload=1 +DLafterXdays=5 +AppWait=1 +PriorAlert=0 +ServiceWait=0 +AppMsgBox=0 +AppRandomize=0 +SaveConfigAfter=0 +MoveSnatchReports=0 +SnatchReportsToMalwareLogs=1 +RunInCMD=0 +RunWithSystemAccess=0 +IsDLInstaller=1 +32=1 +64=1 +XP=1 +Vista=1 +7=1 +8=1 +Servers=0 +NonDirectURLs=0 +App=%programfiles(x86)%\Reason\Should I Remove It\ShouldIRemoveIt.exe +Author=dSupportOnline +PostRunApp=Should I Remove It (Uninstall) +EmailBeforeExecution=0 +SendEnter=0 +AutoFlag=0 +LastDownload=10/27/2017 +AppDesc=Crowdsource installed programs to determine if they are malicious. +LogVerbiage=Verified installed programs against crowdsource rating system. diff --git a/.bin/d7ii/Config/CustomApps_d7II/Sophos Virus Removal Tool.cfg b/.bin/d7ii/Config/CustomApps_d7II/Sophos Virus Removal Tool.cfg new file mode 100644 index 00000000..068fb155 --- /dev/null +++ b/.bin/d7ii/Config/CustomApps_d7II/Sophos Virus Removal Tool.cfg @@ -0,0 +1,39 @@ +[Config] +Author=FoolishTech +LastEditDate=3/30/2016 11:12:26 AM +PostRunApp= +AppWebsite=http://www.sophos.com/en-us/products/free-tools/virus-removal-tool/download.aspx +AppDLPage=http://www.sophos.com/en-us/products/free-tools/virus-removal-tool/download.aspx +AppDesc=Virus scanner +App=%programfiles(x86)%\Sophos\Sophos Virus Removal Tool\SVRTcli.exe +AppParms=-reboot -uninstall -yes +UseFTPServer=0 +InstallerName=SophosVRT.exe +AppURL=http://downloads.sophos.com/tools/withides/Sophos%20Virus%20Removal%20Tool.exe +AppDLName=SophosVRT.exe +AlwaysAttemptDownload=1 +DLafterXdays=5 +AppWait=1 +EmailBeforeExecution=0 +PriorAlert=0 +ServiceWait=0 +AppMsgBox=0 +AppRandomize=0 +SaveConfigAfter=0 +MoveSnatchReports=1 +SnatchReportsLoc=%programdata%\Sophos\Sophos Virus Removal Tool\Logs\SophosVirusRemovalTool.log +SnatchReportsToMalwareLogs=1 +RunInCMD=0 +SendEnter=0 +RunWithSystemAccess=0 +IsDLInstaller=1 +LogVerbiage=Scanned for viruses/malware (Sophos) +32=1 +64=1 +XP=1 +Vista=1 +7=1 +8=1 +Servers=1 +NonDirectURLs=0 +AutoFlag=1 diff --git a/.bin/d7ii/Config/CustomApps_d7II/SpaceSniffer.cfg b/.bin/d7ii/Config/CustomApps_d7II/SpaceSniffer.cfg new file mode 100644 index 00000000..bb28d717 --- /dev/null +++ b/.bin/d7ii/Config/CustomApps_d7II/SpaceSniffer.cfg @@ -0,0 +1,33 @@ +[Config] +DisableCloudShare=0 +App=spacesniffer_1_1_4_0\SpaceSniffer.exe +AppURL=http://www.uderzo.it/main_products/space_sniffer/files/spacesniffer_1_1_4_0.zip +AppDLName=spacesniffer_1_1_4_0.zip +AlwaysAttemptDownload=0 +AppWait=1 +ServiceWait=0 +AppMsgBox=0 +AppRandomize=0 +SaveConfigAfter=0 +MoveSnatchReports=0 +SnatchReportsToMalwareLogs=0 +RunInCMD=0 +RunWithSystemAccess=0 +IsDLInstaller=0 +32=1 +64=1 +XP=1 +Vista=1 +7=1 +8=1 +Servers=1 +AppWebsite=www.uderzo.it/main_products/space_sniffer +UseFTPServer=0 +PriorAlert=0 +Author=FoolishTech +LastEditDate=2/7/2014 10:13:36 AM +AppDLPage=www.uderzo.it/main_products/space_sniffer +AppDesc=Useful to determine where all your disk space is being used! +NonDirectURLs=0 +AutoFlag=0 +LastDownload=10/27/2017 diff --git a/.bin/d7ii/Config/CustomApps_d7II/StartUpLite.cfg b/.bin/d7ii/Config/CustomApps_d7II/StartUpLite.cfg new file mode 100644 index 00000000..03069aff --- /dev/null +++ b/.bin/d7ii/Config/CustomApps_d7II/StartUpLite.cfg @@ -0,0 +1,35 @@ +[Config] +App=StartUpLite.exe +AppURL=http://www.malwarebytes.org/StartUpLite.exe +AppDLName=StartUpLite.exe +AppWait=1 +AppMsgBox=0 +AppRandomize=0 +MoveSnatchReports=0 +SnatchReportsToMalwareLogs=1 +RunInCMD=0 +DisableCloudShare=0 +UseFTPServer=0 +AlwaysAttemptDownload=1 +DLafterXdays=7 +PriorAlert=1 +ServiceWait=0 +SaveConfigAfter=0 +RunWithSystemAccess=0 +IsDLInstaller=0 +32=1 +64=1 +XP=1 +Vista=1 +7=1 +8=1 +Servers=1 +AppWebsite=http://www.malwarebytes.org/products/startuplite/ +LogVerbiage=Removed unnecessary Windows startup entries. +Author=FoolishTech +LastEditDate=2/7/2014 10:14:03 AM +AppDLPage=http://www.malwarebytes.org/products/startuplite/ +AppDesc=Startup entry manager by MalwareBytes +NonDirectURLs=0 +AutoFlag=0 +LastDownload=10/27/2017 diff --git a/.bin/d7ii/Config/CustomApps_d7II/SuperAntiSpyware.cfg b/.bin/d7ii/Config/CustomApps_d7II/SuperAntiSpyware.cfg new file mode 100644 index 00000000..e0d9b14b --- /dev/null +++ b/.bin/d7ii/Config/CustomApps_d7II/SuperAntiSpyware.cfg @@ -0,0 +1,36 @@ +[Config] +Author=FoolishTech +LastEditDate=5/27/2014 1:48:26 PM +AppWebsite=http://www.superantispyware.com/ +AppDLPage=http://www.superantispyware.com/downloadfile.html?productid=SUPERANTISPYWAREFREE +AppDesc=Malware scanner +App=sas.com +AppURLSpoof= +UseFTPServer=0 +AppURL=http://www.superantispyware.com/sasportable.php +AppDLName=sas.com +AlwaysAttemptDownload=1 +DLafterXdays=3 +AppWait=1 +WaitOnProcesses=program.com;program64.com;superantispyware.exe +PriorAlert=1 +ServiceWait=0 +AppMsgBox=0 +AppRandomize=1 +SaveConfigAfter=0 +MoveSnatchReports=0 +SnatchReportsLoc=%temp%\SAS_SelfExtract\Logs\SUPERAntiSpyware*.log +SnatchReportsToMalwareLogs=1 +RunInCMD=0 +RunWithSystemAccess=0 +IsDLInstaller=0 +LogVerbiage=Scanned for ad/spy/malware (SAS) +32=1 +64=1 +XP=1 +Vista=1 +7=1 +8=1 +Servers=1 +NonDirectURLs=0 +AutoFlag=0 \ No newline at end of file diff --git a/.bin/d7ii/Config/CustomApps_d7II/Svchost Process Analyzer.cfg b/.bin/d7ii/Config/CustomApps_d7II/Svchost Process Analyzer.cfg new file mode 100644 index 00000000..862cc4d3 --- /dev/null +++ b/.bin/d7ii/Config/CustomApps_d7II/Svchost Process Analyzer.cfg @@ -0,0 +1,37 @@ +[Config] +Author=Foolish IT +LastEditDate=3/30/2016 11:16:04 AM +PostRunApp= +AppWebsite=http://www.neuber.com/free/svchost-analyzer/ +AppDLPage=http://www.neuber.com/free/svchost-analyzer/ +AppDesc=Analyze svchost checking for malware +App=SvchostAnalyzer.exe +UseFTPServer=0 +AppURL=http://www.neuber.com/download/SvchostAnalyzer.exe +AppDLName=SvchostAnalyzer.exe +AlwaysAttemptDownload=1 +DLafterXdays=30 +AppWait=1 +EmailBeforeExecution=0 +PriorAlert=0 +ServiceWait=0 +AppMsgBox=0 +AppRandomize=0 +SaveConfigAfter=0 +MoveSnatchReports=0 +SnatchReportsToMalwareLogs=1 +RunInCMD=0 +SendEnter=0 +RunWithSystemAccess=0 +IsDLInstaller=0 +LogVerbiage=Checking for malware by analyzing svchost +32=1 +64=1 +XP=1 +Vista=1 +7=1 +8=1 +Servers=1 +NonDirectURLs=0 +AutoFlag=0 +LastDownload=3/30/2016 diff --git a/.bin/d7ii/Config/CustomApps_d7II/Sysinternals PageDefrag (XP).cfg b/.bin/d7ii/Config/CustomApps_d7II/Sysinternals PageDefrag (XP).cfg new file mode 100644 index 00000000..d81eb31a --- /dev/null +++ b/.bin/d7ii/Config/CustomApps_d7II/Sysinternals PageDefrag (XP).cfg @@ -0,0 +1,36 @@ +[Config] +DisableCloudShare=0 +App=pagedfrg.exe +AppURL=http://live.sysinternals.com/pagedfrg.exe +AppDLName=pagedfrg.exe +AlwaysAttemptDownload=0 +AppWait=1 +ServiceWait=0 +AppMsgBox=0 +AppRandomize=0 +SaveConfigAfter=0 +MoveSnatchReports=0 +SnatchReportsToMalwareLogs=0 +RunInCMD=0 +RunWithSystemAccess=0 +IsDLInstaller=0 +32=1 +64=0 +XP=1 +Vista=0 +7=0 +8=0 +Servers=0 +AppParms=-o +CopyConfigFirst=pagedfrg.reg +AppWebsite=http://technet.microsoft.com/en-us/sysinternals/bb897426 +UseFTPServer=0 +PriorAlert=0 +LogVerbiage=Defragmented Windows paging file and registry. +Author=FoolishTech +LastEditDate=2/7/2014 10:15:12 AM +AppDLPage=http://technet.microsoft.com/en-us/sysinternals/bb897426 +AppDesc=Defragments the paging file and registry hives for Windows XP only. +NonDirectURLs=0 +AutoFlag=1 +LastDownload=10/27/2017 diff --git a/.bin/d7ii/Config/CustomApps_d7II/TCPOptimizer.cfg b/.bin/d7ii/Config/CustomApps_d7II/TCPOptimizer.cfg new file mode 100644 index 00000000..29d862fc --- /dev/null +++ b/.bin/d7ii/Config/CustomApps_d7II/TCPOptimizer.cfg @@ -0,0 +1,35 @@ +[Config] +App=TCPOptimizer.exe +AppURL=http://www.speedguide.net/files/TCPOptimizer.exe +AppDLName=TCPOptimizer.exe +AppWait=1 +AppMsgBox=0 +AppRandomize=0 +MoveSnatchReports=0 +SnatchReportsToMalwareLogs=1 +RunInCMD=0 +DisableCloudShare=0 +UseFTPServer=0 +AlwaysAttemptDownload=1 +DLafterXdays=7 +PriorAlert=1 +ServiceWait=0 +SaveConfigAfter=0 +RunWithSystemAccess=0 +IsDLInstaller=0 +32=1 +64=1 +XP=1 +Vista=1 +7=1 +8=1 +Servers=1 +AppWebsite=http://www.speedguide.net/tcpoptimizer.php +LogVerbiage=Optimized TCP stack for better networking performance. +Author=FoolishTech +LastEditDate=2/7/2014 10:15:36 AM +AppDLPage=http://www.speedguide.net/tcpoptimizer.php +AppDesc=Optimize and fix issues with network adapters. +NonDirectURLs=0 +AutoFlag=0 +LastDownload=10/27/2017 diff --git a/.bin/d7ii/Config/CustomApps_d7II/TreeSize.cfg b/.bin/d7ii/Config/CustomApps_d7II/TreeSize.cfg new file mode 100644 index 00000000..ddcdd854 --- /dev/null +++ b/.bin/d7ii/Config/CustomApps_d7II/TreeSize.cfg @@ -0,0 +1,36 @@ +[Config] +Author=Foolish IT +LastEditDate=3/30/2016 11:19:29 AM +PostRunApp= +AppWebsite=http://www.jam-software.com/treesize_free/ +AppDLPage=http://www.jam-software.com/treesize_free/ +App=TreeSizeFree\TreeSizeFree.exe +UseFTPServer=0 +AppURL=http://www.jam-software.com/treesize_free/TreeSizeFree.zip +AppDLName=TreeSizeFree.zip +AlwaysAttemptDownload=1 +DLafterXdays=30 +AppWait=1 +EmailBeforeExecution=0 +PriorAlert=0 +ServiceWait=0 +AppMsgBox=0 +AppRandomize=0 +SaveConfigAfter=0 +MoveSnatchReports=0 +SnatchReportsToMalwareLogs=1 +RunInCMD=0 +SendEnter=0 +RunWithSystemAccess=0 +IsDLInstaller=0 +32=1 +64=1 +XP=1 +Vista=1 +7=1 +8=1 +Servers=1 +NonDirectURLs=0 +AutoFlag=0 +AppDesc=Check Disk Space Usage +LogVerbiage=Reviewed disk space usage diff --git a/.bin/d7ii/Config/CustomApps_d7II/USB Devices View.cfg b/.bin/d7ii/Config/CustomApps_d7II/USB Devices View.cfg new file mode 100644 index 00000000..546d0dc7 --- /dev/null +++ b/.bin/d7ii/Config/CustomApps_d7II/USB Devices View.cfg @@ -0,0 +1,39 @@ +[Config] +Author=dSupportOnline +LastEditDate=10/29/2014 9:27:56 AM +PostRunApp= +AppWebsite=http://www.nirsoft.net/utils/usb_devices_view.html +AppDLPage=http://www.nirsoft.net/utils/usb_devices_view.html +AppDesc=Utility to examine installed USB devices and remove corrupt drivers +App=usbdeview\USBDeview.exe +AppURLSpoof=http://www.nirsoft.net/utils/usb_devices_view.html +UseFTPServer=0 +AppURL=http://www.nirsoft.net/utils/usbdeview.zip +AppDLName=usbdeview.zip +AlwaysAttemptDownload=1 +DLafterXdays=5 +AppWait=1 +EmailBeforeExecution=0 +PriorAlert=0 +ServiceWait=0 +AppMsgBox=0 +AppRandomize=0 +SaveConfigAfter=1 +MoveSnatchReports=0 +SnatchReportsToMalwareLogs=1 +RunInCMD=0 +SendEnter=0 +RunWithSystemAccess=0 +IsDLInstaller=0 +LogVerbiage=Examined installed USB devices and removed corrupted drivers or updated accordingly. +32=1 +64=1 +XP=1 +Vista=1 +7=1 +8=1 +Servers=1 +NonDirectURLs=0 +AutoFlag=0 +LastDownload=10/27/2017 +CopyConfigFirst=USBDeview.cfg diff --git a/.bin/d7ii/Config/CustomApps_d7II/USBDeview.cfg b/.bin/d7ii/Config/CustomApps_d7II/USBDeview.cfg new file mode 100644 index 00000000..c38f99e6 --- /dev/null +++ b/.bin/d7ii/Config/CustomApps_d7II/USBDeview.cfg @@ -0,0 +1,28 @@ +[General] +ShowGridLines=0 +ShowInfoTip=1 +DisplayDisconnected=1 +DisplayNoPortSerial=1 +DisplayNoDriver=0 +DisplayHubs=0 +ShowDisconnectMessage=0 +TrayIcon=0 +ShowWindowOnDeviceConnect=0 +AutoPlayOnDeviceConnect=0 +DisplayBalloonOnDeviceConnect=0 +StartAsHidden=0 +ShowTimeInGMT=0 +DisplayBalloonOnDeviceDisconnect=0 +RetrieveUSBPower=1 +MarkConnectedDevices=1 +SaveFilterIndex=0 +DeviceConnectExecute= +UseDeviceConnectExecute=0 +DeviceDisconnectExecute= +UseDeviceDisconnectExecute=0 +AddExportHeaderLine=0 +MarkOddEvenRows=0 +DecodeSerialNumbers=1 +WinPos=2C 00 00 00 00 00 00 00 01 00 00 00 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 00 00 00 00 00 00 00 00 80 02 00 00 E0 01 00 00 +Columns=96 00 00 00 B4 00 01 00 96 00 02 00 5A 00 03 00 5A 00 04 00 5A 00 05 00 50 00 06 00 5A 00 07 00 78 00 08 00 78 00 09 00 78 00 0A 00 64 00 0B 00 64 00 0C 00 64 00 0D 00 50 00 0E 00 50 00 0F 00 50 00 10 00 64 00 11 00 6E 00 12 00 96 00 13 00 96 00 14 00 96 00 15 00 6E 00 16 00 6E 00 17 00 6E 00 18 00 6E 00 19 00 8C 00 1A 00 5A 00 1B 00 5A 00 1C 00 82 00 1D 00 82 00 1E 00 C8 00 1F 00 +Sort=0 diff --git a/.bin/d7ii/Config/CustomApps_d7II/UltraSearch.cfg b/.bin/d7ii/Config/CustomApps_d7II/UltraSearch.cfg new file mode 100644 index 00000000..355220b7 --- /dev/null +++ b/.bin/d7ii/Config/CustomApps_d7II/UltraSearch.cfg @@ -0,0 +1,40 @@ +[Config] +Author=Foolish IT +LastEditDate=3/30/2016 11:23:32 AM +PostRunApp= +AppWebsite=http://www.jam-software.com/ultrasearch/ +AppDLPage=http://www.jam-software.com/ultrasearch/ +App=UltraSearchx32\UltraSearch.exe +UseFTPServer=0 +AppURL=http://www.jam-software.com/ultrasearch/UltraSearch-x86.zip +AppDLName=UltraSearchx32.zip +AlwaysAttemptDownload=1 +DLafterXdays=30 +AppWait=1 +EmailBeforeExecution=0 +PriorAlert=0 +ServiceWait=0 +AppMsgBox=0 +AppRandomize=0 +SaveConfigAfter=0 +MoveSnatchReports=0 +SnatchReportsToMalwareLogs=1 +RunInCMD=0 +SendEnter=0 +RunWithSystemAccess=0 +IsDLInstaller=0 +32=1 +64=1 +XP=1 +Vista=1 +7=1 +8=1 +Servers=1 +NonDirectURLs=0 +AutoFlag=0 +App64=UltraSearchx64\UltraSearch.exe +AppURL64=http://www.jam-software.com/ultrasearch/UltraSearch-x64.zip +AppDLName64=UltraSearchx64.zip +LastDownload=3/30/2016 +AppDesc=Quickly search files and folders +LogVerbiage=Searched files and folders diff --git a/.bin/d7ii/Config/CustomApps_d7II/Unchecky (Install).cfg b/.bin/d7ii/Config/CustomApps_d7II/Unchecky (Install).cfg new file mode 100644 index 00000000..c66def4a --- /dev/null +++ b/.bin/d7ii/Config/CustomApps_d7II/Unchecky (Install).cfg @@ -0,0 +1,35 @@ +[Config] +Author=FoolishTech +LastEditDate=7/19/2014 6:00:26 AM +AppWebsite=http://unchecky.com/ +AppDLPage=http://unchecky.com/ +AppDesc=Keeps your checkboxes clear. +UseFTPServer=0 +AppURL=http://unchecky.com/files/unchecky_setup.exe +AppDLName=unchecky_setup.exe +AlwaysAttemptDownload=1 +DLafterXdays=5 +AppWait=1 +PriorAlert=0 +ServiceWait=0 +AppMsgBox=0 +AppRandomize=0 +SaveConfigAfter=0 +MoveSnatchReports=0 +SnatchReportsToMalwareLogs=1 +RunInCMD=0 +RunWithSystemAccess=0 +IsDLInstaller=0 +LogVerbiage=Installed Unchecky application +32=1 +64=1 +XP=1 +Vista=1 +7=1 +8=1 +Servers=0 +NonDirectURLs=0 +App=unchecky_setup.exe +AppParms=-install -update -no_desktop_icon +LastDownload=10/27/2017 +AutoFlag=0 diff --git a/.bin/d7ii/Config/CustomApps_d7II/VipreRescueScanner (Deep Scan).cfg b/.bin/d7ii/Config/CustomApps_d7II/VipreRescueScanner (Deep Scan).cfg new file mode 100644 index 00000000..cff93333 --- /dev/null +++ b/.bin/d7ii/Config/CustomApps_d7II/VipreRescueScanner (Deep Scan).cfg @@ -0,0 +1,40 @@ +[Config] +Author=FoolishTech +LastEditDate=10/29/2014 10:09:50 AM +PostRunApp= +AppWebsite=http://live.sunbeltsoftware.com/ +AppDLPage=http://www.vipreantivirus.com/live/Download2/ +AppDesc=Virus scanner (Designed for both the Malware Removal and the Offline Operations tab) +App=vipre\VipreRescueScanner.exe +AppParms=/path %tdrive% +UseFTPServer=0 +AppURL=http://go.threattracksecurity.com/?linkid=1605 +AppDLName=vipre.zip +AlwaysAttemptDownload=1 +DLafterXdays=1 +AppWait=1 +EmailBeforeExecution=0 +PriorAlert=0 +ServiceWait=0 +AppMsgBox=0 +AppRandomize=1 +SaveConfigAfter=0 +MoveSnatchReports=1 +SnatchReportsToMalwareLogs=1 +RunInCMD=1 +SendEnter=1 +RunWithSystemAccess=0 +IsDLInstaller=0 +LogVerbiage=Ran virus scans (Vipre) +32=1 +64=1 +XP=1 +Vista=1 +7=1 +8=1 +Servers=1 +NonDirectURLs=1 +AutoFlag=1 +SnatchReportsLoc=%3rdpath%\*.csv +LastDownload=10/27/2017 +AppURLSpoof=http://www.vipreantivirus.com/support.aspx#vp-Rescue diff --git a/.bin/d7ii/Config/CustomApps_d7II/VipreRescueScanner (Manual).cfg b/.bin/d7ii/Config/CustomApps_d7II/VipreRescueScanner (Manual).cfg new file mode 100644 index 00000000..d4c074de --- /dev/null +++ b/.bin/d7ii/Config/CustomApps_d7II/VipreRescueScanner (Manual).cfg @@ -0,0 +1,39 @@ +[Config] +Author=FoolishTech +LastEditDate=9/28/2014 7:46:09 PM +PostRunApp= +AppWebsite=http://live.sunbeltsoftware.com/ +AppDLPage=http://www.vipreantivirus.com/live/Download2/ +AppDesc=Virus scanner - Manual removal +App=vipre\VipreRescueScanner.exe +UseFTPServer=0 +AppURL=http://go.threattracksecurity.com/?linkid=1605 +AppDLName=vipre.zip +AlwaysAttemptDownload=1 +DLafterXdays=7 +AppWait=1 +EmailBeforeExecution=0 +PriorAlert=0 +ServiceWait=0 +AppMsgBox=0 +AppRandomize=1 +SaveConfigAfter=0 +MoveSnatchReports=1 +SnatchReportsLoc=%3rdpath%\*.csv +SnatchReportsToMalwareLogs=1 +RunInCMD=1 +SendEnter=0 +RunWithSystemAccess=0 +IsDLInstaller=0 +LogVerbiage=Ran virus scans (Vipre) +32=1 +64=1 +XP=1 +Vista=1 +7=1 +8=1 +Servers=1 +NonDirectURLs=1 +AutoFlag=0 +LastDownload=9/28/2014 +AppURLSpoof=http://www.vipreantivirus.com/support.aspx#vp-Rescue \ No newline at end of file diff --git a/.bin/d7ii/Config/CustomApps_d7II/VipreRescueScanner (Quick Scan).cfg b/.bin/d7ii/Config/CustomApps_d7II/VipreRescueScanner (Quick Scan).cfg new file mode 100644 index 00000000..f39da538 --- /dev/null +++ b/.bin/d7ii/Config/CustomApps_d7II/VipreRescueScanner (Quick Scan).cfg @@ -0,0 +1,40 @@ +[Config] +Author=FoolishTech +LastEditDate=10/13/2014 9:42:04 AM +PostRunApp= +AppWebsite=http://live.sunbeltsoftware.com/ +AppDLPage=http://www.vipreantivirus.com/live/Download2/ +AppDesc=Virus scanner (Designed for both the Malware Removal and the Offline Operations tab) +App=vipre\VipreRescueScanner.exe +AppParms=/path %tdrive% /quick +UseFTPServer=0 +AppURL=http://go.threattracksecurity.com/?linkid=1605 +AppDLName=vipre.zip +AlwaysAttemptDownload=1 +DLafterXdays=1 +AppWait=1 +EmailBeforeExecution=0 +PriorAlert=0 +ServiceWait=0 +AppMsgBox=0 +AppRandomize=1 +SaveConfigAfter=0 +MoveSnatchReports=1 +SnatchReportsLoc=%3rdpath%\*.csv +SnatchReportsToMalwareLogs=1 +RunInCMD=1 +SendEnter=1 +RunWithSystemAccess=0 +IsDLInstaller=0 +LogVerbiage=Ran virus scans (Vipre) +32=1 +64=1 +XP=1 +Vista=1 +7=1 +8=1 +Servers=1 +NonDirectURLs=1 +AutoFlag=1 +LastDownload=10/13/2014 +AppURLSpoof=http://www.vipreantivirus.com/support.aspx#vp-Rescue \ No newline at end of file diff --git a/.bin/d7ii/Config/CustomApps_d7II/VirusTotal Uploader Uninstall.cfg b/.bin/d7ii/Config/CustomApps_d7II/VirusTotal Uploader Uninstall.cfg new file mode 100644 index 00000000..51513d28 --- /dev/null +++ b/.bin/d7ii/Config/CustomApps_d7II/VirusTotal Uploader Uninstall.cfg @@ -0,0 +1,32 @@ +[Config] +Author=VirusTotal +LastEditDate=5/16/2016 5:25:35 PM +PostRunApp= +AppWebsite=https://www.virustotal.com/en/documentation/desktop-applications/ +AppDLPage=https://www.virustotal.com/en/documentation/desktop-applications/ +App=%programfiles%\VirusTotalUploader2\uninstall.exe +UseFTPServer=0 +AlwaysAttemptDownload=0 +DLafterXdays=5 +AppWait=1 +EmailBeforeExecution=0 +PriorAlert=0 +ServiceWait=0 +AppMsgBox=0 +AppRandomize=0 +SaveConfigAfter=0 +MoveSnatchReports=0 +SnatchReportsToMalwareLogs=1 +RunInCMD=0 +SendEnter=0 +RunWithSystemAccess=0 +IsDLInstaller=0 +32=1 +64=1 +XP=1 +Vista=1 +7=1 +8=1 +Servers=1 +NonDirectURLs=0 +AutoFlag=0 diff --git a/.bin/d7ii/Config/CustomApps_d7II/VirusTotal Uploader.cfg b/.bin/d7ii/Config/CustomApps_d7II/VirusTotal Uploader.cfg new file mode 100644 index 00000000..6173859c --- /dev/null +++ b/.bin/d7ii/Config/CustomApps_d7II/VirusTotal Uploader.cfg @@ -0,0 +1,36 @@ +[Config] +Author=VirusTotal +LastEditDate=5/16/2016 5:48:48 PM +PostRunApp=VirusTotal Uploader Uninstall +AppWebsite=https://www.virustotal.com/en/documentation/desktop-applications/ +AppDLPage=https://www.virustotal.com/en/documentation/desktop-applications/ +App=%programfiles(x86)%\VirusTotalUploader2\VirusTotalUploader2.2.exe +UseFTPServer=0 +InstallerName=vtuploader2.2.exe +AppURL=https://www.virustotal.com/static/bin/vtuploader2.2.exe +AppDLName=vtuploader2.2.exe +AlwaysAttemptDownload=0 +DLafterXdays=5 +AppWait=1 +EmailBeforeExecution=0 +PriorAlert=0 +ServiceWait=0 +AppMsgBox=0 +AppRandomize=0 +SaveConfigAfter=0 +MoveSnatchReports=0 +SnatchReportsToMalwareLogs=1 +RunInCMD=0 +SendEnter=0 +RunWithSystemAccess=0 +IsDLInstaller=1 +32=1 +64=1 +XP=1 +Vista=1 +7=1 +8=1 +Servers=1 +NonDirectURLs=0 +AutoFlag=0 +LastDownload=5/16/2016 diff --git a/.bin/d7ii/Config/CustomApps_d7II/WhatIsHang.cfg b/.bin/d7ii/Config/CustomApps_d7II/WhatIsHang.cfg new file mode 100644 index 00000000..51ad3075 --- /dev/null +++ b/.bin/d7ii/Config/CustomApps_d7II/WhatIsHang.cfg @@ -0,0 +1,14 @@ +[General] +ShowGridLines=0 +SaveFilterIndex=0 +ShowInfoTip=1 +AutoRefresh=1 +VerSplitLoc=16383 +TrayIcon=0 +DisplayAboveAscii127=0 +StartAsHidden=0 +AlwaysOnTop=0 +AutoGetReport=0 +WinPos=2C 00 00 00 00 00 00 00 01 00 00 00 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 00 00 00 00 00 00 00 00 80 02 00 00 E0 01 00 00 +Columns=96 00 00 00 96 00 01 00 64 00 02 00 64 00 03 00 FA 00 04 00 +Sort=0 diff --git a/.bin/d7ii/Config/CustomApps_d7II/Windows Repair AIO (Auto).cfg b/.bin/d7ii/Config/CustomApps_d7II/Windows Repair AIO (Auto).cfg new file mode 100644 index 00000000..028b8f47 --- /dev/null +++ b/.bin/d7ii/Config/CustomApps_d7II/Windows Repair AIO (Auto).cfg @@ -0,0 +1,36 @@ +[Config] +Author=FoolishTech +LastEditDate=5/27/2014 1:48:49 PM +AppWebsite=http://www.tweaking.com/articles/pages/windows_repair_all_in_one_tips,1.html +AppDLPage=http://www.tweaking.com/content/page/windows_repair_all_in_one.html +AppDesc=Tweaking.com's Windows Repair All-In-One can fix a large majority of known Windows problems. +App=aio\Tweaking.com - Windows Repair\Repair_Windows.exe +AppParms=/silent +UseFTPServer=0 +AppURL=http://www.tweaking.com/files/setups/tweaking.com_windows_repair_aio.zip +AppDLName=aio.zip +AlwaysAttemptDownload=1 +DLafterXdays=3 +AppWait=1 +PriorAlert=1 +ServiceWait=0 +AppMsgBox=0 +AppRandomize=0 +SaveConfigAfter=0 +MoveSnatchReports=1 +SnatchReportsLoc=%3rdpath%\Logs\_Windows_Repair_Log.txt +SnatchReportsToMalwareLogs=0 +RunInCMD=0 +RunWithSystemAccess=0 +IsDLInstaller=0 +LogVerbiage=Repaired damage to Windows with %app% +32=1 +64=1 +XP=1 +Vista=1 +7=1 +8=1 +Servers=0 +NonDirectURLs=0 +AutoFlag=1 +LastDownload=10/27/2017 diff --git a/.bin/d7ii/Config/CustomApps_d7II/Windows Repair AIO.cfg b/.bin/d7ii/Config/CustomApps_d7II/Windows Repair AIO.cfg new file mode 100644 index 00000000..0caeffac --- /dev/null +++ b/.bin/d7ii/Config/CustomApps_d7II/Windows Repair AIO.cfg @@ -0,0 +1,35 @@ +[Config] +Author=FoolishTech +LastEditDate=5/27/2014 1:48:42 PM +AppWebsite=http://www.tweaking.com/articles/pages/windows_repair_all_in_one_tips,1.html +AppDLPage=http://www.tweaking.com/content/page/windows_repair_all_in_one.html +AppDesc=Tweaking.com's Windows Repair All-In-One can fix a large majority of known Windows problems. +App=aio\Tweaking.com - Windows Repair\Repair_Windows.exe +UseFTPServer=0 +AppURL=http://www.tweaking.com/files/setups/tweaking.com_windows_repair_aio.zip +AppDLName=aio.zip +AlwaysAttemptDownload=1 +DLafterXdays=3 +AppWait=1 +PriorAlert=1 +ServiceWait=0 +AppMsgBox=0 +AppRandomize=0 +SaveConfigAfter=0 +MoveSnatchReports=1 +SnatchReportsLoc=%3rdpath%\Logs\_Windows_Repair_Log.txt +SnatchReportsToMalwareLogs=0 +RunInCMD=0 +RunWithSystemAccess=0 +IsDLInstaller=0 +LogVerbiage=Repaired damage to Windows with %app% +32=1 +64=1 +XP=1 +Vista=1 +7=1 +8=1 +Servers=0 +NonDirectURLs=0 +AutoFlag=0 +LastDownload=10/27/2017 diff --git a/.bin/d7ii/Config/CustomApps_d7II/cports.cfg b/.bin/d7ii/Config/CustomApps_d7II/cports.cfg new file mode 100644 index 00000000..5b8a5276 --- /dev/null +++ b/.bin/d7ii/Config/CustomApps_d7II/cports.cfg @@ -0,0 +1,40 @@ +[General] +WinPos=2C 00 00 00 00 00 00 00 01 00 00 00 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF 4E 00 00 00 4E 00 00 00 CE 02 00 00 2E 02 00 00 +Columns=6E 00 00 00 3C 00 01 00 3C 00 02 00 46 00 03 00 46 00 04 00 64 00 05 00 46 00 06 00 46 00 07 00 64 00 08 00 78 00 09 00 50 00 0A 00 40 01 0B 00 B4 00 0C 00 B4 00 0D 00 B4 00 0E 00 B4 00 0F 00 78 00 10 00 8C 00 11 00 96 00 12 00 64 00 13 00 78 00 14 00 C8 00 15 00 6E 00 16 00 96 00 17 00 +Sort1=0 +ShowGridLines=0 +SaveFilterIndex=0 +MarkPorts=1 +DisplayUdpPorts=1 +DisplayTcpPorts=1 +DisplayClosedPorts=1 +MarkNewModifiedPorts=1 +SortOnAutoRefresh=1 +AlwaysOnTop=0 +AskBefore=1 +DisplayIPv6Ports=1 +DisplayListening=1 +DisplayEstablished=1 +DisplayNoState=1 +DisplayNoRemoteIP=1 +ResolveAddresses=1 +RememberLastFilter=1 +AutoResizeColumns=0 +DisplayPortInAddress=0 +AutoRefresh=0 +ShowInfoTip=1 +TrayIcon=0 +TrayIconOneClick=0 +LogChanges=0 +LogFilename=cports.log +StartAsHidden=0 +DisabledFilters=0 +UseCustomLogLine=0 +CustomLogLine=%Process_ID.5% %Process_Name.20% %Protocol.5% %Local_Address.25% %Remote_Address.35% %User_Name.40% +MissingConnectionsWorkaround=0 +AddExportHeaderLine=0 +MarkOddEvenRows=0 +TrayBalloonOnNewPort=0 +BeepOnNewPort=0 +UseDNSCache=0 +CustomRefresh=15 diff --git a/.bin/d7ii/Config/CustomApps_d7II/herdProtect (Uninstall).cfg b/.bin/d7ii/Config/CustomApps_d7II/herdProtect (Uninstall).cfg new file mode 100644 index 00000000..18418caf --- /dev/null +++ b/.bin/d7ii/Config/CustomApps_d7II/herdProtect (Uninstall).cfg @@ -0,0 +1,32 @@ +[Config] +Author=dSupportOnline +LastEditDate=10/9/2014 3:36:58 PM +PostRunApp= +AppWebsite=http://www.herdprotect.com/index.aspx +App=%ProgramFiles%\Reason\herdProtect\Scanner\Uninstall.exe +UseFTPServer=0 +AlwaysAttemptDownload=0 +DLafterXdays=5 +AppWait=1 +EmailBeforeExecution=0 +PriorAlert=0 +ServiceWait=0 +AppMsgBox=0 +AppRandomize=0 +SaveConfigAfter=0 +MoveSnatchReports=0 +SnatchReportsToMalwareLogs=1 +RunInCMD=0 +SendEnter=0 +RunWithSystemAccess=0 +IsDLInstaller=0 +32=1 +64=1 +XP=1 +Vista=1 +7=1 +8=1 +Servers=1 +NonDirectURLs=0 +AutoFlag=0 +AppParms=/qn diff --git a/.bin/d7ii/Config/CustomApps_d7II/herdProtect.cfg b/.bin/d7ii/Config/CustomApps_d7II/herdProtect.cfg new file mode 100644 index 00000000..17ac004b --- /dev/null +++ b/.bin/d7ii/Config/CustomApps_d7II/herdProtect.cfg @@ -0,0 +1,38 @@ +[Config] +Author=dSupportOnline +LastEditDate=10/9/2014 3:44:33 PM +PostRunApp=herdProtect (Uninstall) +AppWebsite=http://www.herdprotect.com/index.aspx +AppDLPage=http://www.herdprotect.com/downloads.aspx +UseFTPServer=0 +AppURL=http://www.herdprotect.com/installers/herdProtectScan_Setup.exe +AppDLName=herdProtectSetup.exe +AlwaysAttemptDownload=0 +DLafterXdays=5 +AppWait=1 +EmailBeforeExecution=0 +PriorAlert=0 +ServiceWait=0 +AppMsgBox=0 +AppRandomize=0 +SaveConfigAfter=0 +MoveSnatchReports=0 +SnatchReportsToMalwareLogs=1 +RunInCMD=0 +SendEnter=0 +RunWithSystemAccess=0 +IsDLInstaller=1 +32=1 +64=1 +XP=1 +Vista=1 +7=1 +8=1 +Servers=1 +NonDirectURLs=0 +AutoFlag=0 +InstallerParms=/qn +InstallerName=herdProtectSetup.exe +App=C:\Program Files\Reason\herdProtect\Scanner\herdProtectScan.exe +AppDesc=Cloud-based anti-malware scanner +LogVerbiage=Scanned system against 68 various anti-malware scanners diff --git a/.bin/d7ii/Config/CustomApps_d7II/rkill.cfg b/.bin/d7ii/Config/CustomApps_d7II/rkill.cfg new file mode 100644 index 00000000..0f0d70a0 --- /dev/null +++ b/.bin/d7ii/Config/CustomApps_d7II/rkill.cfg @@ -0,0 +1,40 @@ +[Config] +Author=FoolishTech +LastEditDate=10/10/2014 5:07:05 AM +PostRunApp= +AppWebsite=http://www.bleepingcomputer.com/forums/t/308364/rkill-what-it-does-and-what-it-doesnt-a-brief-introduction-to-the-program/ +AppDLPage=http://www.bleepingcomputer.com/download/rkill/ +AppDesc=Anti-Malware app. +App=rkill.exe +AppParms=-s -w "%3rdpath%\rkill_Excludes.txt" +UseFTPServer=0 +AppURL=http://download.bleepingcomputer.com/grinler/rkill.exe +AppDLName=rkill.exe +AlwaysAttemptDownload=1 +DLafterXdays=3 +AppWait=1 +EmailBeforeExecution=0 +PriorAlert=0 +ServiceWait=0 +AppMsgBox=0 +AppRandomize=1 +CopyConfigFirst=rkill.cmd +SaveConfigAfter=0 +MoveSnatchReports=1 +SnatchReportsLoc=%userprofile%\Desktop\rkill*.txt +SnatchReportsToMalwareLogs=1 +RunInCMD=0 +SendEnter=0 +RunWithSystemAccess=0 +IsDLInstaller=0 +LogVerbiage=Ran Rogue Malware Scans (rkill) +32=1 +64=1 +XP=1 +Vista=1 +7=1 +8=1 +Servers=1 +NonDirectURLs=0 +AutoFlag=1 +LastDownload=8/13/2018 diff --git a/.bin/d7ii/Config/Email.Settings.dat b/.bin/d7ii/Config/Email.Settings.dat new file mode 100644 index 00000000..b18493d1 Binary files /dev/null and b/.bin/d7ii/Config/Email.Settings.dat differ diff --git a/.bin/d7ii/Config/FTP.Settings.dat b/.bin/d7ii/Config/FTP.Settings.dat new file mode 100644 index 00000000..c55d9e11 Binary files /dev/null and b/.bin/d7ii/Config/FTP.Settings.dat differ diff --git a/.bin/d7ii/Config/Folders.txt b/.bin/d7ii/Config/Folders.txt new file mode 100644 index 00000000..a0fa7ee6 --- /dev/null +++ b/.bin/d7ii/Config/Folders.txt @@ -0,0 +1 @@ +\\nas,\\nas diff --git a/.bin/d7ii/Config/IntFunctions/MBAM_Prefs.cfg b/.bin/d7ii/Config/IntFunctions/MBAM_Prefs.cfg new file mode 100644 index 00000000..245f6716 --- /dev/null +++ b/.bin/d7ii/Config/IntFunctions/MBAM_Prefs.cfg @@ -0,0 +1,5 @@ +[PostScan] +AlwaysUninstallFreeVer=0 +[PreScan] +AutoContinue=1 +AlwaysUninstallFreeVer=0 diff --git a/.bin/d7ii/Config/Links.txt b/.bin/d7ii/Config/Links.txt new file mode 100644 index 00000000..753bc8d2 --- /dev/null +++ b/.bin/d7ii/Config/Links.txt @@ -0,0 +1,17 @@ +SysInternals Live,http://live.sysinternals.com/ +Windows Services Reg Files (BleepingComputer.com),http://download.bleepingcomputer.com/win-services/ +Process Library (Search for information on a Process),http://www.processlibrary.com/en/ +DLL-files.com (Download Missing dll files),http://www.dll-files.com/ +PCI Vendor and Device Lists (Identify Unknown Devices),http://www.pcidatabase.com/ +Driver Guide (Download Missing Drivers),http://www.driverguide.com/ +Drivers for notebooks (Quick Access to various model's drivers),http://drp.su/drivers/notebooks/?l=en +RouterPasswords.com (Common Router Passwords),http://www.routerpasswords.com/ +Default Username and Password for Routers - All makes (irintech.com) ,http://www.irintech.com/x1/co/764/Default-Username-and- +Laptop Recovery Instructions (Details on Accessing Recovery Mode for laptops),http://www.mmpcsolutions.co.uk/recovery.php +Contact Tech Support Websites (provided by MALabs.com),http://www.malabs.com/services/tech_support.php +Support Details (Brief Browser/OS specs export via email/cvx/pdf) ,http://supportdetails.com/ +HeliDoc.net (Direct D/L links to MS Software),http://www.heidoc.net/joomla/technology-science/microsoft +My copy of Office did not come with a disk (via Microsoft),http://office.microsoft.com/en-gb/products/download-backup-restore-microsoft-office-products-FX103427465.aspx +Computer Repair Flowcharts (Common Repair Problems Flow Charts),http://www.similarsites.com/goto/fixingmycomputer.com?pos=5&s=10 +How to Download Windows 8.1 RTM Standalone Offline ISO for Clean Installation?,http://www.askvg.com/how-to-download-windows-8-1-rtm-standalone-offline-iso-for-clean-installation/ +Service Pack Center (via Microsoft),http://windows.microsoft.com/en-us/windows/service-packs-download diff --git a/.bin/d7ii/Config/OS Branding/OSBranding.ini b/.bin/d7ii/Config/OS Branding/OSBranding.ini new file mode 100644 index 00000000..b3f034a1 --- /dev/null +++ b/.bin/d7ii/Config/OS Branding/OSBranding.ini @@ -0,0 +1,12 @@ +[OSBranding] +AlwaysPrompt=0 +Mfgr=1201 Computers +Model=Custom +Phone=503-523-1012 +Hours=M-F 9am-7pm PST +URL=http://www.1201.com +[DesktopShortcut] +ShortcutURL=http://www.1201.com +ShortcutName=1201 Computers +ShortcutIcon=CompanyName.ico +UseIE=0 diff --git a/.bin/d7ii/Config/OS Branding/oeminfo.ini b/.bin/d7ii/Config/OS Branding/oeminfo.ini new file mode 100644 index 00000000..7930294f --- /dev/null +++ b/.bin/d7ii/Config/OS Branding/oeminfo.ini @@ -0,0 +1,3 @@ +[General] +Manufacturer=1201 Computers +Model=Custom diff --git a/.bin/d7ii/Config/Profiles/Default.cfg b/.bin/d7ii/Config/Profiles/Default.cfg new file mode 100644 index 00000000..ed1be24b --- /dev/null +++ b/.bin/d7ii/Config/Profiles/Default.cfg @@ -0,0 +1,1496 @@ +[QA_Defaults] +Item1=0 +Item2=1 +Item3=1 +Item4=1 +Item5=1 +Item6=1 +Item7=1 +Item8=1 +Item9=0 +Item10=0 +Item11=0 +Item12=1 +Item13=1 +Item14=1 +Item15=0 +Item16=0 +Item17=0 +Item18=0 +Item19=0 +Item20=0 +Item21=0 +[Tweaks_Defaults] +Item1=0 +Item2=0 +Item3=0 +Item4=0 +Item5=0 +Item6=1 +Item7=0 +Item8=0 +Item9=0 +Item10=1 +Item11=0 +Item12=0 +Item13=1 +Item14=0 +Item15=0 +Item16=0 +Item17=0 +Item18=0 +Item19=0 +Item20=0 +Item21=0 +Item22=0 +Item23=0 +Item24=0 +Item25=0 +Item26=0 +Item27=0 +Item28=0 +Item29=0 +Item30=0 +Item31=0 +Item32=0 +Item33=0 +Item34=0 +Item35=0 +Item36=0 +Item37=0 +Item38=0 +Item39=0 +Item40=0 +Item41=0 +Item42=0 +Item43=0 +Item44=0 +Item45=0 +Item46=0 +Item47=0 +Item48=0 +Item49=0 +Item50=0 +Item51=0 +Item52=0 +Item53=0 +Item54=0 +Item55=0 +Item56=0 +Item57=0 +Item58=1 +Item59=0 +Item60=0 +Item61=0 +[CustomizeInstall] +BrandOS=0 +DropShortcut=0 +CustomDNSApply=0 +CustomDNSName=(Select DNS Servers) +CustomDNS1= +CustomDNS2= +CustomHOSTS=0 +UPHClean=1 +CustomWinUpd=0 +UpdateFlash=1 +SetBrowserHomepage=0 +BrowserHomepage= +CPWhite=0 +dSS=0 +CPFree=0 +RunNiniteEarly=1 +PatchMyPC=0 +PatchMyPC (Auto)=0 +Unchecky (Install)=1 +[Maintenance] +Auslogics DD Portable=0 +AdwCleaner=0 +Autoruns=0 +CrowdInspect=0 +Neutron (Sync Time)=1 +Piriform CCleaner=0 +Piriform CCleaner (Auto)=1 +Piriform Defraggler=0 +Piriform Defraggler (Auto)=0 +Revo Uninstaller=0 +DelNTUninstDirs=1 +DefragStartupItems=1 +CustomMaint=0 +TimeZoneCheck=0 +MaintDelTemps=1 +MaintPurgeSysRest=1 +MaintEmptyBin=1 +MaintProcIdleTasks=1 +MaintTimeSync=0 +MaintShortcuts=1 +MaintIE8PerfFixit=0 +PageDefrag=1 +CreateRPAfterD7Auto=1 +MaintClearEventLogs=1 +DelIEBHOs=0 +DelIEToolbars=0 +RevoUninstaller=0 +ResetIEtoDefaults=1 +OrphanFinderPF=1 +DelTempInternet=1 +DelCookies=0 +DelHistory=0 +Prefetch=1 +AutoUninstall=1 +AutoUninstallUI=1 +CleanMgr=1 +JRT=0 +[OfflineDefaults] +PreMalwareScan=1 +MalwareScan=1 +DelTemps=1 +PurgeSysRest=1 +FixShell=1 +RemovePolicies=1 +KillRenameOps=1 +ResetHiddenVol=0 +CopyD7=1 +IFEOModifier=1 +[MalwareDefaults] +Safe Mode w/Net Mod=0 +KillZA Check=0 +Pre-MalwareScan=1 +dUninstaller (Auto)=1 +dUninstaller (UI)=0 +Purge System Restore=1 +Registry Hive Backup=1 +System Restore Point (pre)=1 +Find Moved Shortcuts=1 +Reset Hidden Volume=0 +Kill Rename Ops=1 +Fix File Associations=1 +Remove Policies=1 +Clear Proxy Settings=1 +Apply DHCP to All NICs=0 +Delete Temp Files=1 +Delete Temp Internet Files=1 +Delete History=0 +Delete Cookies=0 +Empty Recycle Bin=1 +MSSE/WD Quick Scan=1 +MSSE/WD Full Scan=0 +JRT=0 +McAfee Stinger=0 +McAfee Stinger (Silent)=1 +ComboFix=0 +ComboFix (Uninstall)=0 +HitmanPro=1 +AdwCleaner=0 +Autoruns=0 +Avast! aswMBR=0 +Bitdefender Rootkit Remover=0 +CrowdInspect=0 +Emsisoft a2cmd Full Scan=0 +Emsisoft a2cmd Update=0 +ESET Smart Installer=0 +GMER=0 +Kaspersky TDSSKiller=0 +Kaspersky TDSSKiller (Silent)=0 +MalwareBytes Anti-Rootkit=0 +Malwarebytes v2=1 +MBRCheck=0 +OTL=0 +rkill=0 +Rogue Killer=0 +Sophos Virus Removal Tool=0 +SuperAntiSpyware=0 +VipreRescueScanner=0 +MalwareScan=1 +Repair Permissions=0 +Reset Networking=1 +Repair Windows Update=1 +Repair WMI/WBEM/DCOM=1 +Repair Windows Firewall=1 +Reset Windows Firewall=1 +Repair System Restore=1 +Repair Security Center=1 +System Restore Point (post)=1 +Remove Safe Mode w/Net Mod=0 +KillEmAll=1 +Kill Explorer.exe=1 +RebootOnFinish=0 +MergeDefs=0 +MergeDefsDLOnly=1 +=0 +=1 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=1 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=1 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +[RepairDefaults] +RebootOnAutoFinish=0 +Default Start Menu LNKs=1 +Fix File Associations=1 +Rebuild Icon Cache=1 +Remove Policies=1 +Fix Device Manager=1 +Clear Print Spooler=1 +Windows Update Svcs=1 +WMI/WBEM/DCOM=1 +Security Center=1 +Windows Defender=1 +Safe Mode Services=1 +System Restore=1 +Installer Service=1 +VSS Service=1 +Repair Permissions=0 +Regsvr32 IE DLLs=0 +DISM RestoreHealth=0 +System File Checker=0 +Examine Hosts File=1 +Clear Proxy Settings=1 +Apply DHCP to All NICs=0 +Release / Renew IP=0 +Reset Network Interfaces=0 +Reset Winsock=0 +Repair Windows Firewall=1 +Reset Windows Firewall=1 +MS FixIT for Winsock=0 +Windows Repair AIO=0 +Windows Repair AIO (Auto)=0 +TCPOptimizer=0 +Microsoft FixIt Portable=0 +Microsoft FixIt Winsock (Auto)=0 +Microsoft FixIt Win Update (Auto)=0 +MS Office Config Analyzer Tool (Install)=0 +MS Office Config Analyzer Tool (Portable)=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +=0 +[AuditDefaults] +0=0 +1=1 +2=1 +3=1 +4=1 +5=0 +6=0 +Belarc Advisor (Install-Report)=0 +OpenHardwareMonitor=0 +Piriform Speccy=0 +BatteryInfoView=0 +BluescreenView=0 +AS SSD Benchmark=0 +CrystalDiskInfo=0 +SpaceSniffer=0 +MoveReportsToFTP=0 +CrowdInspect=0 +Autoruns=0 +[chkNinite] +0=1 +1=1 +2=1 +3=1 +4=1 +5=1 +6=0 +7=1 +[txtNinite] +0= +1= +[optNinite] +Cache=1 +[Maintenance3] +Auslogics DD Portable=0 +AdwCleaner=0 +JRT=0 +Autoruns=0 +~Email Alert=0 +CrowdInspect=0 +Neutron (Sync Time)=1 +Piriform CCleaner=0 +Piriform CCleaner (Auto)=1 +Piriform Defraggler=0 +Piriform Defraggler (Auto)=0 +Revo Uninstaller=0 +PatchMyPC=0 +PatchMyPC (Auto)=0 +Unchecky (Install)=0 +StartUpLite=0 +TCPOptimizer=0 +2=0 +28=0 +54=0 +59=0 +[NiniteApps] +.NET=0 +.NET 4=0 +.NET 4.5=0 +.NET 4.5.1=0 +.NET 4.5.2=0 +7-Zip=0 +Acrobat=0 +Ad-Aware=0 +AIM=0 +AIMP=0 +Air=0 +Audacity=0 +Auslogics=0 +Avast=0 +AVG=0 +Avira=0 +BitTorrent Sync=0 +CCCP=0 +CCleaner=0 +CDBurnerXP=0 +Chrome=0 +Citrix Receiver=0 +Classic Start=0 +CutePDF=0 +Defraggler=0 +Digsby=0 +Dropbox=0 +Eclipse=0 +eMule=0 +Essentials=0 +Evernote=0 +Everything=0 +FastStone=0 +FileZilla=0 +Firefox=0 +Firefox ESR=0 +Flash=0 +Flash (IE)=0 +foobar2000=0 +Foxit Reader=0 +GIMP=0 +Glary=0 +GOM=0 +Google Drive=0 +Google Earth=0 +Google Talk=0 +GoToMeeting=0 +Greenshot=0 +Hulu=0 +ImgBurn=0 +InfraRecorder=0 +Inkscape=0 +IrfanView=0 +iTunes=0 +Java=0 +Java 6=0 +Java 8=0 +Java x64=0 +Java x64 6=0 +Java x64 8=0 +JDK=0 +JDK 6=0 +JDK 8=0 +JDK x64=0 +JDK x64 8=0 +K-Lite Codecs=0 +K-Lite Codecs x64=0 +KeePass=0 +KeePass 2=0 +KMPlayer=0 +Launchy=0 +LibreOffice=0 +LogMeIn=0 +Malwarebytes=0 +MediaMonkey=0 +Messenger=0 +Mozy=0 +Notepad++=0 +NVDA=0 +Office=0 +OneDrive=0 +OpenOffice=0 +Opera=0 +Opera Chromium=0 +Paint.NET=0 +PDFCreator=0 +PeaZip=0 +Picasa=0 +Pidgin=0 +PuTTY=0 +Python=0 +qBittorrent=0 +QuickTime=0 +Reader=0 +RealVNC=0 +Recuva=0 +Revo=0 +Safari=0 +Shockwave=0 +Silverlight=0 +SkyDrive=0 +Skype=0 +Songbird=0 +Speccy=0 +Spotify=0 +Spybot=0 +Spybot 2=0 +Steam=0 +SugarSync=0 +SumatraPDF=0 +Super=0 +TeamViewer=0 +TeraCopy=0 +Thunderbird=0 +Thunderbird ESR=0 +Trillian=0 +TrueCrypt=0 +TweetDeck=0 +uTorrent=0 +VLC=0 +WebEx=0 +Winamp=0 +WinDirStat=0 +WinMerge=0 +WinRAR=0 +WinSCP=0 +XnView=0 +Yahoo!=0 +[Maintenance2] +Piriform CCleaner (Auto)=0 +Piriform Defraggler (Auto)=0 +PatchMyPC (Auto)=0 +Neutron (Sync Time)=0 +Sysinternals PageDefrag (XP)=0 +74=0 +0=0 +55=0 +53=0 +2=0 +JRT=0 +56=0 +[Maintenance1] +4=0 +1=0 +12=0 +13=0 +67=0 +16=0 +17=0 +57=0 +62=0 +63=0 +65=0 +66=0 +68=0 +33=0 +103=0 +[Offline1] +Emsisoft a2cmd Update (Offline)=1 +Emsisoft a2cmd Full Scan (Offline)=1 +McAfee Stinger (Silent-Offline)=0 +McAfee Stinger (Offline)=0 +MBRCheck (Offline)=0 +Emsisoft a2cmd Deep Scan (Offline)=0 +Autoruns (Verify and Log)=0 +Autoruns=0 +VipreRescueScanner (Deep Scan)=0 +[Malware1] +33=1 +1=1 +32=1 +6=1 +9=1 +10=1 +11=1 +18=1 +12=1 +13=1 +16=0 +17=0 +8=1 +7=0 +29=0 +2=0 +53=0 +34=0 +35=0 +41=1 +3=1 +[Malware2] +Emsisoft a2cmd Update=0 +Emsisoft a2cmd Full Scan=0 +34=1 +35=0 +McAfee Stinger (Silent)=0 +Kaspersky TDSSKiller (Silent)=1 +HitmanPro=1 +JRT=1 +0=0 +Sophos Virus Removal Tool=1 +McAfee Stinger=0 +VipreRescueScanner (Auto)=0 +VipreRescueScanner (Manual)=0 +Kaspersky TDSSKiller=0 +Autoruns=0 +herdProtect=0 +Should I Remove It=0 +Malwarebytes v2=0 +SuperAntiSpyware=0 +Emsisoft a2cmd - Update and Full Scan=0 +Emsisoft a2cmd Smart Scan=0 +Emsisoft a2cmd Deep Scan=1 +102=0 +Autoruns (Verify and Log)=0 +30=1 +rkill=1 +Piriform CCleaner (Auto)=1 +VipreRescueScanner (Quick Scan)=0 +VipreRescueScanner (Deep Scan)=0 +98=1 +Windows Repair AIO (Auto)=0 +WizardKit System Diagnostics=1 +1=1 +RKill (Auto)=1 +[Malware3] +ComboFix=0 +ComboFix (Uninstall)=0 +ESET Smart Installer=0 +VipreRescueScanner=0 +Sophos Virus Removal Tool=0 +Malwarebytes v2=0 +AdwCleaner=1 +19=0 +Rogue Killer=0 +GMER=0 +rkill=0 +StartUpLite=0 +Bitdefender Rootkit Remover=0 +MalwareBytes Anti-Rootkit=0 +Avast! aswMBR=0 +MBRCheck=0 +CrowdInspect=0 +OTL=0 +Everything Search Engine=0 +30=0 +102=0 +0=0 +SuperAntiSpyware=0 +28=0 +herdProtect=0 +HitmanPro (Manual)=0 +105=0 +Should I Remove It=0 +Autoruns=1 +53=0 +Google Chrome Software Removal Tool=0 +CurrPorts=0 +Opened Files View=0 +Malwarebytes v3 Install=1 +Malwarebytes v3 Run=1 +Malwarebytes v3 Uninstall=1 +Malwarebytes v3 Check=1 +AdwCleaner_Copy=1 +Malwarebytes Install=1 +Malwarebytes Scan=1 +Malwarebytes Uninstall=1 +AdwCleaner (Updated)=1 +IObit Uninstaller=1 +Install SW Bundle=1 +WizardKit User Checklist=1 +WizardKit System Checklist=1 +WizardKit Browser Reset=0 +Malwarebytes Download=1 +[Repair2] +49=0 +48=0 +50=0 +20=0 +22=0 +23=0 +24=0 +26=0 +27=0 +40=0 +41=0 +42=0 +43=0 +44=0 +45=0 +51=0 +52=0 +46=0 +47=0 +[Repair3] +11=0 +31=0 +21=0 +24=0 +25=0 +36=0 +37=0 +38=0 +73=0 +75=0 +76=0 +Microsoft FixIt Winsock (Auto)=0 +[Repair1] +Microsoft FixIt Portable=0 +Microsoft FixIt Win Update (Auto)=0 +Microsoft FixIt Winsock (Auto)=0 +39=0 +MS Office Config Analyzer Tool (Install)=0 +MS Office Config Analyzer Tool (Portable)=0 +Windows Repair AIO=0 +Windows Repair AIO (Auto)=0 +[Audit1] +0=0 +1=0 +2=0 +3=0 +4=0 +5=0 +6=0 +Autoruns=0 +CrowdInspect=0 +Belarc Advisor (Install-Report)=0 +OpenHardwareMonitor=0 +BatteryInfoView=0 +BluescreenView=0 +CrystalDiskInfo=0 +AS SSD Benchmark=0 +SpaceSniffer=0 +77=0 +78=0 +Should I Remove It=0 +7=0 +8=0 +CurrPorts=0 +Opened Files View=0 +Piriform Speccy=0 +USB Devices View=0 +[Audit2] +82=0 +83=0 +84=0 +85=0 +86=0 +87=0 +88=0 +89=0 +90=0 +91=0 +92=0 +93=0 +94=0 +95=0 +96=0 +97=0 +[Tweaks1] +Item1=0 +Item2=1 +Item3=0 +Item4=0 +Item5=0 +Item6=1 +Item7=0 +Item8=0 +Item9=0 +Item10=1 +Item11=0 +Item12=0 +Item13=1 +Item14=0 +Item15=1 +Item16=0 +Item17=0 +Item18=0 +Item19=0 +Item20=0 +Item21=0 +Item22=0 +Item23=0 +Item24=0 +Item25=0 +Item26=0 +Item27=0 +Item28=0 +Item29=0 +Item30=0 +Item31=0 +Item32=0 +Item33=0 +Item34=0 +Item35=0 +Item36=0 +Item37=0 +Item38=0 +Item39=0 +Item40=0 +Item41=0 +Item42=0 +Item43=0 +Item44=0 +Item45=0 +Item46=0 +Item47=0 +Item48=0 +Item49=0 +Item50=0 +Item51=0 +Item52=1 +Item53=0 +Item54=0 +Item55=0 +Item56=0 +Item57=0 +Item58=1 +Item59=0 +Item60=0 +Item61=0 +AdwCleaner=1 +[NiniteWorkstationInstall] +.NET=0 +.NET 4=0 +.NET 4.5=0 +.NET 4.5.1=0 +.NET 4.5.2=0 +7-Zip=0 +Acrobat=0 +Ad-Aware=0 +AIM=0 +AIMP=0 +Air=0 +Audacity=0 +Auslogics=0 +Avast=0 +AVG=0 +Avira=0 +BitTorrent Sync=0 +CCCP=0 +CCleaner=0 +CDBurnerXP=0 +Chrome=0 +Citrix Receiver=0 +Classic Start=0 +CutePDF=0 +Defraggler=0 +Digsby=0 +Dropbox=0 +Eclipse=0 +eMule=0 +Essentials=0 +Evernote=0 +Everything=0 +FastStone=0 +FileZilla=0 +Firefox=0 +Firefox ESR=0 +Flash=0 +Flash (IE)=0 +foobar2000=0 +Foxit Reader=0 +GIMP=0 +Glary=0 +GOM=0 +Google Drive=0 +Google Earth=0 +Google Talk=0 +GoToMeeting=0 +Greenshot=0 +Hulu=0 +ImgBurn=0 +InfraRecorder=0 +Inkscape=0 +IrfanView=0 +iTunes=0 +Java=0 +Java 6=0 +Java 8=0 +Java x64=0 +Java x64 6=0 +Java x64 8=0 +JDK=0 +JDK 6=0 +JDK 8=0 +JDK x64=0 +JDK x64 8=0 +K-Lite Codecs=0 +K-Lite Codecs x64=0 +KeePass=0 +KeePass 2=0 +KMPlayer=0 +Launchy=0 +LibreOffice=0 +LogMeIn=0 +Malwarebytes=0 +MediaMonkey=0 +Messenger=0 +Mozy=0 +Notepad++=0 +NVDA=0 +Office=0 +OneDrive=0 +OpenOffice=0 +Opera=0 +Opera Chromium=0 +Paint.NET=0 +PDFCreator=0 +PeaZip=0 +Picasa=0 +Pidgin=0 +PuTTY=0 +Python=0 +qBittorrent=0 +QuickTime=0 +Reader=0 +RealVNC=0 +Recuva=0 +Revo=0 +Safari=0 +Shockwave=0 +Silverlight=0 +SkyDrive=0 +Skype=0 +Songbird=0 +Speccy=0 +Spotify=0 +Spybot=0 +Spybot 2=0 +Steam=0 +SugarSync=0 +SumatraPDF=0 +Super=0 +TeamViewer=0 +TeraCopy=0 +Thunderbird=0 +Thunderbird ESR=0 +Trillian=0 +TrueCrypt=0 +TweetDeck=0 +uTorrent=0 +VLC=0 +WebEx=0 +Winamp=0 +WinDirStat=0 +WinMerge=0 +WinRAR=0 +WinSCP=0 +XnView=0 +Yahoo!=0 +[NiniteWorkstationUpdate] +.NET=0 +.NET 4=0 +.NET 4.5=0 +.NET 4.5.1=0 +.NET 4.5.2=0 +7-Zip=0 +Acrobat=0 +Ad-Aware=0 +AIM=0 +AIMP=0 +Air=0 +Audacity=0 +Auslogics=0 +Avast=0 +AVG=0 +Avira=0 +BitTorrent Sync=0 +CCCP=0 +CCleaner=0 +CDBurnerXP=0 +Chrome=0 +Citrix Receiver=0 +Classic Start=0 +CutePDF=0 +Defraggler=0 +Digsby=0 +Dropbox=0 +Eclipse=0 +eMule=0 +Essentials=0 +Evernote=0 +Everything=0 +FastStone=0 +FileZilla=0 +Firefox=0 +Firefox ESR=0 +Flash=0 +Flash (IE)=0 +foobar2000=0 +Foxit Reader=0 +GIMP=0 +Glary=0 +GOM=0 +Google Drive=0 +Google Earth=0 +Google Talk=0 +GoToMeeting=0 +Greenshot=0 +Hulu=0 +ImgBurn=0 +InfraRecorder=0 +Inkscape=0 +IrfanView=0 +iTunes=0 +Java=0 +Java 6=0 +Java 8=0 +Java x64=0 +Java x64 6=0 +Java x64 8=0 +JDK=0 +JDK 6=0 +JDK 8=0 +JDK x64=0 +JDK x64 8=0 +K-Lite Codecs=0 +K-Lite Codecs x64=0 +KeePass=0 +KeePass 2=0 +KMPlayer=0 +Launchy=0 +LibreOffice=0 +LogMeIn=0 +Malwarebytes=0 +MediaMonkey=0 +Messenger=0 +Mozy=0 +Notepad++=0 +NVDA=0 +Office=0 +OneDrive=0 +OpenOffice=0 +Opera=0 +Opera Chromium=0 +Paint.NET=0 +PDFCreator=0 +PeaZip=0 +Picasa=0 +Pidgin=0 +PuTTY=0 +Python=0 +qBittorrent=0 +QuickTime=0 +Reader=0 +RealVNC=0 +Recuva=0 +Revo=0 +Safari=0 +Shockwave=0 +Silverlight=0 +SkyDrive=0 +Skype=0 +Songbird=0 +Speccy=0 +Spotify=0 +Spybot=0 +Spybot 2=0 +Steam=0 +SugarSync=0 +SumatraPDF=0 +Super=0 +TeamViewer=0 +TeraCopy=0 +Thunderbird=0 +Thunderbird ESR=0 +Trillian=0 +TrueCrypt=0 +TweetDeck=0 +uTorrent=0 +VLC=0 +WebEx=0 +Winamp=0 +WinDirStat=0 +WinMerge=0 +WinRAR=0 +WinSCP=0 +XnView=0 +Yahoo!=0 +[NiniteServerInstall] +.NET=0 +.NET 4=0 +.NET 4.5=0 +.NET 4.5.1=0 +.NET 4.5.2=0 +7-Zip=0 +Acrobat=0 +Ad-Aware=0 +AIM=0 +AIMP=0 +Air=0 +Audacity=0 +Auslogics=0 +Avast=0 +AVG=0 +Avira=0 +BitTorrent Sync=0 +CCCP=0 +CCleaner=0 +CDBurnerXP=0 +Chrome=0 +Citrix Receiver=0 +Classic Start=0 +CutePDF=0 +Defraggler=0 +Digsby=0 +Dropbox=0 +Eclipse=0 +eMule=0 +Essentials=0 +Evernote=0 +Everything=0 +FastStone=0 +FileZilla=0 +Firefox=0 +Firefox ESR=0 +Flash=0 +Flash (IE)=0 +foobar2000=0 +Foxit Reader=0 +GIMP=0 +Glary=0 +GOM=0 +Google Drive=0 +Google Earth=0 +Google Talk=0 +GoToMeeting=0 +Greenshot=0 +Hulu=0 +ImgBurn=0 +InfraRecorder=0 +Inkscape=0 +IrfanView=0 +iTunes=0 +Java=0 +Java 6=0 +Java 8=0 +Java x64=0 +Java x64 6=0 +Java x64 8=0 +JDK=0 +JDK 6=0 +JDK 8=0 +JDK x64=0 +JDK x64 8=0 +K-Lite Codecs=0 +K-Lite Codecs x64=0 +KeePass=0 +KeePass 2=0 +KMPlayer=0 +Launchy=0 +LibreOffice=0 +LogMeIn=0 +Malwarebytes=0 +MediaMonkey=0 +Messenger=0 +Mozy=0 +Notepad++=0 +NVDA=0 +Office=0 +OneDrive=0 +OpenOffice=0 +Opera=0 +Opera Chromium=0 +Paint.NET=0 +PDFCreator=0 +PeaZip=0 +Picasa=0 +Pidgin=0 +PuTTY=0 +Python=0 +qBittorrent=0 +QuickTime=0 +Reader=0 +RealVNC=0 +Recuva=0 +Revo=0 +Safari=0 +Shockwave=0 +Silverlight=0 +SkyDrive=0 +Skype=0 +Songbird=0 +Speccy=0 +Spotify=0 +Spybot=0 +Spybot 2=0 +Steam=0 +SugarSync=0 +SumatraPDF=0 +Super=0 +TeamViewer=0 +TeraCopy=0 +Thunderbird=0 +Thunderbird ESR=0 +Trillian=0 +TrueCrypt=0 +TweetDeck=0 +uTorrent=0 +VLC=0 +WebEx=0 +Winamp=0 +WinDirStat=0 +WinMerge=0 +WinRAR=0 +WinSCP=0 +XnView=0 +Yahoo!=0 +[NiniteServerUpdate] +.NET=0 +.NET 4=0 +.NET 4.5=0 +.NET 4.5.1=0 +.NET 4.5.2=0 +7-Zip=0 +Acrobat=0 +Ad-Aware=0 +AIM=0 +AIMP=0 +Air=0 +Audacity=0 +Auslogics=0 +Avast=0 +AVG=0 +Avira=0 +BitTorrent Sync=0 +CCCP=0 +CCleaner=0 +CDBurnerXP=0 +Chrome=0 +Citrix Receiver=0 +Classic Start=0 +CutePDF=0 +Defraggler=0 +Digsby=0 +Dropbox=0 +Eclipse=0 +eMule=0 +Essentials=0 +Evernote=0 +Everything=0 +FastStone=0 +FileZilla=0 +Firefox=0 +Firefox ESR=0 +Flash=0 +Flash (IE)=0 +foobar2000=0 +Foxit Reader=0 +GIMP=0 +Glary=0 +GOM=0 +Google Drive=0 +Google Earth=0 +Google Talk=0 +GoToMeeting=0 +Greenshot=0 +Hulu=0 +ImgBurn=0 +InfraRecorder=0 +Inkscape=0 +IrfanView=0 +iTunes=0 +Java=0 +Java 6=0 +Java 8=0 +Java x64=0 +Java x64 6=0 +Java x64 8=0 +JDK=0 +JDK 6=0 +JDK 8=0 +JDK x64=0 +JDK x64 8=0 +K-Lite Codecs=0 +K-Lite Codecs x64=0 +KeePass=0 +KeePass 2=0 +KMPlayer=0 +Launchy=0 +LibreOffice=0 +LogMeIn=0 +Malwarebytes=0 +MediaMonkey=0 +Messenger=0 +Mozy=0 +Notepad++=0 +NVDA=0 +Office=0 +OneDrive=0 +OpenOffice=0 +Opera=0 +Opera Chromium=0 +Paint.NET=0 +PDFCreator=0 +PeaZip=0 +Picasa=0 +Pidgin=0 +PuTTY=0 +Python=0 +qBittorrent=0 +QuickTime=0 +Reader=0 +RealVNC=0 +Recuva=0 +Revo=0 +Safari=0 +Shockwave=0 +Silverlight=0 +SkyDrive=0 +Skype=0 +Songbird=0 +Speccy=0 +Spotify=0 +Spybot=0 +Spybot 2=0 +Steam=0 +SugarSync=0 +SumatraPDF=0 +Super=0 +TeamViewer=0 +TeraCopy=0 +Thunderbird=0 +Thunderbird ESR=0 +Trillian=0 +TrueCrypt=0 +TweetDeck=0 +uTorrent=0 +VLC=0 +WebEx=0 +Winamp=0 +WinDirStat=0 +WinMerge=0 +WinRAR=0 +WinSCP=0 +XnView=0 +Yahoo!=0 diff --git a/.bin/d7ii/Config/Profiles/Diagnose and Testing.cfg b/.bin/d7ii/Config/Profiles/Diagnose and Testing.cfg new file mode 100644 index 00000000..a3cbf757 --- /dev/null +++ b/.bin/d7ii/Config/Profiles/Diagnose and Testing.cfg @@ -0,0 +1,306 @@ +[Maintenance3] +2=0 +StartUpLite=0 +Autoruns=0 +AdwCleaner=0 +Revo Uninstaller=0 +PatchMyPC=0 +Piriform CCleaner=0 +Piriform Defraggler=0 +TCPOptimizer=0 +Unchecky (Install)=0 +28=0 +54=0 +59=0 +[Maintenance2] +JRT=0 +Piriform CCleaner (Auto)=0 +Piriform Defraggler (Auto)=0 +PatchMyPC (Auto)=0 +Neutron (Sync Time)=0 +Sysinternals PageDefrag (XP)=0 +74=0 +0=0 +55=0 +53=0 +56=0 +[Maintenance1] +4=0 +1=0 +12=0 +13=0 +67=0 +16=0 +17=0 +57=0 +62=0 +63=0 +65=0 +66=0 +68=0 +33=0 +103=0 +[Offline1] +McAfee Stinger (Silent-Offline)=0 +MBRCheck (Offline)=0 +Emsisoft a2cmd Deep Scan (Offline)=0 +Autoruns (Verify and Log)=0 +McAfee Stinger (Offline)=0 +Autoruns=0 +VipreRescueScanner (Deep Scan)=0 +[OfflineDefaults] +PreMalwareScan=1 +MalwareScan=1 +DelTemps=1 +PurgeSysRest=1 +FixShell=1 +RemovePolicies=1 +KillRenameOps=1 +ResetHiddenVol=0 +CopyD7=1 +IFEOModifier=1 +[Malware1] +41=0 +29=0 +33=0 +1=0 +32=0 +6=0 +9=0 +10=0 +11=0 +18=0 +12=0 +13=0 +16=0 +17=0 +8=0 +7=0 +53=0 +34=0 +35=0 +3=0 +[Malware2] +Kaspersky TDSSKiller (Silent)=0 +Emsisoft a2cmd - Update and Full Scan=0 +VipreRescueScanner (Auto)=0 +Sophos Virus Removal Tool=0 +McAfee Stinger (Silent)=0 +HitmanPro=0 +JRT=0 +Emsisoft a2cmd Smart Scan=0 +Emsisoft a2cmd Deep Scan=0 +McAfee Stinger=0 +VipreRescueScanner (Manual)=0 +Kaspersky TDSSKiller=0 +102=0 +0=0 +Autoruns=0 +herdProtect=0 +Should I Remove It=0 +Malwarebytes v2=0 +Autoruns (Verify and Log)=0 +34=0 +35=0 +30=0 +rkill=0 +Piriform CCleaner (Auto)=0 +VipreRescueScanner (Quick Scan)=0 +VipreRescueScanner (Deep Scan)=0 +98=0 +[Malware3] +102=0 +0=0 +ComboFix=0 +ComboFix (Uninstall)=0 +ESET Smart Installer=0 +Malwarebytes v2=0 +AdwCleaner=0 +19=0 +Rogue Killer=0 +GMER=0 +30=0 +SuperAntiSpyware=0 +Avast! aswMBR=0 +MBRCheck=0 +MalwareBytes Anti-Rootkit=0 +Bitdefender Rootkit Remover=0 +rkill=0 +OTL=0 +CrowdInspect=0 +Everything Search Engine=0 +28=0 +herdProtect=0 +HitmanPro (Manual)=0 +105=0 +Should I Remove It=0 +Autoruns=0 +53=0 +Google Chrome Software Removal Tool=0 +CurrPorts=0 +Opened Files View=0 +[MalwareDefaults] +KillEmAll=0 +Kill Explorer.exe=0 +RebootOnFinish=0 +[RepairDefaults] +RebootOnAutoFinish=0 +[Repair2] +49=0 +48=0 +50=0 +20=0 +22=0 +23=0 +24=0 +26=0 +27=0 +40=0 +41=0 +42=0 +43=0 +44=0 +45=0 +51=0 +52=0 +46=0 +47=0 +[Repair3] +11=0 +31=0 +21=0 +24=0 +25=0 +36=0 +37=0 +38=0 +Microsoft FixIt Winsock (Auto)=0 +75=0 +[Repair1] +Microsoft FixIt Portable=0 +Microsoft FixIt Win Update (Auto)=0 +Microsoft FixIt Winsock (Auto)=0 +39=0 +MS Office Config Analyzer Tool (Install)=0 +MS Office Config Analyzer Tool (Portable)=0 +Windows Repair AIO=0 +Windows Repair AIO (Auto)=0 +[Audit1] +0=0 +1=1 +2=1 +3=1 +4=1 +5=1 +6=1 +CrowdInspect=1 +Should I Remove It=1 +Autoruns=1 +Belarc Advisor (Install-Report)=1 +OpenHardwareMonitor=1 +BatteryInfoView=1 +BluescreenView=1 +CrystalDiskInfo=1 +AS SSD Benchmark=1 +SpaceSniffer=1 +77=1 +78=1 +7=1 +8=1 +CurrPorts=1 +Opened Files View=1 +Piriform Speccy=1 +USB Devices View=1 +[AuditDefaults] +MoveReportsToFTP=0 +[Audit2] +82=1 +83=1 +84=1 +85=1 +86=1 +87=1 +88=1 +89=1 +90=1 +91=1 +92=1 +93=1 +94=1 +95=1 +96=1 +97=1 +[Tweaks1] +Item1=0 +Item2=1 +Item3=0 +Item4=0 +Item5=0 +Item6=1 +Item7=0 +Item8=0 +Item9=0 +Item10=1 +Item11=0 +Item12=0 +Item13=1 +Item14=0 +Item15=1 +Item16=0 +Item17=0 +Item18=0 +Item19=0 +Item20=0 +Item21=0 +Item22=0 +Item23=0 +Item24=0 +Item25=0 +Item26=0 +Item27=0 +Item28=0 +Item29=0 +Item30=0 +Item31=0 +Item32=0 +Item33=0 +Item34=0 +Item35=0 +Item36=0 +Item37=0 +Item38=0 +Item39=0 +Item40=0 +Item41=0 +Item42=0 +Item43=0 +Item44=0 +Item45=0 +Item46=0 +Item47=0 +Item48=0 +Item49=0 +Item50=0 +Item51=0 +Item52=1 +Item53=0 +Item54=0 +Item55=0 +Item56=0 +Item57=0 +Item58=1 +Item59=0 +Item60=0 +Item61=0 +[chkNinite] +0=1 +1=1 +3=1 +4=1 +5=1 +6=0 +[txtNinite] +0= +1= +[optNinite] +Cache=1 diff --git a/.bin/d7ii/Config/Profiles/Full.cfg b/.bin/d7ii/Config/Profiles/Full.cfg new file mode 100644 index 00000000..76b89c5c --- /dev/null +++ b/.bin/d7ii/Config/Profiles/Full.cfg @@ -0,0 +1,830 @@ +[Maintenance3] +StartUpLite=1 +Autoruns=1 +AdwCleaner=1 +Revo Uninstaller=1 +PatchMyPC=1 +Piriform CCleaner=1 +Piriform Defraggler=0 +TCPOptimizer=1 +Unchecky (Install)=1 +2=1 +28=1 +54=1 +59=1 +[Maintenance2] +Piriform CCleaner (Auto)=1 +Piriform Defraggler (Auto)=1 +PatchMyPC (Auto)=1 +Neutron (Sync Time)=1 +Sysinternals PageDefrag (XP)=1 +74=0 +0=1 +55=1 +53=1 +2=1 +JRT=1 +56=1 +[Maintenance1] +4=1 +1=1 +12=1 +13=1 +67=1 +16=1 +17=1 +57=1 +62=1 +63=1 +65=1 +66=1 +68=1 +33=1 +103=1 +[Offline1] +Emsisoft a2cmd Update (Offline)=1 +Emsisoft a2cmd Full Scan (Offline)=1 +McAfee Stinger (Silent-Offline)=0 +McAfee Stinger (Offline)=0 +MBRCheck (Offline)=0 +Emsisoft a2cmd - Update and Offline Scan=1 +Emsisoft a2cmd Deep Scan (Offline)=0 +Autoruns (Verify and Log)=1 +Autoruns=0 +VipreRescueScanner (Deep Scan)=0 +[OfflineDefaults] +PreMalwareScan=1 +MalwareScan=1 +DelTemps=1 +PurgeSysRest=1 +FixShell=1 +RemovePolicies=1 +KillRenameOps=1 +ResetHiddenVol=0 +CopyD7=1 +IFEOModifier=1 +[Malware1] +33=1 +1=1 +32=1 +6=1 +9=1 +10=1 +11=1 +18=1 +12=1 +13=1 +16=1 +17=1 +8=1 +7=0 +41=1 +29=1 +53=1 +34=0 +35=1 +3=1 +[Malware2] +Emsisoft a2cmd Update=1 +Emsisoft a2cmd Full Scan=1 +34=0 +35=1 +McAfee Stinger (Silent)=1 +Kaspersky TDSSKiller (Silent)=1 +HitmanPro=1 +JRT=1 +Sophos Virus Removal Tool=1 +0=1 +VipreRescueScanner (Auto)=1 +Emsisoft a2cmd - Update and Full Scan=1 +Emsisoft a2cmd Smart Scan=0 +Emsisoft a2cmd Deep Scan=1 +McAfee Stinger=0 +VipreRescueScanner (Manual)=0 +Kaspersky TDSSKiller=0 +102=0 +Autoruns=1 +herdProtect=1 +Should I Remove It=1 +Malwarebytes v2=1 +Autoruns (Verify and Log)=1 +30=1 +98=1 +rkill=1 +VipreRescueScanner (Quick Scan)=0 +VipreRescueScanner (Deep Scan)=1 +Piriform CCleaner (Auto)=1 +[Malware3] +ComboFix=1 +ComboFix (Uninstall)=1 +ESET Smart Installer=1 +VipreRescueScanner=0 +Malwarebytes v2=1 +AdwCleaner=1 +19=1 +Rogue Killer=1 +GMER=0 +102=0 +0=0 +SuperAntiSpyware=1 +Avast! aswMBR=1 +MBRCheck=1 +MalwareBytes Anti-Rootkit=1 +Bitdefender Rootkit Remover=1 +rkill=1 +OTL=0 +CrowdInspect=0 +Everything Search Engine=1 +30=1 +28=1 +herdProtect=1 +Should I Remove It=1 +Autoruns=1 +Google Chrome Software Removal Tool=1 +HitmanPro (Manual)=1 +105=1 +53=1 +CurrPorts=1 +Opened Files View=1 +[MalwareDefaults] +KillEmAll=1 +Kill Explorer.exe=1 +RebootOnFinish=0 +[RepairDefaults] +RebootOnAutoFinish=0 +[Repair2] +49=1 +48=1 +50=1 +20=1 +22=1 +23=1 +24=1 +26=1 +27=1 +40=1 +41=1 +42=1 +43=1 +44=1 +45=1 +51=1 +52=1 +46=1 +47=0 +[Repair3] +11=1 +31=0 +21=1 +24=1 +25=1 +36=1 +37=1 +38=1 +Microsoft FixIt Winsock (Auto)=1 +75=0 +[Repair1] +Microsoft FixIt Portable=0 +Microsoft FixIt Win Update (Auto)=1 +Microsoft FixIt Winsock (Auto)=1 +39=0 +MS Office Config Analyzer Tool (Install)=0 +MS Office Config Analyzer Tool (Portable)=1 +Windows Repair AIO=0 +Windows Repair AIO (Auto)=1 +[Audit1] +0=1 +1=0 +2=1 +3=1 +4=1 +5=1 +6=1 +Autoruns=0 +CrowdInspect=0 +Belarc Advisor (Install-Report)=0 +OpenHardwareMonitor=0 +BatteryInfoView=0 +BluescreenView=0 +CrystalDiskInfo=0 +AS SSD Benchmark=0 +SpaceSniffer=0 +77=0 +78=0 +Should I Remove It=0 +7=1 +8=1 +CurrPorts=0 +Opened Files View=0 +Piriform Speccy=0 +USB Devices View=0 +[AuditDefaults] +MoveReportsToFTP=0 +[Audit2] +82=0 +83=0 +84=0 +85=0 +86=0 +87=0 +88=0 +89=0 +90=0 +91=0 +92=0 +93=0 +94=0 +95=0 +96=0 +97=0 +[Tweaks1] +Item1=0 +Item2=1 +Item3=0 +Item4=0 +Item5=0 +Item6=1 +Item7=0 +Item8=0 +Item9=0 +Item10=1 +Item11=0 +Item12=0 +Item13=1 +Item14=0 +Item15=1 +Item16=0 +Item17=0 +Item18=0 +Item19=0 +Item20=0 +Item21=0 +Item22=0 +Item23=0 +Item24=0 +Item25=0 +Item26=0 +Item27=0 +Item28=0 +Item29=0 +Item30=0 +Item31=0 +Item32=0 +Item33=0 +Item34=0 +Item35=0 +Item36=0 +Item37=0 +Item38=0 +Item39=0 +Item40=0 +Item41=0 +Item42=0 +Item43=0 +Item44=0 +Item45=0 +Item46=0 +Item47=0 +Item48=0 +Item49=0 +Item50=0 +Item51=0 +Item52=1 +Item53=0 +Item54=0 +Item55=0 +Item56=0 +Item57=0 +Item58=1 +Item59=0 +Item60=0 +Item61=0 +AdwCleaner=1 +[chkNinite] +0=1 +1=1 +3=1 +4=1 +5=1 +6=0 +[txtNinite] +0= +1= +[NiniteWorkstationInstall] +.NET=0 +.NET 4=0 +.NET 4.5=0 +.NET 4.5.1=0 +.NET 4.5.2=0 +7-Zip=0 +Acrobat=0 +Ad-Aware=0 +AIM=0 +AIMP=0 +Air=0 +Audacity=0 +Auslogics=0 +Avast=0 +AVG=0 +Avira=0 +BitTorrent Sync=0 +CCCP=0 +CCleaner=0 +CDBurnerXP=0 +Chrome=0 +Citrix Receiver=0 +Classic Start=0 +CutePDF=0 +Defraggler=0 +Digsby=0 +Dropbox=0 +Eclipse=0 +eMule=0 +Essentials=0 +Evernote=0 +Everything=0 +FastStone=0 +FileZilla=0 +Firefox=0 +Firefox ESR=0 +Flash=0 +Flash (IE)=0 +foobar2000=0 +Foxit Reader=0 +GIMP=0 +Glary=0 +GOM=0 +Google Drive=0 +Google Earth=0 +Google Talk=0 +GoToMeeting=0 +Greenshot=0 +Hulu=0 +ImgBurn=0 +InfraRecorder=0 +Inkscape=0 +IrfanView=0 +iTunes=0 +Java=0 +Java 6=0 +Java 8=0 +Java x64=0 +Java x64 6=0 +Java x64 8=0 +JDK=0 +JDK 6=0 +JDK 8=0 +JDK x64=0 +JDK x64 8=0 +K-Lite Codecs=0 +K-Lite Codecs x64=0 +KeePass=0 +KeePass 2=0 +KMPlayer=0 +Launchy=0 +LibreOffice=0 +LogMeIn=0 +Malwarebytes=0 +MediaMonkey=0 +Messenger=0 +Mozy=0 +Notepad++=0 +NVDA=0 +Office=0 +OneDrive=0 +OpenOffice=0 +Opera=0 +Opera Chromium=0 +Paint.NET=0 +PDFCreator=0 +PeaZip=0 +Picasa=0 +Pidgin=0 +PuTTY=0 +Python=0 +qBittorrent=0 +QuickTime=0 +Reader=0 +RealVNC=0 +Recuva=0 +Revo=0 +Safari=0 +Shockwave=0 +Silverlight=0 +SkyDrive=0 +Skype=0 +Songbird=0 +Speccy=0 +Spotify=0 +Spybot=0 +Spybot 2=0 +Steam=0 +SugarSync=0 +SumatraPDF=0 +Super=0 +TeamViewer=0 +TeraCopy=0 +Thunderbird=0 +Thunderbird ESR=0 +Trillian=0 +TrueCrypt=0 +TweetDeck=0 +uTorrent=0 +VLC=0 +WebEx=0 +Winamp=0 +WinDirStat=0 +WinMerge=0 +WinRAR=0 +WinSCP=0 +XnView=0 +Yahoo!=0 +[NiniteWorkstationUpdate] +.NET=0 +.NET 4=0 +.NET 4.5=0 +.NET 4.5.1=0 +.NET 4.5.2=0 +7-Zip=0 +Acrobat=0 +Ad-Aware=0 +AIM=0 +AIMP=0 +Air=0 +Audacity=0 +Auslogics=0 +Avast=0 +AVG=0 +Avira=0 +BitTorrent Sync=0 +CCCP=0 +CCleaner=0 +CDBurnerXP=0 +Chrome=0 +Citrix Receiver=0 +Classic Start=0 +CutePDF=0 +Defraggler=0 +Digsby=0 +Dropbox=0 +Eclipse=0 +eMule=0 +Essentials=0 +Evernote=0 +Everything=0 +FastStone=0 +FileZilla=0 +Firefox=0 +Firefox ESR=0 +Flash=0 +Flash (IE)=0 +foobar2000=0 +Foxit Reader=0 +GIMP=0 +Glary=0 +GOM=0 +Google Drive=0 +Google Earth=0 +Google Talk=0 +GoToMeeting=0 +Greenshot=0 +Hulu=0 +ImgBurn=0 +InfraRecorder=0 +Inkscape=0 +IrfanView=0 +iTunes=0 +Java=0 +Java 6=0 +Java 8=0 +Java x64=0 +Java x64 6=0 +Java x64 8=0 +JDK=0 +JDK 6=0 +JDK 8=0 +JDK x64=0 +JDK x64 8=0 +K-Lite Codecs=0 +K-Lite Codecs x64=0 +KeePass=0 +KeePass 2=0 +KMPlayer=0 +Launchy=0 +LibreOffice=0 +LogMeIn=0 +Malwarebytes=0 +MediaMonkey=0 +Messenger=0 +Mozy=0 +Notepad++=0 +NVDA=0 +Office=0 +OneDrive=0 +OpenOffice=0 +Opera=0 +Opera Chromium=0 +Paint.NET=0 +PDFCreator=0 +PeaZip=0 +Picasa=0 +Pidgin=0 +PuTTY=0 +Python=0 +qBittorrent=0 +QuickTime=0 +Reader=0 +RealVNC=0 +Recuva=0 +Revo=0 +Safari=0 +Shockwave=0 +Silverlight=0 +SkyDrive=0 +Skype=0 +Songbird=0 +Speccy=0 +Spotify=0 +Spybot=0 +Spybot 2=0 +Steam=0 +SugarSync=0 +SumatraPDF=0 +Super=0 +TeamViewer=0 +TeraCopy=0 +Thunderbird=0 +Thunderbird ESR=0 +Trillian=0 +TrueCrypt=0 +TweetDeck=0 +uTorrent=0 +VLC=0 +WebEx=0 +Winamp=0 +WinDirStat=0 +WinMerge=0 +WinRAR=0 +WinSCP=0 +XnView=0 +Yahoo!=0 +[NiniteServerInstall] +.NET=0 +.NET 4=0 +.NET 4.5=0 +.NET 4.5.1=0 +.NET 4.5.2=0 +7-Zip=0 +Acrobat=0 +Ad-Aware=0 +AIM=0 +AIMP=0 +Air=0 +Audacity=0 +Auslogics=0 +Avast=0 +AVG=0 +Avira=0 +BitTorrent Sync=0 +CCCP=0 +CCleaner=0 +CDBurnerXP=0 +Chrome=0 +Citrix Receiver=0 +Classic Start=0 +CutePDF=0 +Defraggler=0 +Digsby=0 +Dropbox=0 +Eclipse=0 +eMule=0 +Essentials=0 +Evernote=0 +Everything=0 +FastStone=0 +FileZilla=0 +Firefox=0 +Firefox ESR=0 +Flash=0 +Flash (IE)=0 +foobar2000=0 +Foxit Reader=0 +GIMP=0 +Glary=0 +GOM=0 +Google Drive=0 +Google Earth=0 +Google Talk=0 +GoToMeeting=0 +Greenshot=0 +Hulu=0 +ImgBurn=0 +InfraRecorder=0 +Inkscape=0 +IrfanView=0 +iTunes=0 +Java=0 +Java 6=0 +Java 8=0 +Java x64=0 +Java x64 6=0 +Java x64 8=0 +JDK=0 +JDK 6=0 +JDK 8=0 +JDK x64=0 +JDK x64 8=0 +K-Lite Codecs=0 +K-Lite Codecs x64=0 +KeePass=0 +KeePass 2=0 +KMPlayer=0 +Launchy=0 +LibreOffice=0 +LogMeIn=0 +Malwarebytes=0 +MediaMonkey=0 +Messenger=0 +Mozy=0 +Notepad++=0 +NVDA=0 +Office=0 +OneDrive=0 +OpenOffice=0 +Opera=0 +Opera Chromium=0 +Paint.NET=0 +PDFCreator=0 +PeaZip=0 +Picasa=0 +Pidgin=0 +PuTTY=0 +Python=0 +qBittorrent=0 +QuickTime=0 +Reader=0 +RealVNC=0 +Recuva=0 +Revo=0 +Safari=0 +Shockwave=0 +Silverlight=0 +SkyDrive=0 +Skype=0 +Songbird=0 +Speccy=0 +Spotify=0 +Spybot=0 +Spybot 2=0 +Steam=0 +SugarSync=0 +SumatraPDF=0 +Super=0 +TeamViewer=0 +TeraCopy=0 +Thunderbird=0 +Thunderbird ESR=0 +Trillian=0 +TrueCrypt=0 +TweetDeck=0 +uTorrent=0 +VLC=0 +WebEx=0 +Winamp=0 +WinDirStat=0 +WinMerge=0 +WinRAR=0 +WinSCP=0 +XnView=0 +Yahoo!=0 +[NiniteServerUpdate] +.NET=0 +.NET 4=0 +.NET 4.5=0 +.NET 4.5.1=0 +.NET 4.5.2=0 +7-Zip=0 +Acrobat=0 +Ad-Aware=0 +AIM=0 +AIMP=0 +Air=0 +Audacity=0 +Auslogics=0 +Avast=0 +AVG=0 +Avira=0 +BitTorrent Sync=0 +CCCP=0 +CCleaner=0 +CDBurnerXP=0 +Chrome=0 +Citrix Receiver=0 +Classic Start=0 +CutePDF=0 +Defraggler=0 +Digsby=0 +Dropbox=0 +Eclipse=0 +eMule=0 +Essentials=0 +Evernote=0 +Everything=0 +FastStone=0 +FileZilla=0 +Firefox=0 +Firefox ESR=0 +Flash=0 +Flash (IE)=0 +foobar2000=0 +Foxit Reader=0 +GIMP=0 +Glary=0 +GOM=0 +Google Drive=0 +Google Earth=0 +Google Talk=0 +GoToMeeting=0 +Greenshot=0 +Hulu=0 +ImgBurn=0 +InfraRecorder=0 +Inkscape=0 +IrfanView=0 +iTunes=0 +Java=0 +Java 6=0 +Java 8=0 +Java x64=0 +Java x64 6=0 +Java x64 8=0 +JDK=0 +JDK 6=0 +JDK 8=0 +JDK x64=0 +JDK x64 8=0 +K-Lite Codecs=0 +K-Lite Codecs x64=0 +KeePass=0 +KeePass 2=0 +KMPlayer=0 +Launchy=0 +LibreOffice=0 +LogMeIn=0 +Malwarebytes=0 +MediaMonkey=0 +Messenger=0 +Mozy=0 +Notepad++=0 +NVDA=0 +Office=0 +OneDrive=0 +OpenOffice=0 +Opera=0 +Opera Chromium=0 +Paint.NET=0 +PDFCreator=0 +PeaZip=0 +Picasa=0 +Pidgin=0 +PuTTY=0 +Python=0 +qBittorrent=0 +QuickTime=0 +Reader=0 +RealVNC=0 +Recuva=0 +Revo=0 +Safari=0 +Shockwave=0 +Silverlight=0 +SkyDrive=0 +Skype=0 +Songbird=0 +Speccy=0 +Spotify=0 +Spybot=0 +Spybot 2=0 +Steam=0 +SugarSync=0 +SumatraPDF=0 +Super=0 +TeamViewer=0 +TeraCopy=0 +Thunderbird=0 +Thunderbird ESR=0 +Trillian=0 +TrueCrypt=0 +TweetDeck=0 +uTorrent=0 +VLC=0 +WebEx=0 +Winamp=0 +WinDirStat=0 +WinMerge=0 +WinRAR=0 +WinSCP=0 +XnView=0 +Yahoo!=0 +[optNinite] +Cache=1 diff --git a/.bin/d7ii/Config/Profiles/Quick.cfg b/.bin/d7ii/Config/Profiles/Quick.cfg new file mode 100644 index 00000000..f6a8a2e0 --- /dev/null +++ b/.bin/d7ii/Config/Profiles/Quick.cfg @@ -0,0 +1,290 @@ +[Maintenance3] +2=0 +StartUpLite=1 +Autoruns=1 +AdwCleaner=1 +Revo Uninstaller=0 +PatchMyPC=0 +Piriform CCleaner=0 +Piriform Defraggler=0 +TCPOptimizer=0 +Unchecky (Install)=0 +28=1 +54=0 +59=0 +[Maintenance2] +JRT=1 +Piriform CCleaner (Auto)=1 +Piriform Defraggler (Auto)=0 +PatchMyPC (Auto)=1 +Neutron (Sync Time)=1 +Sysinternals PageDefrag (XP)=0 +74=0 +0=1 +55=1 +53=1 +56=1 +[Maintenance1] +4=1 +1=1 +12=1 +13=1 +67=1 +16=0 +17=0 +57=1 +62=1 +63=0 +65=1 +66=0 +68=1 +33=1 +103=1 +[Offline1] +Emsisoft a2cmd Deep Scan (Offline)=0 +VipreRescueScanner (Deep Scan)=0 +McAfee Stinger (Silent-Offline)=0 +McAfee Stinger (Offline)=0 +MBRCheck (Offline)=0 +Autoruns=0 +[OfflineDefaults] +PreMalwareScan=1 +MalwareScan=1 +DelTemps=1 +PurgeSysRest=1 +FixShell=1 +RemovePolicies=1 +KillRenameOps=1 +ResetHiddenVol=0 +CopyD7=1 +IFEOModifier=1 +[Malware1] +41=0 +29=0 +33=1 +1=1 +32=1 +6=1 +9=1 +10=1 +11=1 +18=1 +12=1 +13=1 +16=1 +17=0 +8=1 +7=0 +53=0 +3=1 +[Malware2] +34=1 +35=0 +Emsisoft a2cmd Smart Scan=1 +Emsisoft a2cmd Deep Scan=0 +Sophos Virus Removal Tool=0 +McAfee Stinger (Silent)=0 +McAfee Stinger=0 +VipreRescueScanner (Quick Scan)=1 +VipreRescueScanner (Deep Scan)=0 +30=0 +Kaspersky TDSSKiller (Silent)=1 +Kaspersky TDSSKiller=0 +HitmanPro=1 +JRT=1 +rkill=0 +102=0 +0=1 +Piriform CCleaner (Auto)=0 +98=0 +[Malware3] +ComboFix=0 +ComboFix (Uninstall)=0 +herdProtect=0 +ESET Smart Installer=0 +Malwarebytes v2=1 +SuperAntiSpyware=0 +AdwCleaner=1 +19=1 +Avast! aswMBR=0 +MBRCheck=0 +MalwareBytes Anti-Rootkit=1 +Bitdefender Rootkit Remover=0 +Rogue Killer=0 +GMER=0 +OTL=0 +CrowdInspect=0 +Should I Remove It=0 +Autoruns=1 +Everything Search Engine=0 +28=1 +Google Chrome Software Removal Tool=0 +HitmanPro (Manual)=0 +105=1 +53=0 +CurrPorts=0 +Opened Files View=0 +[MalwareDefaults] +KillEmAll=1 +Kill Explorer.exe=1 +RebootOnFinish=0 +[RepairDefaults] +RebootOnAutoFinish=0 +[Repair2] +49=0 +48=0 +50=0 +20=0 +22=1 +23=1 +24=1 +26=1 +27=1 +40=1 +41=1 +42=1 +43=1 +44=1 +45=1 +51=1 +52=1 +46=0 +47=0 +[Repair3] +11=1 +31=0 +21=1 +24=1 +25=0 +36=0 +37=1 +38=0 +Microsoft FixIt Winsock (Auto)=1 +75=0 +[Repair1] +Microsoft FixIt Portable=0 +Microsoft FixIt Win Update (Auto)=1 +MS Office Config Analyzer Tool (Install)=0 +MS Office Config Analyzer Tool (Portable)=0 +Windows Repair AIO=0 +Windows Repair AIO (Auto)=0 +[Audit1] +0=1 +1=0 +2=1 +3=1 +4=1 +5=1 +6=1 +CrowdInspect=0 +Should I Remove It=0 +Autoruns=0 +Belarc Advisor (Install-Report)=0 +OpenHardwareMonitor=0 +BatteryInfoView=0 +BluescreenView=0 +CrystalDiskInfo=0 +AS SSD Benchmark=0 +SpaceSniffer=0 +77=0 +78=0 +7=1 +8=1 +CurrPorts=0 +Opened Files View=0 +Piriform Speccy=0 +USB Devices View=0 +[AuditDefaults] +MoveReportsToFTP=0 +[Audit2] +82=0 +83=0 +84=0 +85=0 +86=0 +87=0 +88=0 +89=0 +90=0 +91=0 +92=0 +93=0 +94=0 +95=0 +96=0 +97=0 +[Tweaks1] +Item1=0 +Item2=1 +Item3=0 +Item4=0 +Item5=0 +Item6=1 +Item7=0 +Item8=0 +Item9=0 +Item10=1 +Item11=0 +Item12=0 +Item13=1 +Item14=0 +Item15=1 +Item16=0 +Item17=0 +Item18=0 +Item19=0 +Item20=0 +Item21=0 +Item22=0 +Item23=0 +Item24=0 +Item25=0 +Item26=0 +Item27=0 +Item28=0 +Item29=0 +Item30=0 +Item31=0 +Item32=0 +Item33=0 +Item34=0 +Item35=0 +Item36=0 +Item37=0 +Item38=0 +Item39=0 +Item40=0 +Item41=0 +Item42=0 +Item43=0 +Item44=0 +Item45=0 +Item46=0 +Item47=0 +Item48=0 +Item49=0 +Item50=0 +Item51=0 +Item52=1 +Item53=0 +Item54=0 +Item55=0 +Item56=0 +Item57=0 +Item58=1 +Item59=0 +Item60=0 +Item61=0 +AdwCleaner=1 +[chkNinite] +0=1 +1=1 +3=1 +4=1 +5=1 +6=0 +[txtNinite] +0= +1= +[optNinite] +Cache=1 diff --git a/.bin/d7ii/Config/Reg.Settings.dat b/.bin/d7ii/Config/Reg.Settings.dat new file mode 100644 index 00000000..c99d5622 Binary files /dev/null and b/.bin/d7ii/Config/Reg.Settings.dat differ diff --git a/.bin/d7ii/Config/RegLinks.txt b/.bin/d7ii/Config/RegLinks.txt new file mode 100644 index 00000000..8b322558 --- /dev/null +++ b/.bin/d7ii/Config/RegLinks.txt @@ -0,0 +1,2 @@ +WinNT Current Version,HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion +Open Optical Drive Filters,HKLM\SYSTEM\CurrentControlSet\Control\Class\{4D36E965-E325-11CE-BFC1-08002BE10318} diff --git a/.bin/d7ii/Config/SiteSearch.txt b/.bin/d7ii/Config/SiteSearch.txt new file mode 100644 index 00000000..93b8b2a0 --- /dev/null +++ b/.bin/d7ii/Config/SiteSearch.txt @@ -0,0 +1,5 @@ +google.com +foolishit.com +foolishtech.com +technibble.com +technet.microsoft.com diff --git a/.bin/d7ii/Config/SortOrder/AuditBox1.cfg b/.bin/d7ii/Config/SortOrder/AuditBox1.cfg new file mode 100644 index 00000000..1018d59c --- /dev/null +++ b/.bin/d7ii/Config/SortOrder/AuditBox1.cfg @@ -0,0 +1 @@ +CrowdInspect|Should I Remove It|Autoruns|Belarc Advisor (Install-Report)|OpenHardwareMonitor|BatteryInfoView|BluescreenView|CrystalDiskInfo|AS SSD Benchmark|SpaceSniffer|77|78|CurrPorts|Opened Files View|Piriform Speccy|USB Devices View| diff --git a/.bin/d7ii/Config/SortOrder/AuditBox2.cfg b/.bin/d7ii/Config/SortOrder/AuditBox2.cfg new file mode 100644 index 00000000..5b5d1cfd --- /dev/null +++ b/.bin/d7ii/Config/SortOrder/AuditBox2.cfg @@ -0,0 +1 @@ +82|83|84|85|86|87|88|89|90|91|92|93|94|95|96|97| diff --git a/.bin/d7ii/Config/SortOrder/CustomMaint b/.bin/d7ii/Config/SortOrder/CustomMaint new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/.bin/d7ii/Config/SortOrder/CustomMaint @@ -0,0 +1 @@ + diff --git a/.bin/d7ii/Config/SortOrder/CustomTools.cfg b/.bin/d7ii/Config/SortOrder/CustomTools.cfg new file mode 100644 index 00000000..a26b06c4 --- /dev/null +++ b/.bin/d7ii/Config/SortOrder/CustomTools.cfg @@ -0,0 +1 @@ +CurrPorts|Opened Files View|RegFromApp-x32|RegFromApp-x64|USB Devices View|WhatIsHang| diff --git a/.bin/d7ii/Config/SortOrder/MaintBox1.cfg b/.bin/d7ii/Config/SortOrder/MaintBox1.cfg new file mode 100644 index 00000000..7d8eb8d9 --- /dev/null +++ b/.bin/d7ii/Config/SortOrder/MaintBox1.cfg @@ -0,0 +1 @@ +4|33|1|12|13|103|67|16|17|57|62|63|65|66|68| diff --git a/.bin/d7ii/Config/SortOrder/MaintBox2.cfg b/.bin/d7ii/Config/SortOrder/MaintBox2.cfg new file mode 100644 index 00000000..caa7bfe8 --- /dev/null +++ b/.bin/d7ii/Config/SortOrder/MaintBox2.cfg @@ -0,0 +1 @@ +JRT|Piriform CCleaner (Auto)|Piriform Defraggler (Auto)|PatchMyPC (Auto)|Neutron (Sync Time)|Sysinternals PageDefrag (XP)|74|0|55|53|56| diff --git a/.bin/d7ii/Config/SortOrder/MaintBox3.cfg b/.bin/d7ii/Config/SortOrder/MaintBox3.cfg new file mode 100644 index 00000000..9e760e84 --- /dev/null +++ b/.bin/d7ii/Config/SortOrder/MaintBox3.cfg @@ -0,0 +1 @@ +2|StartUpLite|Autoruns|AdwCleaner|Revo Uninstaller|PatchMyPC|Piriform CCleaner|Piriform Defraggler|TCPOptimizer|Unchecky (Install)|54|59|28| diff --git a/.bin/d7ii/Config/SortOrder/MalwareBox1.cfg b/.bin/d7ii/Config/SortOrder/MalwareBox1.cfg new file mode 100644 index 00000000..4a075621 --- /dev/null +++ b/.bin/d7ii/Config/SortOrder/MalwareBox1.cfg @@ -0,0 +1 @@ +3|41|33|32|6|9|10|11|18|12|13|8| diff --git a/.bin/d7ii/Config/SortOrder/MalwareBox2.cfg b/.bin/d7ii/Config/SortOrder/MalwareBox2.cfg new file mode 100644 index 00000000..6e95d5ec --- /dev/null +++ b/.bin/d7ii/Config/SortOrder/MalwareBox2.cfg @@ -0,0 +1 @@ +RKill (Auto)|Kaspersky TDSSKiller (Silent)|WizardKit System Diagnostics|34|Emsisoft a2cmd Deep Scan|HitmanPro|1|98| diff --git a/.bin/d7ii/Config/SortOrder/MalwareBox3.cfg b/.bin/d7ii/Config/SortOrder/MalwareBox3.cfg new file mode 100644 index 00000000..75da8a9d --- /dev/null +++ b/.bin/d7ii/Config/SortOrder/MalwareBox3.cfg @@ -0,0 +1 @@ +Malwarebytes Download|Malwarebytes Install|Malwarebytes Scan|Malwarebytes Uninstall|AdwCleaner (Updated)|IObit Uninstaller|Install SW Bundle|WizardKit Browser Reset|WizardKit User Checklist|WizardKit System Checklist|Bitdefender Rootkit Remover| diff --git a/.bin/d7ii/Config/SortOrder/MalwarePost.cfg b/.bin/d7ii/Config/SortOrder/MalwarePost.cfg new file mode 100644 index 00000000..34fcac3c --- /dev/null +++ b/.bin/d7ii/Config/SortOrder/MalwarePost.cfg @@ -0,0 +1 @@ +~MalwareScan|~dUninstaller (UI)|~Repair Permissions|~Reset Networking|~Repair Windows Update|~Repair WMI/WBEM/DCOM|~Repair Windows Firewall|~Reset Windows Firewall|~Repair System Restore|~Repair Security Center|~System Restore Point (post) diff --git a/.bin/d7ii/Config/SortOrder/MalwarePre.cfg b/.bin/d7ii/Config/SortOrder/MalwarePre.cfg new file mode 100644 index 00000000..1cc83eea --- /dev/null +++ b/.bin/d7ii/Config/SortOrder/MalwarePre.cfg @@ -0,0 +1 @@ +||||||||||| diff --git a/.bin/d7ii/Config/SortOrder/OfflineBox1.cfg b/.bin/d7ii/Config/SortOrder/OfflineBox1.cfg new file mode 100644 index 00000000..08b6cb1e --- /dev/null +++ b/.bin/d7ii/Config/SortOrder/OfflineBox1.cfg @@ -0,0 +1 @@ +Emsisoft a2cmd Deep Scan (Offline)|VipreRescueScanner (Deep Scan)|McAfee Stinger (Silent-Offline)|McAfee Stinger (Offline)|MBRCheck (Offline)|Autoruns| diff --git a/.bin/d7ii/Config/SortOrder/RepairBox1.cfg b/.bin/d7ii/Config/SortOrder/RepairBox1.cfg new file mode 100644 index 00000000..92413abd --- /dev/null +++ b/.bin/d7ii/Config/SortOrder/RepairBox1.cfg @@ -0,0 +1 @@ +Microsoft FixIt Portable|Microsoft FixIt Win Update (Auto)|MS Office Config Analyzer Tool (Install)|MS Office Config Analyzer Tool (Portable)|Windows Repair AIO|Windows Repair AIO (Auto)| diff --git a/.bin/d7ii/Config/SortOrder/RepairBox2.cfg b/.bin/d7ii/Config/SortOrder/RepairBox2.cfg new file mode 100644 index 00000000..bfec48b6 --- /dev/null +++ b/.bin/d7ii/Config/SortOrder/RepairBox2.cfg @@ -0,0 +1 @@ +49|48|50|20|22|23|24|26|27|40|41|42|43|44|45|51|52|46|47| diff --git a/.bin/d7ii/Config/SortOrder/RepairBox3.cfg b/.bin/d7ii/Config/SortOrder/RepairBox3.cfg new file mode 100644 index 00000000..c7eb9173 --- /dev/null +++ b/.bin/d7ii/Config/SortOrder/RepairBox3.cfg @@ -0,0 +1 @@ +11|31|21|24|25|36|37|38|Microsoft FixIt Winsock (Auto)|75| diff --git a/.bin/d7ii/Config/SortOrder/RepairWin.cfg b/.bin/d7ii/Config/SortOrder/RepairWin.cfg new file mode 100644 index 00000000..0e54a358 --- /dev/null +++ b/.bin/d7ii/Config/SortOrder/RepairWin.cfg @@ -0,0 +1 @@ +~Default Start Menu LNKs|~Fix File Associations|~Rebuild Icon Cache|~Remove Policies|~Fix Device Manager|~Clear Print Spooler|~Windows Update Svcs|~WMI/WBEM/DCOM|~Security Center|~Windows Defender|~Safe Mode Services|~System Restore|~Installer Service|~VSS Service|~Repair Permissions|~Regsvr32 IE DLLs|~DISM RestoreHealth|~System File Checker diff --git a/.bin/d7ii/Config/SortOrder/TweaksBox1.cfg b/.bin/d7ii/Config/SortOrder/TweaksBox1.cfg new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/.bin/d7ii/Config/SortOrder/TweaksBox1.cfg @@ -0,0 +1 @@ + diff --git a/.bin/d7ii/Config/SortOrder/d7IIEndSession.cfg b/.bin/d7ii/Config/SortOrder/d7IIEndSession.cfg new file mode 100644 index 00000000..a4ac0d7f --- /dev/null +++ b/.bin/d7ii/Config/SortOrder/d7IIEndSession.cfg @@ -0,0 +1 @@ +28| diff --git a/.bin/d7ii/Config/SortOrder/d7IIStartSession.cfg b/.bin/d7ii/Config/SortOrder/d7IIStartSession.cfg new file mode 100644 index 00000000..a01867fc --- /dev/null +++ b/.bin/d7ii/Config/SortOrder/d7IIStartSession.cfg @@ -0,0 +1 @@ +32|Neutron (Sync Time)|28| diff --git a/.bin/d7ii/Config/SortOrder/d7IIStartup.cfg b/.bin/d7ii/Config/SortOrder/d7IIStartup.cfg new file mode 100644 index 00000000..a4ac0d7f --- /dev/null +++ b/.bin/d7ii/Config/SortOrder/d7IIStartup.cfg @@ -0,0 +1 @@ +28| diff --git a/.bin/d7ii/Config/Templates/Email/BreakFix Report.txt b/.bin/d7ii/Config/Templates/Email/BreakFix Report.txt new file mode 100644 index 00000000..2c8ebe2c --- /dev/null +++ b/.bin/d7ii/Config/Templates/Email/BreakFix Report.txt @@ -0,0 +1,21 @@ +{%name% / #%num% / %date% - Break/Fix Report}%name% / #%num% / %date% - Break/Fix Report + +Service Type: On-Site +Service Rate: $XX.XX/hr. +Service Start Time: XXXXXX +Service End Time: XXXXXX +Time Logged: X hours + +Service Type: Remote +Service Rate: $XX.XX/hr. (or use flat-rate) +Service Start Time: XXXXXX +Service End Time: XXXXXX +Time Logged: X hours + +Service Type: Shop Service +Service Rate: $XX.XX/hr. (or use flat-rate) +Service Start Time: XXXXXX +Service End Time: XXXXXX +Time Logged: X hours + +Total Time Logged: XX hours diff --git a/.bin/d7ii/Config/Templates/Email/Client Diagnostic Report.txt b/.bin/d7ii/Config/Templates/Email/Client Diagnostic Report.txt new file mode 100644 index 00000000..18105c0e --- /dev/null +++ b/.bin/d7ii/Config/Templates/Email/Client Diagnostic Report.txt @@ -0,0 +1,15 @@ +{%name% / #%num% / %date% - Break/Fix Report}%name% / #%num% / %date% - Diagnostics Completed + +We have finished looking at your computer and +need your authorization to make one or more changes. + +Please get in touch with us by: + +Phone: +Email: +Website: www.yourwebsite.com + +We won't continue working, until after you have +authorized us to do so. + +You can find our Terms of Service online www.yourterms.com diff --git a/.bin/d7ii/Config/Templates/Email/Contract Report.txt b/.bin/d7ii/Config/Templates/Email/Contract Report.txt new file mode 100644 index 00000000..dad8df64 --- /dev/null +++ b/.bin/d7ii/Config/Templates/Email/Contract Report.txt @@ -0,0 +1,20 @@ +{%name% / #%num% / %date% - Break/Fix Report}%name% / #%num% / %date% - Contract Report + +Service Type: On-Site +Service Start Time: XXXXXX +Service End Time: XXXXXX +Time Logged: X hours + +Service Type: Remote +Service Start Time: XXXXXX +Service End Time: XXXXXX +Time Logged: X hours + +Service Type: Shop Service +Service Start Time: XXXXXX +Service End Time: XXXXXX +Time Logged: X hours + +Total Time Logged: XX hours + +Additional Expenses: (list items here) diff --git a/.bin/d7ii/Config/Templates/Notes/Company Info.txt b/.bin/d7ii/Config/Templates/Notes/Company Info.txt new file mode 100644 index 00000000..04c34628 --- /dev/null +++ b/.bin/d7ii/Config/Templates/Notes/Company Info.txt @@ -0,0 +1,8 @@ +Company Name: +Address: +Address 2: +City: +State: +Zip: +Phone: +Email: diff --git a/.bin/d7ii/Config/Templates/Notes/Detected Infections.txt b/.bin/d7ii/Config/Templates/Notes/Detected Infections.txt new file mode 100644 index 00000000..5081178a --- /dev/null +++ b/.bin/d7ii/Config/Templates/Notes/Detected Infections.txt @@ -0,0 +1,6 @@ +Scans have detected threats on the computer: + +Malwarebytes: YES (optionally list the # and type of infections here) +Super-AntiSpyware: +HitmanPro: +*Add Your AV Product Here*: diff --git a/.bin/d7ii/Config/Templates/Notes/Equipment Received.txt b/.bin/d7ii/Config/Templates/Notes/Equipment Received.txt new file mode 100644 index 00000000..87200d41 --- /dev/null +++ b/.bin/d7ii/Config/Templates/Notes/Equipment Received.txt @@ -0,0 +1,12 @@ +PC Make/Model: +Type: (desktop, laptop, tablet, etc.) +OS Type: +Pwr Cable: +Mouse: +Keyboard: +WebCam: +ThumbDrive (size): YES (16gb) +OS Media: NO +Printer Make/Model: +Printer USB Cable/Pwr Cable: YES/YES +Other: diff --git a/.bin/d7ii/Config/Templates/Notes/User Info.txt b/.bin/d7ii/Config/Templates/Notes/User Info.txt new file mode 100644 index 00000000..1d9f905f --- /dev/null +++ b/.bin/d7ii/Config/Templates/Notes/User Info.txt @@ -0,0 +1,23 @@ +Primary Contact Name: +Title: +Address: +Address 2: +City: +State: +Zip: +Phone: +Email: +User Account: +Authorized Removal Of Password: YES + +Secondary Contact Name: +Title: +Address: +Address 2: +City: +State: +Zip: +Phone: +Email: +User Account: +Authorized Removal Of Password: NO diff --git a/.bin/d7ii/Config/Templates/Snippets/Diagnostics - Maintenance Needed.txt b/.bin/d7ii/Config/Templates/Snippets/Diagnostics - Maintenance Needed.txt new file mode 100644 index 00000000..511bf57b --- /dev/null +++ b/.bin/d7ii/Config/Templates/Snippets/Diagnostics - Maintenance Needed.txt @@ -0,0 +1,19 @@ +We have determined that your PC is not working as fast as it should be. +We can improve speeds, install updates, and fix your security. + +But first we need your permission, so please contact us by: + +Phone: +Email: +Website: www.yourwebsite.comn + +Did you know you can have us maintain your computer 24/7/365? +Take a look at our Maintenance Package here. +This package includes: + +Anti-Virus Software +Automatic Updates +Automated Maintenance +We Block Known Bad Websites +Keeps Junk Programs Off Your PC +Easy Access To Our Team Of Experts \ No newline at end of file diff --git a/.bin/d7ii/Config/Templates/Snippets/Diagnostics - PC Repair Needed.txt b/.bin/d7ii/Config/Templates/Snippets/Diagnostics - PC Repair Needed.txt new file mode 100644 index 00000000..d5d5e159 --- /dev/null +++ b/.bin/d7ii/Config/Templates/Snippets/Diagnostics - PC Repair Needed.txt @@ -0,0 +1,19 @@ +We have determined that your PC has significant problems. +We can repair all of the issues for you so that it's healthy again. + +But first we need your permission, so please contact us by: + +Phone: +Email: +Website: www.yourwebsite.comn + +Did you know you can have keep your computer running healthy 24/7/365? +Take a look at our Maintenance Package here. +This package includes: + +Anti-Virus Software +Automatic Updates +Automated Maintenance +We Block Known Bad Websites +Keeps Junk Programs Off Your PC +Easy Access To Our Team Of Experts \ No newline at end of file diff --git a/.bin/d7ii/Config/Templates/Snippets/Diagnostics - Virus Detected.txt b/.bin/d7ii/Config/Templates/Snippets/Diagnostics - Virus Detected.txt new file mode 100644 index 00000000..508d2a24 --- /dev/null +++ b/.bin/d7ii/Config/Templates/Snippets/Diagnostics - Virus Detected.txt @@ -0,0 +1,19 @@ +We have detected computer infections on your PC. +We can remove them and fix your computer so they don't come back. + +But first we need your permission, so please contact us by: + +Phone: +Email: +Website: www.yourwebsite.comn + +Did you know you can have us keep your computer free of Viruses 24/7/365? +Take a look at our Maintenance Package here. +This package includes: + +Anti-Virus Software +Automatic Updates +Automated Maintenance +We Block Known Bad Websites +Keeps Junk Programs Off Your PC +Easy Access To Our Team Of Experts \ No newline at end of file diff --git a/.bin/d7ii/Config/Templates/Snippets/Diagnostics Completed.txt b/.bin/d7ii/Config/Templates/Snippets/Diagnostics Completed.txt new file mode 100644 index 00000000..863af355 --- /dev/null +++ b/.bin/d7ii/Config/Templates/Snippets/Diagnostics Completed.txt @@ -0,0 +1,13 @@ +We have finished looking at your computer and +need your authorization to make one or more changes. + +Please get in touch with us by: + +Phone: +Email: +Website: www.yourwebsite.comn + +We won't continue working, until after you have +authorized us to do so. + +You can find our Terms of Service online here. diff --git a/.bin/d7ii/Config/Templates/Snippets/Invoice.txt b/.bin/d7ii/Config/Templates/Snippets/Invoice.txt new file mode 100644 index 00000000..5f7916a1 --- /dev/null +++ b/.bin/d7ii/Config/Templates/Snippets/Invoice.txt @@ -0,0 +1,35 @@ +Thank you for your business! +Please check us out online by visiting our website or check us out on: + +Facebook +Twitter +LinkedIn +Pintrest + +What did we do? We are glad you asked, take a look! + +Add Activity Logged or Alert Text +Add Activity Logged or Alert Text +Add Activity Logged or Alert Text + + +If you would like a more advanced log of work that was performed +please contact us by: + +Phone: +Email: +Website: www.yourwebsite.comn + +You can pay your bill online by going here. + +We will add a 5% late fee for each week your payment is late, +or the maximum allowable by law. +Payments not received within 30 days will be sent to collections. + +Our office is not a storage facility. All property not picked up +within 60 days shall become the property of *Your Business Name Here*. +You agree that *Your Business Name Here* shall retain ownership of +said property after 60 days notice of this Invoice, and release all rights of +ownership to *Your Business Name Here*, and hold +*Your Business Name Here* harmless for all claims, and damages in +conjunction with said property. \ No newline at end of file diff --git a/.bin/d7ii/Config/Templates/Snippets/Maintenance Completed.txt b/.bin/d7ii/Config/Templates/Snippets/Maintenance Completed.txt new file mode 100644 index 00000000..0222aa36 --- /dev/null +++ b/.bin/d7ii/Config/Templates/Snippets/Maintenance Completed.txt @@ -0,0 +1,25 @@ +Your computer is running better now that we have finished our maintenance. +You can pay your bill online by going here. + +It's not too late to upgrade your purchase to our Maintenance Package + +We are helping people keep their computers running fast, +and fully updated 24/7/365 with our Maintenance Package + +Why keep paying for the same service without getting +constant protection for nearly the same amount, per year! + +We want to help you save as much money through-out the year as +possible, and avoid the need for repetative costs. Pay once, +and be done! + +Now you can have us keep your computer running fast, and up-to-date 24/7/365! +Take a look at our Maintenance Package here. +This package includes: + +Anti-Virus Software +Automatic Updates +Automated Maintenance +We Block Known Bad Websites +Keeps Junk Programs Off Your PC +Easy Access To Our Team Of Experts diff --git a/.bin/d7ii/Config/Templates/Snippets/PC Repair Completed.txt b/.bin/d7ii/Config/Templates/Snippets/PC Repair Completed.txt new file mode 100644 index 00000000..9a2fbe31 --- /dev/null +++ b/.bin/d7ii/Config/Templates/Snippets/PC Repair Completed.txt @@ -0,0 +1,25 @@ +We have fixed all of the problems we were able to find on your PC. +You can pay your bill online by going here. + +It's not too late to upgrade your purchase to our Maintenance Package + +We are helping people keep their computers repaired, +and working healthy 24/7/365 with our Maintenance Package + +Why keep paying for the same service without getting +constant protection for nearly the same amount, per year! + +We want to help you save as much money through-out the year as +possible, and avoid the need for repetative costs. Pay once, +and be done! + +Now you can have us keep your computer healthy 24/7/365! +Take a look at our Maintenance Package here. +This package includes: + +Anti-Virus Software +Automatic Updates +Automated Maintenance +We Block Known Bad Websites +Keeps Junk Programs Off Your PC +Easy Access To Our Team Of Experts diff --git a/.bin/d7ii/Config/Templates/Snippets/Virus Removal Completed.txt b/.bin/d7ii/Config/Templates/Snippets/Virus Removal Completed.txt new file mode 100644 index 00000000..b1061d17 --- /dev/null +++ b/.bin/d7ii/Config/Templates/Snippets/Virus Removal Completed.txt @@ -0,0 +1,25 @@ +We have removed all of the detected computer infections on your PC. +You can pay your bill online by going here. + +It's not too late to upgrade your purchase to our Maintenance Package + +We are helping people keep their computers clean of Viruses, +and other nasty computer infections 24/7/365 with our Maintenance Package + +Why keep paying for the same service without getting +constant protection for nearly the same amount, per year! + +We want to help you save as much money through-out the year as +possible, and avoid the need for repetative costs. Pay once, +and be done! + +Now you can have us keep your computer free of Viruses 24/7/365! +Take a look at our Maintenance Package here. +This package includes: + +Anti-Virus Software +Automatic Updates +Automated Maintenance +We Block Known Bad Websites +Keeps Junk Programs Off Your PC +Easy Access To Our Team Of Experts diff --git a/.bin/d7ii/Config/d7II.ini b/.bin/d7ii/Config/d7II.ini new file mode 100644 index 00000000..c042bfed --- /dev/null +++ b/.bin/d7ii/Config/d7II.ini @@ -0,0 +1,162 @@ +[Reg] +EULA_Accepted=1 +RegTitle=(503) 523-1012 www.1201.com d7II +DisplayD7ver=1 +First_v4_Server_Contact=2/25/2015 1:12:37 AM +[3PTUpdateInfo] +LastDefaultProfileUpdate=4/6/2015 09:40 AM +LastDefaultProfileUpdateU=4/6/2015 9:40:27 AM +d7II_DefaultApps=4/6/2015 09:40 AM +d7II_DefaultAppsU=4/6/2015 9:40:27 AM +[CurrentVersions] +DefaultKetarin=10 +DefaultAppsConfig=58 +TestPack=1 +[Update] +VMTicker=Try d7II in a real environment for 1 month, Single Tech $19/mo. - cancel anytime or upgrade for a lower rate! +VMTickerURL=https://www.foolishit.com/d7ii/ +TickerForce=0 +LastDefUpdate=8/21/2015 3:03:18 PM +Ticker=ATTN: d7II has updated to d7x! Click for info! +TickerURL=https://www.foolishit.com/d7x/update/ +[d7II] +LastConfigConversionVer=3.6.87 +[Config] +Displayd7IINews=0 +DisplayPathInTitleBar=0 +OneNoteColorTabs=1 +HighlightTabs=1 +LongRectangleLogo=0 +AutoSizeLogo=0 +MainLogoName=1201Logo.bmp +ReportLogoName=CompanyReportLogo.bmp +AppIconName=Company.ico +dCloudLogoName=d7II_SFX_Mini.bmp +SFXMiniLogoName=d7II_SFX_Mini.bmp +HideCustomItemDetails=0 +HideCustomAppDetails=0 +NoClosePrompt=0 +EndSessionPromptToEnableAV=0 +NoScreenResPrompt=1 +AlwaysIncreaseLowRes=1 +DisableMSSE=0 +RestartSvcs=1 +StartupKill=0 +StartupShutdownPrevention=1 +d7IIDeskShortcut=1 +d7IIDeskShortcutFolder=0 +UseCrucialUKScanner=0 +UTCAdjustment=-8 +StartupCheckAV=1 +StoreLastd7IIRun=1 +ScreenLockSysTrayDefault=0 +FormatDateDayFirst=0 +StartupPriority=3 +StartupSystemPrompt=1 +ReplaceTaskMgr=1 +DropDesktopShortcut=0 +CustomHomePage=www.google.com +StartupDisableUAC=0 +ShutdownEnableUAC=2 +StartupToggleHiddenON=1 +StartupToggleHiddenOFF=1 +StartupToggleHiddenExtON=1 +StartupToggleHiddenExtOFF=0 +PreventSleep=1 +PreventScreenSaver=1 +StartupCheckTimeZone=1 +StartupLoadTab=Malware +d7IIUpdateCheck=2 +StartupCheckd7AutoUpdate=0 +SkipRevisionHistoryAfterUpdate=0 +StartupCheckActivation=0 +StartupInstShellExt=0 +StartupBrandOS=0 +UseD7ForGoogle=1 +NoD7inRunOnce=0 +MinimizeToTray2=0 +TimeZone=Pacific Standard Time +DisableAudibleAlerts=0 +DisableWANAddress=0 +CopyToOSLoc=\1201 +UseRecycleBin=0 +ScreenLockFile=http://www.CompanyName.com/LockScreen.html +d7IIDeskShortcutName=1201 - d7II +StartupLoadProfile=Default +MaxChainApps=1 +AutoGenTicketNumber=0 +DisplaydMZNews=1 +StartSessionInSafeMode=0 +EndSessionURL=http://www.CompanyName.com/WorkComplete.html +HideInternalFunctionDetails=0 +HideInternalFunctionIcons=0 +HideCustomAppIcons=0 +[ScheduledUpdate] +KetarinProfile=0 +DefaultApps=0 +[CustomFunctions] +D7StartupTab=1 +D7Startup=KillEmAll.pif +MapDrivesOnStartup=0 +RemoveMapDrivesOnClose=0 +[Reports] +PromptForName=0 +AutoGenInfoReport=0 +StoreLocation=\1201\d7II Reports\%date% +RemoteFormat=\%name%\%date%\%computername% +ReportsDirDeskShortcut=0 +ReportsDirDeskShortcutPath=\1201\d7II Reports +LogAllActions=1 +NoTimeStamp=0 +NoWorkCompleted=0 +ReportsDirDeskShortcutDesc=Copy of reports of work done on the system and the logs from various removal processes. +ReportsDirDeskShortcutName=1201 Reports +LogTechEmail=0 +[Cloud] +AutoCheckConfigUpdate=0 +AutoCheckDefUpdate=0 +AutoCheckUpdateRestart=0 +ConfigName=dMZ Configured +ConfigDate=4/6/2015 9:32:00 AM +DefsDate=8/21/2015 3:01:00 PM +[OS Customization] +BrowserHomepage=https://www.google.com +CustomDNS1=8.8.8.8 +CustomDNS2=8.8.4.4 +[CloseDefaults] +Email=0 +EmailReportsZipped=0 +HTMLEmailBody=1 +EmailBodyActLog=2 +MoveReports=0 +FTPStoreReports=0 +PasswordProtectedLaunch=0 +Cloud=0 +CloudDefs=0 +EmailTemplate=Contract Report +MoveReportsTod7IIDir=0 +DeleteLocalReportsDir=0 +EndSessionURL=0 +DefaultEmailRecipient=d7ii@CompanyName.com +DefaultEmailReplyTo=d7ii@CompanyName.com +[BoxLabels] +Audit1=Audit/Diagnose +Audit2=QA/Testing +Malware1=d7II Internal Automated +Malware2=Automated +Malware3=Manual +Repair1=External Tools +Repair2=Internal Windows Repair +Repair3=Networking Related +Maint1=d7II Internal Automated +Maint2=General Maintenance +Maint3=Manual Maintenance +[StartupDefaults] +MenuTimer=5 +CustomScript=0 +ServiceMode=0 +SystemMode=0 +Debug=0 +DisableRunOnce=0 +Normal=1 +MergeDefs=0 diff --git a/.bin/d7ii/Config/d7II_DefaultApps.INI b/.bin/d7ii/Config/d7II_DefaultApps.INI new file mode 100644 index 00000000..fdf663bd --- /dev/null +++ b/.bin/d7ii/Config/d7II_DefaultApps.INI @@ -0,0 +1,58 @@ +[URL] +lastactivityview=http://nirsoft.net/panel/lastactivityview.exe +erunt=http://www.derfisch.de/lars/erunt.zip +mbrcheck=http://ad13.geekstogo.com/MBRCheck.exe +desktopcmd=http://www.midiox.com/zip/dtcmd.zip +batteryinfoview=http://www.nirsoft.net/panel/batteryinfoview.exe +bluescreenview=http://www.nirsoft.net/panel/bluescreenview.exe +chromecookiesview=http://www.nirsoft.net/panel/chromecookiesview.exe +chromehistoryview=http://www.nirsoft.net/panel/chromehistoryview.exe +cports=http://www.nirsoft.net/utils/cports.zip +cports-x64=http://www.nirsoft.net/utils/cports-x64.zip +driverview=http://www.nirsoft.net/utils/driverview.zip +driverview-x64=http://www.nirsoft.net/utils/driverview-x64.zip +flashcookiesview=http://www.nirsoft.net/panel/flashcookiesview.exe +iehv=http://www.nirsoft.net/panel/iehv.exe +injecteddll=http://www.nirsoft.net/utils/injecteddll.zip +mailpv=http://www.nirsoft.net/panel/mailpv.exe +mzcv=http://www.nirsoft.net/panel/mzcv.exe +mozillahistoryview=http://www.nirsoft.net/panel/mozillahistoryview.exe +mylastsearch=http://www.nirsoft.net/panel/mylastsearch.exe +webbrowserpassview=http://nirsoft.net/panel/webbrowserpassview.exe +myuninst=http://www.nirsoft.net/panel/myuninst.exe +ntfslinksview=http://www.nirsoft.net/panel/ntfslinksview.exe +produkey=http://www.nirsoft.net/panel/produkey.exe +whatishang=http://www.nirsoft.net/panel/whatishang.exe +wirelesskeyview=http://www.nirsoft.net/toolsdownload/wirelesskeyview.zip +wirelesskeyview-x64=http://www.nirsoft.net/toolsdownload/wirelesskeyview-x64.zip +openhardwaremonitor=http://openhardwaremonitor.org/files/openhardwaremonitor-v0.3.2-beta.zip +otl=http://oldtimer.geekstogo.com/OTL.exe +ccleaner=http://www.piriform.com/ccleaner/download/portable/downloadfile +defraggler=http://www.piriform.com/defraggler/download/portable/downloadfile +recuva=http://www.piriform.com/recuva/download/portable/downloadfile +speccy=http://www.piriform.com/speccy/download/portable/downloadfile +revouninstaller=http://www.revouninstaller.com/download/revouninstaller.zip +spacesniffer=http://www.uderzo.it/main_products/space_sniffer/files/spacesniffer_1_1_4_0.zip +startuplite=http://www.malwarebytes.org/StartUpLite.exe +superantispyware=http://www.superantispyware.com/sasportable.php +autoruns=http://live.sysinternals.com/Files/Autoruns.zip +contig=http://live.sysinternals.com/Files/Contig.zip +dbgview=http://live.sysinternals.com/Files/DebugView.zip +junction=http://live.sysinternals.com/Files/Junction.zip +listdlls=http://live.sysinternals.com/Files/ListDlls.zip +pagedfrg=http://live.sysinternals.com/Files/PageDefrag.zip +procexp=http://live.sysinternals.com/Files/ProcessExplorer.zip +procmon=http://live.sysinternals.com/Files/ProcessMonitor.zip +psexec=http://live.sysinternals.com/psexec.exe +regdelnull=http://live.sysinternals.com/Files/Regdelnull.zip +sdelete=http://live.sysinternals.com/Files/SDelete.zip +sigcheck=http://live.sysinternals.com/Files/Sigcheck.zip +tcpoptimizer=http://www.speedguide.net/files/TCPOptimizer.exe +unstopcpy=http://www.roadkil.net/download.php?FileID=421&ProgramID=29 +MSIE8PerfFixIt=http://go.microsoft.com/?linkid=9726336 +MSWinUpdFixIt=http://go.microsoft.com/?linkid=9665683 +MSWinsockFixIt=http://go.microsoft.com/?linkid=9662461 +MSOfficeConfigAnalyzer=https://download.microsoft.com/download/5/F/D/5FD540BF-5AC6-4261-895F-676B38AA8406/OffCAT.msi +VTUploader=https://www.virustotal.com/static/bin/vtuploader2.0.exe +CrystalDiskInfo=http://jaist.dl.sourceforge.jp/crystaldiskinfo/54663/CrystalDiskInfo4_2_0a.zip +HDDScan=http://hddscan.com/download/HDDScan-3.3.zip diff --git a/.bin/d7ii/Config/d7II_SFX_Mini.ini b/.bin/d7ii/Config/d7II_SFX_Mini.ini new file mode 100644 index 00000000..caa4724a --- /dev/null +++ b/.bin/d7ii/Config/d7II_SFX_Mini.ini @@ -0,0 +1,11 @@ +[App] +Ver=3.0.0 +[dCloud] +FTPServer=gator3279.hostgator.com +UserName=d7ii@dsupportonline.com +Password==],6IH50_$Gua~> +ConfigDir=/Config +DefsDir=/Defs +TechPassword==],6IH50_$Gua~> +DefaultConfig=%prompt% +DefaultPath=%desktop% diff --git a/.bin/d7ii/Modules/Defs/dUninstaller.txt b/.bin/d7ii/Modules/Defs/dUninstaller.txt new file mode 100644 index 00000000..e69de29b diff --git a/.bin/d7ii/Modules/Defs/dUninstaller_FileSystemObjects.txt b/.bin/d7ii/Modules/Defs/dUninstaller_FileSystemObjects.txt new file mode 100644 index 00000000..e69de29b diff --git a/.bin/d7ii/Modules/Defs/dUninstaller_RegKeys.txt b/.bin/d7ii/Modules/Defs/dUninstaller_RegKeys.txt new file mode 100644 index 00000000..e69de29b diff --git a/.bin/d7ii/Modules/Defs/dUninstaller_RegValues.txt b/.bin/d7ii/Modules/Defs/dUninstaller_RegValues.txt new file mode 100644 index 00000000..e69de29b diff --git a/.bin/d7ii/Modules/Defs/dUninstaller_RunValues.txt b/.bin/d7ii/Modules/Defs/dUninstaller_RunValues.txt new file mode 100644 index 00000000..e69de29b diff --git a/.bin/d7ii/Modules/Defs/dUninstaller_StartMenuFolders.txt b/.bin/d7ii/Modules/Defs/dUninstaller_StartMenuFolders.txt new file mode 100644 index 00000000..e69de29b diff --git a/.bin/d7ii/Modules/Defs/dUninstaller_Whitelist.txt b/.bin/d7ii/Modules/Defs/dUninstaller_Whitelist.txt new file mode 100644 index 00000000..e69de29b diff --git a/.cbin/_include/ESETConfigs/eset-config-no-pup.xml b/.cbin/_include/ESETConfigs/eset-config-no-pup.xml new file mode 100644 index 00000000..ac4e010e --- /dev/null +++ b/.cbin/_include/ESETConfigs/eset-config-no-pup.xml @@ -0,0 +1,1668 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.cbin/_include/ESETConfigs/eset-config.xml b/.cbin/_include/ESETConfigs/eset-config.xml new file mode 100644 index 00000000..31804d40 --- /dev/null +++ b/.cbin/_include/ESETConfigs/eset-config.xml @@ -0,0 +1,1668 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/.cbin/_include/NotepadPlusPlus/config.xml b/.cbin/_include/NotepadPlusPlus/config.xml index c2dd100c..1975e9a7 100644 --- a/.cbin/_include/NotepadPlusPlus/config.xml +++ b/.cbin/_include/NotepadPlusPlus/config.xml @@ -4,8 +4,8 @@ standard - hide - + show + vertical hide @@ -18,7 +18,7 @@ no yes - + yes @@ -29,7 +29,7 @@ - hide + show @@ -37,10 +37,10 @@ - + yes - + diff --git a/.cbin/_include/ShutUp10/1201.cfg b/.cbin/_include/ShutUp10/1201.cfg new file mode 100644 index 00000000..d3d6c67e --- /dev/null +++ b/.cbin/_include/ShutUp10/1201.cfg @@ -0,0 +1,124 @@ +############################################################################ +# This file was created with O&O ShutUp10 and can be imported onto another computer. +# +# Download the application at https://www.oo-software.com/en/shutup10 +# You can then import the file from within the program. +# +# Alternatively you can import it automatically over a command line. Simply use +# the following parameter: +# ooshutup10.exe +# +# Selecting the Option /quiet ends the app right after the import and the user does not +# get any feedback about the import. +# +# We are always happy to answer any questions you may have! +# (c) 2015-2018 O&O Software GmbH, Berlin. https://www.oo-software.com/ +############################################################################ + +P001 + +P002 + +P003 + +P004 - +P005 + +P006 + +P008 + +P017 + +P026 + +P027 + +P028 - +P009 - +P010 - +P015 - +P016 - +P007 - +P025 - +P023 - +P012 - +P013 - +P019 - +P020 - +P011 - +P018 - +P021 - +P022 - +P014 - +P029 - +P030 - +P031 - +P032 - +P024 - +S001 - +S002 - +S003 + +S004 + +S005 + +S008 - +S009 - +S010 - +E001 + +E002 - +E003 - +E007 - +E004 - +E005 - +E006 - +Y001 - +Y002 - +Y003 - +Y004 - +Y005 - +Y006 - +Y007 - +C012 - +C002 - +C004 - +C005 - +C006 - +C007 - +C008 - +C009 - +C010 - +C011 - +L001 - +L002 - +L003 - +L004 - +L005 - +L006 - +L007 - +L008 - +U001 + +U002 + +U003 + +U004 + +W001 + +W002 + +W003 + +W011 - +W004 - +W005 - +W010 - +W009 - +W006 - +W007 - +W008 - +M006 + +M011 - +M010 + +O003 - +O001 - +S012 + +S013 + +S014 + +S011 - +K001 - +K002 + +M001 + +M002 + +M003 + +M004 + +M005 + +M012 - +M013 - +M014 - +N001 - diff --git a/.cbin/_include/_vcredists/InstallAll.bat b/.cbin/_include/_vcredists/InstallAll.bat index 597cd60e..5d935b34 100644 --- a/.cbin/_include/_vcredists/InstallAll.bat +++ b/.cbin/_include/_vcredists/InstallAll.bat @@ -1,9 +1,6 @@ @echo off setlocal -start "" /wait "2008sp1\x32\vcredist.exe" /qb! /norestart -start "" /wait "2008sp1\x64\vcredist.exe" /qb! /norestart - start "" /wait "2010\x32\vcredist.exe" /passive /norestart start "" /wait "2010\x64\vcredist.exe" /passive /norestart @@ -19,4 +16,4 @@ start "" /wait "2015u3\x64\vcredist.exe" /install /passive /norestart start "" /wait "2017\x32\vcredist.exe" /install /passive /norestart start "" /wait "2017\x64\vcredist.exe" /install /passive /norestart -endlocal \ No newline at end of file +endlocal diff --git a/.linux_items/.gitignore b/.linux_items/.gitignore deleted file mode 100644 index 5495eced..00000000 --- a/.linux_items/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -wk_tmp -wk-repo diff --git a/.linux_items/authorized_keys b/.linux_items/authorized_keys new file mode 100644 index 00000000..be79388e --- /dev/null +++ b/.linux_items/authorized_keys @@ -0,0 +1 @@ +#Put SSH keys here diff --git a/.linux_items/include/EFI/boot/icons/1201_eset.png b/.linux_items/include/EFI/boot/icons/1201_eset.png new file mode 100644 index 00000000..5f41417f Binary files /dev/null and b/.linux_items/include/EFI/boot/icons/1201_eset.png differ diff --git a/.linux_items/include/EFI/boot/icons/1201_hdclone.png b/.linux_items/include/EFI/boot/icons/1201_hdclone.png new file mode 100644 index 00000000..997ffe5d Binary files /dev/null and b/.linux_items/include/EFI/boot/icons/1201_hdclone.png differ diff --git a/.linux_items/include/EFI/boot/icons/1201_mac-dgpu.png b/.linux_items/include/EFI/boot/icons/1201_mac-dgpu.png new file mode 100644 index 00000000..e9770abd Binary files /dev/null and b/.linux_items/include/EFI/boot/icons/1201_mac-dgpu.png differ diff --git a/.linux_items/include/EFI/boot/refind.conf b/.linux_items/include/EFI/boot/refind.conf index 075f6e46..de5f4318 100644 --- a/.linux_items/include/EFI/boot/refind.conf +++ b/.linux_items/include/EFI/boot/refind.conf @@ -22,7 +22,8 @@ menuentry "MemTest86" { menuentry "Linux" { icon /EFI/boot/icons/wk_arch.png loader /arch/boot/x86_64/vmlinuz - initrd /arch/boot/intel_ucode.img + initrd /arch/boot/intel_ucode.img + initrd /arch/boot/amd_ucode.img initrd /arch/boot/x86_64/archiso.img options "archisobasedir=arch archisolabel=%ARCHISO_LABEL% quiet copytoram loglevel=3" submenuentry "Linux (i3)" { @@ -32,8 +33,23 @@ menuentry "Linux" { add_options "nox" } } -menuentry "WindowsPE" { - ostype windows - icon /EFI/boot/icons/wk_win.png - loader /EFI/microsoft/bootx64.efi -} +#UFD#menuentry "WindowsPE" { +#UFD# ostype windows +#UFD# icon /EFI/boot/icons/wk_win.png +#UFD# loader /EFI/microsoft/bootx64.efi +#UFD#} +#UFD#menuentry "ESET SysRescue Live" { +#UFD# icon /EFI/boot/icons/1201_eset.png +#UFD# loader /EFI/ESET/grubx64.efi +#UFD#} +#UFD#menuentry "HDClone" { +#UFD# icon /EFI/boot/icons/1201_hdclone.png +#UFD# loader /EFI/HDClone/grub.efi +#UFD#} +#UFD#menuentry "Mac dGPU Disable Tool" { +#UFD# icon /EFI/boot/icons/1201_mac-dgpu.png +#UFD# loader /dgpu/boot/x86_64/vmlinuz +#UFD# initrd /dgpu/boot/intel_ucode.img +#UFD# initrd /dgpu/boot/x86_64/archiso.img +#UFD# options "archisobasedir=dgpu archisolabel=1201_UFD nomodeset" +#UFD#} diff --git a/.linux_items/include/airootfs/etc/ca-certificates/trust-source/anchors/1201_Root_CA.crt b/.linux_items/include/airootfs/etc/ca-certificates/trust-source/anchors/1201_Root_CA.crt new file mode 100644 index 00000000..7d8ae206 --- /dev/null +++ b/.linux_items/include/airootfs/etc/ca-certificates/trust-source/anchors/1201_Root_CA.crt @@ -0,0 +1,36 @@ +-----BEGIN CERTIFICATE----- +MIIGTzCCBDegAwIBAgIBfDANBgkqhkiG9w0BAQsFADCBsDELMAkGA1UEBhMCVVMx +DzANBgNVBAgTBk9yZWdvbjERMA8GA1UEBxMIUG9ydGxhbmQxHTAbBgNVBAoTFDEy +MDEgQ29tcHV0ZXIgUmVwYWlyMSMwIQYDVQQLExoxMjAxIENlcnRpZmljYXRlIEF1 +dGhvcml0eTEVMBMGA1UEAxMMMTIwMSBSb290IENBMSIwIAYJKoZIhvcNAQkBFhNt +YW5hZ2VtZW50QDEyMDEuY29tMB4XDTE4MDgyMDA2MDEwMFoXDTM4MDgyMDA2MDEw +MFowgbAxCzAJBgNVBAYTAlVTMQ8wDQYDVQQIEwZPcmVnb24xETAPBgNVBAcTCFBv +cnRsYW5kMR0wGwYDVQQKExQxMjAxIENvbXB1dGVyIFJlcGFpcjEjMCEGA1UECxMa +MTIwMSBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkxFTATBgNVBAMTDDEyMDEgUm9vdCBD +QTEiMCAGCSqGSIb3DQEJARYTbWFuYWdlbWVudEAxMjAxLmNvbTCCAiIwDQYJKoZI +hvcNAQEBBQADggIPADCCAgoCggIBANGYohJk5/CC/p14R7EpnhdEUF7Wvlnt8yuF +dtuyStlIGkLxPMlj9hQfoLDplQqlKBefTaI3WwrI/Hndso+jStLKgtRWRdyNB34K +AWqT04zXYGicdi3fqaMhEC4SPyX1tRXU2e9kjtIJ21AZx2F40NUjfOMKLVymZgXm +gkG1oA/BSzE8vIidrd/lJPwo0u+EYFa87y+9SHS93Ze1AVoTVqUzSMkjqt+6YIzJ +4XBD7UBvps0Mnd18HMUlXHFXusUL1K921W3wDVcMlNIIA8MJjQk+aVS/1EGSn+81 +C+r40x64lYkyh0ZUAHkVXUC/BUfa0SKx1Nfa4mSvtyPnUCb7Dir8MkTDKgopGCok +KmW+VvE2H8AEPCbcctFmhdip19laYxzyDhZ5wiQN6AOg64cWvDf6/uT9hyPvxkj1 +ps5vWElryzawTE7h1BI8liMqwsG1Y7cc6D0PABxPsp4iR8pde0oZtpLnEvejRodo +zz3BGvZjq+pHtRMjL+yiDtdAL+K+7/e7gNCQBIGsphahWIOf7TczWVgMNclTNxl3 +WZjKkOEs7j+prRTDvffV6H32+Tk5TwgMsfvnY4a37CkJ0L0d1JhWj9wO+gESfg3W +8yvt3hfcj3NOUMJWhJstqlIeX8dj7vVcMhjNvYJxabJmJgk+DNlHe55fXDGJ1CLO +E0EbRTyBAgMBAAGjcjBwMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFM+hXjFx +6BldZFBQW1Pn/Yp3vbw+MAsGA1UdDwQEAwIBBjARBglghkgBhvhCAQEEBAMCAAcw +HgYJYIZIAYb4QgENBBEWD3hjYSBjZXJ0aWZpY2F0ZTANBgkqhkiG9w0BAQsFAAOC +AgEALWcnu3auMSnSSF/kOiLvJ4RAnHZebGYNcUWM14u1K1/XtTB7AFzQIHX7BcDH +m/z4UEyhl9EdR5Bgf2Szuk+8+LyGqcdAdbPoK+bmcwwL8lufDnlIYBThKIBfU2Xw +vw41972B+HH5r1TZXve1EdJaLyImbxmq5s41oH7djGC+sowtyGuVqP7RBguXBGiJ +At1yfdPWVaxLmE8QFknkIvpgTmELpxasTfvgnQBenA3Ts0Z2hwN4796hLbRzGsb8 +4hKWAfQDP0klzXKRRyVeAueXxj/FcNZilYxv15MqMc4qrUiW0hXHluQM1yceNjNZ +SE4Igi1Ap71L4PpgkHIDfZD908UexGGkql+p4EWrpnXUYWTa0sHg1bFKQntgpyFg +86Ug0Q7ZNhImENzeigZknL0ceIdaNUCs7UPrkqpUSJR2yujp1JC3tX1LgKZw8B3J +fQx/8h3zzNuz5dVtr1wUJaUD0nGhMIRBEXb2t4jupEISSTN1pkHPcbNzhAQXjVUA +CJxnnz3jmyGsNCoQf7NWfaN6RSRTWehsC6m7JvPvoU2EZoQkSlNOv4xZuFpEx0u7 +MFDtC1cSGPH7YwYXPVc45xAMC6Ni8mvq93oT89XZNHIqE8/T8aPHLwYFgu1b1r/A +L8oMEnG5s8tG3n0DcFoOYsaIzVeP0r7B7e3zKui6DQLuu9E= +-----END CERTIFICATE----- diff --git a/.linux_items/include/airootfs/etc/oblogout.conf b/.linux_items/include/airootfs/etc/oblogout.conf index 4595c766..ea5606ef 100644 --- a/.linux_items/include/airootfs/etc/oblogout.conf +++ b/.linux_items/include/airootfs/etc/oblogout.conf @@ -15,6 +15,6 @@ restart = R logout = L [commands] -shutdown = systemctl poweroff -restart = systemctl reboot -logout = openbox --exit +shutdown = /usr/local/bin/wk-power-command poweroff +restart = /usr/local/bin/wk-power-command reboot +logout = /usr/local/bin/wk-power-command logout diff --git a/.linux_items/include/airootfs/etc/pydfrc b/.linux_items/include/airootfs/etc/pydfrc new file mode 100644 index 00000000..100b1f05 --- /dev/null +++ b/.linux_items/include/airootfs/etc/pydfrc @@ -0,0 +1,24 @@ +normal_colour = 'default' +header_colour = 'blue' +local_fs_colour = 'default' +remote_fs_colour = 'green' +special_fs_colour = 'yellow' +readonly_fs_colour = 'cyan' +filled_fs_colour = 'red' +full_fs_colour = 'on_red', 'green', 'blink' +sizeformat = "-h" +column_separator = ' ' +column_separator_colour = 'none' +stretch_screen = 0.3 +FILL_THRESH = 75.0 +FULL_THRESH = 85.0 +format = [ + ('fs', 10, "l"), ('size', 5, "r"), + ('used', 5, "r"), ('avail', 5, "r"), ('perc', 5, "r"), + ('bar', 0.1, "l"), ('on', 11, "l") + ] +barchar = '#' +bar_fillchar = '.' +hidebinds = True +mountfile = ['/etc/mtab', '/etc/mnttab', '/proc/mounts'] + diff --git a/.linux_items/include/airootfs/etc/skel/.Xresources b/.linux_items/include/airootfs/etc/skel/.Xresources index 68054af5..d659b735 100755 --- a/.linux_items/include/airootfs/etc/skel/.Xresources +++ b/.linux_items/include/airootfs/etc/skel/.Xresources @@ -21,7 +21,7 @@ URxvt*externalBorder: 0 !URxvt.colorIT: #87af5f !URxvt.colorBD: #c5c8c6 !URxvt.colorUL: #87afd7 -URxvt.geometry: 92x16 +URxvt.geometry: 92x16 URxvt.internalBorder: 8 URxvt.shading: 10 URxvt.transparent: true @@ -53,6 +53,7 @@ URxvt.transparent: true *.color15: #ffffff ! fonts +!Xft.dpi: 192 Xft.autohint: 0 Xft.antialias: 1 Xft.hinting: true diff --git a/.linux_items/include/airootfs/etc/skel/.aliases b/.linux_items/include/airootfs/etc/skel/.aliases index d20b59b3..d6486258 100644 --- a/.linux_items/include/airootfs/etc/skel/.aliases +++ b/.linux_items/include/airootfs/etc/skel/.aliases @@ -4,17 +4,17 @@ alias 7z3='7z a -t7z -mx=3' alias 7z5='7z a -t7z -mx=5' alias 7z7='7z a -t7z -mx=7' alias 7z9='7z a -t7z -mx=9' +alias ddrescue='sudo ddrescue --ask --min-read-rate=64k -vvvv' alias diff='colordiff -ur' alias du='du -sch --apparent-size' alias fix-perms='find -type d -exec chmod 755 "{}" \; && find -type f -exec chmod 644 "{}" \;' +alias hexedit='hexedit --color' alias hw-info='sudo hw-info | less -S' -alias inxi='echo -e "\e[33mWARNING: inxi is being replaced and will be removed in a future WizardKit release\e[0m"; echo -e " \e[32mReplacements include:\e[0m 'hw-drive-info', 'hw-info', & 'hw-sensors'"; echo ""; inxi' alias less='less -S' alias ls='ls --color=auto' alias mkdir='mkdir -p' alias mount='sudo mount' alias mv='mv -nv' -alias pacinit='sudo sed -i -r "s/^SigLevel.*/SigLevel = Never/" /etc/pacman.conf; sudo pacman -Sy' alias photorec-sort='sudo photorec-sort' alias photorec='sudo photorec' alias q1='clear && ls -1' @@ -34,3 +34,5 @@ alias srsz='sudo rsync -avhzPS --stats --exclude-from="$HOME/.rsync_exclusions"' alias testdisk='sudo testdisk' alias umount='sudo umount' alias unmount='sudo umount' +alias wkclone='sudo ddrescue-tui clone' +alias wkimage='sudo ddrescue-tui image' diff --git a/.linux_items/include/airootfs/etc/skel/.config/i3/config b/.linux_items/include/airootfs/etc/skel/.config/i3/config index de3c6fa8..ca1a5439 100644 --- a/.linux_items/include/airootfs/etc/skel/.config/i3/config +++ b/.linux_items/include/airootfs/etc/skel/.config/i3/config @@ -73,7 +73,7 @@ bindsym $mod+f exec "thunar ~" bindsym $mod+i exec "hardinfo" bindsym $mod+m exec "urxvt -title 'Mount All Volumes' -e mount-all-volumes gui" bindsym $mod+s exec "urxvt -title 'Hardware Diagnostics' -e hw-diags quick" -bindsym $mod+t exec "urxvt" +bindsym $mod+t exec "urxvt -e zsh -c 'tmux new-session -A -t general; zsh'" bindsym $mod+v exec "urxvt -title 'Hardware Sensors' -e watch -c -n1 -t hw-sensors" bindsym $mod+w exec "firefox" @@ -319,3 +319,5 @@ bar { status_command i3status height 26 } + +exec --no-startup-id /home/tech/.update_x diff --git a/.linux_items/include/airootfs/etc/skel/.config/openbox/autostart b/.linux_items/include/airootfs/etc/skel/.config/openbox/autostart old mode 100644 new mode 100755 index 21fd52e5..13b9088c --- a/.linux_items/include/airootfs/etc/skel/.config/openbox/autostart +++ b/.linux_items/include/airootfs/etc/skel/.config/openbox/autostart @@ -1,19 +1,3 @@ -# -# These things are run when an Openbox X Session is started. -# You may place a similar script in $HOME/.config/openbox/autostart -# to run user-specific things. -# +#openbox-autostart -# If you want to use GNOME config tools... -# -#if test -x /usr/lib/openbox/gnome-settings-daemon >/dev/null; then -# /usr/lib/openbox/gnome-settings-daemon & -#elif which gnome-settings-daemon >/dev/null 2>&1; then -# gnome-settings-daemon & -#fi - -# If you want to use XFCE config tools... -# -#xfce-mcs-manager & - -tint2 & +$HOME/.update_x & diff --git a/.linux_items/include/airootfs/etc/skel/.config/openbox/rc.xml b/.linux_items/include/airootfs/etc/skel/.config/openbox/rc.xml index 43656613..90c7b0e0 100644 --- a/.linux_items/include/airootfs/etc/skel/.config/openbox/rc.xml +++ b/.linux_items/include/airootfs/etc/skel/.config/openbox/rc.xml @@ -329,7 +329,7 @@ - urxvt + urxvt -e zsh -c 'tmux new-session -A -t general; zsh' diff --git a/.linux_items/include/airootfs/etc/skel/.conkyrc b/.linux_items/include/airootfs/etc/skel/.conkyrc index adfd5cbb..af09dd8f 100644 --- a/.linux_items/include/airootfs/etc/skel/.conkyrc +++ b/.linux_items/include/airootfs/etc/skel/.conkyrc @@ -37,7 +37,7 @@ minimum_size 180 0 ### width | height maximum_width 180 gap_x 20 ### left | right -gap_y 45 ### up | down +gap_y 24 ### up | down alignment tr ####################### End Window Settings ### @@ -143,15 +143,14 @@ Uptime:${alignr}${uptime_short} CPU: ${if_match ${cpu cpu0}<10} ${cpu cpu0}\ ${else}${if_match ${cpu cpu0}<100} ${cpu cpu0}\ ${else}${cpu cpu0}${endif}${endif}% Used${alignr}${freq_g} GHz -${cpugraph cpu0 20,180 ${color} ${color}} +${cpugraph cpu0 ${gap_x},${width} ${color} ${color}} RAM: ${mem} Used${alignr}${memmax} -${memgraph 20,180 ${color} ${color}} +${memgraph ${gap_x},${width} ${color} ${color}} Disk I/O: -${diskiograph 20,180 ${color} ${color}} +${diskiograph ${gap_x},${width} ${color} ${color}} Down: ${downspeed}${goto 115}Up:${alignr}${upspeed} #Network - ${alignc}S H O R T C U T K E Y S ${hr} [Super] + d${alignr}HW Diagnostics diff --git a/.linux_items/include/airootfs/etc/skel/.ssh/config b/.linux_items/include/airootfs/etc/skel/.ssh/config new file mode 100644 index 00000000..182589ef --- /dev/null +++ b/.linux_items/include/airootfs/etc/skel/.ssh/config @@ -0,0 +1 @@ +ServerAliveInterval 120 diff --git a/.linux_items/include/airootfs/etc/skel/.ssh/known_hosts b/.linux_items/include/airootfs/etc/skel/.ssh/known_hosts new file mode 100644 index 00000000..8bf8054e --- /dev/null +++ b/.linux_items/include/airootfs/etc/skel/.ssh/known_hosts @@ -0,0 +1 @@ +osticket.1201.com,165.227.31.131 ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBJDDXtNvh4Vd3q3qZkZbIcnDWWOfJPZb6LVCFptr4awYjlZNL5ieWIUW080IUgtnzWNR7UvetQRtGDsyGu65L+4= diff --git a/.linux_items/include/airootfs/etc/skel/.update_conky b/.linux_items/include/airootfs/etc/skel/.update_conky index f67dc893..79801d8b 100755 --- a/.linux_items/include/airootfs/etc/skel/.update_conky +++ b/.linux_items/include/airootfs/etc/skel/.update_conky @@ -3,14 +3,16 @@ IF_LIST=($(ip l | egrep '^[0-9]+:\s+(eth|en|wl)' | sed -r 's/^[0-9]+:\s+(\w+):.*/\1/' | sort)) # Add interfaces to conkyrc -for i in "${IF_LIST[@]}"; do - if [[ "${i:0:1}" == "e" ]]; then - sed -i -r "s/#Network/Wired:\${alignr}\${addr $i}\n#Network/" ~/.conkyrc - else - sed -i -r "s/#Network/Wireless:\${alignr}\${addr $i}\n#Network/" ~/.conkyrc - fi -done +if fgrep '#Network' $HOME/.conkyrc; then + for i in "${IF_LIST[@]}"; do + if [[ "${i:0:1}" == "e" ]]; then + sed -i -r "s/#Network/Wired:\${alignr}\${addr $i}\n#Network/" $HOME/.conkyrc + else + sed -i -r "s/#Network/Wireless:\${alignr}\${addr $i}\n#Network/" $HOME/.conkyrc + fi + done -# Remove '#Network' line to prevent duplicating lines if this script is re-run -sed -i -r "s/#Network//" ~/.conkyrc + # Remove '#Network' line to prevent duplicating lines if this script is re-run + sed -i -r "s/#Network//" $HOME/.conkyrc +fi diff --git a/.linux_items/include/airootfs/etc/skel/.update_network b/.linux_items/include/airootfs/etc/skel/.update_network new file mode 100755 index 00000000..e7119a37 --- /dev/null +++ b/.linux_items/include/airootfs/etc/skel/.update_network @@ -0,0 +1,23 @@ +## .update_network ## +#!/bin/env bash +# +## Connect to network and update hostname + +# Connect +connect-to-network +sleep 2s + +IP="$(ip a show scope global \ + | grep inet \ + | head -1 \ + | sed -r 's#.*inet ([0-9]+.[0-9]+.[0-9]+.[0-9]+.)/.*#\1#')" +HOSTNAME="$(dig +noall +answer +short -x "$IP" \ + | grep -v ';' \ + | head -1 \ + | sed 's/\.$//')" + +# Set hostname +if [[ "${HOSTNAME:+x}" ]]; then + sudo hostnamectl set-hostname "${HOSTNAME}" +fi + diff --git a/.linux_items/include/airootfs/etc/skel/.update_wallpaper b/.linux_items/include/airootfs/etc/skel/.update_wallpaper deleted file mode 100755 index 7bffa12b..00000000 --- a/.linux_items/include/airootfs/etc/skel/.update_wallpaper +++ /dev/null @@ -1,21 +0,0 @@ -#!/bin/bash - -BOOT_PATH="/run/archiso/bootmnt/arch/" -BURNED_IN="/usr/share/wallpaper/burned.in" -WALLPAPER="$HOME/.wallpaper.png" - -function link_wall() { - sudo rm "$WALLPAPER" - sudo ln -s "$1" "$WALLPAPER" -} - -# Check for wallpaper -## Checks BOOT_PATH and uses the BURNED_IN file if nothing is found -for f in "$BOOT_PATH"/{Arch,arch}.{jpg,png} "$BURNED_IN"; do - if [[ -f "$f" ]]; then - link_wall "$f" - break - fi -done - -feh --bg-fill "$WALLPAPER" diff --git a/.linux_items/include/airootfs/etc/skel/.update_x b/.linux_items/include/airootfs/etc/skel/.update_x new file mode 100755 index 00000000..4763a175 --- /dev/null +++ b/.linux_items/include/airootfs/etc/skel/.update_x @@ -0,0 +1,94 @@ +#!/bin/env bash +# +## Calculate DPI, update settings if necessary, then start desktop apps + +REGEX_XRANDR='^.* ([0-9]+)x([0-9]+)\+[0-9]+\+[0-9]+.* ([0-9]+)mm x ([0-9]+)mm.*$' +REGEX_URXVT='(URxvt.geometry:\s+).*' + +# Get screen data +xrandr_str="$(xrandr | grep mm | head -1)" +width_px="$(echo "${xrandr_str}" | sed -r "s/${REGEX_XRANDR}/\1/")" +height_px="$(echo "${xrandr_str}" | sed -r "s/${REGEX_XRANDR}/\2/")" +width_mm="$(echo "${xrandr_str}" | sed -r "s/${REGEX_XRANDR}/\3/")" +height_mm="$(echo "${xrandr_str}" | sed -r "s/${REGEX_XRANDR}/\4/")" + +# Convert to in +width_in="$(echo "${width_mm} * 0.03937" | bc)" +height_in="$(echo "${height_mm} * 0.03937" | bc)" + +# Calculate diagonals +diag_px="$(echo "sqrt(${width_px}^2 + ${height_px}^2)" | bc)" +diag_in="$(echo "sqrt(${width_in}^2 + ${height_in}^2)" | bc)" + +# Calculate DPI +dpi="$(echo "${diag_px} / ${diag_in}" | bc 2>/dev/null || True)" +dpi="${dpi:-0}" + +# Calculate URxvt default window size +width_urxvt="$(echo "${width_px} * 112/1280" | bc)" +height_urxvt="$(echo "${height_px} * 33/720" | bc)" +offset_urxvt="24" + +# Update settings if necessary +if [[ "${dpi}" -ge 192 ]]; then + # Conky + sed -i 's/minimum_size 180 0/minimum_size 360 0/' "${HOME}/.conkyrc" + sed -i 's/maximum_width 180/maximum_width 360/' "${HOME}/.conkyrc" + sed -i 's/gap_x 20/gap_x 40/' "${HOME}/.conkyrc" + sed -i 's/gap_y 24/gap_y 48/' "${HOME}/.conkyrc" + + # Fonts + sed -i 's/!Xft.dpi: 192/Xft.dpi: 192/' "${HOME}/.Xresources" + + # GDK + export GDK_SCALE=2 + export GDK_DPI_SCALE=0.5 + + # i3 + sed -i -r 's/(height\s+) 26/\1 52/' "${HOME}/.config/i3/config" + + # Tint2 + sed -i 's/panel_size = 100% 30/panel_size = 100% 60/' \ + "${HOME}/.config/tint2/tint2rc" + sed -i 's/Inconsolata 10/Inconsolata 20/g' \ + "${HOME}/.config/tint2/tint2rc" + sed -i 's/Inconsolata 12/Inconsolata 24/g' \ + "${HOME}/.config/tint2/tint2rc" + sed -i 's/systray_icon_size = 24/systray_icon_size = 48/' \ + "${HOME}/.config/tint2/tint2rc" + + # URxvt + width_urxvt="$(echo "${width_urxvt} / 2" | bc)" + height_urxvt="$(echo "${height_urxvt} / 2" | bc)" + offset_urxvt="$(echo "${offset_urxvt} * 2" | bc)" +fi + +# Update URxvt (Always) +urxvt_geometry="${width_urxvt}x${height_urxvt}+${offset_urxvt}+${offset_urxvt}" +sed -i -r "s/${REGEX_URXVT}/\1${urxvt_geometry}/" "${HOME}/.Xresources" + +# Update X +xset s off +xset -dpms +xrdb -merge $HOME/.Xresources + +# Start common desktop apps +feh --bg-fill "$HOME/.wallpaper" +compton --backend xrender --xrender-sync --xrender-sync-fence & +sleep 1s +x0vncserver -display :0 -passwordfile $HOME/.vnc/passwd -AlwaysShared & +conky & +nm-applet & +volumeicon & + +# Start WM specific apps +if fgrep -q "i3" /proc/cmdline; then + # i3 + i3-msg restart +else + # openbox + openbox --restart + tint2 & + cbatticon --hide-notification & +fi + diff --git a/.linux_items/include/airootfs/etc/skel/.urxvt_default_res b/.linux_items/include/airootfs/etc/skel/.urxvt_default_res deleted file mode 100755 index 1e146090..00000000 --- a/.linux_items/include/airootfs/etc/skel/.urxvt_default_res +++ /dev/null @@ -1,10 +0,0 @@ -#!/bin/bash - -XWIDTH="$(xrandr 2>/dev/null | grep '*' | sed -r 's/^\s+([0-9]+)x.*/\1/')" -XHEIGHT="$(xrandr 2>/dev/null | grep '*' | sed -r 's/^\s+[0-9]+x([0-9]+).*/\1/')" - -WIDTH="$(echo "${XWIDTH}*92/1024" | bc)" -HEIGHT="$(echo "${XHEIGHT}*32/768" | bc)" - -sed -i -r "s/(URxvt.geometry:\s+).*/\1${WIDTH}x${HEIGHT}+24+24/" ~/.Xresources -xrdb -merge ~/.Xresources diff --git a/.linux_items/include/airootfs/etc/skel/.wallpaper b/.linux_items/include/airootfs/etc/skel/.wallpaper new file mode 120000 index 00000000..f2a3d5e1 --- /dev/null +++ b/.linux_items/include/airootfs/etc/skel/.wallpaper @@ -0,0 +1 @@ +/usr/share/wallpaper/burned.in \ No newline at end of file diff --git a/.linux_items/include/airootfs/etc/skel/.xinitrc b/.linux_items/include/airootfs/etc/skel/.xinitrc index 78bddfe7..7085a4df 100755 --- a/.linux_items/include/airootfs/etc/skel/.xinitrc +++ b/.linux_items/include/airootfs/etc/skel/.xinitrc @@ -1,20 +1,7 @@ #!/bin/sh dbus-update-activation-environment --systemd DISPLAY -xrdb -merge $HOME/.Xresources -xset s off -xset -dpms eval $(ssh-agent) export SSH_AUTH_SOCK -compton --backend xrender --xrender-sync --xrender-sync-fence & -sleep 1s -conky -d -nm-applet & -cbatticon & -volumeicon & -connect-to-network & -(sleep 5s && killall dunst) & -$HOME/.urxvt_default_res & -$HOME/.update_wallpaper & -$HOME/.update_conky & exec openbox-session + diff --git a/.linux_items/include/airootfs/etc/skel/.zlogin b/.linux_items/include/airootfs/etc/skel/.zlogin index 26463919..ecdc1bbf 100644 --- a/.linux_items/include/airootfs/etc/skel/.zlogin +++ b/.linux_items/include/airootfs/etc/skel/.zlogin @@ -1,13 +1,24 @@ -setterm -blank 0 -powerdown 0 +setterm -blank 0 -powerdown 0 2>/dev/null if [ "$(fgconsole 2>/dev/null)" -eq "1" ]; then + # Connect to network and update hostname + $HOME/.update_network + + # Trust added root CAs + sudo trust extract-compat + + # Update settings if using i3 if fgrep -q "i3" /proc/cmdline; then sed -i -r 's/#(own_window_type override)/\1/' ~/.conkyrc sed -i -r 's/openbox-session/i3/' ~/.xinitrc fi + + # Update Conky + $HOME/.update_conky + + # Start X or HW-diags if ! fgrep -q "nox" /proc/cmdline; then startx >/dev/null else hw-diags cli fi fi - diff --git a/.linux_items/include/airootfs/etc/ufw/user.rules b/.linux_items/include/airootfs/etc/ufw/user.rules index aa30960c..3dbf5cf4 100644 --- a/.linux_items/include/airootfs/etc/ufw/user.rules +++ b/.linux_items/include/airootfs/etc/ufw/user.rules @@ -21,6 +21,9 @@ -A ufw-user-input -p tcp --dport 22 -j ACCEPT -A ufw-user-input -p udp --dport 22 -j ACCEPT +### tuple ### allow tcp 5900 0.0.0.0/0 any 0.0.0.0/0 VNC - in +-A ufw-user-input -p tcp --dport 5900 -j ACCEPT -m comment --comment 'dapp_VNC' + ### END RULES ### ### LOGGING ### diff --git a/.linux_items/include/airootfs/etc/ufw/user6.rules b/.linux_items/include/airootfs/etc/ufw/user6.rules index 47d96108..13084be4 100644 --- a/.linux_items/include/airootfs/etc/ufw/user6.rules +++ b/.linux_items/include/airootfs/etc/ufw/user6.rules @@ -21,6 +21,9 @@ -A ufw6-user-input -p tcp --dport 22 -j ACCEPT -A ufw6-user-input -p udp --dport 22 -j ACCEPT +### tuple ### allow tcp 5900 ::/0 any ::/0 VNC - in +-A ufw6-user-input -p tcp --dport 5900 -j ACCEPT -m comment --comment 'dapp_VNC' + ### END RULES ### ### LOGGING ### diff --git a/.linux_items/include/syslinux/1201_eset.cfg b/.linux_items/include/syslinux/1201_eset.cfg new file mode 100644 index 00000000..59f2de32 --- /dev/null +++ b/.linux_items/include/syslinux/1201_eset.cfg @@ -0,0 +1,9 @@ +LABEL eset +TEXT HELP +ESET SysRescue Live + * Offline AV scanner +ENDTEXT +MENU LABEL ESET SysRescue Live +LINUX ../casper/vmlinuz +INITRD ../casper/initrd.lz +APPEND boot=casper live-media=/dev/disk/by-label/1201_UFD splash diff --git a/.linux_items/include/syslinux/1201_hdclone.cfg b/.linux_items/include/syslinux/1201_hdclone.cfg new file mode 100644 index 00000000..a97b3db9 --- /dev/null +++ b/.linux_items/include/syslinux/1201_hdclone.cfg @@ -0,0 +1,9 @@ +LABEL hdclone +TEXT HELP +HDClone by Miray Software + * Backups, cloning, etc +ENDTEXT +MENU LABEL HDClone 6 +LINUX boot/syslinux/memdisk +INITRD ../sources/hdclone.iso +APPEND iso diff --git a/.linux_items/include/syslinux/wk.cfg b/.linux_items/include/syslinux/wk.cfg index b9163e25..f37655df 100644 --- a/.linux_items/include/syslinux/wk.cfg +++ b/.linux_items/include/syslinux/wk.cfg @@ -2,7 +2,10 @@ DEFAULT select LABEL select COM32 boot/syslinux/whichsys.c32 -APPEND -pxe- pxe -sys- sys -iso- sys +APPEND -pxe- pxe -sys- sys -iso- iso + +LABEL iso +CONFIG boot/syslinux/wk_iso.cfg LABEL pxe CONFIG boot/syslinux/wk_pxe.cfg diff --git a/.linux_items/include/syslinux/wk_head.cfg b/.linux_items/include/syslinux/wk_head.cfg index 7562755a..d2f1ee9f 100644 --- a/.linux_items/include/syslinux/wk_head.cfg +++ b/.linux_items/include/syslinux/wk_head.cfg @@ -15,15 +15,15 @@ MENU TABMSG # Refer to http://syslinux.zytor.com/wiki/index.php/Doc/menu -MENU COLOR screen 30;44 #a0000000 #a0000000 none -MENU COLOR border 30;44 #a0000000 #a0000000 none -MENU COLOR title 1;36;44 #9033ccff #a0000000 none +MENU COLOR screen 30;41 #a0000000 #a0000000 none +MENU COLOR border 30;41 #a0000000 #a0000000 none +MENU COLOR title 1;35;41 #90ff6666 #a0000000 none MENU COLOR sel 7;37;40 #e0ffffff #a0000000 std -MENU COLOR disabled 37;44 #50ffffff #a0000000 none -MENU COLOR unsel 37;44 #50ffffff #a0000000 none +MENU COLOR disabled 37;41 #50ffffff #a0000000 none +MENU COLOR unsel 37;41 #50ffffff #a0000000 none MENU COLOR help 37;40 #c0ffffff #a0000000 none -MENU COLOR tabmsg 30;44 #a0000000 #a0000000 none -menu color cmdmark 1;36;44 #9033ccff #a0000000 none +MENU COLOR tabmsg 30;41 #a0000000 #a0000000 none +menu color cmdmark 1;35;41 #90ff6666 #a0000000 none menu color cmdline 37;40 #c0ffffff #a0000000 none MENU COLOR timeout_msg 37;40 #80ffffff #a0000000 none MENU COLOR timeout 1;37;40 #c0ffffff #a0000000 none diff --git a/.linux_items/include/syslinux/wk_iso.cfg b/.linux_items/include/syslinux/wk_iso.cfg new file mode 100644 index 00000000..fa35a1b6 --- /dev/null +++ b/.linux_items/include/syslinux/wk_iso.cfg @@ -0,0 +1,6 @@ +INCLUDE boot/syslinux/wk_head.cfg + +INCLUDE boot/syslinux/wk_iso_linux.cfg +#DISABLED_UPSTREAM_BUG#INCLUDE boot/syslinux/wk_hdt.cfg + +INCLUDE boot/syslinux/wk_tail.cfg diff --git a/.linux_items/include/syslinux/wk_iso_linux.cfg b/.linux_items/include/syslinux/wk_iso_linux.cfg new file mode 100644 index 00000000..3f2c3556 --- /dev/null +++ b/.linux_items/include/syslinux/wk_iso_linux.cfg @@ -0,0 +1,31 @@ +LABEL wk_iso_linux +TEXT HELP +A live Linux environment + * HW diagnostics, file-based backups, data recovery, etc +ENDTEXT +MENU LABEL Linux +LINUX boot/x86_64/vmlinuz +INITRD boot/intel_ucode.img,boot/amd_ucode.img,boot/x86_64/archiso.img +APPEND archisobasedir=%INSTALL_DIR% archisolabel=%ARCHISO_LABEL% quiet loglevel=3 + +LABEL wk_iso_linux_i3 +TEXT HELP +A live Linux environment (i3) + * HW diagnostics, file-based backups, data recovery, etc +ENDTEXT +MENU LABEL Linux (i3) +LINUX boot/x86_64/vmlinuz +INITRD boot/intel_ucode.img,boot/amd_ucode.img,boot/x86_64/archiso.img +APPEND archisobasedir=%INSTALL_DIR% archisolabel=%ARCHISO_LABEL% quiet loglevel=3 i3 +SYSAPPEND 3 + +LABEL wk_iso_linux_cli +TEXT HELP +A live Linux environment (CLI) + * HW diagnostics, file-based backups, data recovery, etc +ENDTEXT +MENU LABEL Linux (CLI) +LINUX boot/x86_64/vmlinuz +INITRD boot/intel_ucode.img,boot/amd_ucode.img,boot/x86_64/archiso.img +APPEND archisobasedir=%INSTALL_DIR% archisolabel=%ARCHISO_LABEL% nox nomodeset +SYSAPPEND 3 diff --git a/.linux_items/include/syslinux/wk_pxe.cfg b/.linux_items/include/syslinux/wk_pxe.cfg index d5efabb4..f8a78220 100644 --- a/.linux_items/include/syslinux/wk_pxe.cfg +++ b/.linux_items/include/syslinux/wk_pxe.cfg @@ -2,7 +2,7 @@ INCLUDE boot/syslinux/wk_head.cfg MENU BACKGROUND pxelinux.png INCLUDE boot/syslinux/wk_pxe_linux.cfg -INCLUDE boot/syslinux/wk_pxe_winpe.cfg -INCLUDE boot/syslinux/wk_pxe_extras_entry.cfg +#UFD#INCLUDE boot/syslinux/wk_pxe_winpe.cfg +#DISABLED_UPSTREAM_BUG#INCLUDE boot/syslinux/wk_hdt.cfg INCLUDE boot/syslinux/wk_tail.cfg diff --git a/.linux_items/include/syslinux/wk_pxe_extras.cfg b/.linux_items/include/syslinux/wk_pxe_extras.cfg deleted file mode 100644 index 04cd2ce1..00000000 --- a/.linux_items/include/syslinux/wk_pxe_extras.cfg +++ /dev/null @@ -1,9 +0,0 @@ -INCLUDE boot/syslinux/wk_head.cfg -MENU BACKGROUND pxelinux.png - -INCLUDE boot/syslinux/wk_pxe_linux.cfg -INCLUDE boot/syslinux/wk_pxe_linux_extras.cfg -INCLUDE boot/syslinux/wk_pxe_winpe.cfg -INCLUDE boot/syslinux/wk_hdt.cfg - -INCLUDE boot/syslinux/wk_tail.cfg diff --git a/.linux_items/include/syslinux/wk_pxe_extras_entry.cfg b/.linux_items/include/syslinux/wk_pxe_extras_entry.cfg deleted file mode 100644 index ec76c263..00000000 --- a/.linux_items/include/syslinux/wk_pxe_extras_entry.cfg +++ /dev/null @@ -1,7 +0,0 @@ -LABEL wk_pxe_extras -TEXT HELP -Show extra boot options -ENDTEXT -MENU LABEL Extras -KERNEL vesamenu.c32 -APPEND boot/syslinux/wk_pxe_extras.cfg diff --git a/.linux_items/include/syslinux/wk_pxe_linux.cfg b/.linux_items/include/syslinux/wk_pxe_linux.cfg index f7bf816d..d2468e03 100644 --- a/.linux_items/include/syslinux/wk_pxe_linux.cfg +++ b/.linux_items/include/syslinux/wk_pxe_linux.cfg @@ -3,8 +3,30 @@ TEXT HELP A live Linux environment * HW diagnostics, file-based backups, data recovery, etc ENDTEXT -MENU LABEL Linux +MENU LABEL Linux (PXE) LINUX boot/x86_64/vmlinuz -INITRD boot/intel_ucode.img,boot/x86_64/archiso.img -APPEND archisobasedir=%INSTALL_DIR% archiso_http_srv=http://${pxeserver}/ quiet +INITRD boot/intel_ucode.img,boot/amd_ucode.img,boot/x86_64/archiso.img +APPEND archisobasedir=%INSTALL_DIR% archiso_http_srv=http://${pxeserver}/ quiet loglevel=3 +SYSAPPEND 3 + +LABEL wk_http_linux_i3 +TEXT HELP +A live Linux environment (i3) + * HW diagnostics, file-based backups, data recovery, etc +ENDTEXT +MENU LABEL Linux (PXE) (i3) +LINUX boot/x86_64/vmlinuz +INITRD boot/intel_ucode.img,boot/amd_ucode.img,boot/x86_64/archiso.img +APPEND archisobasedir=%INSTALL_DIR% archiso_http_srv=http://${pxeserver}/ quiet loglevel=3 i3 +SYSAPPEND 3 + +LABEL wk_http_linux_cli +TEXT HELP +A live Linux environment (CLI) + * HW diagnostics, file-based backups, data recovery, etc +ENDTEXT +MENU LABEL Linux (PXE) (CLI) +LINUX boot/x86_64/vmlinuz +INITRD boot/intel_ucode.img,boot/amd_ucode.img,boot/x86_64/archiso.img +APPEND archisobasedir=%INSTALL_DIR% archiso_http_srv=http://${pxeserver}/ nox nomodeset SYSAPPEND 3 diff --git a/.linux_items/include/syslinux/wk_pxe_linux_extras.cfg b/.linux_items/include/syslinux/wk_pxe_linux_extras.cfg deleted file mode 100644 index f29b2724..00000000 --- a/.linux_items/include/syslinux/wk_pxe_linux_extras.cfg +++ /dev/null @@ -1,21 +0,0 @@ -LABEL wk_http_linux_i3 -TEXT HELP -A live Linux environment (i3) - * HW diagnostics, file-based backups, data recovery, etc -ENDTEXT -MENU LABEL Linux (i3) -LINUX boot/x86_64/vmlinuz -INITRD boot/intel_ucode.img,boot/x86_64/archiso.img -APPEND archisobasedir=%INSTALL_DIR% archiso_http_srv=http://${pxeserver}/ quiet i3 -SYSAPPEND 3 - -LABEL wk_http_linux_cli -TEXT HELP -A live Linux environment (CLI) - * HW diagnostics, file-based backups, data recovery, etc -ENDTEXT -MENU LABEL Linux (CLI) -LINUX boot/x86_64/vmlinuz -INITRD boot/intel_ucode.img,boot/x86_64/archiso.img -APPEND archisobasedir=%INSTALL_DIR% archiso_http_srv=http://${pxeserver}/ nox nomodeset -SYSAPPEND 3 diff --git a/.linux_items/include/syslinux/wk_pxe_winpe.cfg b/.linux_items/include/syslinux/wk_pxe_winpe.cfg index 91d615d7..097df277 100644 --- a/.linux_items/include/syslinux/wk_pxe_winpe.cfg +++ b/.linux_items/include/syslinux/wk_pxe_winpe.cfg @@ -3,6 +3,6 @@ TEXT HELP A live Windows environment * Create partition backups, Install Windows, etc ENDTEXT -MENU LABEL Windows PE +MENU LABEL Windows PE (PXE) COM32 boot/syslinux/linux.c32 APPEND boot/wimboot gui initrdfile=winpe/x86_64/bootmgr,winpe/x86_64/BCD,winpe/x86_64/boot.sdi,winpe/x86_64/boot.wim diff --git a/.linux_items/include/syslinux/wk_sys.cfg b/.linux_items/include/syslinux/wk_sys.cfg index beefb77d..c36606f5 100644 --- a/.linux_items/include/syslinux/wk_sys.cfg +++ b/.linux_items/include/syslinux/wk_sys.cfg @@ -1,7 +1,9 @@ INCLUDE boot/syslinux/wk_head.cfg INCLUDE boot/syslinux/wk_sys_linux.cfg -INCLUDE boot/syslinux/wk_sys_winpe.cfg -INCLUDE boot/syslinux/wk_sys_extras_entry.cfg +#UFD#INCLUDE boot/syslinux/wk_sys_winpe.cfg +#UFD#INCLUDE boot/syslinux/1201_hdclone.cfg +#UFD#INCLUDE boot/syslinux/1201_eset.cfg +#DISABLED_UPSTREAM_BUG#INCLUDE boot/syslinux/wk_hdt.cfg INCLUDE boot/syslinux/wk_tail.cfg diff --git a/.linux_items/include/syslinux/wk_sys_extras.cfg b/.linux_items/include/syslinux/wk_sys_extras.cfg deleted file mode 100644 index 422bd053..00000000 --- a/.linux_items/include/syslinux/wk_sys_extras.cfg +++ /dev/null @@ -1,8 +0,0 @@ -INCLUDE boot/syslinux/wk_head.cfg - -INCLUDE boot/syslinux/wk_sys_linux.cfg -INCLUDE boot/syslinux/wk_sys_linux_extras.cfg -INCLUDE boot/syslinux/wk_sys_winpe.cfg -INCLUDE boot/syslinux/wk_hdt.cfg - -INCLUDE boot/syslinux/wk_tail.cfg diff --git a/.linux_items/include/syslinux/wk_sys_extras_entry.cfg b/.linux_items/include/syslinux/wk_sys_extras_entry.cfg deleted file mode 100644 index ce8fd3ac..00000000 --- a/.linux_items/include/syslinux/wk_sys_extras_entry.cfg +++ /dev/null @@ -1,7 +0,0 @@ -LABEL wk_sys_extras -TEXT HELP -Show extra boot options -ENDTEXT -MENU LABEL Extras -KERNEL vesamenu.c32 -APPEND boot/syslinux/wk_sys_extras.cfg diff --git a/.linux_items/include/syslinux/wk_sys_linux.cfg b/.linux_items/include/syslinux/wk_sys_linux.cfg index 4b3b08c9..55b5f239 100644 --- a/.linux_items/include/syslinux/wk_sys_linux.cfg +++ b/.linux_items/include/syslinux/wk_sys_linux.cfg @@ -5,5 +5,27 @@ A live Linux environment ENDTEXT MENU LABEL Linux LINUX boot/x86_64/vmlinuz -INITRD boot/intel_ucode.img,boot/x86_64/archiso.img +INITRD boot/intel_ucode.img,boot/amd_ucode.img,boot/x86_64/archiso.img APPEND archisobasedir=%INSTALL_DIR% archisolabel=%ARCHISO_LABEL% quiet copytoram loglevel=3 + +LABEL wk_linux_i3 +TEXT HELP +A live Linux environment (i3) + * HW diagnostics, file-based backups, data recovery, etc +ENDTEXT +MENU LABEL Linux (i3) +LINUX boot/x86_64/vmlinuz +INITRD boot/intel_ucode.img,boot/amd_ucode.img,boot/x86_64/archiso.img +APPEND archisobasedir=%INSTALL_DIR% archisolabel=%ARCHISO_LABEL% quiet copytoram loglevel=3 i3 +SYSAPPEND 3 + +LABEL wk_linux_cli +TEXT HELP +A live Linux environment (CLI) + * HW diagnostics, file-based backups, data recovery, etc +ENDTEXT +MENU LABEL Linux (CLI) +LINUX boot/x86_64/vmlinuz +INITRD boot/intel_ucode.img,boot/amd_ucode.img,boot/x86_64/archiso.img +APPEND archisobasedir=%INSTALL_DIR% archisolabel=%ARCHISO_LABEL% copytoram nox nomodeset +SYSAPPEND 3 diff --git a/.linux_items/include/syslinux/wk_sys_linux_extras.cfg b/.linux_items/include/syslinux/wk_sys_linux_extras.cfg deleted file mode 100644 index 882c705e..00000000 --- a/.linux_items/include/syslinux/wk_sys_linux_extras.cfg +++ /dev/null @@ -1,21 +0,0 @@ -LABEL wk_linux_i3 -TEXT HELP -A live Linux environment (i3) - * HW diagnostics, file-based backups, data recovery, etc -ENDTEXT -MENU LABEL Linux (i3) -LINUX boot/x86_64/vmlinuz -INITRD boot/intel_ucode.img,boot/x86_64/archiso.img -APPEND archisobasedir=%INSTALL_DIR% archisolabel=%ARCHISO_LABEL% quiet copytoram loglevel=3 i3 -SYSAPPEND 3 - -LABEL wk_linux_cli -TEXT HELP -A live Linux environment (CLI) - * HW diagnostics, file-based backups, data recovery, etc -ENDTEXT -MENU LABEL Linux (CLI) -LINUX boot/x86_64/vmlinuz -INITRD boot/intel_ucode.img,boot/x86_64/archiso.img -APPEND archisobasedir=%INSTALL_DIR% archisolabel=%ARCHISO_LABEL% copytoram nox nomodeset -SYSAPPEND 3 diff --git a/.linux_items/packages/aur b/.linux_items/packages/aur index 11874fa5..326ca732 100644 --- a/.linux_items/packages/aur +++ b/.linux_items/packages/aur @@ -2,7 +2,6 @@ aic94xx-firmware bash-pipes hfsprogs i3lock-fancy-git -inxi mprime nvme-cli openbox-patched diff --git a/.linux_items/packages/live_add b/.linux_items/packages/live_add index a297ca05..a23f2884 100644 --- a/.linux_items/packages/live_add +++ b/.linux_items/packages/live_add @@ -34,7 +34,6 @@ htop i3-gaps i3lock-fancy-git i3status -inxi ldns leafpad lha @@ -43,6 +42,7 @@ libinput linux-firmware lm_sensors lzip +mariadb-clients mdadm mediainfo mesa-demos @@ -62,6 +62,8 @@ p7zip papirus-icon-theme progsreiserfs python +python-gnuplot +python-mysql-connector python-psutil python-requests qemu-guest-agent @@ -76,6 +78,7 @@ spice-vdagent terminus-font testdisk-wip thunar +tigervnc tint2 tk tmux diff --git a/Build Linux b/Build Linux index 6ee0f169..56233d51 100755 --- a/Build Linux +++ b/Build Linux @@ -190,9 +190,9 @@ function update_live_env() { # Live packages while read -r p; do - sed -i "/$p/d" "$LIVE_DIR/packages.both" + sed -i "/$p/d" "$LIVE_DIR/packages.x86_64" done < "$ROOT_DIR/.linux_items/packages/live_remove" - cat "$ROOT_DIR/.linux_items/packages/live_add" >> "$LIVE_DIR/packages.both" + cat "$ROOT_DIR/.linux_items/packages/live_add" >> "$LIVE_DIR/packages.x86_64" echo "[custom]" >> "$LIVE_DIR/pacman.conf" echo "SigLevel = Optional TrustAll" >> "$LIVE_DIR/pacman.conf" echo "Server = file://$REPO_DIR" >> "$LIVE_DIR/pacman.conf" @@ -219,13 +219,19 @@ function update_live_env() { # Services sed -i -r 's/^(.*pacman-init.*)$/#NOPE#\1/' "$LIVE_DIR/airootfs/root/customize_airootfs.sh" sed -i -r 's/^(.*choose-mirror.*)$/#NOPE#\1/' "$LIVE_DIR/airootfs/root/customize_airootfs.sh" + + # Shutdown stall fix + echo "sed -i -r 's/^.*(DefaultTimeoutStartSec)=.*$/\1=15s/' /etc/systemd/system.conf" >> "$LIVE_DIR/airootfs/root/customize_airootfs.sh" + echo "sed -i -r 's/^.*(DefaultTimeoutStopSec)=.*$/\1=15s/' /etc/systemd/system.conf" >> "$LIVE_DIR/airootfs/root/customize_airootfs.sh" # SSH mkdir -p "$SKEL_DIR/.ssh" ssh-keygen -b 4096 -C "$username@$hostname" -N "" -f "$SKEL_DIR/.ssh/id_rsa" echo 'rm /root/.ssh/id*' >> "$LIVE_DIR/airootfs/root/customize_airootfs.sh" echo 'rm /root/.zlogin' >> "$LIVE_DIR/airootfs/root/customize_airootfs.sh" - sed -i -r 's/^(.*PermitRootLogin.*)$/#NOPE#\1/' "$LIVE_DIR/airootfs/root/customize_airootfs.sh" + sed -i -r '/.*PermitRootLogin.*/d' "$LIVE_DIR/airootfs/root/customize_airootfs.sh" + echo "sed -i -r '/.*PermitRootLogin.*/d' /etc/ssh/sshd_config" >> "$LIVE_DIR/airootfs/root/customize_airootfs.sh" + cp "$ROOT_DIR/.linux_items/authorized_keys" "$SKEL_DIR/.ssh/authorized_keys" # Root user echo "echo 'root:$ROOT_PASSWORD' | chpasswd" >> "$LIVE_DIR/airootfs/root/customize_airootfs.sh" @@ -251,6 +257,10 @@ function update_live_env() { # udevil fix echo "mkdir /media" >> "$LIVE_DIR/airootfs/root/customize_airootfs.sh" + # VNC password + echo "mkdir '/home/$username/.vnc'" >> "$LIVE_DIR/airootfs/root/customize_airootfs.sh" + echo "echo '$TECH_PASSWORD' | vncpasswd -f > '/home/$username/.vnc/passwd'" >> "$LIVE_DIR/airootfs/root/customize_airootfs.sh" + # Wallpaper mkdir -p "$LIVE_DIR/airootfs/usr/share/wallpaper" cp "$ROOT_DIR/Images/Linux.png" "$LIVE_DIR/airootfs/usr/share/wallpaper/burned.in" @@ -317,9 +327,11 @@ function build_iso() { # Removing cached (and possibly outdated) custom repo packages for package in $(cat "$ROOT_DIR/.linux_items/packages/aur"); do - if [[ -f /var/cache/pacman/pkg/${package}* ]]; then - rm /var/cache/pacman/pkg/${package}* - fi + for p in /var/cache/pacman/pkg/*${package}*; do + if [[ -f "${p}" ]]; then + rm "${p}" + fi + done done # Build ISO diff --git a/README.md b/README.md index 37c7f431..06f6d88d 100644 --- a/README.md +++ b/README.md @@ -57,7 +57,7 @@ A collection of scripts to help technicians service Windows systems. * _(Recommended)_ Install and configure `sudo` * See the [wiki page](https://wiki.archlinux.org/index.php/Sudo) for details. * Login to the user added above -* Download the Github repo $ `git clone https://github.com/2Shirt/WizardKit.git` +* Download the Github repo $ `git clone https://1201north.ddns.net:3000/2Shirt/WizardKit.git` * Run the build script * $ `cd WizardKit` * $ `./Build\ Linux -b` @@ -119,7 +119,7 @@ There's a `build-ufd` script which does the following: * Mount the device(s) or network share(s) that contain the Linux ISO, WinPE ISO, and Main Kit folder. * Connect the UFD but don't mount it. * Get the device name of the UFD. - * You can use $ `inxi -Dxx` or $ `lsblk --fs` to help. + * You can use $ `hw-drive-info` to help. * $ `sudo build-ufd --ufd-device [device] --linux-iso [path] --main-kit [path] --winpe-iso [path]` * **2nd Warning**: All data will be erased from the UFD resulting in **DATA LOSS**. * NOTE: The Main Kit folder will be renamed on the UFD using `$KIT_NAME_FULL`