diff --git a/src/core/operations/UNIXTimestampToWindowsFiletime.mjs b/src/core/operations/UNIXTimestampToWindowsFiletime.mjs index c87f3507..1ccd3298 100644 --- a/src/core/operations/UNIXTimestampToWindowsFiletime.mjs +++ b/src/core/operations/UNIXTimestampToWindowsFiletime.mjs @@ -34,7 +34,7 @@ class UNIXTimestampToWindowsFiletime extends Operation { { "name": "Output format", "type": "option", - "value": ["Decimal", "Hex"] + "value": ["Decimal", "Hex (big endian)", "Hex (little endian)"] } ]; } @@ -65,11 +65,24 @@ class UNIXTimestampToWindowsFiletime extends Operation { input = input.plus(new BigNumber("116444736000000000")); - if (format === "Hex") { - return input.toString(16); + let result; + if (format.startsWith("Hex")) { + result = input.toString(16); } else { - return input.toFixed(); + result = input.toFixed(); } + + if (format === "Hex (little endian)") { + // Swap endianness + let flipped = ""; + for (let i = result.length - 2; i >= 0; i -= 2) { + flipped += result.charAt(i); + flipped += result.charAt(i + 1); + } + result = flipped; + } + + return result; } } diff --git a/src/core/operations/WindowsFiletimeToUNIXTimestamp.mjs b/src/core/operations/WindowsFiletimeToUNIXTimestamp.mjs index 32c272f9..7411a6e9 100644 --- a/src/core/operations/WindowsFiletimeToUNIXTimestamp.mjs +++ b/src/core/operations/WindowsFiletimeToUNIXTimestamp.mjs @@ -34,12 +34,7 @@ class WindowsFiletimeToUNIXTimestamp extends Operation { { "name": "Input format", "type": "option", - "value": ["Decimal", "Hex"] - }, - { - "name": "Swap Endianness", - "type": "boolean", - "value": false + "value": ["Decimal", "Hex (big endian)", "Hex (little endian)"] } ]; } @@ -50,9 +45,12 @@ class WindowsFiletimeToUNIXTimestamp extends Operation { * @returns {string} */ run(input, args) { - const [units, format, swapEndianness] = args; + const [units, format] = args; - if (swapEndianness) { + if (!input) return ""; + + if (format === "Hex (little endian)") { + // Swap endianness let result = ""; for (let i = input.length - 2; i >= 0; i -= 2) { result += input.charAt(i); @@ -61,9 +59,7 @@ class WindowsFiletimeToUNIXTimestamp extends Operation { input = result; } - if (!input) return ""; - - if (format === "Hex") { + if (format.startsWith("Hex")) { input = new BigNumber(input, 16); } else { input = new BigNumber(input);