From 14190fc5334ef0ca398a084829743846dafa3a9a Mon Sep 17 00:00:00 2001 From: n1073645 Date: Thu, 5 Mar 2020 15:01:07 +0000 Subject: [PATCH 1/4] DEB extractor --- src/core/lib/FileSignatures.mjs | 61 ++++++++++++++++++++++++++++----- 1 file changed, 53 insertions(+), 8 deletions(-) diff --git a/src/core/lib/FileSignatures.mjs b/src/core/lib/FileSignatures.mjs index 4d817326..51b3f9b8 100644 --- a/src/core/lib/FileSignatures.mjs +++ b/src/core/lib/FileSignatures.mjs @@ -1716,13 +1716,27 @@ export const FILE_SIGNATURES = { extension: "jar", mime: "application/java-archive", description: "", - signature: { - 0: 0x5f, - 1: 0x27, - 2: 0xa8, - 3: 0x89 - }, - extractor: null + signature: [ + { + 0: 0x5f, + 1: 0x27, + 2: 0xa8, + 3: 0x89 + }, + { + 0: 0x50, + 1: 0x4B, + 2: 0x03, + 3: 0x04, + 4: 0x14, + 5: 0x00, + 6: 0x08, + 7: 0x00, + 8: 0x08, + 9: 0x00 + } + ], + extractor: extractZIP }, { name: "lzop compressed", @@ -1755,7 +1769,7 @@ export const FILE_SIGNATURES = { 5: 0x68, 6: 0x3e }, - extractor: null + extractor: extractDEB }, { name: "Apple Disk Image", @@ -3448,6 +3462,37 @@ export function extractXZ(bytes, offset) { } +/** + * DEB extractor. + * + * @param {Uint8Array} bytes + * @param {Number} offset + */ +export function extractDEB(bytes, offset) { + const stream = new Stream(bytes.slice(offset)); + + // Move past ! + stream.moveForwardsBy(8); + while (stream.hasMore()) { + + // Move to size field. + stream.moveForwardsBy(48); + let fsize= ""; + + // Convert size to a usable number. + for (const elem of stream.getBytes(10)) { + fsize += String.fromCharCode(elem); + } + fsize = parseInt(fsize.trim(), 10); + + // Move past `\n + stream.moveForwardsBy(2); + stream.moveForwardsBy(fsize); + } + return stream.carve(); +} + + /** * ELF extractor. * From 673e6aede545fad4104c23538e45cef8ea72efb2 Mon Sep 17 00:00:00 2001 From: n1073645 Date: Fri, 6 Mar 2020 14:26:05 +0000 Subject: [PATCH 2/4] Moved alternative JAR signature --- src/core/lib/FileSignatures.mjs | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/src/core/lib/FileSignatures.mjs b/src/core/lib/FileSignatures.mjs index 51b3f9b8..48699b0a 100644 --- a/src/core/lib/FileSignatures.mjs +++ b/src/core/lib/FileSignatures.mjs @@ -1716,13 +1716,21 @@ export const FILE_SIGNATURES = { extension: "jar", mime: "application/java-archive", description: "", - signature: [ + signature: { 0: 0x5f, 1: 0x27, 2: 0xa8, 3: 0x89 }, + extractor: extractZIP + }, + { + name: "Jar Archive Alternative", + extension: "jar", + mime: "application/java-archive", + description: "", + signature: { 0: 0x50, 1: 0x4B, @@ -1734,9 +1742,8 @@ export const FILE_SIGNATURES = { 7: 0x00, 8: 0x08, 9: 0x00 - } - ], - extractor: extractZIP + }, + extractor: null }, { name: "lzop compressed", From 02e3ce7fc1a63c57015a3e33e28b0348d3464d52 Mon Sep 17 00:00:00 2001 From: n1073645 Date: Fri, 6 Mar 2020 14:50:25 +0000 Subject: [PATCH 3/4] Linting --- src/core/lib/FileSignatures.mjs | 40 ++++++++++++++++----------------- 1 file changed, 19 insertions(+), 21 deletions(-) diff --git a/src/core/lib/FileSignatures.mjs b/src/core/lib/FileSignatures.mjs index 48699b0a..10c0dcda 100644 --- a/src/core/lib/FileSignatures.mjs +++ b/src/core/lib/FileSignatures.mjs @@ -1716,33 +1716,31 @@ export const FILE_SIGNATURES = { extension: "jar", mime: "application/java-archive", description: "", - signature: - { - 0: 0x5f, - 1: 0x27, - 2: 0xa8, - 3: 0x89 - }, + signature: { + 0: 0x5f, + 1: 0x27, + 2: 0xa8, + 3: 0x89 + }, extractor: extractZIP }, { - name: "Jar Archive Alternative", + name: "Jar Archive", extension: "jar", mime: "application/java-archive", description: "", - signature: - { - 0: 0x50, - 1: 0x4B, - 2: 0x03, - 3: 0x04, - 4: 0x14, - 5: 0x00, - 6: 0x08, - 7: 0x00, - 8: 0x08, - 9: 0x00 - }, + signature: { + 0: 0x50, + 1: 0x4B, + 2: 0x03, + 3: 0x04, + 4: 0x14, + 5: 0x00, + 6: 0x08, + 7: 0x00, + 8: 0x08, + 9: 0x00 + }, extractor: null }, { From 27b81c4e11b4becc1a8e9656dd4072f40e616c8e Mon Sep 17 00:00:00 2001 From: n1474335 Date: Fri, 6 Mar 2020 15:59:42 +0000 Subject: [PATCH 4/4] Tidied up JAR and DEB extractors --- src/core/lib/FileSignatures.mjs | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/core/lib/FileSignatures.mjs b/src/core/lib/FileSignatures.mjs index bd822e39..7ec0af21 100644 --- a/src/core/lib/FileSignatures.mjs +++ b/src/core/lib/FileSignatures.mjs @@ -1722,7 +1722,7 @@ export const FILE_SIGNATURES = { 2: 0xa8, 3: 0x89 }, - extractor: extractZIP + extractor: null }, { name: "Jar Archive", @@ -1741,7 +1741,7 @@ export const FILE_SIGNATURES = { 8: 0x08, 9: 0x00 }, - extractor: null + extractor: extractZIP }, { name: "lzop compressed", @@ -1761,7 +1761,7 @@ export const FILE_SIGNATURES = { extractor: extractLZOP }, { - name: "Linux deb", + name: "Linux deb package", extension: "deb", mime: "application/vnd.debian.binary-package", description: "",