diff --git a/Core/nbproject/project.properties b/Core/nbproject/project.properties index f15316a7bdac9d9a8d5bed12c173bdc578074893..a0defa9e33542f2fed1d9db8fadc964b85a374a6 100644 --- a/Core/nbproject/project.properties +++ b/Core/nbproject/project.properties @@ -17,8 +17,11 @@ file.reference.c3p0-0.9.5.jar=release\\modules\\ext\\c3p0-0.9.5.jar file.reference.checker-compat-qual-2.5.3.jar=release\\modules\\ext\\checker-compat-qual-2.5.3.jar file.reference.commons-beanutils-1.9.2.jar=release\\modules\\ext\\commons-beanutils-1.9.2.jar file.reference.commons-codec-1.11.jar=release\\modules\\ext\\commons-codec-1.11.jar +file.reference.commons-collections-3.2.2.jar=release\\modules\\ext\\commons-collections-3.2.2.jar file.reference.commons-dbcp2-2.1.1.jar=release\\modules\\ext\\commons-dbcp2-2.1.1.jar file.reference.commons-digester-1.8.1.jar=release\\modules\\ext\\commons-digester-1.8.1.jar +file.reference.commons-lang-2.6.jar=release\\modules\\ext\\commons-lang-2.6.jar +file.reference.commons-lang3-3.5.jar=release\\modules\\ext\\commons-lang3-3.5.jar file.reference.commons-logging-1.2.jar=release\\modules\\ext\\commons-logging-1.2.jar file.reference.commons-pool2-2.4.2.jar=release\\modules\\ext\\commons-pool2-2.4.2.jar file.reference.java-diff-utils-4.8.jar=release\\modules\\ext\\java-diff-utils-4.8.jar diff --git a/Core/nbproject/project.xml b/Core/nbproject/project.xml index d3ac663a28d8335a844a675bbf525f11682025b5..08c661503d6dd8ae25d39d497cf8fda51b3503aa 100644 --- a/Core/nbproject/project.xml +++ b/Core/nbproject/project.xml @@ -624,6 +624,10 @@ <runtime-relative-path>ext/jackson-core-2.9.7.jar</runtime-relative-path> <binary-origin>release\modules\ext\jackson-core-2.9.7.jar</binary-origin> </class-path-extension> + <class-path-extension> + <runtime-relative-path>ext/commons-lang3-3.5.jar</runtime-relative-path> + <binary-origin>release\modules\ext\commons-lang3-3.5.jar</binary-origin> + </class-path-extension> <class-path-extension> <runtime-relative-path>ext/log4j-1.2.16.jar</runtime-relative-path> <binary-origin>release\modules\ext\log4j-1.2.16.jar</binary-origin> @@ -676,6 +680,10 @@ <runtime-relative-path>ext/jdom-2.0.5.jar</runtime-relative-path> <binary-origin>release\modules\ext\jdom-2.0.5.jar</binary-origin> </class-path-extension> + <class-path-extension> + <runtime-relative-path>ext/gson-2.7.jar</runtime-relative-path> + <binary-origin>release\modules\ext\gson-2.7.jar</binary-origin> + </class-path-extension> <class-path-extension> <runtime-relative-path>ext/google-api-client-1.27.0.jar</runtime-relative-path> <binary-origin>release\modules\ext\google-api-client-1.27.0.jar</binary-origin> @@ -692,6 +700,10 @@ <runtime-relative-path>ext/jython-standalone-2.7.0.jar</runtime-relative-path> <binary-origin>release\modules\ext\jython-standalone-2.7.0.jar</binary-origin> </class-path-extension> + <class-path-extension> + <runtime-relative-path>ext/commons-lang-2.6.jar</runtime-relative-path> + <binary-origin>release\modules\ext\commons-lang-2.6.jar</binary-origin> + </class-path-extension> <class-path-extension> <runtime-relative-path>ext/jsr305-3.0.2.jar</runtime-relative-path> <binary-origin>release\modules\ext\jsr305-3.0.2.jar</binary-origin> diff --git a/Experimental/ivy.xml b/Experimental/ivy.xml index 4626a7d3d5869592ab1070ce7851cd366ce51f2c..c1e0e8c1d637abd57c7ea7df3f198d9339128467 100644 --- a/Experimental/ivy.xml +++ b/Experimental/ivy.xml @@ -8,6 +8,7 @@ <dependency conf="experimental->default" org="com.github.lgooddatepicker" name="LGoodDatePicker" rev="10.3.1"/> <dependency conf="experimental->default" org="org.postgresql" name="postgresql" rev="9.4-1201-jdbc41"/> <dependency conf="experimental->default" org="com.mchange" name="c3p0" rev="0.9.5"/> + <dependency conf="experimental->default" org="com.fasterxml.jackson.core" name="jackson-core" rev="2.7.0"/> <dependency conf="experimental->default" org="org.swinglabs.swingx" name="swingx-all" rev="1.6.4"/> </dependencies> </ivy-module> diff --git a/Experimental/nbproject/project.properties b/Experimental/nbproject/project.properties index 72ff1ad97d43e9a06fdc9e24af6af3b52486f4ab..c5203cbba582f85e63de0c501ff113e2ccbbc859 100644 --- a/Experimental/nbproject/project.properties +++ b/Experimental/nbproject/project.properties @@ -1,4 +1,5 @@ file.reference.c3p0-0.9.5.jar=release/modules/ext/c3p0-0.9.5.jar +file.reference.jackson-core-2.7.0.jar=release/modules/ext/jackson-core-2.7.0.jar file.reference.LGoodDatePicker-10.3.1.jar=release/modules/ext/LGoodDatePicker-10.3.1.jar file.reference.mchange-commons-java-0.2.9.jar=release/modules/ext/mchange-commons-java-0.2.9.jar file.reference.postgresql-9.4-1201-jdbc41.jar=release/modules/ext/postgresql-9.4-1201-jdbc41.jar diff --git a/Experimental/nbproject/project.xml b/Experimental/nbproject/project.xml index 5f0b81a006a7447b3d9dc79e2e173e1007e66d14..953292b3c5f6c5b7a2bb3cfbe52dad747c1dc563 100644 --- a/Experimental/nbproject/project.xml +++ b/Experimental/nbproject/project.xml @@ -178,6 +178,10 @@ <runtime-relative-path>ext/mchange-commons-java-0.2.9.jar</runtime-relative-path> <binary-origin>release/modules/ext/mchange-commons-java-0.2.9.jar</binary-origin> </class-path-extension> + <class-path-extension> + <runtime-relative-path>ext/jackson-core-2.7.0.jar</runtime-relative-path> + <binary-origin>release/modules/ext/jackson-core-2.7.0.jar</binary-origin> + </class-path-extension> <class-path-extension> <runtime-relative-path>ext/c3p0-0.9.5.jar</runtime-relative-path> <binary-origin>release/modules/ext/c3p0-0.9.5.jar</binary-origin> diff --git a/Experimental/src/org/sleuthkit/autopsy/experimental/autoingest/FileExporter.java b/Experimental/src/org/sleuthkit/autopsy/experimental/autoingest/FileExporter.java index 49c8a0ccf589131869501e7646412166473904c7..56191def152ad2eca5dd59c421481488825b7272 100644 --- a/Experimental/src/org/sleuthkit/autopsy/experimental/autoingest/FileExporter.java +++ b/Experimental/src/org/sleuthkit/autopsy/experimental/autoingest/FileExporter.java @@ -18,9 +18,9 @@ */ package org.sleuthkit.autopsy.experimental.autoingest; -//import com.fasterxml.jackson.core.JsonEncoding; -//import com.fasterxml.jackson.core.JsonFactory; -//import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.core.JsonEncoding; +import com.fasterxml.jackson.core.JsonFactory; +import com.fasterxml.jackson.core.JsonGenerator; import java.io.File; import java.io.IOException; import java.nio.file.Files; @@ -62,9 +62,9 @@ final class FileExporter { private FileExportSettings settings; private Path filesDirPath; private Path reportsDirPath; -// private JsonFactory jsonGeneratorFactory; -// private JsonGenerator masterCatalog; -// private Map<String, JsonGenerator> ruleNamesToCatalogs; + private JsonFactory jsonGeneratorFactory; + private JsonGenerator masterCatalog; + private Map<String, JsonGenerator> ruleNamesToCatalogs; private List<Path> flagFilePaths; FileExporter() throws FileExportException { @@ -110,7 +110,7 @@ void process(String deviceId, List<Content> dataSources, Supplier<Boolean> cance } exportFiles(fileIdsToRuleNames, cancelCheck); } -// closeCatalogs(); + closeCatalogs(); writeFlagFiles(); } catch (FileExportSettings.PersistenceException | FileExportRuleSet.ExportRulesException | TskCoreException | IOException | NoCurrentCaseException ex) { throw new FileExportException("Error occurred during file export", ex); @@ -212,49 +212,49 @@ private boolean isRequiredModuleEnabled(String requiredModuleCanonicalName, Inge * generator. */ private void setUp() throws FileExportSettings.PersistenceException, IOException { -// /* -// * Create the file export and report root directory paths. -// */ -// filesDirPath = settings.getFilesRootDirectory(); -// filesDirPath = filesDirPath.resolve(deviceId); -// reportsDirPath = settings.getReportsRootDirectory(); -// reportsDirPath = reportsDirPath.resolve(deviceId); -// -// /* -// * Delete the results of a previous run, if any. Results deletion cleans -// * up for a crashed auto ingest job. -// */ -// FileUtil.deleteDir(reportsDirPath.toFile()); -// FileUtil.deleteDir(filesDirPath.toFile()); -// -// /* -// * Create the file export and report root directories. -// */ -// Files.createDirectories(filesDirPath); -// Files.createDirectories(reportsDirPath); -// -// /* -// * Create the JSON generator for the master catalog of exported files -// * and a map to hold the JSON generators for the rule catalogs. -// */ -// jsonGeneratorFactory = new JsonFactory(); -// jsonGeneratorFactory.setRootValueSeparator("\r\n"); -// String catalogName = settings.getMasterCatalogName(); -// String catalogDir = catalogName.substring(0, 1).toUpperCase() + catalogName.substring(1); -// Path catalogPath = Paths.get(reportsDirPath.toString(), catalogDir, catalogName + ".json"); -// Files.createDirectories(catalogPath.getParent()); -// File catalogFile = catalogPath.toFile(); -// masterCatalog = jsonGeneratorFactory.createGenerator(catalogFile, JsonEncoding.UTF8); -// ruleNamesToCatalogs = new HashMap<>(); -// -// /* -// * Set up the paths for the flag files that are written to signal export -// * is complete for thsi device. -// */ -// flagFilePaths = new ArrayList<>(); -// flagFilePaths.add(Paths.get(filesDirPath.toString(), settings.getExportCompletedFlagFileName())); -// flagFilePaths.add(Paths.get(reportsDirPath.toString(), catalogDir, settings.getExportCompletedFlagFileName())); -// flagFilePaths.add(Paths.get(reportsDirPath.toString(), settings.getRulesEvaluatedFlagFileName())); + /* + * Create the file export and report root directory paths. + */ + filesDirPath = settings.getFilesRootDirectory(); + filesDirPath = filesDirPath.resolve(deviceId); + reportsDirPath = settings.getReportsRootDirectory(); + reportsDirPath = reportsDirPath.resolve(deviceId); + + /* + * Delete the results of a previous run, if any. Results deletion cleans + * up for a crashed auto ingest job. + */ + FileUtil.deleteDir(reportsDirPath.toFile()); + FileUtil.deleteDir(filesDirPath.toFile()); + + /* + * Create the file export and report root directories. + */ + Files.createDirectories(filesDirPath); + Files.createDirectories(reportsDirPath); + + /* + * Create the JSON generator for the master catalog of exported files + * and a map to hold the JSON generators for the rule catalogs. + */ + jsonGeneratorFactory = new JsonFactory(); + jsonGeneratorFactory.setRootValueSeparator("\r\n"); + String catalogName = settings.getMasterCatalogName(); + String catalogDir = catalogName.substring(0, 1).toUpperCase() + catalogName.substring(1); + Path catalogPath = Paths.get(reportsDirPath.toString(), catalogDir, catalogName + ".json"); + Files.createDirectories(catalogPath.getParent()); + File catalogFile = catalogPath.toFile(); + masterCatalog = jsonGeneratorFactory.createGenerator(catalogFile, JsonEncoding.UTF8); + ruleNamesToCatalogs = new HashMap<>(); + + /* + * Set up the paths for the flag files that are written to signal export + * is complete for thsi device. + */ + flagFilePaths = new ArrayList<>(); + flagFilePaths.add(Paths.get(filesDirPath.toString(), settings.getExportCompletedFlagFileName())); + flagFilePaths.add(Paths.get(reportsDirPath.toString(), catalogDir, settings.getExportCompletedFlagFileName())); + flagFilePaths.add(Paths.get(reportsDirPath.toString(), settings.getRulesEvaluatedFlagFileName())); } /** @@ -341,31 +341,31 @@ private void exportFiles(Map<Long, List<String>> fileIdsToRuleNames, Supplier<Bo * storage. */ private void exportFile(Long fileId, List<String> ruleNames, Supplier<Boolean> cancelCheck) throws TskCoreException, IOException, NoCurrentCaseException { -// AbstractFile file = Case.getCurrentCaseThrows().getSleuthkitCase().getAbstractFileById(fileId); -// if (!shouldExportFile(file)) { -// return; -// } -// Map<BlackboardArtifact, List<BlackboardAttribute>> artifactsToAttributes = new HashMap<>(); -// List<BlackboardArtifact> artifacts = file.getAllArtifacts(); -// for (BlackboardArtifact artifact : artifacts) { -// artifactsToAttributes.put(artifact, artifact.getAttributes()); -// } -// Path filePath = exportFileToSecondaryStorage(file, cancelCheck); -// if (filePath == null) { -// return; -// } -// addFileToCatalog(file, artifactsToAttributes, filePath, masterCatalog); -// for (String ruleName : ruleNames) { -// JsonGenerator ruleCatalog = this.ruleNamesToCatalogs.get(ruleName); -// if (null == ruleCatalog) { -// Path catalogPath = Paths.get(reportsDirPath.toString(), ruleName, "catalog.json"); -// Files.createDirectories(catalogPath.getParent()); -// File catalogFile = catalogPath.toFile(); -// ruleCatalog = jsonGeneratorFactory.createGenerator(catalogFile, JsonEncoding.UTF8); -// ruleNamesToCatalogs.put(ruleName, ruleCatalog); -// } -// addFileToCatalog(file, artifactsToAttributes, filePath, ruleCatalog); -// } + AbstractFile file = Case.getCurrentCaseThrows().getSleuthkitCase().getAbstractFileById(fileId); + if (!shouldExportFile(file)) { + return; + } + Map<BlackboardArtifact, List<BlackboardAttribute>> artifactsToAttributes = new HashMap<>(); + List<BlackboardArtifact> artifacts = file.getAllArtifacts(); + for (BlackboardArtifact artifact : artifacts) { + artifactsToAttributes.put(artifact, artifact.getAttributes()); + } + Path filePath = exportFileToSecondaryStorage(file, cancelCheck); + if (filePath == null) { + return; + } + addFileToCatalog(file, artifactsToAttributes, filePath, masterCatalog); + for (String ruleName : ruleNames) { + JsonGenerator ruleCatalog = this.ruleNamesToCatalogs.get(ruleName); + if (null == ruleCatalog) { + Path catalogPath = Paths.get(reportsDirPath.toString(), ruleName, "catalog.json"); + Files.createDirectories(catalogPath.getParent()); + File catalogFile = catalogPath.toFile(); + ruleCatalog = jsonGeneratorFactory.createGenerator(catalogFile, JsonEncoding.UTF8); + ruleNamesToCatalogs.put(ruleName, ruleCatalog); + } + addFileToCatalog(file, artifactsToAttributes, filePath, ruleCatalog); + } } /** @@ -470,150 +470,150 @@ private Path exportFileToSecondaryStorage(AbstractFile file, Supplier<Boolean> c return exportFilePath; } -// /** -// * Adds an exported file to a catalog. -// * -// * @param file The file. -// * @param artifactsToAttributes The artifacts associated with the file. -// * @param filePath The path to the exported file. -// * @param catalog The catalog. -// * -// * @throws IOException If there is an error while writing to the -// * catalog. -// * @throws TskCoreExceptiion If there is a problem querying the case -// * database. -// */ -// private void addFileToCatalog(AbstractFile file, Map<BlackboardArtifact, List<BlackboardAttribute>> artifactsToAttributes, Path filePath, JsonGenerator catalog) throws IOException, TskCoreException { -// catalog.writeStartObject(); -// String md5 = file.getMd5Hash().toUpperCase(); -// catalog.writeFieldName(md5); -// catalog.writeStartObject(); -// catalog.writeStringField("Filename", filePath.toString()); -// catalog.writeStringField("Type", file.getMIMEType()); -// catalog.writeStringField("MD5", md5); -// catalog.writeFieldName("File data"); -// catalog.writeStartObject(); -// -// catalog.writeFieldName("Modified"); -// catalog.writeStartArray(); -// catalog.writeString(file.getMtimeAsDate()); -// catalog.writeEndArray(); -// -// catalog.writeFieldName("Changed"); -// catalog.writeStartArray(); -// catalog.writeString(file.getCtimeAsDate()); -// catalog.writeEndArray(); -// -// catalog.writeFieldName("Accessed"); -// catalog.writeStartArray(); -// catalog.writeString(file.getAtimeAsDate()); -// catalog.writeEndArray(); -// -// catalog.writeFieldName("Created"); -// catalog.writeStartArray(); -// catalog.writeString(file.getCrtimeAsDate()); -// catalog.writeEndArray(); -// -// catalog.writeFieldName("Extension"); -// catalog.writeStartArray(); -// catalog.writeString(file.getNameExtension()); -// catalog.writeEndArray(); -// -// catalog.writeFieldName("Filename"); -// catalog.writeStartArray(); -// catalog.writeString(file.getName()); -// catalog.writeEndArray(); -// -// catalog.writeFieldName("Size"); -// catalog.writeStartArray(); -// catalog.writeString(Long.toString(file.getSize())); -// catalog.writeEndArray(); -// -// catalog.writeFieldName("Source Path"); -// catalog.writeStartArray(); -// catalog.writeString(file.getParentPath() + "/" + file.getName()); -// catalog.writeEndArray(); -// -// catalog.writeFieldName("Flags (Dir)"); -// catalog.writeStartArray(); -// catalog.writeString(file.getDirFlagAsString()); -// catalog.writeEndArray(); -// -// catalog.writeFieldName("Flags (Meta)"); -// catalog.writeStartArray(); -// catalog.writeString(file.getMetaFlagsAsString()); -// catalog.writeEndArray(); -// -// catalog.writeFieldName("Mode"); -// catalog.writeStartArray(); -// catalog.writeString(file.getModesAsString()); -// catalog.writeEndArray(); -// -// catalog.writeFieldName("User ID"); -// catalog.writeStartArray(); -// catalog.writeString(Integer.toString(file.getUid())); -// catalog.writeEndArray(); -// -// catalog.writeFieldName("Group ID"); -// catalog.writeStartArray(); -// catalog.writeString(Integer.toString(file.getGid())); -// catalog.writeEndArray(); -// -// catalog.writeFieldName("Meta Addr"); -// catalog.writeStartArray(); -// catalog.writeString(Long.toString(file.getMetaAddr())); -// catalog.writeEndArray(); -// -// catalog.writeFieldName("Attr Addr"); -// catalog.writeStartArray(); -// catalog.writeString(Long.toString(file.getAttrType().getValue()) + "-" + file.getAttributeId()); -// catalog.writeEndArray(); -// -// catalog.writeFieldName("Dir Type"); -// catalog.writeStartArray(); -// catalog.writeString(file.getDirType().getLabel()); -// catalog.writeEndArray(); -// -// catalog.writeFieldName("Meta Type"); -// catalog.writeStartArray(); -// catalog.writeString(file.getMetaType().toString()); -// catalog.writeEndArray(); -// -// catalog.writeFieldName("Known"); -// catalog.writeStartArray(); -// catalog.writeString(file.getKnown().getName()); -// catalog.writeEndArray(); -// -// catalog.writeEndObject(); -// -// for (Map.Entry<BlackboardArtifact, List<BlackboardAttribute>> entry : artifactsToAttributes.entrySet()) { -// for (BlackboardAttribute attr : entry.getValue()) { -// catalog.writeFieldName(entry.getKey().getArtifactTypeName()); -// catalog.writeStartObject(); -// catalog.writeFieldName(attr.getAttributeType().getTypeName()); -// catalog.writeStartArray(); -// catalog.writeString(attr.getDisplayString()); -// catalog.writeEndArray(); -// catalog.writeEndObject(); -// } -// } -// -// catalog.writeEndObject(); -// catalog.writeEndObject(); -// } -// -// /** -// * Closes all catalogs opened during export. -// * -// * @throws IOException If there is a problem closing a catalog. -// */ -// private void closeCatalogs() throws IOException { -// masterCatalog.close(); -// for (JsonGenerator catalog : this.ruleNamesToCatalogs.values()) { -// catalog.close(); -// } -// -// } + /** + * Adds an exported file to a catalog. + * + * @param file The file. + * @param artifactsToAttributes The artifacts associated with the file. + * @param filePath The path to the exported file. + * @param catalog The catalog. + * + * @throws IOException If there is an error while writing to the + * catalog. + * @throws TskCoreExceptiion If there is a problem querying the case + * database. + */ + private void addFileToCatalog(AbstractFile file, Map<BlackboardArtifact, List<BlackboardAttribute>> artifactsToAttributes, Path filePath, JsonGenerator catalog) throws IOException, TskCoreException { + catalog.writeStartObject(); + String md5 = file.getMd5Hash().toUpperCase(); + catalog.writeFieldName(md5); + catalog.writeStartObject(); + catalog.writeStringField("Filename", filePath.toString()); + catalog.writeStringField("Type", file.getMIMEType()); + catalog.writeStringField("MD5", md5); + catalog.writeFieldName("File data"); + catalog.writeStartObject(); + + catalog.writeFieldName("Modified"); + catalog.writeStartArray(); + catalog.writeString(file.getMtimeAsDate()); + catalog.writeEndArray(); + + catalog.writeFieldName("Changed"); + catalog.writeStartArray(); + catalog.writeString(file.getCtimeAsDate()); + catalog.writeEndArray(); + + catalog.writeFieldName("Accessed"); + catalog.writeStartArray(); + catalog.writeString(file.getAtimeAsDate()); + catalog.writeEndArray(); + + catalog.writeFieldName("Created"); + catalog.writeStartArray(); + catalog.writeString(file.getCrtimeAsDate()); + catalog.writeEndArray(); + + catalog.writeFieldName("Extension"); + catalog.writeStartArray(); + catalog.writeString(file.getNameExtension()); + catalog.writeEndArray(); + + catalog.writeFieldName("Filename"); + catalog.writeStartArray(); + catalog.writeString(file.getName()); + catalog.writeEndArray(); + + catalog.writeFieldName("Size"); + catalog.writeStartArray(); + catalog.writeString(Long.toString(file.getSize())); + catalog.writeEndArray(); + + catalog.writeFieldName("Source Path"); + catalog.writeStartArray(); + catalog.writeString(file.getParentPath() + "/" + file.getName()); + catalog.writeEndArray(); + + catalog.writeFieldName("Flags (Dir)"); + catalog.writeStartArray(); + catalog.writeString(file.getDirFlagAsString()); + catalog.writeEndArray(); + + catalog.writeFieldName("Flags (Meta)"); + catalog.writeStartArray(); + catalog.writeString(file.getMetaFlagsAsString()); + catalog.writeEndArray(); + + catalog.writeFieldName("Mode"); + catalog.writeStartArray(); + catalog.writeString(file.getModesAsString()); + catalog.writeEndArray(); + + catalog.writeFieldName("User ID"); + catalog.writeStartArray(); + catalog.writeString(Integer.toString(file.getUid())); + catalog.writeEndArray(); + + catalog.writeFieldName("Group ID"); + catalog.writeStartArray(); + catalog.writeString(Integer.toString(file.getGid())); + catalog.writeEndArray(); + + catalog.writeFieldName("Meta Addr"); + catalog.writeStartArray(); + catalog.writeString(Long.toString(file.getMetaAddr())); + catalog.writeEndArray(); + + catalog.writeFieldName("Attr Addr"); + catalog.writeStartArray(); + catalog.writeString(Long.toString(file.getAttrType().getValue()) + "-" + file.getAttributeId()); + catalog.writeEndArray(); + + catalog.writeFieldName("Dir Type"); + catalog.writeStartArray(); + catalog.writeString(file.getDirType().getLabel()); + catalog.writeEndArray(); + + catalog.writeFieldName("Meta Type"); + catalog.writeStartArray(); + catalog.writeString(file.getMetaType().toString()); + catalog.writeEndArray(); + + catalog.writeFieldName("Known"); + catalog.writeStartArray(); + catalog.writeString(file.getKnown().getName()); + catalog.writeEndArray(); + + catalog.writeEndObject(); + + for (Map.Entry<BlackboardArtifact, List<BlackboardAttribute>> entry : artifactsToAttributes.entrySet()) { + for (BlackboardAttribute attr : entry.getValue()) { + catalog.writeFieldName(entry.getKey().getArtifactTypeName()); + catalog.writeStartObject(); + catalog.writeFieldName(attr.getAttributeType().getTypeName()); + catalog.writeStartArray(); + catalog.writeString(attr.getDisplayString()); + catalog.writeEndArray(); + catalog.writeEndObject(); + } + } + + catalog.writeEndObject(); + catalog.writeEndObject(); + } + + /** + * Closes all catalogs opened during export. + * + * @throws IOException If there is a problem closing a catalog. + */ + private void closeCatalogs() throws IOException { + masterCatalog.close(); + for (JsonGenerator catalog : this.ruleNamesToCatalogs.values()) { + catalog.close(); + } + + } /** * Writes the flag files that signal export is completed. diff --git a/KeywordSearch/ivy.xml b/KeywordSearch/ivy.xml index 9a6a4d125506848d51c582a45a4e286a9149a6f5..ee86821bd869ae7542a98e5078e05e586f921110 100644 --- a/KeywordSearch/ivy.xml +++ b/KeywordSearch/ivy.xml @@ -19,6 +19,7 @@ <!-- Autopsy --> <dependency conf="autopsy->default" org="org.apache.solr" name="solr-solrj" rev="4.9.1"/> + <dependency conf="autopsy->default" org="commons-lang" name="commons-lang" rev="2.4"/> <dependency conf="autopsy->default" org="commons-validator" name="commons-validator" rev="1.5.1"/> <dependency conf="autopsy->default" org="com.optimaize.languagedetector" name="language-detector" rev="0.6"/> diff --git a/KeywordSearch/nbproject/project.properties b/KeywordSearch/nbproject/project.properties index a12c865767816d51056f8b6a28920ea5484d612c..b0c06e183e91b0adb54e5d5838f1fd4129141e5e 100644 --- a/KeywordSearch/nbproject/project.properties +++ b/KeywordSearch/nbproject/project.properties @@ -1,6 +1,9 @@ file.reference.annotations-12.0.jar=release\\modules\\ext\\annotations-12.0.jar file.reference.commons-beanutils-1.9.2.jar=release\\modules\\ext\\commons-beanutils-1.9.2.jar +file.reference.commons-collections-3.2.2.jar=release\\modules\\ext\\commons-collections-3.2.2.jar file.reference.commons-digester-1.8.1.jar=release\\modules\\ext\\commons-digester-1.8.1.jar +file.reference.commons-io-2.3.jar=release\\modules\\ext\\commons-io-2.3.jar +file.reference.commons-lang-2.4.jar=release\\modules\\ext\\commons-lang-2.4.jar file.reference.commons-logging-1.2.jar=release\\modules\\ext\\commons-logging-1.2.jar file.reference.commons-validator-1.5.1.jar=release\\modules\\ext\\commons-validator-1.5.1.jar file.reference.guava-18.0.jar=release\\modules\\ext\\guava-18.0.jar diff --git a/KeywordSearch/nbproject/project.xml b/KeywordSearch/nbproject/project.xml index bc85fdb6e58bd0a55d1fca545385818f6b31923f..c6f056f5a4dee72f4f5d4ea76fd53fe93edf76c4 100644 --- a/KeywordSearch/nbproject/project.xml +++ b/KeywordSearch/nbproject/project.xml @@ -263,6 +263,10 @@ <runtime-relative-path>ext/commons-validator-1.5.1.jar</runtime-relative-path> <binary-origin>release\modules\ext\commons-validator-1.5.1.jar</binary-origin> </class-path-extension> + <class-path-extension> + <runtime-relative-path>ext/commons-lang-2.4.jar</runtime-relative-path> + <binary-origin>release\modules\ext\commons-lang-2.4.jar</binary-origin> + </class-path-extension> <class-path-extension> <runtime-relative-path>ext/commons-logging-1.2.jar</runtime-relative-path> <binary-origin>release\modules\ext\commons-logging-1.2.jar</binary-origin> @@ -283,6 +287,10 @@ <runtime-relative-path>ext/commons-beanutils-1.9.2.jar</runtime-relative-path> <binary-origin>release\modules\ext\commons-beanutils-1.9.2.jar</binary-origin> </class-path-extension> + <class-path-extension> + <runtime-relative-path>ext/commons-io-2.3.jar</runtime-relative-path> + <binary-origin>release\modules\ext\commons-io-2.3.jar</binary-origin> + </class-path-extension> <class-path-extension> <runtime-relative-path>ext/wstx-asl-3.2.7.jar</runtime-relative-path> <binary-origin>release\modules\ext\wstx-asl-3.2.7.jar</binary-origin> @@ -291,6 +299,10 @@ <runtime-relative-path>ext/annotations-12.0.jar</runtime-relative-path> <binary-origin>release\modules\ext\annotations-12.0.jar</binary-origin> </class-path-extension> + <class-path-extension> + <runtime-relative-path>ext/commons-collections-3.2.2.jar</runtime-relative-path> + <binary-origin>release\modules\ext\commons-collections-3.2.2.jar</binary-origin> + </class-path-extension> <class-path-extension> <runtime-relative-path>ext/noggit-0.5.jar</runtime-relative-path> <binary-origin>release\modules\ext\noggit-0.5.jar</binary-origin> diff --git a/Tika/nbproject/project.properties b/Tika/nbproject/project.properties index e44d126d39f3f41b3c9851614f89340ee15b6837..d6b88685c4d748e799aaeee431e3705044510404 100755 --- a/Tika/nbproject/project.properties +++ b/Tika/nbproject/project.properties @@ -11,9 +11,12 @@ file.reference.c3p0-0.9.5.4.jar=release\\modules\\ext\\c3p0-0.9.5.4.jar file.reference.cdm-4.5.5.jar=release\\modules\\ext\\cdm-4.5.5.jar file.reference.checker-qual-2.8.1.jar=release\\modules\\ext\\checker-qual-2.8.1.jar file.reference.commons-codec-1.13.jar=release\\modules\\ext\\commons-codec-1.13.jar +file.reference.commons-collections4-4.4.jar=release\\modules\\ext\\commons-collections4-4.4.jar file.reference.commons-compress-1.19.jar=release\\modules\\ext\\commons-compress-1.19.jar file.reference.commons-csv-1.7.jar=release\\modules\\ext\\commons-csv-1.7.jar file.reference.commons-exec-1.3.jar=release\\modules\\ext\\commons-exec-1.3.jar +file.reference.commons-io-2.6.jar=release\\modules\\ext\\commons-io-2.6.jar +file.reference.commons-lang3-3.9.jar=release\\modules\\ext\\commons-lang3-3.9.jar file.reference.commons-math3-3.6.1.jar=release\\modules\\ext\\commons-math3-3.6.1.jar file.reference.curvesapi-1.06.jar=release\\modules\\ext\\curvesapi-1.06.jar file.reference.cxf-core-3.3.4.jar=release\\modules\\ext\\cxf-core-3.3.4.jar @@ -29,6 +32,7 @@ file.reference.FastInfoset-1.2.16.jar=release\\modules\\ext\\FastInfoset-1.2.16. file.reference.fontbox-2.0.17.jar=release\\modules\\ext\\fontbox-2.0.17.jar file.reference.geoapi-3.0.1.jar=release\\modules\\ext\\geoapi-3.0.1.jar file.reference.grib-4.5.5.jar=release\\modules\\ext\\grib-4.5.5.jar +file.reference.gson-2.8.6.jar=release\\modules\\ext\\gson-2.8.6.jar file.reference.guava-28.1-jre.jar=release\\modules\\ext\\guava-28.1-jre.jar file.reference.HikariCP-java7-2.4.13.jar=release\\modules\\ext\\HikariCP-java7-2.4.13.jar file.reference.httpclient-4.5.10.jar=release\\modules\\ext\\httpclient-4.5.10.jar @@ -40,6 +44,9 @@ file.reference.istack-commons-runtime-3.0.8.jar=release\\modules\\ext\\istack-co file.reference.j2objc-annotations-1.3.jar=release\\modules\\ext\\j2objc-annotations-1.3.jar file.reference.jackcess-3.0.1.jar=release\\modules\\ext\\jackcess-3.0.1.jar file.reference.jackcess-encrypt-3.0.0.jar=release\\modules\\ext\\jackcess-encrypt-3.0.0.jar +file.reference.jackson-annotations-2.10.1.jar=release\\modules\\ext\\jackson-annotations-2.10.1.jar +file.reference.jackson-core-2.10.1.jar=release\\modules\\ext\\jackson-core-2.10.1.jar +file.reference.jackson-databind-2.10.1.jar=release\\modules\\ext\\jackson-databind-2.10.1.jar file.reference.jai-imageio-core-1.4.0.jar=release\\modules\\ext\\jai-imageio-core-1.4.0.jar file.reference.jakarta.activation-1.2.1.jar=release\\modules\\ext\\jakarta.activation-1.2.1.jar file.reference.jakarta.ws.rs-api-2.1.5.jar=release\\modules\\ext\\jakarta.ws.rs-api-2.1.5.jar diff --git a/Tika/nbproject/project.xml b/Tika/nbproject/project.xml index 955f2811c8ecc25049e10ffac602244930055439..7cd7a69bbf490e4d89e02bfd1c0c31941eacf6df 100755 --- a/Tika/nbproject/project.xml +++ b/Tika/nbproject/project.xml @@ -122,6 +122,10 @@ <runtime-relative-path>ext/xmlbeans-3.1.0.jar</runtime-relative-path> <binary-origin>release\modules\ext\xmlbeans-3.1.0.jar</binary-origin> </class-path-extension> + <class-path-extension> + <runtime-relative-path>ext/gson-2.8.6.jar</runtime-relative-path> + <binary-origin>release\modules\ext\gson-2.8.6.jar</binary-origin> + </class-path-extension> <class-path-extension> <runtime-relative-path>ext/cdm-4.5.5.jar</runtime-relative-path> <binary-origin>release\modules\ext\cdm-4.5.5.jar</binary-origin> @@ -270,6 +274,10 @@ <runtime-relative-path>ext/jaxb-runtime-2.3.2.jar</runtime-relative-path> <binary-origin>release\modules\ext\jaxb-runtime-2.3.2.jar</binary-origin> </class-path-extension> + <class-path-extension> + <runtime-relative-path>ext/jackson-core-2.10.1.jar</runtime-relative-path> + <binary-origin>release\modules\ext\jackson-core-2.10.1.jar</binary-origin> + </class-path-extension> <class-path-extension> <runtime-relative-path>ext/opennlp-tools-1.9.1.jar</runtime-relative-path> <binary-origin>release\modules\ext\opennlp-tools-1.9.1.jar</binary-origin> @@ -342,6 +350,10 @@ <runtime-relative-path>ext/jempbox-1.8.16.jar</runtime-relative-path> <binary-origin>release\modules\ext\jempbox-1.8.16.jar</binary-origin> </class-path-extension> + <class-path-extension> + <runtime-relative-path>ext/jackson-annotations-2.10.1.jar</runtime-relative-path> + <binary-origin>release\modules\ext\jackson-annotations-2.10.1.jar</binary-origin> + </class-path-extension> <class-path-extension> <runtime-relative-path>ext/httpmime-4.5.10.jar</runtime-relative-path> <binary-origin>release\modules\ext\httpmime-4.5.10.jar</binary-origin> @@ -426,6 +438,10 @@ <runtime-relative-path>ext/bcmail-jdk15on-1.64.jar</runtime-relative-path> <binary-origin>release\modules\ext\bcmail-jdk15on-1.64.jar</binary-origin> </class-path-extension> + <class-path-extension> + <runtime-relative-path>ext/commons-io-2.6.jar</runtime-relative-path> + <binary-origin>release\modules\ext\commons-io-2.6.jar</binary-origin> + </class-path-extension> <class-path-extension> <runtime-relative-path>ext/cxf-rt-rs-client-3.3.4.jar</runtime-relative-path> <binary-origin>release\modules\ext\cxf-rt-rs-client-3.3.4.jar</binary-origin> @@ -494,10 +510,18 @@ <runtime-relative-path>ext/jcip-annotations-1.0.jar</runtime-relative-path> <binary-origin>release\modules\ext\jcip-annotations-1.0.jar</binary-origin> </class-path-extension> + <class-path-extension> + <runtime-relative-path>ext/commons-collections4-4.4.jar</runtime-relative-path> + <binary-origin>release\modules\ext\commons-collections4-4.4.jar</binary-origin> + </class-path-extension> <class-path-extension> <runtime-relative-path>ext/cxf-core-3.3.4.jar</runtime-relative-path> <binary-origin>release\modules\ext\cxf-core-3.3.4.jar</binary-origin> </class-path-extension> + <class-path-extension> + <runtime-relative-path>ext/jackson-databind-2.10.1.jar</runtime-relative-path> + <binary-origin>release\modules\ext\jackson-databind-2.10.1.jar</binary-origin> + </class-path-extension> <class-path-extension> <runtime-relative-path>ext/slf4j-api-1.7.28.jar</runtime-relative-path> <binary-origin>release\modules\ext\slf4j-api-1.7.28.jar</binary-origin> @@ -506,6 +530,10 @@ <runtime-relative-path>ext/ehcache-core-2.6.2.jar</runtime-relative-path> <binary-origin>release\modules\ext\ehcache-core-2.6.2.jar</binary-origin> </class-path-extension> + <class-path-extension> + <runtime-relative-path>ext/commons-lang3-3.9.jar</runtime-relative-path> + <binary-origin>release\modules\ext\commons-lang3-3.9.jar</binary-origin> + </class-path-extension> <class-path-extension> <runtime-relative-path>ext/dec-0.1.2.jar</runtime-relative-path> <binary-origin>release\modules\ext\dec-0.1.2.jar</binary-origin> diff --git a/thunderbirdparser/ivy.xml b/thunderbirdparser/ivy.xml index 6dd9ffd6b1a938e86d72c71077c62421cd651b4e..d2833c64c1bc0161230ce3f2bf197b20701e29b6 100644 --- a/thunderbirdparser/ivy.xml +++ b/thunderbirdparser/ivy.xml @@ -7,6 +7,7 @@ </configurations> <dependencies> + <dependency conf="autopsy->default" org="org.apache.commons" name="commons-lang3" rev="3.8.1"/> <dependency conf="autopsy->default" org="org.apache.james" name="apache-mime4j-core" rev="0.8.0"/> <dependency conf="autopsy->default" org="org.apache.james" name="apache-mime4j-dom" rev="0.8.0"/> <dependency conf="autopsy->default" org="org.apache.james" name="apache-mime4j-mbox-iterator" rev="0.8.0"/> diff --git a/thunderbirdparser/nbproject/project.properties b/thunderbirdparser/nbproject/project.properties index 18a61ec9adf1e0fef3a7bd836be282171406ab2d..ea9d0786ebc6fce833fea006817050b3f2e83897 100644 --- a/thunderbirdparser/nbproject/project.properties +++ b/thunderbirdparser/nbproject/project.properties @@ -1,6 +1,7 @@ file.reference.apache-mime4j-core-0.8.0-SNAPSHOT.jar=release/modules/ext/apache-mime4j-core-0.8.0-SNAPSHOT.jar file.reference.apache-mime4j-dom-0.8.0-SNAPSHOT.jar=release/modules/ext/apache-mime4j-dom-0.8.0-SNAPSHOT.jar file.reference.apache-mime4j-mbox-iterator-0.8.0-SNAPSHOT.jar=release/modules/ext/apache-mime4j-mbox-iterator-0.8.0-SNAPSHOT.jar +file.reference.commons-lang3-3.8.1.jar=release/modules/ext/commons-lang3-3.8.1.jar file.reference.apache-mime4j-core-0.8.0.jar=release/modules/ext/apache-mime4j-core-0.8.0-SNAPSHOT.jar file.reference.apache-mime4j-dom-0.8.0.jar=release/modules/ext/apache-mime4j-dom-0.8.0-SNAPSHOT.jar file.reference.apache-mime4j-mbox-iterator-0.8.0.jar=release/modules/ext/apache-mime4j-mbox-iterator-0.8.0-SNAPSHOT.jar diff --git a/thunderbirdparser/nbproject/project.xml b/thunderbirdparser/nbproject/project.xml index 31276d7838026cfe09db454bb537a66632bc37a7..b4d9ca8cbfeed2614ead6c8667fc28d308f890a6 100644 --- a/thunderbirdparser/nbproject/project.xml +++ b/thunderbirdparser/nbproject/project.xml @@ -57,15 +57,6 @@ <specification-version>10.22</specification-version> </run-dependency> </dependency> - <dependency> - <code-name-base>org.sleuthkit.autopsy.corelibs</code-name-base> - <build-prerequisite/> - <compile-dependency/> - <run-dependency> - <release-version>3</release-version> - <specification-version>1.4</specification-version> - </run-dependency> - </dependency> <dependency> <code-name-base>org.sleuthkit.autopsy.keywordsearch</code-name-base> <build-prerequisite/> @@ -77,6 +68,10 @@ </dependency> </module-dependencies> <public-packages/> + <class-path-extension> + <runtime-relative-path>ext/commons-lang3-3.8.1.jar</runtime-relative-path> + <binary-origin>release/modules/ext/commons-lang3-3.8.1.jar</binary-origin> + </class-path-extension> <class-path-extension> <runtime-relative-path>ext/apache-mime4j-mbox-iterator-0.8.0-SNAPSHOT.jar</runtime-relative-path> <binary-origin>release/modules/ext/apache-mime4j-mbox-iterator-0.8.0-SNAPSHOT.jar</binary-origin>