From 3ff5a527b3169d6b6a74f4aa0ff5cd8e021f8c6d Mon Sep 17 00:00:00 2001 From: Greg DiCristofaro Date: Tue, 21 Jan 2025 16:09:46 -0500 Subject: [PATCH 1/2] update dependency --- KeywordSearch/ivy.xml | 2 ++ KeywordSearch/nbproject/project.properties | 2 +- KeywordSearch/nbproject/project.xml | 4 ++-- 3 files changed, 5 insertions(+), 3 deletions(-) diff --git a/KeywordSearch/ivy.xml b/KeywordSearch/ivy.xml index 3a03cb9dd8..e1436d4779 100644 --- a/KeywordSearch/ivy.xml +++ b/KeywordSearch/ivy.xml @@ -58,6 +58,8 @@ + + diff --git a/KeywordSearch/nbproject/project.properties b/KeywordSearch/nbproject/project.properties index 93c35e470f..14efa21753 100644 --- a/KeywordSearch/nbproject/project.properties +++ b/KeywordSearch/nbproject/project.properties @@ -8,7 +8,7 @@ file.reference.failureaccess-1.0.2.jar=release/modules/ext/failureaccess-1.0.2.j file.reference.guava-33.4.0-jre.jar=release/modules/ext/guava-33.4.0-jre.jar file.reference.hamcrest-core-1.3.jar=release/modules/ext/hamcrest-core-1.3.jar file.reference.http2-client-11.0.24.jar=release/modules/ext/http2-client-11.0.24.jar -file.reference.http2-common-9.4.53.v20231009.jar=release/modules/ext/http2-common-9.4.53.v20231009.jar +file.reference.http2-common-9.4.57.v20241219.jar=release/modules/ext/http2-common-9.4.57.v20241219.jar file.reference.http2-hpack-9.4.53.v20231009.jar=release/modules/ext/http2-hpack-9.4.53.v20231009.jar file.reference.http2-http-client-transport-9.4.53.v20231009.jar=release/modules/ext/http2-http-client-transport-9.4.53.v20231009.jar file.reference.httpclient-4.5.13.jar=release/modules/ext/httpclient-4.5.13.jar diff --git a/KeywordSearch/nbproject/project.xml b/KeywordSearch/nbproject/project.xml index ca03edaf12..0a55bf9789 100644 --- a/KeywordSearch/nbproject/project.xml +++ b/KeywordSearch/nbproject/project.xml @@ -275,8 +275,8 @@ release/modules/ext/http2-client-11.0.24.jar - ext/http2-common-9.4.53.v20231009.jar - release/modules/ext/http2-common-9.4.53.v20231009.jar + ext/http2-common-9.4.57.v20241219.jar + release/modules/ext/http2-common-9.4.57.v20241219.jar ext/http2-hpack-9.4.53.v20231009.jar From 005476f19c1b97c0f2855231778607cc15701a18 Mon Sep 17 00:00:00 2001 From: Greg DiCristofaro Date: Wed, 22 Jan 2025 11:03:54 -0500 Subject: [PATCH 2/2] update for metadata --- .../KeywordSearchIngestModule.java | 37 +++++++++++++------ 1 file changed, 26 insertions(+), 11 deletions(-) diff --git a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/KeywordSearchIngestModule.java b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/KeywordSearchIngestModule.java index 629eaf65b8..d43d747e18 100644 --- a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/KeywordSearchIngestModule.java +++ b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/KeywordSearchIngestModule.java @@ -145,6 +145,11 @@ public final class KeywordSearchIngestModule implements FileIngestModule { "application/x-z", //NON-NLS "application/x-compress"); //NON-NLS + /** + * A mapping of the Tika metadata key to the corresponding attribute type + * and the priority of that key versus other related keys (lower integer + * value is higher priority). + */ private static final Map> METADATA_TYPES_MAP = Stream.of( Pair.of(BlackboardAttribute.ATTRIBUTE_TYPE.TSK_DATETIME_MODIFIED, List.of( "Last-Save-Date", @@ -686,24 +691,34 @@ public final class KeywordSearchIngestModule implements FileIngestModule { Collection bbartifacts = new ArrayList<>(); /** - * Get best matched metadata for each attribute type found in metadata map. + * This map will map the attribute type to a pair of the priority (lower + * number value is higher priority), and the string value for the + * attribute. + * + * Get best matched metadata for each attribute type found in metadata + * map by bumping out lower priority. */ Map> intermediateMapping = new HashMap<>(); for (Map.Entry entry : metadata.entrySet()) { - Pair attrPair = METADATA_TYPES_MAP.get(entry.getKey()); - if (attrPair != null) { - intermediateMapping.compute(attrPair.getKey(), (k, v) -> { - if (v == null || v.getKey() > attrPair.getValue()) { - return Pair.of(attrPair.getValue(), entry.getValue()); - } else { - return v; - } - }); + if (entry.getValue() != null) { + Pair attrPair = METADATA_TYPES_MAP.get(entry.getKey()); + if (attrPair != null && attrPair.getKey() != null && attrPair.getValue() != null) { + intermediateMapping.compute(attrPair.getKey(), (k, v) -> { + if (v == null || v.getKey() > attrPair.getValue()) { + return Pair.of(attrPair.getValue(), entry.getValue()); + } else { + return v; + } + }); + } } } for (Entry> interEntry: intermediateMapping.entrySet()) { - attributes.add(checkAttribute(interEntry.getKey(), interEntry.getValue().getValue())); + BlackboardAttribute attribute = checkAttribute(interEntry.getKey(), interEntry.getValue().getValue()); + if (attribute != null) { + attributes.add(attribute); + } } if (!attributes.isEmpty()) {