From 9c2ef4e0da09e8f13830ac292526064c34b98630 Mon Sep 17 00:00:00 2001 From: mwalker33 Date: Sat, 26 Oct 2019 13:17:33 +1100 Subject: [PATCH] 2nd Win10 Color Reg. Key Check --- client/proxmark3.c | 29 +++++++++++++++++-- .../Windows-Installation-Instructions.md | 10 ++++++- 2 files changed, 36 insertions(+), 3 deletions(-) diff --git a/client/proxmark3.c b/client/proxmark3.c index fde2af91e..53ce6e203 100644 --- a/client/proxmark3.c +++ b/client/proxmark3.c @@ -473,11 +473,16 @@ finish2: // Check if windows AnsiColor Support is enabled in the registery // [HKEY_CURRENT_USER\Console] // "VirtualTerminalLevel"=dword:00000001 +// 2nd Key needs to be enabled... This key takes the console out of legacy mode. +// [HKEY_CURRENT_USER\Console] +// "ForceV2"=dword:00000001 static bool DetectWindowsAnsiSupport(void) { bool ret = false; #if defined(_WIN32) HKEY hKey = NULL; - + bool virtualTerminalLevelSet = false; + bool forceV2Set = false; + if (RegOpenKeyA(HKEY_CURRENT_USER, "Console", &hKey) == ERROR_SUCCESS) { DWORD dwType = REG_SZ; BYTE KeyValue[sizeof(dwType)]; @@ -490,11 +495,31 @@ static bool DetectWindowsAnsiSupport(void) { Data += KeyValue[i] << (8 * i); if (Data == 1) { // Reg key is set to 1, Ansi Color Enabled - ret = true; + virtualTerminalLevelSet = true; } } RegCloseKey(hKey); } + + if (RegOpenKeyA(HKEY_CURRENT_USER, "Console", &hKey) == ERROR_SUCCESS) { + DWORD dwType = REG_SZ; + BYTE KeyValue[sizeof(dwType)]; + DWORD len = sizeof(KeyValue); + + if (RegQueryValueEx(hKey, "ForceV2", NULL, &dwType, KeyValue, &len) != ERROR_FILE_NOT_FOUND) { + uint8_t i; + uint32_t Data = 0; + for (i = 0; i < 4; i++) + Data += KeyValue[i] << (8 * i); + + if (Data == 1) { // Reg key is set to 1, Not using legacy Mode. + forceV2Set = true; + } + } + RegCloseKey(hKey); + } + // If both VirtualTerminalLevel and ForceV2 is set, AnsiColor should work + ret = virtualTerminalLevelSet && forceV2Set; #endif return ret; } diff --git a/doc/md/Installation_Instructions/Windows-Installation-Instructions.md b/doc/md/Installation_Instructions/Windows-Installation-Instructions.md index dfbea55c4..d77a2dfae 100644 --- a/doc/md/Installation_Instructions/Windows-Installation-Instructions.md +++ b/doc/md/Installation_Instructions/Windows-Installation-Instructions.md @@ -135,4 +135,12 @@ In later versions of windows 10 you may be able to get color to work by setting [HKEY_CURRENT_USER\Console] "VirtualTerminalLevel"=dword:00000001 ``` -If after setting this key (and restarting proxmark3.exe) you get extra characters and no color text, either delete the key or set the value to 0 +You also need to disable "use legacy console" in the cmd.exe properties, or set the following registry key +``` +[HKEY_CURRENT_USER\Console] + "ForceV2"=dword:00000001 +``` +After making these changes, you will need to start a new command prompt (cmd.exe) to ensure its using the new settings. + +If after making these changes (and restarting proxmark3.exe) you get extra characters and no color text, set either key to 0 or enable legacy mode again (and restart the command prompt). +