diff --git a/.gitignore b/.gitignore index 5e4866a207..dc88052299 100644 --- a/.gitignore +++ b/.gitignore @@ -77,3 +77,5 @@ Core/src/org/sleuthkit/autopsy/casemodule/docs/screenshot.png .DS_Store .*.swp Core/src/org/sleuthkit/autopsy/datamodel/ranges.csv + +thunderbirdparser/release/modules/ext diff --git a/Core/src/org/sleuthkit/autopsy/modules/android/CallLogAnalyzer.java b/Core/src/org/sleuthkit/autopsy/modules/android/CallLogAnalyzer.java index 8075d8c3fe..27129456e2 100755 --- a/Core/src/org/sleuthkit/autopsy/modules/android/CallLogAnalyzer.java +++ b/Core/src/org/sleuthkit/autopsy/modules/android/CallLogAnalyzer.java @@ -25,7 +25,9 @@ import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; +import java.util.ArrayList; import java.util.Arrays; +import java.util.Collection; import java.util.List; import java.util.logging.Level; import org.openide.util.NbBundle.Messages; @@ -36,6 +38,8 @@ import org.sleuthkit.autopsy.coreutils.Logger; import org.sleuthkit.autopsy.coreutils.MessageNotifyUtil; import org.sleuthkit.autopsy.datamodel.ContentUtils; import org.sleuthkit.autopsy.ingest.IngestJobContext; +import org.sleuthkit.autopsy.ingest.IngestServices; +import org.sleuthkit.autopsy.ingest.ModuleDataEvent; import org.sleuthkit.datamodel.AbstractFile; import org.sleuthkit.datamodel.BlackboardArtifact; import org.sleuthkit.datamodel.BlackboardAttribute; @@ -52,6 +56,9 @@ class CallLogAnalyzer { private static final String moduleName = AndroidModuleFactory.getModuleName(); private static final Logger logger = Logger.getLogger(CallLogAnalyzer.class.getName()); private static Blackboard blackboard; + + private static final IngestServices services = IngestServices.getInstance(); + /** * the names of tables that potentially hold call logs in the dbs @@ -85,6 +92,8 @@ class CallLogAnalyzer { if (DatabasePath == null || DatabasePath.isEmpty()) { return; } + + Collection bbartifacts = new ArrayList<>(); try (Connection connection = DriverManager.getConnection("jdbc:sqlite:" + DatabasePath); //NON-NLS Statement statement = connection.createStatement();) { @@ -112,6 +121,8 @@ class CallLogAnalyzer { bba.addAttribute(new BlackboardAttribute(ATTRIBUTE_TYPE.TSK_DIRECTION, moduleName, directionString)); bba.addAttribute(new BlackboardAttribute(ATTRIBUTE_TYPE.TSK_NAME, moduleName, name)); + bbartifacts.add(bba); + try { // index the artifact for keyword search blackboard.indexArtifact(bba); @@ -131,6 +142,13 @@ class CallLogAnalyzer { } catch (SQLException e) { logger.log(Level.SEVERE, "Could not parse call log; error connecting to db " + DatabasePath, e); //NON-NLS } + finally { + if (!bbartifacts.isEmpty()) { + services.fireModuleDataEvent(new ModuleDataEvent( + moduleName, + BlackboardArtifact.ARTIFACT_TYPE.TSK_CALLLOG, bbartifacts)); + } + } } private static enum CallDirection { diff --git a/Core/src/org/sleuthkit/autopsy/modules/android/ContactAnalyzer.java b/Core/src/org/sleuthkit/autopsy/modules/android/ContactAnalyzer.java index 58384f3235..17cc8ad2cc 100755 --- a/Core/src/org/sleuthkit/autopsy/modules/android/ContactAnalyzer.java +++ b/Core/src/org/sleuthkit/autopsy/modules/android/ContactAnalyzer.java @@ -25,6 +25,8 @@ import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; +import java.util.ArrayList; +import java.util.Collection; import java.util.List; import java.util.logging.Level; import org.openide.util.NbBundle.Messages; @@ -35,6 +37,8 @@ import org.sleuthkit.autopsy.coreutils.Logger; import org.sleuthkit.autopsy.coreutils.MessageNotifyUtil; import org.sleuthkit.autopsy.datamodel.ContentUtils; import org.sleuthkit.autopsy.ingest.IngestJobContext; +import org.sleuthkit.autopsy.ingest.IngestServices; +import org.sleuthkit.autopsy.ingest.ModuleDataEvent; import org.sleuthkit.datamodel.AbstractFile; import org.sleuthkit.datamodel.BlackboardArtifact; import org.sleuthkit.datamodel.BlackboardAttribute; @@ -49,6 +53,7 @@ class ContactAnalyzer { private static final String moduleName = AndroidModuleFactory.getModuleName(); private static final Logger logger = Logger.getLogger(ContactAnalyzer.class.getName()); + private static final IngestServices services = IngestServices.getInstance(); public static void findContacts(Content dataSource, FileManager fileManager, IngestJobContext context) { @@ -98,7 +103,8 @@ class ContactAnalyzer { logger.log(Level.SEVERE, "Error opening database", e); //NON-NLS return; } - + + Collection bbartifacts = new ArrayList<>(); try { // get display_name, mimetype(email or phone number) and data1 (phonenumber or email address depending on mimetype) //sorted by name, so phonenumber/email would be consecutive for a person if they exist. @@ -152,6 +158,8 @@ class ContactAnalyzer { } oldName = name; + bbartifacts.add(bba); + try { // index the artifact for keyword search blackboard.indexArtifact(bba); @@ -167,6 +175,12 @@ class ContactAnalyzer { } catch (TskCoreException e) { logger.log(Level.SEVERE, "Error posting to blackboard", e); //NON-NLS } finally { + if (!bbartifacts.isEmpty()) { + services.fireModuleDataEvent(new ModuleDataEvent( + moduleName, + BlackboardArtifact.ARTIFACT_TYPE.TSK_CONTACT, bbartifacts)); + } + try { if (resultSet != null) { resultSet.close(); diff --git a/Core/src/org/sleuthkit/autopsy/modules/android/TextMessageAnalyzer.java b/Core/src/org/sleuthkit/autopsy/modules/android/TextMessageAnalyzer.java index 2971f07fed..979291d5d3 100755 --- a/Core/src/org/sleuthkit/autopsy/modules/android/TextMessageAnalyzer.java +++ b/Core/src/org/sleuthkit/autopsy/modules/android/TextMessageAnalyzer.java @@ -24,6 +24,8 @@ import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; +import java.util.ArrayList; +import java.util.Collection; import java.util.List; import java.util.logging.Level; import org.openide.util.NbBundle; @@ -35,6 +37,8 @@ import org.sleuthkit.autopsy.coreutils.Logger; import org.sleuthkit.autopsy.coreutils.MessageNotifyUtil; import org.sleuthkit.autopsy.datamodel.ContentUtils; import org.sleuthkit.autopsy.ingest.IngestJobContext; +import org.sleuthkit.autopsy.ingest.IngestServices; +import org.sleuthkit.autopsy.ingest.ModuleDataEvent; import org.sleuthkit.datamodel.AbstractFile; import org.sleuthkit.datamodel.BlackboardArtifact; import org.sleuthkit.datamodel.BlackboardAttribute; @@ -48,6 +52,7 @@ class TextMessageAnalyzer { private static final String moduleName = AndroidModuleFactory.getModuleName(); private static final Logger logger = Logger.getLogger(TextMessageAnalyzer.class.getName()); + private static final IngestServices services = IngestServices.getInstance(); private static Blackboard blackboard; public static void findTexts(Content dataSource, FileManager fileManager, @@ -88,6 +93,7 @@ class TextMessageAnalyzer { return; } + Collection bbartifacts = new ArrayList<>(); try { resultSet = statement.executeQuery( "SELECT address,date,read,type,subject,body FROM sms;"); //NON-NLS @@ -127,6 +133,8 @@ class TextMessageAnalyzer { NbBundle.getMessage(TextMessageAnalyzer.class, "TextMessageAnalyzer.bbAttribute.smsMessage"))); + bbartifacts.add(bba); + try { // index the artifact for keyword search blackboard.indexArtifact(bba); @@ -139,6 +147,12 @@ class TextMessageAnalyzer { } catch (Exception e) { logger.log(Level.SEVERE, "Error parsing text messages to Blackboard", e); //NON-NLS } finally { + if (!bbartifacts.isEmpty()) { + services.fireModuleDataEvent(new ModuleDataEvent( + moduleName, + BlackboardArtifact.ARTIFACT_TYPE.TSK_MESSAGE, bbartifacts)); + } + try { if (resultSet != null) { resultSet.close(); diff --git a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/Server.java b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/Server.java index 81b6d5f483..efadfe3eb5 100644 --- a/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/Server.java +++ b/KeywordSearch/src/org/sleuthkit/autopsy/keywordsearch/Server.java @@ -241,7 +241,7 @@ public class Server { javaHome = System.getenv("JAVA_HOME"); // NON-NLS } - if (javaHome.isEmpty()) { + if (javaHome == null || javaHome.isEmpty()) { logger.log(Level.WARNING, "Java not found. Keyword search functionality may not work."); //NON-NLS } diff --git a/thunderbirdparser/release/modules/ext/java-libpst-1.0-SNAPSHOT.jar b/thirdparty/java-libpst/java-libpst-1.0-SNAPSHOT.jar old mode 100755 new mode 100644 similarity index 100% rename from thunderbirdparser/release/modules/ext/java-libpst-1.0-SNAPSHOT.jar rename to thirdparty/java-libpst/java-libpst-1.0-SNAPSHOT.jar diff --git a/thunderbirdparser/build.xml b/thunderbirdparser/build.xml index c6442bd82f..098ed50445 100644 --- a/thunderbirdparser/build.xml +++ b/thunderbirdparser/build.xml @@ -2,7 +2,61 @@ - + Builds, tests, and runs the project org.sleuthkit.autopsy.thunderbirdparser. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/thunderbirdparser/ivy.xml b/thunderbirdparser/ivy.xml new file mode 100644 index 0000000000..4bf1f47c46 --- /dev/null +++ b/thunderbirdparser/ivy.xml @@ -0,0 +1,14 @@ + + + + + + + + + + + + + + diff --git a/thunderbirdparser/ivysettings.xml b/thunderbirdparser/ivysettings.xml new file mode 100644 index 0000000000..c27d905255 --- /dev/null +++ b/thunderbirdparser/ivysettings.xml @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/thunderbirdparser/nbproject/project.properties b/thunderbirdparser/nbproject/project.properties index fbdabd0fc1..e21eb352f8 100644 --- a/thunderbirdparser/nbproject/project.properties +++ b/thunderbirdparser/nbproject/project.properties @@ -1,7 +1,6 @@ -file.reference.apache-mime4j-core-0.8.0-SNAPSHOT-sources.jar=release/modules/ext/apache-mime4j-core-0.8.0-SNAPSHOT-sources.jar -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-mbox-iterator-0.8.0-SNAPSHOT-sources.jar=release/modules/ext/apache-mime4j-mbox-iterator-0.8.0-SNAPSHOT-sources.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.apache-mime4j-core-0.8.0.jar=release/modules/ext/apache-mime4j-core-0.8.0.jar +file.reference.apache-mime4j-dom-0.8.0.jar=release/modules/ext/apache-mime4j-dom-0.8.0.jar +file.reference.apache-mime4j-mbox-iterator-0.8.0.jar=release/modules/ext/apache-mime4j-mbox-iterator-0.8.0.jar file.reference.java-libpst-1.0-SNAPSHOT.jar=release/modules/ext/java-libpst-1.0-SNAPSHOT.jar javac.source=1.8 javac.compilerargs=-Xlint -Xlint:-serial diff --git a/thunderbirdparser/nbproject/project.xml b/thunderbirdparser/nbproject/project.xml index 84f4663022..060c91a323 100644 --- a/thunderbirdparser/nbproject/project.xml +++ b/thunderbirdparser/nbproject/project.xml @@ -51,32 +51,20 @@ - ext/apache-mime4j-dom-0.8.0-SNAPSHOT-sources.jar - release/modules/ext/apache-mime4j-dom-0.8.0-SNAPSHOT-sources.jar + ext/apache-mime4j-core-0.8.0.jar + release/modules/ext/apache-mime4j-core-0.8.0.jar - ext/apache-mime4j-core-0.8.0-SNAPSHOT-sources.jar - release/modules/ext/apache-mime4j-core-0.8.0-SNAPSHOT-sources.jar - - - ext/apache-mime4j-mbox-iterator-0.8.0-SNAPSHOT.jar - release/modules/ext/apache-mime4j-mbox-iterator-0.8.0-SNAPSHOT.jar - - - ext/apache-mime4j-core-0.8.0-SNAPSHOT.jar - release/modules/ext/apache-mime4j-core-0.8.0-SNAPSHOT.jar - - - ext/apache-mime4j-dom-0.8.0-SNAPSHOT.jar - release/modules/ext/apache-mime4j-dom-0.8.0-SNAPSHOT.jar + ext/apache-mime4j-dom-0.8.0.jar + release/modules/ext/apache-mime4j-dom-0.8.0.jar ext/java-libpst-1.0-SNAPSHOT.jar release/modules/ext/java-libpst-1.0-SNAPSHOT.jar - ext/apache-mime4j-mbox-iterator-0.8.0-SNAPSHOT-sources.jar - release/modules/ext/apache-mime4j-mbox-iterator-0.8.0-SNAPSHOT-sources.jar + ext/apache-mime4j-mbox-iterator-0.8.0.jar + release/modules/ext/apache-mime4j-mbox-iterator-0.8.0.jar diff --git a/thunderbirdparser/release/modules/ext/apache-mime4j-core-0.8.0-SNAPSHOT-sources.jar b/thunderbirdparser/release/modules/ext/apache-mime4j-core-0.8.0-SNAPSHOT-sources.jar deleted file mode 100755 index 9e6f5b463e..0000000000 Binary files a/thunderbirdparser/release/modules/ext/apache-mime4j-core-0.8.0-SNAPSHOT-sources.jar and /dev/null differ diff --git a/thunderbirdparser/release/modules/ext/apache-mime4j-core-0.8.0-SNAPSHOT.jar b/thunderbirdparser/release/modules/ext/apache-mime4j-core-0.8.0-SNAPSHOT.jar deleted file mode 100755 index 0aff45bb7d..0000000000 Binary files a/thunderbirdparser/release/modules/ext/apache-mime4j-core-0.8.0-SNAPSHOT.jar and /dev/null differ diff --git a/thunderbirdparser/release/modules/ext/apache-mime4j-dom-0.8.0-SNAPSHOT-sources.jar b/thunderbirdparser/release/modules/ext/apache-mime4j-dom-0.8.0-SNAPSHOT-sources.jar deleted file mode 100755 index 206408ba73..0000000000 Binary files a/thunderbirdparser/release/modules/ext/apache-mime4j-dom-0.8.0-SNAPSHOT-sources.jar and /dev/null differ diff --git a/thunderbirdparser/release/modules/ext/apache-mime4j-dom-0.8.0-SNAPSHOT.jar b/thunderbirdparser/release/modules/ext/apache-mime4j-dom-0.8.0-SNAPSHOT.jar deleted file mode 100755 index 773ab544ca..0000000000 Binary files a/thunderbirdparser/release/modules/ext/apache-mime4j-dom-0.8.0-SNAPSHOT.jar and /dev/null differ diff --git a/thunderbirdparser/release/modules/ext/apache-mime4j-mbox-iterator-0.8.0-SNAPSHOT-sources.jar b/thunderbirdparser/release/modules/ext/apache-mime4j-mbox-iterator-0.8.0-SNAPSHOT-sources.jar deleted file mode 100755 index f7248bd03e..0000000000 Binary files a/thunderbirdparser/release/modules/ext/apache-mime4j-mbox-iterator-0.8.0-SNAPSHOT-sources.jar and /dev/null differ diff --git a/thunderbirdparser/release/modules/ext/apache-mime4j-mbox-iterator-0.8.0-SNAPSHOT.jar b/thunderbirdparser/release/modules/ext/apache-mime4j-mbox-iterator-0.8.0-SNAPSHOT.jar deleted file mode 100755 index bb7d15da61..0000000000 Binary files a/thunderbirdparser/release/modules/ext/apache-mime4j-mbox-iterator-0.8.0-SNAPSHOT.jar and /dev/null differ diff --git a/thunderbirdparser/release/modules/ext/apache-mime4j-project-0.8.0-SNAPSHOT.jar b/thunderbirdparser/release/modules/ext/apache-mime4j-project-0.8.0-SNAPSHOT.jar deleted file mode 100755 index 70beac46b5..0000000000 Binary files a/thunderbirdparser/release/modules/ext/apache-mime4j-project-0.8.0-SNAPSHOT.jar and /dev/null differ