fix bitlocker with multiple drives and german phrase checker

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

si458 committed Jan 28, 2024 at 17:30 UTC 37911d091c5c6585f1bdb7b000e7d5ec8b7779c5
1 file changed +11 -10
agents/modules_meshcore/computer-identifiers.js
+11 -10
@@ -438,18 +438,19 @@ function windows_volumes()
438 ret[key].volumeStatus = tokens[1].split('"')[1];
439 ret[key].protectionStatus = tokens[2].split('"')[1];
440 try {
441 - var str = '';
441 var foundMarkedLine = false;
442 var password = '';
444 - var child = require('child_process').execFile(process.env['windir'] + '\\system32\\cmd.exe', ['/c', 'manage-bde -protectors -get ', tokens[0].split('"')[1], ' -Type recoverypassword'], {});
445 - child.stdout.on('data', function (chunk) { str += chunk.toString(); });
446 - child.stderr.on('data', function (chunk) { str += chunk.toString(); });
447 - child.waitExit();
448 - var lines = str.split(/\r?\n/);
449 - for (var i = 0; i < lines.length; i++) {
450 - if (lines[i].trim() !== '' && lines[i].includes('Password:') && !lines[i].includes('Numerical Password:')) {
451 - if (i + 1 < lines.length && lines[i + 1].trim() !== '') {
452 - password = lines[i + 1].trim();
443 + var keychild = require('child_process').execFile(process.env['windir'] + '\\system32\\cmd.exe', ['/c', 'manage-bde -protectors -get ', tokens[0].split('"')[1], ' -Type recoverypassword'], {});
444 + keychild.stdout.str = ''; keychild.stdout.on('data', function (c) { this.str += c.toString(); });
445 + keychild.waitExit();
446 + var lines = keychild.stdout.str.trim().split('\r\n');
447 + for (var x = 0; x < lines.length; x++) {
448 + var abc = lines[x].trim();
449 + var englishpass = (abc !== '' && abc.includes('Password:') && !abc.includes('Numerical Password:')); // English Password
450 + var germanpass = (abc !== '' && abc.includes('Kennwort:') && !abc.includes('Numerisches Kennwort:')); // German Password
451 + if (englishpass || germanpass) { // Numeric Password
452 + if (x + 1 < lines.length && lines[x + 1].trim() !== '') {
453 + password = lines[x + 1].trim();
454 foundMarkedLine = true;
455 }
456 if (foundMarkedLine) break;