diff --git a/lib/engines/hckinstall/kits/HLK2022.json b/lib/engines/hckinstall/kits/HLK2022.json index 3dd64676..01cae64c 100644 --- a/lib/engines/hckinstall/kits/HLK2022.json +++ b/lib/engines/hckinstall/kits/HLK2022.json @@ -5,7 +5,8 @@ "FOD_2022", "Test-NETHLK", "winfsp", - "NDIS_Driver_Fix" + "NDIS_Driver_Fix", + "autoit" ], "studio_platform": "Win2019x64", "name": "HLK2022" diff --git a/lib/engines/hcktest/drivers/Balloon.json b/lib/engines/hcktest/drivers/Balloon.json index 0171349e..b9ef42f7 100644 --- a/lib/engines/hcktest/drivers/Balloon.json +++ b/lib/engines/hcktest/drivers/Balloon.json @@ -7,7 +7,6 @@ "support": false, "reject_test_names": [ "DF - Embedded Signature Verification Test (Certification)", - "DF - Embedded Signature Verification Test (Tuning and Validation)", - "Hardware-enforced Stack Protection Compatibility Test" + "DF - Embedded Signature Verification Test (Tuning and Validation)" ] } diff --git a/lib/engines/hcktest/drivers/NetKVM.json b/lib/engines/hcktest/drivers/NetKVM.json index 2d3025f9..382e1714 100644 --- a/lib/engines/hcktest/drivers/NetKVM.json +++ b/lib/engines/hcktest/drivers/NetKVM.json @@ -24,7 +24,6 @@ "PrivateCloudSimulator - Device.Network.LAN.10GbOrGreater", "Run RSC Tests", "DF - Embedded Signature Verification Test (Certification)", - "DF - Embedded Signature Verification Test (Tuning and Validation)", - "Hardware-enforced Stack Protection Compatibility Test" + "DF - Embedded Signature Verification Test (Tuning and Validation)" ] } diff --git a/lib/engines/hcktest/drivers/alinvme.json b/lib/engines/hcktest/drivers/alinvme.json index e1ec53f7..7765d476 100644 --- a/lib/engines/hcktest/drivers/alinvme.json +++ b/lib/engines/hcktest/drivers/alinvme.json @@ -39,9 +39,6 @@ } ] } - ], - "reject_test_names": [ - "Hardware-enforced Stack Protection Compatibility Test" ] } diff --git a/lib/engines/hcktest/drivers/fwcfg64.json b/lib/engines/hcktest/drivers/fwcfg64.json index eb4bc27a..d7d1753e 100644 --- a/lib/engines/hcktest/drivers/fwcfg64.json +++ b/lib/engines/hcktest/drivers/fwcfg64.json @@ -4,8 +4,5 @@ "inf": "fwcfg.inf", "install_method": "PNP", "type": 0, - "support": false, - "reject_test_names": [ - "Hardware-enforced Stack Protection Compatibility Test" - ] + "support": false } diff --git a/lib/engines/hcktest/drivers/igb.json b/lib/engines/hcktest/drivers/igb.json index 6a4cf0ed..774adb21 100644 --- a/lib/engines/hcktest/drivers/igb.json +++ b/lib/engines/hcktest/drivers/igb.json @@ -19,7 +19,6 @@ ], "reject_test_names": [ "NDISTest 6.5 - [2 Machine] - VMQReceiveQueueStateChecking", - "NDISTest 6.5 - [2 Machine] - VMQPowerManagement", - "Hardware-enforced Stack Protection Compatibility Test" + "NDISTest 6.5 - [2 Machine] - VMQPowerManagement" ] } diff --git a/lib/engines/hcktest/drivers/ivshmem.json b/lib/engines/hcktest/drivers/ivshmem.json index bfae67dc..081b9724 100644 --- a/lib/engines/hcktest/drivers/ivshmem.json +++ b/lib/engines/hcktest/drivers/ivshmem.json @@ -7,7 +7,6 @@ "support": false, "reject_test_names": [ "DF - Embedded Signature Verification Test (Certification)", - "DF - Embedded Signature Verification Test (Tuning and Validation)", - "Hardware-enforced Stack Protection Compatibility Test" + "DF - Embedded Signature Verification Test (Tuning and Validation)" ] } diff --git a/lib/engines/hcktest/drivers/ovpn-dco-win.json b/lib/engines/hcktest/drivers/ovpn-dco-win.json index 0921f26c..5f7eb275 100644 --- a/lib/engines/hcktest/drivers/ovpn-dco-win.json +++ b/lib/engines/hcktest/drivers/ovpn-dco-win.json @@ -8,7 +8,6 @@ "type": 0, "support": false, "reject_test_names": [ - "Static Tools Logo Test", - "Hardware-enforced Stack Protection Compatibility Test" + "Static Tools Logo Test" ] } diff --git a/lib/engines/hcktest/drivers/pvpanic.json b/lib/engines/hcktest/drivers/pvpanic.json index 912f0516..ebf01ef4 100644 --- a/lib/engines/hcktest/drivers/pvpanic.json +++ b/lib/engines/hcktest/drivers/pvpanic.json @@ -7,7 +7,6 @@ "support": false, "reject_test_names": [ "DF - Embedded Signature Verification Test (Certification)", - "DF - Embedded Signature Verification Test (Tuning and Validation)", - "Hardware-enforced Stack Protection Compatibility Test" + "DF - Embedded Signature Verification Test (Tuning and Validation)" ] } diff --git a/lib/engines/hcktest/drivers/viofs.json b/lib/engines/hcktest/drivers/viofs.json index 5802f7e2..1c2702a6 100644 --- a/lib/engines/hcktest/drivers/viofs.json +++ b/lib/engines/hcktest/drivers/viofs.json @@ -7,7 +7,6 @@ "support": false, "reject_test_names": [ "DF - Embedded Signature Verification Test (Certification)", - "DF - Embedded Signature Verification Test (Tuning and Validation)", - "Hardware-enforced Stack Protection Compatibility Test" + "DF - Embedded Signature Verification Test (Tuning and Validation)" ] } diff --git a/lib/engines/hcktest/drivers/viogpu.json b/lib/engines/hcktest/drivers/viogpu.json index 45b727ea..a5199c4a 100644 --- a/lib/engines/hcktest/drivers/viogpu.json +++ b/lib/engines/hcktest/drivers/viogpu.json @@ -14,7 +14,6 @@ "Test for EDID Requirements (Manual)", "Multimon minimum resolution check - Multihead", "WDDM HPD Notification Test (Manual)", - "Check Resolution for Dualview (WoW64) - multihead", - "Hardware-enforced Stack Protection Compatibility Test" + "Check Resolution for Dualview (WoW64) - multihead" ] } diff --git a/lib/engines/hcktest/drivers/vioinput.json b/lib/engines/hcktest/drivers/vioinput.json index 35dc3a80..5f8e5ccd 100644 --- a/lib/engines/hcktest/drivers/vioinput.json +++ b/lib/engines/hcktest/drivers/vioinput.json @@ -7,7 +7,6 @@ "support": false, "reject_test_names": [ "DF - Embedded Signature Verification Test (Certification)", - "DF - Embedded Signature Verification Test (Tuning and Validation)", - "Hardware-enforced Stack Protection Compatibility Test" + "DF - Embedded Signature Verification Test (Tuning and Validation)" ] } diff --git a/lib/engines/hcktest/drivers/viomem.json b/lib/engines/hcktest/drivers/viomem.json index 77c11416..f01182c0 100644 --- a/lib/engines/hcktest/drivers/viomem.json +++ b/lib/engines/hcktest/drivers/viomem.json @@ -4,8 +4,5 @@ "inf": "viomem.inf", "install_method": "PNP", "type": 0, - "support": false, - "reject_test_names": [ - "Hardware-enforced Stack Protection Compatibility Test" - ] + "support": false } diff --git a/lib/engines/hcktest/drivers/viorng.json b/lib/engines/hcktest/drivers/viorng.json index 2233a660..c7b70cd6 100644 --- a/lib/engines/hcktest/drivers/viorng.json +++ b/lib/engines/hcktest/drivers/viorng.json @@ -7,7 +7,6 @@ "support": false, "reject_test_names": [ "DF - Embedded Signature Verification Test (Certification)", - "DF - Embedded Signature Verification Test (Tuning and Validation)", - "Hardware-enforced Stack Protection Compatibility Test" + "DF - Embedded Signature Verification Test (Tuning and Validation)" ] } diff --git a/lib/engines/hcktest/drivers/vioscsi.json b/lib/engines/hcktest/drivers/vioscsi.json index 0e534b92..b9a68c93 100644 --- a/lib/engines/hcktest/drivers/vioscsi.json +++ b/lib/engines/hcktest/drivers/vioscsi.json @@ -43,7 +43,6 @@ "reject_test_names": [ "DF - Embedded Signature Verification Test (Certification)", "DF - Embedded Signature Verification Test (Tuning and Validation)", - "DF - Reboot Restart with IO During (Reliability)", - "Hardware-enforced Stack Protection Compatibility Test" + "DF - Reboot Restart with IO During (Reliability)" ] } diff --git a/lib/engines/hcktest/drivers/vioserial.json b/lib/engines/hcktest/drivers/vioserial.json index 3a00f761..b0ae9316 100644 --- a/lib/engines/hcktest/drivers/vioserial.json +++ b/lib/engines/hcktest/drivers/vioserial.json @@ -7,7 +7,6 @@ "support": false, "reject_test_names": [ "DF - Embedded Signature Verification Test (Certification)", - "DF - Embedded Signature Verification Test (Tuning and Validation)", - "Hardware-enforced Stack Protection Compatibility Test" + "DF - Embedded Signature Verification Test (Tuning and Validation)" ] } diff --git a/lib/engines/hcktest/drivers/viosock.json b/lib/engines/hcktest/drivers/viosock.json index 249c92d3..d1fe79b2 100644 --- a/lib/engines/hcktest/drivers/viosock.json +++ b/lib/engines/hcktest/drivers/viosock.json @@ -7,7 +7,6 @@ "support": false, "reject_test_names": [ "DF - Embedded Signature Verification Test (Certification)", - "DF - Embedded Signature Verification Test (Tuning and Validation)", - "Hardware-enforced Stack Protection Compatibility Test" + "DF - Embedded Signature Verification Test (Tuning and Validation)" ] } diff --git a/lib/engines/hcktest/drivers/viostor.json b/lib/engines/hcktest/drivers/viostor.json index 7b1ea29a..e51003f5 100644 --- a/lib/engines/hcktest/drivers/viostor.json +++ b/lib/engines/hcktest/drivers/viostor.json @@ -46,7 +46,6 @@ "Thin Provisioning SCSI Compliance Test (LOGO)", "Thin Provisioning Performance Test - RAW Disk (LOGO)", "Thin Provisioning Performance Test - NTFS (LOGO)", - "Thin Provisioning Threshold and Resource Exhaustion Test (LOGO)", - "Hardware-enforced Stack Protection Compatibility Test" + "Thin Provisioning Threshold and Resource Exhaustion Test (LOGO)" ] } diff --git a/lib/engines/hcktest/hcktest.json b/lib/engines/hcktest/hcktest.json index 3f0e3039..115f1269 100644 --- a/lib/engines/hcktest/hcktest.json +++ b/lib/engines/hcktest/hcktest.json @@ -46,6 +46,32 @@ "value": "C:\\Windows\\mib.bin" } ] + }, + { + "tests": ["Hardware-enforced Stack Protection Compatibility Test"], + "pre_test_commands": [ + { + "desc": "Upload HSP watcher script", + "files_action": [ + { + "local_path": "lib/engines/hcktest/scripts/autoit/hsp_watcher.au3", + "remote_path": "C:\\UIAgent\\autoit\\hsp_watcher.au3", + "direction": "local-to-remote" + } + ] + }, + { + "desc": "Set HSP watcher to start on any user logon and reboot to activate", + "guest_run": "New-ItemProperty -Path 'HKLM:\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run' -Name 'AutoHCK_UIWatcher' -Value '\"C:\\Program Files (x86)\\AutoIt3\\AutoIt3.exe\" \"C:\\UIAgent\\autoit\\hsp_watcher.au3\"' -PropertyType String -Force", + "guest_reboot": true + } + ], + "post_test_commands": [ + { + "desc": "Stop and remove HSP watcher", + "guest_run": "Remove-ItemProperty -Path 'HKLM:\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run' -Name 'AutoHCK_UIWatcher' -ErrorAction SilentlyContinue; Stop-Process -Name AutoIt3 -Force -ErrorAction SilentlyContinue; exit 0" + } + ] } ] } diff --git a/lib/engines/hcktest/scripts/autoit/hsp_watcher.au3 b/lib/engines/hcktest/scripts/autoit/hsp_watcher.au3 new file mode 100644 index 00000000..6fd15dbf --- /dev/null +++ b/lib/engines/hcktest/scripts/autoit/hsp_watcher.au3 @@ -0,0 +1,52 @@ +#NoTrayIcon +#include + +Opt("WinTitleMatchMode", 2) +HotKeySet("+{ESC}", "Terminate") + +Global $hspDone = False +Global $ignoredCmds = "|" + +ConsoleWrite("[" & @HOUR & ":" & @MIN & ":" & @SEC & "] HSP Watcher Started..." & @CRLF) + +While 1 + If Not $hspDone And WinExists("C:\Windows\SYSTEM32\cmd.exe") Then + Local $hWnd = WinGetHandle("C:\Windows\SYSTEM32\cmd.exe") + + If Not StringInStr($ignoredCmds, "|" & $hWnd & "|") Then + WinActivate($hWnd) + WinWaitActive($hWnd, "", 2) + + Local $bakClip = ClipGet() + ClipPut("") + + Send("^a") + Sleep(100) + Send("{ENTER}") + Sleep(200) + + Local $winText = ClipGet() + ClipPut($bakClip) + + If StringInStr($winText, "Hardware-enforced") Then + ConsoleWrite("[" & @HOUR & ":" & @MIN & ":" & @SEC & "] Confirmed HSP test window, sending Y..." & @CRLF) + Send("{ESC}") + Sleep(100) + Send("Y") + Sleep(200) + Send("{ENTER}") + $hspDone = True + Sleep(5000) + Else + Send("{ESC}") + $ignoredCmds &= $hWnd & "|" + EndIf + EndIf + EndIf + + Sleep(200) +WEnd + +Func Terminate() + Exit +EndFunc diff --git a/lib/engines/hcktest/tests.rb b/lib/engines/hcktest/tests.rb index 3affb7e4..61d6ed01 100644 --- a/lib/engines/hcktest/tests.rb +++ b/lib/engines/hcktest/tests.rb @@ -205,6 +205,11 @@ def run_guest_test_command(command, replacement) run_command_on_client(@client, command.guest_run, command.desc, replacement) run_command_on_client(@support, command.guest_run, command.desc, replacement) unless @support.nil? + + return unless command.guest_reboot + + @logger.info("Rebooting client #{@client.name} after command (#{command.desc})") + @tools.restart_machine(@client.name) end def run_host_test_command(command)