diff --git a/.gitignore b/.gitignore
index a9e5de6768..804b0e96ed 100644
--- a/.gitignore
+++ b/.gitignore
@@ -15,4 +15,5 @@
/KeywordSearch/release/solr/start.jar
/KeywordSearch/release/solr/webapps/solr.war
-/DataModel/release/modules/ext/sqlite-jdbc-3.7.2.jar
\ No newline at end of file
+/DataModel/release/modules/ext/sqlite-jdbc-3.7.2.jar
+/DataModel/release/modules/lib/zlib.dll
\ No newline at end of file
diff --git a/BUILDING.txt b/BUILDING.txt
index ea4ef9b7ab..68a7e43249 100644
--- a/BUILDING.txt
+++ b/BUILDING.txt
@@ -13,7 +13,7 @@ needed even if you have a 64-bit system).
3) Download and install Netbeans IDE 7.0.1 (http://netbeans.org/)
-4) Download and build the release version of Libewf2 (20120304 or later). All you need is the dll file.
+4) Download and build the release version of Libewf2 (20120304 or later). All you need is the dll file. Note that you will get a launching error if you use libewf 1.
- http://sourceforge.net/projects/libewf/
5) Set LIBEWF_HOME environment variable to root directory of LIBEWF
diff --git a/CoreComponentInterfaces/src/org/sleuthkit/autopsy/images/usb_devices.png b/CoreComponentInterfaces/src/org/sleuthkit/autopsy/images/usb_devices.png
new file mode 100644
index 0000000000..e49540dccc
Binary files /dev/null and b/CoreComponentInterfaces/src/org/sleuthkit/autopsy/images/usb_devices.png differ
diff --git a/CoreComponents/src/org/sleuthkit/autopsy/corecomponents/Bundle.properties b/CoreComponents/src/org/sleuthkit/autopsy/corecomponents/Bundle.properties
index 135af4fab0..232db96621 100644
--- a/CoreComponents/src/org/sleuthkit/autopsy/corecomponents/Bundle.properties
+++ b/CoreComponents/src/org/sleuthkit/autopsy/corecomponents/Bundle.properties
@@ -70,13 +70,13 @@ DataContentViewerString.selectAllMenuItem.text=Select All
DataContentViewerHex.selectAllMenuItem.text=Select All
DataContentViewerArtifact.totalPageLabel.text=100
DataContentViewerArtifact.prevPageButton.text=
-DataContentViewerArtifact.pageLabel2.text=Artifact
+DataContentViewerArtifact.pageLabel2.text=Result
DataContentViewerArtifact.nextPageButton.text=
DataContentViewerArtifact.currentPageLabel.text=1
DataContentViewerArtifact.ofLabel.text=of
DataContentViewerArtifact.copyMenuItem.text=Copy
DataContentViewerArtifact.selectAllMenuItem.text=Select All
-DataContentViewerArtifact.pageLabel.text=Artifact:
+DataContentViewerArtifact.pageLabel.text=Result:
AdvancedConfigurationDialog.applyButton.text=OK
DataContentViewerMedia.pauseButton.text=\u25ba
diff --git a/CoreComponents/src/org/sleuthkit/autopsy/corecomponents/DataContentViewerArtifact.java b/CoreComponents/src/org/sleuthkit/autopsy/corecomponents/DataContentViewerArtifact.java
index f283e18987..b49113ca7c 100644
--- a/CoreComponents/src/org/sleuthkit/autopsy/corecomponents/DataContentViewerArtifact.java
+++ b/CoreComponents/src/org/sleuthkit/autopsy/corecomponents/DataContentViewerArtifact.java
@@ -94,7 +94,7 @@ public class DataContentViewerArtifact extends javax.swing.JPanel implements Dat
jPanel1.setPreferredSize(new java.awt.Dimension(622, 424));
outputViewPane.setEditable(false);
- outputViewPane.setFont(new java.awt.Font("Courier New", 0, 11));
+ outputViewPane.setFont(new java.awt.Font("Courier New", 0, 11)); // NOI18N
outputViewPane.setPreferredSize(new java.awt.Dimension(700, 400));
jScrollPane1.setViewportView(outputViewPane);
@@ -244,12 +244,12 @@ public class DataContentViewerArtifact extends javax.swing.JPanel implements Dat
@Override
public String getTitle() {
- return "Artifact View";
+ return "Result View";
}
@Override
public String getToolTip() {
- return "Displays Blackboard Artifacts associated with the file";
+ return "Displays Results associated with the file";
}
@Override
@@ -307,7 +307,7 @@ public class DataContentViewerArtifact extends javax.swing.JPanel implements Dat
int size = content.getAllArtifacts().size();
return size > 0;
} catch (TskException ex) {
- logger.log(Level.WARNING, "Couldn't get All blackboard Artifacts", ex);
+ logger.log(Level.WARNING, "Couldn't get All Blackboard Artifacts", ex);
}
}
return false;
diff --git a/DataModel/src/org/sleuthkit/autopsy/datamodel/ArtifactStringContent.java b/DataModel/src/org/sleuthkit/autopsy/datamodel/ArtifactStringContent.java
index cb7ac4c564..623abff65d 100644
--- a/DataModel/src/org/sleuthkit/autopsy/datamodel/ArtifactStringContent.java
+++ b/DataModel/src/org/sleuthkit/autopsy/datamodel/ArtifactStringContent.java
@@ -52,11 +52,11 @@ public class ArtifactStringContent implements StringContent {
buffer.append("p {font-family:Arial;font-size:10pt;}");
buffer.append("");
buffer.append("");
+ buffer.append("
");
+ buffer.append(wrapped.getDisplayName());
+ buffer.append("
");
buffer.append("");
buffer.append("");
- buffer.append("Attribute Type | ");
- buffer.append("Value | ");
- buffer.append("Context | ");
buffer.append("
");
for (BlackboardAttribute attr : wrapped.getAttributes()) {
buffer.append("");
@@ -81,10 +81,10 @@ public class ArtifactStringContent implements StringContent {
break;
}
- buffer.append(" | ");
- buffer.append("");
if (!"".equals(attr.getContext())) {
+ buffer.append(" (");
buffer.append(attr.getContext());
+ buffer.append(")");
}
buffer.append(" | ");
buffer.append("
");
diff --git a/DataModel/src/org/sleuthkit/autopsy/datamodel/ArtifactTypeNode.java b/DataModel/src/org/sleuthkit/autopsy/datamodel/ArtifactTypeNode.java
index 1775c5fe3b..a78a5f892e 100644
--- a/DataModel/src/org/sleuthkit/autopsy/datamodel/ArtifactTypeNode.java
+++ b/DataModel/src/org/sleuthkit/autopsy/datamodel/ArtifactTypeNode.java
@@ -96,6 +96,8 @@ public class ArtifactTypeNode extends AbstractNode implements DisplayableItemNod
return "programs.png";
case TSK_RECENT_OBJECT:
return "recent_docs.png";
+ case TSK_DEVICE_ATTACHED:
+ return "usb_devices.png";
}
return "artifact-icon.png";
}
diff --git a/DataModel/src/org/sleuthkit/autopsy/datamodel/ExtractedContentChildren.java b/DataModel/src/org/sleuthkit/autopsy/datamodel/ExtractedContentChildren.java
index 6b1e7c29b0..61e20b1e66 100644
--- a/DataModel/src/org/sleuthkit/autopsy/datamodel/ExtractedContentChildren.java
+++ b/DataModel/src/org/sleuthkit/autopsy/datamodel/ExtractedContentChildren.java
@@ -46,6 +46,7 @@ public class ExtractedContentChildren extends ChildFactory visit(DirectoryNode dir) {
List actions = new ArrayList();
+ if(!dir.getDirectoryBrowseMode()) {
+ actions.add(new ViewContextAction("View File in Directory", dir));
+ actions.add(null); // creates a menu separator
+ }
actions.add(new NewWindowViewAction("View in New Window", dir));
- actions.add(new ChangeViewAction("View", 0, dir));
+ actions.add(null); // creates a menu separator
actions.add(new ExtractAction("Extract Directory", dir));
- if(!dir.getDirectoryBrowseMode())
- actions.add(new ViewContextAction("View in Parent Directory", dir));
return actions;
}
@Override
public List visit(FileNode f) {
List actions = new ArrayList();
+ if(!f.getDirectoryBrowseMode()) {
+ actions.add(new ViewContextAction("View File in Directory", f));
+ actions.add(null); // creates a menu separator
+ }
actions.add(new NewWindowViewAction("View in New Window", f));
actions.add(new ExternalViewerAction("Open in External Viewer", f));
+ actions.add(null); // creates a menu separator
actions.add(new ExtractAction("Extract File", f));
- if(!f.getDirectoryBrowseMode())
- actions.add(new ViewContextAction("View in Parent Directory", f));
return actions;
}
@Override
- public List visit(BlackboardArtifactNode ba) {
+ public List visit(BlackboardArtifactNode ban) {
List actions = new ArrayList();
- //actions.add(new ViewAssociatedContentAction("View Associated Content", ba));
- actions.add(new ViewContextAction("View Source in Directory", ba));
- Content c = findLinked(ba);
- if(c != null)
- actions.add(new ViewContextAction("View Linked in Directory", c));
+ BlackboardArtifact ba = ban.getLookup().lookup(BlackboardArtifact.class);
+ if(ba.getArtifactTypeID() == BlackboardArtifact.ARTIFACT_TYPE.TSK_HASHSET_HIT.getTypeID()
+ || ba.getArtifactTypeID() == BlackboardArtifact.ARTIFACT_TYPE.TSK_KEYWORD_HIT.getTypeID()) {
+ actions.add(new ViewContextAction("View File in Directory", ban));
+ } else {
+ Content c = findLinked(ban);
+ if (c != null) {
+ actions.add(new ViewContextAction("View File in Directory", c));
+ }
+ actions.add(new ViewContextAction("View Source File in Directory", ban));
+ }
+ File f = ban.getLookup().lookup(File.class);
+ if(f != null) {
+ actions.add(null); // creates a menu separator
+ actions.add(new NewWindowViewAction("View in New Window", new FileNode(f)));
+ actions.add(new ExternalViewerAction("Open in External Viewer", new FileNode(f)));
+ actions.add(null); // creates a menu separator
+ actions.add(new ExtractAction("Extract File", new FileNode(f)));
+ }
return actions;
}
@@ -201,16 +221,20 @@ public class DataResultFilterNode extends FilterNode{
if(attr.getAttributeTypeID() == BlackboardAttribute.ATTRIBUTE_TYPE.TSK_PATH_ID.getTypeID()) {
switch(attr.getValueType()) {
case INTEGER:
- c = art.getSleuthkitCase().getContentById(attr.getValueInt());
+ int i = attr.getValueInt();
+ if(i != -1)
+ c = art.getSleuthkitCase().getContentById(i);
break;
case LONG:
- c = art.getSleuthkitCase().getContentById(attr.getValueLong());
+ long l = attr.getValueLong();
+ if(l != -1)
+ c = art.getSleuthkitCase().getContentById(l);
break;
}
}
}
} catch(TskException ex) {
- Logger.getLogger(this.getClass().getName()).log(Level.WARNING, "Error getting linked file");
+ Logger.getLogger(this.getClass().getName()).log(Level.WARNING, "Error getting linked file", ex);
}
return c;
}
diff --git a/FileSearch/src/org/sleuthkit/autopsy/filesearch/layer.xml b/FileSearch/src/org/sleuthkit/autopsy/filesearch/layer.xml
index 9af0b1419e..c5fa2b2bdf 100644
--- a/FileSearch/src/org/sleuthkit/autopsy/filesearch/layer.xml
+++ b/FileSearch/src/org/sleuthkit/autopsy/filesearch/layer.xml
@@ -16,10 +16,18 @@
+
+
+
+
+
+
+
+
diff --git a/HashDatabase/src/org/sleuthkit/autopsy/hashdatabase/HashDbMgmtAction.java b/HashDatabase/src/org/sleuthkit/autopsy/hashdatabase/HashDbMgmtAction.java
index 7a5692330c..cf8c3cec38 100644
--- a/HashDatabase/src/org/sleuthkit/autopsy/hashdatabase/HashDbMgmtAction.java
+++ b/HashDatabase/src/org/sleuthkit/autopsy/hashdatabase/HashDbMgmtAction.java
@@ -36,7 +36,7 @@ import org.sleuthkit.autopsy.coreutils.Log;
*/
class HashDbMgmtAction extends CallableSystemAction {
- private static final String ACTION_NAME = "Hash Database Management";
+ private static final String ACTION_NAME = "Hash Database Configuration";
@Override
public void performAction() {
diff --git a/HashDatabase/src/org/sleuthkit/autopsy/hashdatabase/HashDbPanel.java b/HashDatabase/src/org/sleuthkit/autopsy/hashdatabase/HashDbPanel.java
index 1ab3b213ae..0aa92ca3e1 100644
--- a/HashDatabase/src/org/sleuthkit/autopsy/hashdatabase/HashDbPanel.java
+++ b/HashDatabase/src/org/sleuthkit/autopsy/hashdatabase/HashDbPanel.java
@@ -30,6 +30,8 @@ import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JFileChooser;
+import javax.swing.filechooser.FileFilter;
+import javax.swing.filechooser.FileNameExtensionFilter;
import org.sleuthkit.autopsy.coreutils.Log;
import org.sleuthkit.datamodel.TskException;
@@ -66,6 +68,10 @@ class HashDbPanel extends javax.swing.JPanel {
fc.setDragEnabled(false);
fc.setFileSelectionMode(JFileChooser.FILES_ONLY);
+ String[] EXTENSION = new String[] { "txt", "idx", "hash", "Hash" };
+ FileNameExtensionFilter filter = new FileNameExtensionFilter(
+ "Hash Database File", EXTENSION);
+ fc.setFileFilter(filter);
fc.setMultiSelectionEnabled(false);
this.initComponents();
diff --git a/HashDatabase/src/org/sleuthkit/autopsy/hashdatabase/layer.xml b/HashDatabase/src/org/sleuthkit/autopsy/hashdatabase/layer.xml
index 0216f3a70d..e84dcb7f23 100644
--- a/HashDatabase/src/org/sleuthkit/autopsy/hashdatabase/layer.xml
+++ b/HashDatabase/src/org/sleuthkit/autopsy/hashdatabase/layer.xml
@@ -14,10 +14,6 @@
-
-
-
-
diff --git a/Ingest/src/org/sleuthkit/autopsy/ingest/Bundle.properties b/Ingest/src/org/sleuthkit/autopsy/ingest/Bundle.properties
index 3c858798ba..c6a88df93a 100644
--- a/Ingest/src/org/sleuthkit/autopsy/ingest/Bundle.properties
+++ b/Ingest/src/org/sleuthkit/autopsy/ingest/Bundle.properties
@@ -20,8 +20,8 @@ IngestDialogPanel.freqSliderLabel.text=Refresh interval (minutes)
IngestDialogPanel.freqSliderLabel.toolTipText=null
IngestDialogPanel.freqSlider.toolTipText=Maximum time in minutes for ingest modules to refresh and report data to user.
Lower value presents data more frequently but may impact performance and lenghten the overall ingest run.
Higher value is improves performance, but data will be refreshed less frequently (recommended for an unattended run).
The value can be adjusted only when no ingest module is currently running
IngestMessageDetailsPanel.backButton.text=
-IngestMessageDetailsPanel.viewArtifactButton.text=View Artifact
-IngestMessageDetailsPanel.viewContentButton.text=View Content
+IngestMessageDetailsPanel.viewArtifactButton.text=Go to Result
+IngestMessageDetailsPanel.viewContentButton.text=Go to Directory
IngestMessagePanel.sortByLabel.text=Sort by:
IngestMessagePanel.sortByComboBox.toolTipText=Sort messages by time (chronological order) or message priority
IngestDialogPanel.advancedButton.text=Advanced
@@ -30,3 +30,4 @@ IngestMessageDetailsPanel.messageDetailsPane.toolTipText=
IngestMessagesToolbar.toolTipText=
IngestMessageDetailsPanel.copyMenuItem.text=Copy
IngestMessageDetailsPanel.selectAllMenuItem.text=Select All
+IngestMessageTopComponent.displayName=Ingest Inbox
diff --git a/Ingest/src/org/sleuthkit/autopsy/ingest/IngestManager.java b/Ingest/src/org/sleuthkit/autopsy/ingest/IngestManager.java
index 3703798513..ccfb959c7e 100755
--- a/Ingest/src/org/sleuthkit/autopsy/ingest/IngestManager.java
+++ b/Ingest/src/org/sleuthkit/autopsy/ingest/IngestManager.java
@@ -46,6 +46,7 @@ import org.openide.util.Lookup;
import org.sleuthkit.autopsy.ingest.IngestMessage.MessageType;
import org.sleuthkit.datamodel.FsContent;
import org.sleuthkit.datamodel.Image;
+import org.sleuthkit.datamodel.TskData;
/**
* IngestManager sets up and manages ingest services
@@ -553,8 +554,6 @@ public class IngestManager {
return ret;
}
-
-
//image worker to remove itself when complete or interrupted
void removeImageIngestWorker(IngestImageThread worker) {
//remove worker
@@ -642,7 +641,7 @@ public class IngestManager {
void enqueue(FsContent fsContent, IngestServiceFsContent service) {
//fsContentUnits.put(fsContent, Collections.singletonList(service));
List services = fsContentUnits.get(fsContent);
- if(services == null) {
+ if (services == null) {
services = new ArrayList();
fsContentUnits.put(fsContent, services);
}
@@ -652,7 +651,7 @@ public class IngestManager {
void enqueue(FsContent fsContent, List services) {
List oldServices = fsContentUnits.get(fsContent);
- if(oldServices == null) {
+ if (oldServices == null) {
oldServices = new ArrayList();
fsContentUnits.put(fsContent, oldServices);
}
@@ -690,9 +689,10 @@ public class IngestManager {
* @return true if the service is enqueued to do work
*/
boolean hasServiceEnqueued(IngestServiceFsContent service) {
- for(List list : fsContentUnits.values()) {
- if(list.contains(service))
+ for (List list : fsContentUnits.values()) {
+ if (list.contains(service)) {
return true;
+ }
}
return false;
}
@@ -705,8 +705,8 @@ public class IngestManager {
public String printQueue() {
StringBuilder sb = new StringBuilder();
/*for (QueueUnit u : fsContentUnits) {
- sb.append(u.toString());
- sb.append("\n");
+ sb.append(u.toString());
+ sb.append("\n");
}*/
return sb.toString();
}
@@ -731,7 +731,7 @@ public class IngestManager {
void enqueue(Image image, IngestServiceImage service) {
List services = imageUnits.get(image);
- if(services == null) {
+ if (services == null) {
services = new ArrayList();
imageUnits.put(image, services);
}
@@ -740,7 +740,7 @@ public class IngestManager {
void enqueue(Image image, List services) {
List oldServices = imageUnits.get(image);
- if(oldServices == null) {
+ if (oldServices == null) {
oldServices = new ArrayList();
imageUnits.put(image, oldServices);
}
@@ -817,19 +817,19 @@ public class IngestManager {
public String toHtmlString() {
StringBuilder sb = new StringBuilder();
sb.append("");
-
+
sb.append("Ingest time: ").append(getTotalTimeString()).append("
");
sb.append("Total errors: ").append(errorsTotal).append("
");
/*
if (errorsTotal > 0) {
- sb.append("Errors per service:");
- for (IngestServiceAbstract service : errors.keySet()) {
- final int errorsService = errors.get(service);
- sb.append("\t").append(service.getName()).append(": ").append(errorsService).append("
");
- }
+ sb.append("Errors per service:");
+ for (IngestServiceAbstract service : errors.keySet()) {
+ final int errorsService = errors.get(service);
+ sb.append("\t").append(service.getName()).append(": ").append(errorsService).append("
");
+ }
}
* */
-
+
sb.append("");
return sb.toString();
}
@@ -926,13 +926,18 @@ public class IngestManager {
fsContentServiceResults.clear();
}
+ final FsContent fileToProcess = unit.getKey();
+
+ progress.progress(fileToProcess.getName(), processedFiles);
+
for (IngestServiceFsContent service : unit.getValue()) {
if (isCancelled()) {
return null;
}
+
try {
- IngestServiceFsContent.ProcessResult result = service.process(unit.getKey());
+ IngestServiceFsContent.ProcessResult result = service.process(fileToProcess);
//handle unconditional stop
if (result == IngestServiceFsContent.ProcessResult.STOP) {
break;
@@ -956,7 +961,7 @@ public class IngestManager {
progress.switchToIndeterminate();
progress.switchToDeterminate(numFsContents);
}
- progress.progress(unit.getKey().getName(), ++processedFiles);
+ ++processedFiles;
--numFsContents;
} //end of this fsContent
logger.log(Level.INFO, "Done background processing");
@@ -1001,7 +1006,6 @@ public class IngestManager {
}
-
private void handleInterruption() {
for (IngestServiceFsContent s : fsContentServices) {
s.stop();
@@ -1099,10 +1103,10 @@ public class IngestManager {
//addImage((IngestServiceImage) service, image);
break;
case FsContent:
- if(fsContents == null) {
+ if (fsContents == null) {
long start = System.currentTimeMillis();
fsContents = new GetAllFilesContentVisitor().visit(image);
- logger.info("Get all files took " + (System.currentTimeMillis()-start) + "ms");
+ logger.info("Get all files took " + (System.currentTimeMillis() - start) + "ms");
}
//enqueue the same singleton fscontent service
logger.log(Level.INFO, "Adding image " + image.getName() + " with " + fsContents.size() + " number of fsContent to service " + service.getName());
@@ -1113,8 +1117,9 @@ public class IngestManager {
}
progress.progress(serviceName + " " + imageName, ++processed);
}
- if(fsContents != null)
+ if (fsContents != null) {
fsContents.clear();
+ }
}
//logger.log(Level.INFO, fsContentQueue.printQueue());
diff --git a/Ingest/src/org/sleuthkit/autopsy/ingest/IngestMessageDetailsPanel.form b/Ingest/src/org/sleuthkit/autopsy/ingest/IngestMessageDetailsPanel.form
index be1bc1e202..e6a0f06036 100644
--- a/Ingest/src/org/sleuthkit/autopsy/ingest/IngestMessageDetailsPanel.form
+++ b/Ingest/src/org/sleuthkit/autopsy/ingest/IngestMessageDetailsPanel.form
@@ -42,7 +42,7 @@
-
+
@@ -70,7 +70,7 @@
-
+
diff --git a/Ingest/src/org/sleuthkit/autopsy/ingest/IngestMessageDetailsPanel.java b/Ingest/src/org/sleuthkit/autopsy/ingest/IngestMessageDetailsPanel.java
index 6dcfdea207..ed2fca3f79 100644
--- a/Ingest/src/org/sleuthkit/autopsy/ingest/IngestMessageDetailsPanel.java
+++ b/Ingest/src/org/sleuthkit/autopsy/ingest/IngestMessageDetailsPanel.java
@@ -107,7 +107,7 @@ class IngestMessageDetailsPanel extends javax.swing.JPanel {
selectAllMenuItem.setText(org.openide.util.NbBundle.getMessage(IngestMessageDetailsPanel.class, "IngestMessageDetailsPanel.selectAllMenuItem.text")); // NOI18N
rightClickMenu.add(selectAllMenuItem);
- backButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/org/sleuthkit/autopsy/ingest/arrow_left.gif"))); // NOI18N
+ backButton.setIcon(new javax.swing.ImageIcon(getClass().getResource("/org/sleuthkit/autopsy/ingest/btn_step_back.png"))); // NOI18N
backButton.setText(org.openide.util.NbBundle.getMessage(IngestMessageDetailsPanel.class, "IngestMessageDetailsPanel.backButton.text")); // NOI18N
backButton.setAlignmentY(0.0F);
backButton.setHorizontalTextPosition(javax.swing.SwingConstants.CENTER);
@@ -152,7 +152,7 @@ class IngestMessageDetailsPanel extends javax.swing.JPanel {
layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
.addGroup(layout.createSequentialGroup()
.addComponent(backButton, javax.swing.GroupLayout.PREFERRED_SIZE, 23, javax.swing.GroupLayout.PREFERRED_SIZE)
- .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 153, Short.MAX_VALUE)
+ .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, 147, Short.MAX_VALUE)
.addComponent(viewArtifactButton)
.addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED)
.addComponent(viewContentButton))
diff --git a/Ingest/src/org/sleuthkit/autopsy/ingest/IngestMessageTopComponent.form b/Ingest/src/org/sleuthkit/autopsy/ingest/IngestMessageTopComponent.form
index 37e264e504..d5baf08ac5 100644
--- a/Ingest/src/org/sleuthkit/autopsy/ingest/IngestMessageTopComponent.form
+++ b/Ingest/src/org/sleuthkit/autopsy/ingest/IngestMessageTopComponent.form
@@ -1,6 +1,12 @@
@@ -96,7 +89,7 @@
-
+
diff --git a/Report/src/org/sleuthkit/autopsy/report/reportFilter.java b/Report/src/org/sleuthkit/autopsy/report/reportFilter.java
index 6bab8b7846..aadf1692fa 100644
--- a/Report/src/org/sleuthkit/autopsy/report/reportFilter.java
+++ b/Report/src/org/sleuthkit/autopsy/report/reportFilter.java
@@ -196,11 +196,13 @@ private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRS
if(jCheckBox4.isSelected())
{
filters.add(10);
+
}
if(jCheckBox5.isSelected())
{
filters.add(6);
- filters.add(8);
+ filters.add(8);
+ filters.add(11);
}
getReports();
}//GEN-LAST:event_jButton1ActionPerformed
diff --git a/Report/src/org/sleuthkit/autopsy/report/reportHTML.java b/Report/src/org/sleuthkit/autopsy/report/reportHTML.java
index b7bfc91923..558fbab172 100644
--- a/Report/src/org/sleuthkit/autopsy/report/reportHTML.java
+++ b/Report/src/org/sleuthkit/autopsy/report/reportHTML.java
@@ -55,6 +55,7 @@ public reportHTML (HashMap> re
int countInstalled = 0;
int countKeyword = 0;
int countHash = 0;
+ int countDevice = 0;
for (Entry> entry : report.entrySet()) {
if(entry.getKey().getArtifactTypeID() == 1){
countGen++;
@@ -88,6 +89,9 @@ public reportHTML (HashMap> re
if(entry.getKey().getArtifactTypeID() == 10){
countHash++;
}
+ if(entry.getKey().getArtifactTypeID() == 11){
+ countDevice++;
+ }
}
try{
@@ -157,6 +161,9 @@ public reportHTML (HashMap> re
formatted_Report.append("
Section | Count |
");
if(countWebBookmark > 0){
formatted_Report.append("Web Bookmarks | ").append(countWebBookmark).append(" |
");
+ }
+ if(countWebCookie > 0){
+ formatted_Report.append("Web Cookies | ").append(countWebCookie).append(" |
");
}
if(countWebHistory > 0){
formatted_Report.append("Web History | ").append(countWebHistory).append(" |
");
@@ -175,6 +182,9 @@ public reportHTML (HashMap> re
}
if(countHash > 0){
formatted_Report.append("Hash Hits | ").append(countHash).append(" |
");
+ }
+ if(countDevice > 0){
+ formatted_Report.append("Attached Devices | ").append(countDevice).append(" |
");
}
formatted_Report.append("
");
String tableHeader = "";
@@ -183,11 +193,13 @@ public reportHTML (HashMap> re
StringBuilder nodeWebCookie = new StringBuilder("").append(tableHeader).append("URL | Date | Name | Value | Program |
");
StringBuilder nodeWebHistory = new StringBuilder("").append(tableHeader).append("URL | Date | Referrer | Title | Program | ");
StringBuilder nodeWebDownload = new StringBuilder("").append(tableHeader).append("File | Source | Time | Program | ");
- StringBuilder nodeRecentObjects = new StringBuilder("").append(tableHeader).append("Name | Path | Size | ");
+ StringBuilder nodeRecentObjects = new StringBuilder("").append(tableHeader).append("Name | Path | Related Shortcut | ");
StringBuilder nodeTrackPoint = new StringBuilder("").append(tableHeader).append("Artifact ID | Name | Size | Attribute | Value | ");
StringBuilder nodeInstalled = new StringBuilder("").append(tableHeader).append("Program Name | Install Date/Time | ");
StringBuilder nodeKeyword = new StringBuilder("");
StringBuilder nodeHash = new StringBuilder("").append(tableHeader).append("Name | Size | Hashset Name | ");
+ StringBuilder nodeDevice = new StringBuilder("").append(tableHeader).append("Name | Serial # | Time | ");
+
int alt = 0;
String altRow = "";
for (Entry> entry : report.entrySet()) {
@@ -230,6 +242,9 @@ public reportHTML (HashMap> re
int type = tempatt.getAttributeTypeID();
if(tempatt.getValueString() == null || tempatt.getValueString() == "null"){
+ }
+ else if(type == 2){
+ value = new java.text.SimpleDateFormat("MM/dd/yyyy HH:mm:ss").format(new java.util.Date ((tempatt.getValueLong())*1000));
}
else
{
@@ -281,9 +296,9 @@ public reportHTML (HashMap> re
}
if(entry.getKey().getArtifactTypeID() == 6){
//artifact.append("").append(objId.toString());
- artifact.append(" |
").append(attributes.get(6)).append(" | ");
- artifact.append("").append(attributes.get(5)).append(" | ");
- artifact.append("").append(filesize.toString()).append(" | ");
+ artifact.append("
").append(attributes.get(3)).append(" | ");
+ artifact.append("").append(attributes.get(8)).append(" | ");
+ artifact.append("").append(file.getName()).append(" | ");
artifact.append("
");
nodeRecentObjects.append(artifact);
}
@@ -316,6 +331,13 @@ public reportHTML (HashMap> re
artifact.append("");
nodeHash.append(artifact);
}
+ if(entry.getKey().getArtifactTypeID() == 11){
+ artifact.append("").append(attributes.get(18)).append(" | ");
+ artifact.append("").append(attributes.get(20)).append(" | ");
+ artifact.append("").append(attributes.get(2)).append(" | ");
+ artifact.append("
");
+ nodeDevice.append(artifact);
+ }
cc++;
rr.progBarSet(cc);
}
@@ -359,6 +381,10 @@ public reportHTML (HashMap> re
formatted_Report.append(nodeHash);
formatted_Report.append("
");
}
+ if(countDevice > 0){
+ formatted_Report.append(nodeDevice);
+ formatted_Report.append("
");
+ }
//end of master loop
formatted_Report.append("