diff --git a/src/core/config/OperationConfig.js b/src/core/config/OperationConfig.js index 89cd9e44..f8d9fe6d 100755 --- a/src/core/config/OperationConfig.js +++ b/src/core/config/OperationConfig.js @@ -2303,7 +2303,7 @@ const OperationConfig = { value: DateTime.UNITS }, { - name: "Input Format", + name: "Input format", type: "option", value: DateTime.FILETIME_FORMATS } @@ -2321,7 +2321,7 @@ const OperationConfig = { value: DateTime.UNITS }, { - name: "Output Format", + name: "Output format", type: "option", value: DateTime.FILETIME_FORMATS } diff --git a/src/core/operations/DateTime.js b/src/core/operations/DateTime.js index dcfa2faf..b665a2b5 100755 --- a/src/core/operations/DateTime.js +++ b/src/core/operations/DateTime.js @@ -89,14 +89,17 @@ const DateTime = { * @returns {string} */ runFromFiletimeToUnix: function(input, args) { - let units = args[0]; - let format = args[1]; + let units = args[0], + format = args[1]; + if (format === "Hex") { input = new BigInteger(input, 16); } else { input = new BigInteger(input); } + input = input.subtract(new BigInteger("116444736000000000")); + if (units === "Seconds (s)"){ input = input.divide(new BigInteger("10000000")); } else if (units === "Milliseconds (ms)") { @@ -108,6 +111,7 @@ const DateTime = { } else { throw "Unrecognised unit"; } + return input.toString(); }, @@ -121,9 +125,11 @@ const DateTime = { * @returns {string} */ runToFiletimeFromUnix: function(input, args) { - let units = args[0]; - let format = args[1]; + let units = args[0], + format = args[1]; + input = new BigInteger(input); + if (units === "Seconds (s)"){ input = input.multiply(new BigInteger("10000000")); } else if (units === "Milliseconds (ms)") { @@ -135,7 +141,9 @@ const DateTime = { } else { throw "Unrecognised unit"; } + input = input.add(new BigInteger("116444736000000000")); + if (format === "Hex"){ return input.toString(16); } else { diff --git a/test/tests/operations/DateTime.js b/test/tests/operations/DateTime.js index 7ee445ff..f8226ac6 100644 --- a/test/tests/operations/DateTime.js +++ b/test/tests/operations/DateTime.js @@ -16,7 +16,7 @@ TestRegister.addTests([ recipeConfig: [ { op: "Windows Filetime to UNIX Timestamp", - args: ["Nanoseconds (ns)"], + args: ["Nanoseconds (ns)", "Decimal"], }, ], }, @@ -27,7 +27,7 @@ TestRegister.addTests([ recipeConfig: [ { op: "UNIX Timestamp to Windows Filetime", - args: ["Nanoseconds (ns)"], + args: ["Nanoseconds (ns)", "Decimal"], }, ], },