more wmic replacements

Signed-off-by: si458 <simonsmith5521@gmail.com>

si458 committed Nov 4, 2024 at 15:09 UTC b39235643e36438665d2ca1eb2a4901d03f388d2
6 files changed +57 -70
agents/meshcore.js
+10 -3
@@ -3885,7 +3885,7 @@ function processConsoleCommand(cmd, args, rights, sessionid) {
3885 if (bcdOK()) { availcommands += ',safemode'; }
3886 if (require('notifybar-desktop').DefaultPinned != null) { availcommands += ',privacybar'; }
3887 try { require('win-utils'); availcommands += ',taskbar'; } catch (ex) { }
3888 - try { require('win-info'); availcommands += ',installedapps'; } catch (ex) { }
3888 + try { require('win-info'); availcommands += ',installedapps,qfe'; } catch (ex) { }
3889 }
3890 if (amt != null) { availcommands += ',amt,amtconfig,amtevents'; }
3891 if (process.platform != 'freebsd') { availcommands += ',vm'; }
@@ -5329,6 +5329,13 @@ function processConsoleCommand(cmd, args, rights, sessionid) {
5329 }
5330 break;
5331 }
5332 + case 'qfe': {
5333 + if(process.platform == 'win32'){
5334 + var qfe = require('win-info').qfe();
5335 + sendConsoleText(JSON.stringify(qfe,null,1));
5336 + }
5337 + break;
5338 + }
5339 default: { // This is an unknown command, return an error message
5340 response = "Unknown command \"" + cmd + "\", type \"help\" for list of available commands.";
5341 break;
@@ -5597,8 +5604,8 @@ function windows_execve(name, agentfilename, sessionid) {
5604 var cmd = require('_GenericMarshal').CreateVariable(process.env['windir'] + '\\system32\\cmd.exe', { wide: true });
5605 var args = require('_GenericMarshal').CreateVariable(3 * require('_GenericMarshal').PointerSize);
5606 var arg1 = require('_GenericMarshal').CreateVariable('cmd.exe', { wide: true });
5600 - var arg2 = require('_GenericMarshal').CreateVariable('/C wmic service "' + name + '" call stopservice & "' + process.cwd() + agentfilename + '.update.exe" -b64exec ' + 'dHJ5CnsKICAgIHZhciBzZXJ2aWNlTG9jYXRpb24gPSBwcm9jZXNzLmFyZ3YucG9wKCkudG9Mb3dlckNhc2UoKTsKICAgIHJlcXVpcmUoJ3Byb2Nlc3MtbWFuYWdlcicpLmVudW1lcmF0ZVByb2Nlc3NlcygpLnRoZW4oZnVuY3Rpb24gKHByb2MpCiAgICB7CiAgICAgICAgZm9yICh2YXIgcCBpbiBwcm9jKQogICAgICAgIHsKICAgICAgICAgICAgaWYgKHByb2NbcF0ucGF0aCAmJiAocHJvY1twXS5wYXRoLnRvTG93ZXJDYXNlKCkgPT0gc2VydmljZUxvY2F0aW9uKSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgcHJvY2Vzcy5raWxsKHByb2NbcF0ucGlkKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBwcm9jZXNzLmV4aXQoKTsKICAgIH0pOwp9CmNhdGNoIChlKQp7CiAgICBwcm9jZXNzLmV4aXQoKTsKfQ==' +
5601 - ' "' + process.execPath + '" & copy "' + process.cwd() + agentfilename + '.update.exe" "' + process.execPath + '" & wmic service "' + name + '" call startservice & erase "' + process.cwd() + agentfilename + '.update.exe"', { wide: true });
5607 + var arg2 = require('_GenericMarshal').CreateVariable('/C net stop "' + name + '" & "' + process.cwd() + agentfilename + '.update.exe" -b64exec ' + 'dHJ5CnsKICAgIHZhciBzZXJ2aWNlTG9jYXRpb24gPSBwcm9jZXNzLmFyZ3YucG9wKCkudG9Mb3dlckNhc2UoKTsKICAgIHJlcXVpcmUoJ3Byb2Nlc3MtbWFuYWdlcicpLmVudW1lcmF0ZVByb2Nlc3NlcygpLnRoZW4oZnVuY3Rpb24gKHByb2MpCiAgICB7CiAgICAgICAgZm9yICh2YXIgcCBpbiBwcm9jKQogICAgICAgIHsKICAgICAgICAgICAgaWYgKHByb2NbcF0ucGF0aCAmJiAocHJvY1twXS5wYXRoLnRvTG93ZXJDYXNlKCkgPT0gc2VydmljZUxvY2F0aW9uKSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgcHJvY2Vzcy5raWxsKHByb2NbcF0ucGlkKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBwcm9jZXNzLmV4aXQoKTsKICAgIH0pOwp9CmNhdGNoIChlKQp7CiAgICBwcm9jZXNzLmV4aXQoKTsKfQ==' +
5608 + ' "' + process.execPath + '" & copy "' + process.cwd() + agentfilename + '.update.exe" "' + process.execPath + '" & net start "' + name + '" & erase "' + process.cwd() + agentfilename + '.update.exe"', { wide: true });
5609
5610 arg1.pointerBuffer().copy(args.toBuffer());
5611 arg2.pointerBuffer().copy(args.toBuffer(), require('_GenericMarshal').PointerSize);
agents/modules_meshcmd/sysinfo.js
+7 -12
@@ -225,19 +225,14 @@ function macos_memUtilization()
225 function windows_thermals()
226 {
227 var ret = [];
228 - child = require('child_process').execFile(process.env['windir'] + '\\System32\\wbem\\wmic.exe', ['wmic', '/namespace:\\\\root\\wmi', 'PATH', 'MSAcpi_ThermalZoneTemperature', 'get', 'CurrentTemperature']);
229 - child.stdout.str = ''; child.stdout.on('data', function (c) { this.str += c.toString(); });
230 - child.stderr.str = ''; child.stderr.on('data', function (c) { this.str += c.toString(); });
231 - child.waitExit();
232 -
233 - if(child.stdout.str.trim!='')
234 - {
235 - var lines = child.stdout.str.trim().split('\r\n');
236 - for (var i = 1; i < lines.length; ++i)
237 - {
238 - if (lines[i].trim() != '') { ret.push(((parseFloat(lines[i]) / 10) - 273.15).toFixed(2)); }
228 + try {
229 + ret = require('win-wmi').query('ROOT\\WMI', 'SELECT CurrentTemperature,InstanceName FROM MSAcpi_ThermalZoneTemperature',['CurrentTemperature','InstanceName']);
230 + if (ret[0]) {
231 + for (var i = 0; i < ret.length; ++i) {
232 + ret[i]['CurrentTemperature'] = ((parseFloat(ret[i]['CurrentTemperature']) / 10) - 273.15).toFixed(2);
233 + }
234 }
240 - }
235 + } catch (ex) { }
236 return (ret);
237 }
238
agents/modules_meshcore/computer-identifiers.js
+19 -16
@@ -800,32 +800,35 @@ function hexToAscii(hexString) {
800
801 function win_chassisType()
802 {
803 - var child = require('child_process').execFile(process.env['windir'] + '\\System32\\wbem\\wmic.exe', ['wmic', 'SystemEnclosure', 'get', 'ChassisTypes']);
803 + // needs to be replaced with win-wmi but due to bug in win-wmi it doesnt handle arrays correctly
804 + var child = require('child_process').execFile(process.env['windir'] + '\\System32\\WindowsPowerShell\\v1.0\\powershell.exe', ['powershell', '-noprofile', '-nologo', '-command', '-'], {});
805 + if (child == null) { return ([]); }
806 + child.descriptorMetadata = 'process-manager';
807 child.stdout.str = ''; child.stdout.on('data', function (c) { this.str += c.toString(); });
808 child.stderr.str = ''; child.stderr.on('data', function (c) { this.str += c.toString(); });
809 + child.stdin.write('Get-CimInstance Win32_SystemEnclosure| Select-Object -ExpandProperty ChassisTypes\r\n');
810 + child.stdin.write('exit\r\n');
811 child.waitExit();
807 -
808 - try
809 - {
810 - var tok = child.stdout.str.split('{')[1].split('}')[0];
811 - var val = tok.split(',')[0];
812 - return (parseInt(val));
813 - }
814 - catch (e)
815 - {
812 + try {
813 + return (parseInt(child.stdout.str));
814 + } catch (e) {
815 return (2); // unknown
816 }
817 }
818
819 function win_systemType()
820 {
822 - var CSV = '/FORMAT:"' + require('util-language').wmicXslPath + 'csv"';
823 - var child = require('child_process').execFile(process.env['windir'] + '\\System32\\wbem\\wmic.exe', ['wmic', 'ComputerSystem', 'get', 'PCSystemType', CSV]);
824 - child.stdout.str = ''; child.stdout.on('data', function (c) { this.str += c.toString(); });
825 - child.stderr.str = ''; child.stderr.on('data', function (c) { this.str += c.toString(); });
826 - child.waitExit();
821 + try {
822 + var tokens = require('win-wmi').query('ROOT\\CIMV2', 'SELECT PCSystemType FROM Win32_ComputerSystem', ['PCSystemType']);
823 + if (tokens[0]) {
824 + return (parseInt(tokens[0]['PCSystemType']));
825 + } else {
826 + return (parseInt(1)); // default is desktop
827 + }
828 + } catch (ex) {
829 + return (parseInt(1)); // default is desktop
830 + }
831
828 - return (parseInt(child.stdout.str.trim().split(',').pop()));
832 }
833
834 function win_formFactor(chassistype)
agents/modules_meshcore/sysinfo.js
+6 -17
@@ -229,25 +229,14 @@ function macos_memUtilization()
229 function windows_thermals()
230 {
231 var ret = [];
232 - child = require('child_process').execFile(process.env['windir'] + '\\System32\\wbem\\wmic.exe', ['wmic', '/namespace:\\\\root\\wmi', 'PATH', 'MSAcpi_ThermalZoneTemperature', 'get', 'CurrentTemperature,InstanceName', '/FORMAT:CSV']);
233 - child.stdout.str = ''; child.stdout.on('data', function (c) { this.str += c.toString(); });
234 - child.stderr.str = ''; child.stderr.on('data', function (c) { this.str += c.toString(); });
235 - child.waitExit();
236 - if(child.stdout.str.trim()!='')
237 - {
238 - var lines = child.stdout.str.trim().split('\r\n');
239 - var keys = lines[0].trim().split(',');
240 - for (var i = 1; i < lines.length; ++i)
241 - {
242 - var obj = {};
243 - var tokens = lines[i].trim().split(',');
244 - for (var key = 0; key < keys.length; ++key)
245 - {
246 - if (tokens[key]) { obj[keys[key]] = key==1 ? ((parseFloat(tokens[key]) / 10) - 273.15).toFixed(2) : tokens[key]; }
232 + try {
233 + ret = require('win-wmi').query('ROOT\\WMI', 'SELECT CurrentTemperature,InstanceName FROM MSAcpi_ThermalZoneTemperature',['CurrentTemperature','InstanceName']);
234 + if (ret[0]) {
235 + for (var i = 0; i < ret.length; ++i) {
236 + ret[i]['CurrentTemperature'] = ((parseFloat(ret[i]['CurrentTemperature']) / 10) - 273.15).toFixed(2);
237 }
248 - ret.push(obj);
238 }
250 - }
239 + } catch (ex) { }
240 return (ret);
241 }
242
agents/modules_meshcore/win-info.js
+13 -20
@@ -18,28 +18,21 @@ var promise = require('promise');
18
19 function qfe()
20 {
21 - var child = require('child_process').execFile(process.env['windir'] + '\\System32\\wbem\\wmic.exe', ['wmic', 'qfe', 'list', 'full', '/FORMAT:CSV']);
22 - child.stdout.str = ''; child.stdout.on('data', function (c) { this.str += c.toString(); });
23 - child.stderr.str = ''; child.stderr.on('data', function (c) { this.str += c.toString(); });
24 - child.waitExit();
25 -
26 - var lines = child.stdout.str.trim().split('\r\n');
27 - var keys = lines[0].split(',');
28 - var i, key;
29 - var tokens;
30 - var result = [];
31 -
32 - for (i = 1; i < lines.length; ++i)
33 - {
34 - var obj = {};
35 - tokens = lines[i].split(',');
36 - for (key = 0; key < keys.length; ++key)
37 - {
38 - if (tokens[key]) { obj[keys[key]] = tokens[key]; }
21 + try {
22 + var tokens = require('win-wmi').query('ROOT\\CIMV2', 'SELECT * FROM Win32_QuickFixEngineering');
23 + if (tokens[0]){
24 + for (var index = 0; index < tokens.length; index++) {
25 + for (var key in tokens[index]) {
26 + if (key.startsWith('__')) delete tokens[index][key];
27 + }
28 + }
29 + return (tokens);
30 + } else {
31 + return ([]);
32 }
40 - result.push(obj);
33 + } catch (ex) {
34 + return ([]);
35 }
42 - return (result);
36 }
37 function av()
38 {
agents/recoverycore.js
+2 -2
@@ -485,8 +485,8 @@ function windows_execve(name, agentfilename, sessionid) {
485 var cmd = require('_GenericMarshal').CreateVariable(process.env['windir'] + '\\system32\\cmd.exe', { wide: true });
486 var args = require('_GenericMarshal').CreateVariable(3 * require('_GenericMarshal').PointerSize);
487 var arg1 = require('_GenericMarshal').CreateVariable('cmd.exe', { wide: true });
488 - var arg2 = require('_GenericMarshal').CreateVariable('/C wmic service "' + name + '" call stopservice & "' + cwd + agentfilename + '.update.exe" -b64exec ' + 'dHJ5CnsKICAgIHZhciBzZXJ2aWNlTG9jYXRpb24gPSBwcm9jZXNzLmFyZ3YucG9wKCkudG9Mb3dlckNhc2UoKTsKICAgIHJlcXVpcmUoJ3Byb2Nlc3MtbWFuYWdlcicpLmVudW1lcmF0ZVByb2Nlc3NlcygpLnRoZW4oZnVuY3Rpb24gKHByb2MpCiAgICB7CiAgICAgICAgZm9yICh2YXIgcCBpbiBwcm9jKQogICAgICAgIHsKICAgICAgICAgICAgaWYgKHByb2NbcF0ucGF0aCAmJiAocHJvY1twXS5wYXRoLnRvTG93ZXJDYXNlKCkgPT0gc2VydmljZUxvY2F0aW9uKSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgcHJvY2Vzcy5raWxsKHByb2NbcF0ucGlkKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBwcm9jZXNzLmV4aXQoKTsKICAgIH0pOwp9CmNhdGNoIChlKQp7CiAgICBwcm9jZXNzLmV4aXQoKTsKfQ==' +
489 - ' "' + process.execPath + '" & copy "' + cwd + agentfilename + '.update.exe" "' + process.execPath + '" & wmic service "' + name + '" call startservice & erase "' + cwd + agentfilename + '.update.exe"', { wide: true });
488 + var arg2 = require('_GenericMarshal').CreateVariable('/C net stop "' + name + '" & "' + cwd + agentfilename + '.update.exe" -b64exec ' + 'dHJ5CnsKICAgIHZhciBzZXJ2aWNlTG9jYXRpb24gPSBwcm9jZXNzLmFyZ3YucG9wKCkudG9Mb3dlckNhc2UoKTsKICAgIHJlcXVpcmUoJ3Byb2Nlc3MtbWFuYWdlcicpLmVudW1lcmF0ZVByb2Nlc3NlcygpLnRoZW4oZnVuY3Rpb24gKHByb2MpCiAgICB7CiAgICAgICAgZm9yICh2YXIgcCBpbiBwcm9jKQogICAgICAgIHsKICAgICAgICAgICAgaWYgKHByb2NbcF0ucGF0aCAmJiAocHJvY1twXS5wYXRoLnRvTG93ZXJDYXNlKCkgPT0gc2VydmljZUxvY2F0aW9uKSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgcHJvY2Vzcy5raWxsKHByb2NbcF0ucGlkKTsKICAgICAgICAgICAgfQogICAgICAgIH0KICAgICAgICBwcm9jZXNzLmV4aXQoKTsKICAgIH0pOwp9CmNhdGNoIChlKQp7CiAgICBwcm9jZXNzLmV4aXQoKTsKfQ==' +
489 + ' "' + process.execPath + '" & copy "' + cwd + agentfilename + '.update.exe" "' + process.execPath + '" & net start "' + name + '" & erase "' + cwd + agentfilename + '.update.exe"', { wide: true });
490
491 if (name == null)
492 {