mirror of
https://github.com/overcuriousity/autopsy-flatpak.git
synced 2025-07-19 11:07:43 +00:00
Merge pull request #420 from rcordovano/merge_rc_branch
Merge rc branch
This commit is contained in:
commit
9a8ed55890
@ -126,6 +126,36 @@ public class BlackboardArtifactNode extends DisplayableItemNode {
|
|||||||
}
|
}
|
||||||
final int artifactTypeId = artifact.getArtifactTypeID();
|
final int artifactTypeId = artifact.getArtifactTypeID();
|
||||||
|
|
||||||
|
// If mismatch, add props for extension and file type
|
||||||
|
if (artifactTypeId == BlackboardArtifact.ARTIFACT_TYPE.TSK_EXT_MISMATCH_DETECTED.getTypeID()) {
|
||||||
|
String actualExt = "";
|
||||||
|
int i = associated.getName().lastIndexOf(".");
|
||||||
|
if ((i > -1) && ((i + 1) < associated.getName().length())) {
|
||||||
|
actualExt = associated.getName().substring(i + 1).toLowerCase();
|
||||||
|
}
|
||||||
|
ss.put(new NodeProperty("Extension", "Extension", NO_DESCR, actualExt));
|
||||||
|
|
||||||
|
try {
|
||||||
|
String actualMimeType = "";
|
||||||
|
ArrayList<BlackboardArtifact> artList = associated.getAllArtifacts();
|
||||||
|
for (BlackboardArtifact art : artList) {
|
||||||
|
List<BlackboardAttribute> atrList = art.getAttributes();
|
||||||
|
for (BlackboardAttribute att : atrList) {
|
||||||
|
if (att.getAttributeTypeID() == BlackboardAttribute.ATTRIBUTE_TYPE.TSK_FILE_TYPE_SIG.getTypeID()) {
|
||||||
|
actualMimeType = att.getValueString();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (actualMimeType.isEmpty()) {
|
||||||
|
logger.log(Level.WARNING, "Could not find expected TSK_FILE_TYPE_SIG attribute.");
|
||||||
|
} else {
|
||||||
|
ss.put(new NodeProperty("MIME Type", "MIME Type", NO_DESCR, actualMimeType));
|
||||||
|
}
|
||||||
|
} catch (TskCoreException ex) {
|
||||||
|
logger.log(Level.WARNING, "Error while searching for TSK_FILE_TYPE_SIG attribute: ", ex);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (Arrays.asList(SHOW_UNIQUE_PATH).contains(artifactTypeId)) {
|
if (Arrays.asList(SHOW_UNIQUE_PATH).contains(artifactTypeId)) {
|
||||||
String sourcePath = "";
|
String sourcePath = "";
|
||||||
try {
|
try {
|
||||||
|
@ -19,6 +19,7 @@
|
|||||||
package org.sleuthkit.autopsy.ingest;
|
package org.sleuthkit.autopsy.ingest;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import javax.swing.JPanel;
|
import javax.swing.JPanel;
|
||||||
import org.openide.util.lookup.ServiceProvider;
|
import org.openide.util.lookup.ServiceProvider;
|
||||||
@ -29,6 +30,7 @@ import org.sleuthkit.datamodel.Content;
|
|||||||
public class GeneralIngestConfigurator implements IngestConfigurator {
|
public class GeneralIngestConfigurator implements IngestConfigurator {
|
||||||
|
|
||||||
public static final String ENABLED_INGEST_MODULES_KEY = "Enabled_Ingest_Modules";
|
public static final String ENABLED_INGEST_MODULES_KEY = "Enabled_Ingest_Modules";
|
||||||
|
public static final String DISABLED_INGEST_MODULES_KEY = "Disabled_Ingest_Modules";
|
||||||
public static final String PARSE_UNALLOC_SPACE_KEY = "Process_Unallocated_Space";
|
public static final String PARSE_UNALLOC_SPACE_KEY = "Process_Unallocated_Space";
|
||||||
private List<Content> contentToIngest;
|
private List<Content> contentToIngest;
|
||||||
private IngestManager manager;
|
private IngestManager manager;
|
||||||
@ -51,20 +53,57 @@ public class GeneralIngestConfigurator implements IngestConfigurator {
|
|||||||
|
|
||||||
private List<String> loadSettingsForContext() {
|
private List<String> loadSettingsForContext() {
|
||||||
List<String> messages = new ArrayList<>();
|
List<String> messages = new ArrayList<>();
|
||||||
|
List<IngestModuleAbstract> allModules = IngestManager.getDefault().enumerateAllModules();
|
||||||
|
|
||||||
// If there is no enabled ingest modules setting for this user, default to enabling all
|
// If there is no enabled ingest modules setting for this user, default to enabling all
|
||||||
// of the ingest modules the IngestManager has loaded.
|
// of the ingest modules the IngestManager has loaded.
|
||||||
if (ModuleSettings.settingExists(moduleContext, ENABLED_INGEST_MODULES_KEY) == false) {
|
if (ModuleSettings.settingExists(moduleContext, ENABLED_INGEST_MODULES_KEY) == false) {
|
||||||
String defaultSetting = moduleListToCsv(IngestManager.getDefault().enumerateAllModules());
|
String defaultSetting = moduleListToCsv(allModules);
|
||||||
ModuleSettings.setConfigSetting(moduleContext, ENABLED_INGEST_MODULES_KEY, defaultSetting);
|
ModuleSettings.setConfigSetting(moduleContext, ENABLED_INGEST_MODULES_KEY, defaultSetting);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
String[] enabledModuleNames = ModuleSettings.getConfigSetting(moduleContext, ENABLED_INGEST_MODULES_KEY).split(", ");
|
||||||
|
ArrayList<String> enabledList = new ArrayList<>(Arrays.asList(enabledModuleNames));
|
||||||
|
|
||||||
|
// Check for modules that are missing from the config file
|
||||||
|
|
||||||
|
String[] disabledModuleNames = null;
|
||||||
|
// Older config files won't have the disabled list, so don't assume it exists
|
||||||
|
if (ModuleSettings.settingExists(moduleContext, DISABLED_INGEST_MODULES_KEY)) {
|
||||||
|
disabledModuleNames = ModuleSettings.getConfigSetting(moduleContext, DISABLED_INGEST_MODULES_KEY).split(", ");
|
||||||
|
}
|
||||||
|
|
||||||
|
for (IngestModuleAbstract module : allModules) {
|
||||||
|
boolean found = false;
|
||||||
|
|
||||||
|
// Check enabled first
|
||||||
|
for (String moduleName : enabledModuleNames) {
|
||||||
|
if (module.getName().equals(moduleName)) {
|
||||||
|
found = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Then check disabled
|
||||||
|
if (!found && (disabledModuleNames != null)) {
|
||||||
|
for (String moduleName : disabledModuleNames) {
|
||||||
|
if (module.getName().equals(moduleName)) {
|
||||||
|
found = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!found) {
|
||||||
|
enabledList.add(module.getName());
|
||||||
|
// It will get saved to file later
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Get the enabled ingest modules setting, check for missing modules, and pass the setting to
|
// Get the enabled ingest modules setting, check for missing modules, and pass the setting to
|
||||||
// the UI component.
|
// the UI component.
|
||||||
List<IngestModuleAbstract> allModules = IngestManager.getDefault().enumerateAllModules();
|
|
||||||
String[] enabledModuleNames = ModuleSettings.getConfigSetting(moduleContext, ENABLED_INGEST_MODULES_KEY).split(", ");
|
|
||||||
List<IngestModuleAbstract> enabledModules = new ArrayList<>();
|
List<IngestModuleAbstract> enabledModules = new ArrayList<>();
|
||||||
for (String moduleName : enabledModuleNames) {
|
for (String moduleName : enabledList) {
|
||||||
if (moduleName.equals("Thunderbird Parser")
|
if (moduleName.equals("Thunderbird Parser")
|
||||||
|| moduleName.equals("MBox Parser")) {
|
|| moduleName.equals("MBox Parser")) {
|
||||||
moduleName = "Email Parser";
|
moduleName = "Email Parser";
|
||||||
@ -112,6 +151,10 @@ public class GeneralIngestConfigurator implements IngestConfigurator {
|
|||||||
String enabledModulesCsvList = moduleListToCsv(ingestDialogPanel.getModulesToStart());
|
String enabledModulesCsvList = moduleListToCsv(ingestDialogPanel.getModulesToStart());
|
||||||
ModuleSettings.setConfigSetting(moduleContext, ENABLED_INGEST_MODULES_KEY, enabledModulesCsvList);
|
ModuleSettings.setConfigSetting(moduleContext, ENABLED_INGEST_MODULES_KEY, enabledModulesCsvList);
|
||||||
|
|
||||||
|
// Save the user's configuration of the set of disabled ingest modules.
|
||||||
|
String disabledModulesCsvList = moduleListToCsv(ingestDialogPanel.getDisabledModules());
|
||||||
|
ModuleSettings.setConfigSetting(moduleContext, DISABLED_INGEST_MODULES_KEY, disabledModulesCsvList);
|
||||||
|
|
||||||
// Save the user's setting for the process unallocated space flag.
|
// Save the user's setting for the process unallocated space flag.
|
||||||
String processUnalloc = Boolean.toString(ingestDialogPanel.processUnallocSpaceEnabled());
|
String processUnalloc = Boolean.toString(ingestDialogPanel.processUnallocSpaceEnabled());
|
||||||
ModuleSettings.setConfigSetting(moduleContext, PARSE_UNALLOC_SPACE_KEY, processUnalloc);
|
ModuleSettings.setConfigSetting(moduleContext, PARSE_UNALLOC_SPACE_KEY, processUnalloc);
|
||||||
|
@ -60,7 +60,7 @@ public class IngestDialogPanel extends javax.swing.JPanel {
|
|||||||
this.context = context;
|
this.context = context;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public IngestModuleAbstract getCurrentIngestModule() {
|
public IngestModuleAbstract getCurrentIngestModule() {
|
||||||
return currentModule;
|
return currentModule;
|
||||||
}
|
}
|
||||||
@ -69,6 +69,10 @@ public class IngestDialogPanel extends javax.swing.JPanel {
|
|||||||
return tableModel.getSelectedModules();
|
return tableModel.getSelectedModules();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public List<IngestModuleAbstract> getDisabledModules() {
|
||||||
|
return tableModel.getUnSelectedModules();
|
||||||
|
}
|
||||||
|
|
||||||
public boolean processUnallocSpaceEnabled() {
|
public boolean processUnallocSpaceEnabled() {
|
||||||
return processUnallocCheckbox.isSelected();
|
return processUnallocCheckbox.isSelected();
|
||||||
}
|
}
|
||||||
@ -350,6 +354,16 @@ public class IngestDialogPanel extends javax.swing.JPanel {
|
|||||||
return selectedModules;
|
return selectedModules;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public List<IngestModuleAbstract> getUnSelectedModules() {
|
||||||
|
List<IngestModuleAbstract> unselectedModules = new ArrayList<>();
|
||||||
|
for (Map.Entry<IngestModuleAbstract, Boolean> entry : moduleData) {
|
||||||
|
if (!entry.getValue().booleanValue()) {
|
||||||
|
unselectedModules.add(entry.getKey());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return unselectedModules;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Sets the given modules as selected in the modules table
|
* Sets the given modules as selected in the modules table
|
||||||
* @param selectedModules
|
* @param selectedModules
|
||||||
|
@ -91,7 +91,9 @@
|
|||||||
</run-dependency>
|
</run-dependency>
|
||||||
</dependency>
|
</dependency>
|
||||||
</module-dependencies>
|
</module-dependencies>
|
||||||
<public-packages/>
|
<public-packages>
|
||||||
|
<package>org.sleuthkit.autopsy.filetypeid</package>
|
||||||
|
</public-packages>
|
||||||
<class-path-extension>
|
<class-path-extension>
|
||||||
<runtime-relative-path>ext/tika-core-1.2.jar</runtime-relative-path>
|
<runtime-relative-path>ext/tika-core-1.2.jar</runtime-relative-path>
|
||||||
<binary-origin>release/modules/ext/tika-core-1.2.jar</binary-origin>
|
<binary-origin>release/modules/ext/tika-core-1.2.jar</binary-origin>
|
||||||
|
@ -36,5 +36,7 @@ public interface FileTypeDetectionInterface {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// You only have one job
|
// You only have one job
|
||||||
FileIdInfo attemptMatch(AbstractFile abstractFile);
|
FileIdInfo attemptMatch(AbstractFile abstractFile);
|
||||||
|
|
||||||
|
boolean isMimeTypeDetectable(String mimeType);
|
||||||
}
|
}
|
||||||
|
@ -48,7 +48,7 @@ public class FileTypeIdIngestModule extends org.sleuthkit.autopsy.ingest.IngestM
|
|||||||
private static long matchTime = 0;
|
private static long matchTime = 0;
|
||||||
private static int messageId = 0;
|
private static int messageId = 0;
|
||||||
private static long numFiles = 0;
|
private static long numFiles = 0;
|
||||||
private static boolean skipKnown = false;
|
private static boolean skipKnown = true;
|
||||||
|
|
||||||
private FileTypeIdSimpleConfigPanel simpleConfigPanel;
|
private FileTypeIdSimpleConfigPanel simpleConfigPanel;
|
||||||
private IngestServices services;
|
private IngestServices services;
|
||||||
@ -173,4 +173,15 @@ public class FileTypeIdIngestModule extends org.sleuthkit.autopsy.ingest.IngestM
|
|||||||
public static void setSkipKnown(boolean flag) {
|
public static void setSkipKnown(boolean flag) {
|
||||||
skipKnown = flag;
|
skipKnown = flag;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Validate if a given mime type is in the detector's registry.
|
||||||
|
* @param mimeType Full string of mime type, e.g. "text/html"
|
||||||
|
* @return true if detectable
|
||||||
|
*/
|
||||||
|
public static boolean isMimeTypeDetectable(String mimeType) {
|
||||||
|
FileTypeDetectionInterface detector = new TikaFileTypeDetector();
|
||||||
|
return detector.isMimeTypeDetectable(mimeType);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
@ -36,6 +36,7 @@
|
|||||||
<SubComponents>
|
<SubComponents>
|
||||||
<Component class="javax.swing.JCheckBox" name="skipKnownCheckBox">
|
<Component class="javax.swing.JCheckBox" name="skipKnownCheckBox">
|
||||||
<Properties>
|
<Properties>
|
||||||
|
<Property name="selected" type="boolean" value="true"/>
|
||||||
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
|
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
|
||||||
<ResourceString bundle="org/sleuthkit/autopsy/filetypeid/Bundle.properties" key="FileTypeIdSimpleConfigPanel.skipKnownCheckBox.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
|
<ResourceString bundle="org/sleuthkit/autopsy/filetypeid/Bundle.properties" key="FileTypeIdSimpleConfigPanel.skipKnownCheckBox.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
|
||||||
</Property>
|
</Property>
|
||||||
|
@ -44,6 +44,7 @@ public class FileTypeIdSimpleConfigPanel extends javax.swing.JPanel {
|
|||||||
|
|
||||||
skipKnownCheckBox = new javax.swing.JCheckBox();
|
skipKnownCheckBox = new javax.swing.JCheckBox();
|
||||||
|
|
||||||
|
skipKnownCheckBox.setSelected(true);
|
||||||
skipKnownCheckBox.setText(org.openide.util.NbBundle.getMessage(FileTypeIdSimpleConfigPanel.class, "FileTypeIdSimpleConfigPanel.skipKnownCheckBox.text")); // NOI18N
|
skipKnownCheckBox.setText(org.openide.util.NbBundle.getMessage(FileTypeIdSimpleConfigPanel.class, "FileTypeIdSimpleConfigPanel.skipKnownCheckBox.text")); // NOI18N
|
||||||
skipKnownCheckBox.setToolTipText(org.openide.util.NbBundle.getMessage(FileTypeIdSimpleConfigPanel.class, "FileTypeIdSimpleConfigPanel.skipKnownCheckBox.toolTipText")); // NOI18N
|
skipKnownCheckBox.setToolTipText(org.openide.util.NbBundle.getMessage(FileTypeIdSimpleConfigPanel.class, "FileTypeIdSimpleConfigPanel.skipKnownCheckBox.toolTipText")); // NOI18N
|
||||||
skipKnownCheckBox.addActionListener(new java.awt.event.ActionListener() {
|
skipKnownCheckBox.addActionListener(new java.awt.event.ActionListener() {
|
||||||
|
@ -18,8 +18,11 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
package org.sleuthkit.autopsy.filetypeid;
|
package org.sleuthkit.autopsy.filetypeid;
|
||||||
|
import java.util.SortedSet;
|
||||||
import org.openide.util.Exceptions;
|
import org.openide.util.Exceptions;
|
||||||
import org.apache.tika.Tika;
|
import org.apache.tika.Tika;
|
||||||
|
import org.apache.tika.mime.MediaType;
|
||||||
|
import org.apache.tika.mime.MimeTypes;
|
||||||
|
|
||||||
import org.sleuthkit.datamodel.AbstractFile;
|
import org.sleuthkit.datamodel.AbstractFile;
|
||||||
|
|
||||||
@ -52,4 +55,27 @@ public class TikaFileTypeDetector implements FileTypeDetectionInterface {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Validate if a given mime type is in the registry.
|
||||||
|
* For Tika, we remove the string "tika" from all MIME names,
|
||||||
|
* e.g. use "application/x-msoffice" NOT "application/x-tika-msoffice"
|
||||||
|
* @param mimeType Full string of mime type, e.g. "text/html"
|
||||||
|
* @return true if detectable
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public boolean isMimeTypeDetectable(String mimeType) {
|
||||||
|
boolean ret = false;
|
||||||
|
|
||||||
|
SortedSet<MediaType> m = MimeTypes.getDefaultMimeTypes().getMediaTypeRegistry().getTypes();
|
||||||
|
String[] split = mimeType.split("/");
|
||||||
|
|
||||||
|
if (split.length == 2) {
|
||||||
|
String type = split[0];
|
||||||
|
String subtype = split[1];
|
||||||
|
MediaType mediaType = new MediaType(type, subtype);
|
||||||
|
ret = m.contains(mediaType);
|
||||||
|
}
|
||||||
|
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -50,6 +50,7 @@ public class HashDbIngestModule extends IngestModuleAbstractFile {
|
|||||||
public final static String MODULE_DESCRIPTION = "Identifies known and notables files using supplied hash databases, such as a standard NSRL database.";
|
public final static String MODULE_DESCRIPTION = "Identifies known and notables files using supplied hash databases, such as a standard NSRL database.";
|
||||||
final public static String MODULE_VERSION = Version.getVersion();
|
final public static String MODULE_VERSION = Version.getVersion();
|
||||||
private static final Logger logger = Logger.getLogger(HashDbIngestModule.class.getName());
|
private static final Logger logger = Logger.getLogger(HashDbIngestModule.class.getName());
|
||||||
|
private static final int MAX_COMMENT_SIZE = 500;
|
||||||
private HashDbSimpleConfigPanel simpleConfigPanel;
|
private HashDbSimpleConfigPanel simpleConfigPanel;
|
||||||
private HashDbConfigPanel advancedConfigPanel;
|
private HashDbConfigPanel advancedConfigPanel;
|
||||||
private IngestServices services;
|
private IngestServices services;
|
||||||
@ -227,9 +228,24 @@ public class HashDbIngestModule extends IngestModuleAbstractFile {
|
|||||||
services.postMessage(IngestMessage.createErrorMessage(++messageId, HashDbIngestModule.this, "Hash Lookup Error: " + name,
|
services.postMessage(IngestMessage.createErrorMessage(++messageId, HashDbIngestModule.this, "Hash Lookup Error: " + name,
|
||||||
"Error encountered while setting known bad state for " + name + "."));
|
"Error encountered while setting known bad state for " + name + "."));
|
||||||
ret = ProcessResult.ERROR;
|
ret = ProcessResult.ERROR;
|
||||||
}
|
}
|
||||||
String hashSetName = db.getHashSetName();
|
String hashSetName = db.getHashSetName();
|
||||||
postHashSetHitToBlackboard(file, md5Hash, hashSetName, db.getSendIngestMessages());
|
|
||||||
|
String comment = "";
|
||||||
|
ArrayList<String> comments = db.lookUp(file).getComments();
|
||||||
|
int i = 0;
|
||||||
|
for (String c : comments) {
|
||||||
|
comment += c;
|
||||||
|
if (++i > 1) {
|
||||||
|
c += ". ";
|
||||||
|
}
|
||||||
|
if (comment.length() > MAX_COMMENT_SIZE) {
|
||||||
|
comment = comment.substring(0, MAX_COMMENT_SIZE) + "...";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
postHashSetHitToBlackboard(file, md5Hash, hashSetName, comment, db.getSendIngestMessages());
|
||||||
}
|
}
|
||||||
lookuptime += (System.currentTimeMillis() - lookupstart);
|
lookuptime += (System.currentTimeMillis() - lookupstart);
|
||||||
} catch (TskException ex) {
|
} catch (TskException ex) {
|
||||||
@ -271,7 +287,7 @@ public class HashDbIngestModule extends IngestModuleAbstractFile {
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void postHashSetHitToBlackboard(AbstractFile abstractFile, String md5Hash, String hashSetName, boolean showInboxMessage) {
|
private void postHashSetHitToBlackboard(AbstractFile abstractFile, String md5Hash, String hashSetName, String comment, boolean showInboxMessage) {
|
||||||
try {
|
try {
|
||||||
BlackboardArtifact badFile = abstractFile.newArtifact(ARTIFACT_TYPE.TSK_HASHSET_HIT);
|
BlackboardArtifact badFile = abstractFile.newArtifact(ARTIFACT_TYPE.TSK_HASHSET_HIT);
|
||||||
//TODO Revisit usage of deprecated constructor as per TSK-583
|
//TODO Revisit usage of deprecated constructor as per TSK-583
|
||||||
@ -280,6 +296,9 @@ public class HashDbIngestModule extends IngestModuleAbstractFile {
|
|||||||
badFile.addAttribute(att2);
|
badFile.addAttribute(att2);
|
||||||
BlackboardAttribute att3 = new BlackboardAttribute(ATTRIBUTE_TYPE.TSK_HASH_MD5.getTypeID(), MODULE_NAME, md5Hash);
|
BlackboardAttribute att3 = new BlackboardAttribute(ATTRIBUTE_TYPE.TSK_HASH_MD5.getTypeID(), MODULE_NAME, md5Hash);
|
||||||
badFile.addAttribute(att3);
|
badFile.addAttribute(att3);
|
||||||
|
BlackboardAttribute att4 = new BlackboardAttribute(ATTRIBUTE_TYPE.TSK_COMMENT.getTypeID(), MODULE_NAME, comment);
|
||||||
|
badFile.addAttribute(att4);
|
||||||
|
|
||||||
if (showInboxMessage) {
|
if (showInboxMessage) {
|
||||||
StringBuilder detailsSb = new StringBuilder();
|
StringBuilder detailsSb = new StringBuilder();
|
||||||
//details
|
//details
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
/*
|
/*
|
||||||
* Autopsy Forensic Browser
|
* Autopsy Forensic Browser
|
||||||
*
|
*
|
||||||
* Copyright 2011-2013 Basis Technology Corp.
|
* Copyright 2011-2014 Basis Technology Corp.
|
||||||
* Contact: carrier <at> sleuthkit <dot> org
|
* Contact: carrier <at> sleuthkit <dot> org
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
@ -22,7 +22,6 @@ import java.awt.event.ActionEvent;
|
|||||||
import java.awt.event.ActionListener;
|
import java.awt.event.ActionListener;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
import java.lang.Long;
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
@ -128,7 +127,8 @@ public final class KeywordSearchIngestModule extends IngestModuleAbstractFile {
|
|||||||
private static List<AbstractFileExtract> textExtractors;
|
private static List<AbstractFileExtract> textExtractors;
|
||||||
private static AbstractFileStringExtract stringExtractor;
|
private static AbstractFileStringExtract stringExtractor;
|
||||||
private boolean initialized = false;
|
private boolean initialized = false;
|
||||||
private KeywordSearchConfigurationPanel panel;
|
private KeywordSearchIngestSimplePanel simpleConfigPanel;
|
||||||
|
private KeywordSearchConfigurationPanel advancedConfigPanel;
|
||||||
private Tika tikaFormatDetector;
|
private Tika tikaFormatDetector;
|
||||||
|
|
||||||
|
|
||||||
@ -436,26 +436,36 @@ public final class KeywordSearchIngestModule extends IngestModuleAbstractFile {
|
|||||||
@Override
|
@Override
|
||||||
public javax.swing.JPanel getSimpleConfiguration(String context) {
|
public javax.swing.JPanel getSimpleConfiguration(String context) {
|
||||||
KeywordSearchListsXML.getCurrent().reload();
|
KeywordSearchListsXML.getCurrent().reload();
|
||||||
return new KeywordSearchIngestSimplePanel();
|
|
||||||
|
if (null == simpleConfigPanel) {
|
||||||
|
simpleConfigPanel = new KeywordSearchIngestSimplePanel();
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
simpleConfigPanel.load();
|
||||||
|
}
|
||||||
|
|
||||||
|
return simpleConfigPanel;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public javax.swing.JPanel getAdvancedConfiguration(String context) {
|
public javax.swing.JPanel getAdvancedConfiguration(String context) {
|
||||||
//return KeywordSearchConfigurationPanel.getDefault();
|
if (advancedConfigPanel == null) {
|
||||||
getPanel().load();
|
advancedConfigPanel = new KeywordSearchConfigurationPanel();
|
||||||
return getPanel();
|
|
||||||
}
|
|
||||||
|
|
||||||
private KeywordSearchConfigurationPanel getPanel() {
|
|
||||||
if (panel == null) {
|
|
||||||
panel = new KeywordSearchConfigurationPanel();
|
|
||||||
}
|
}
|
||||||
return panel;
|
|
||||||
|
advancedConfigPanel.load();
|
||||||
|
return advancedConfigPanel;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void saveAdvancedConfiguration() {
|
public void saveAdvancedConfiguration() {
|
||||||
getPanel().store();
|
if (advancedConfigPanel != null) {
|
||||||
|
advancedConfigPanel.store();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (simpleConfigPanel != null) {
|
||||||
|
simpleConfigPanel.load();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -70,10 +70,12 @@ public class KeywordSearchIngestSimplePanel extends javax.swing.JPanel {
|
|||||||
reloadEncodings();
|
reloadEncodings();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void load() {
|
public void load() {
|
||||||
|
KeywordSearchListsXML.getCurrent().reload();
|
||||||
reloadLists();
|
reloadLists();
|
||||||
reloadLangs();
|
reloadLangs();
|
||||||
reloadEncodings();
|
reloadEncodings();
|
||||||
|
tableModel.fireTableDataChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void store() {
|
public void store() {
|
||||||
|
@ -8,6 +8,7 @@ app.version=3.0.8
|
|||||||
### Build type isn't used at this point, but it may be useful
|
### Build type isn't used at this point, but it may be useful
|
||||||
### Must be one of: DEVELOPMENT, RELEASE
|
### Must be one of: DEVELOPMENT, RELEASE
|
||||||
build.type=RELEASE
|
build.type=RELEASE
|
||||||
|
project.org.sleuthkit.autopsy.ewfverify=ewfVerify
|
||||||
#build.type=DEVELOPMENT
|
#build.type=DEVELOPMENT
|
||||||
update_versions=false
|
update_versions=false
|
||||||
#custom JVM options
|
#custom JVM options
|
||||||
@ -32,8 +33,8 @@ modules=\
|
|||||||
${project.org.sleuthkit.autopsy.sevenzip}:\
|
${project.org.sleuthkit.autopsy.sevenzip}:\
|
||||||
${project.org.sleuthkit.autopsy.scalpel}:\
|
${project.org.sleuthkit.autopsy.scalpel}:\
|
||||||
${project.org.sleuthkit.autopsy.timeline}:\
|
${project.org.sleuthkit.autopsy.timeline}:\
|
||||||
${project.org.sleuthkit.autopsy.ewfverify}:\
|
${project.org.sleuthkit.autopsy.filetypeid}:\
|
||||||
${project.org.sleuthkit.autopsy.filetypeid}
|
${project.org.sleuthkit.autopsy.ewfverify}
|
||||||
project.org.sleuthkit.autopsy.core=Core
|
project.org.sleuthkit.autopsy.core=Core
|
||||||
project.org.sleuthkit.autopsy.corelibs=CoreLibs
|
project.org.sleuthkit.autopsy.corelibs=CoreLibs
|
||||||
project.org.sleuthkit.autopsy.hashdatabase=HashDatabase
|
project.org.sleuthkit.autopsy.hashdatabase=HashDatabase
|
||||||
@ -46,5 +47,4 @@ project.org.sleuthkit.autopsy.sevenzip=SevenZip
|
|||||||
project.org.sleuthkit.autopsy.scalpel=ScalpelCarver
|
project.org.sleuthkit.autopsy.scalpel=ScalpelCarver
|
||||||
project.org.sleuthkit.autopsy.timeline=Timeline
|
project.org.sleuthkit.autopsy.timeline=Timeline
|
||||||
project.org.sleuthkit.autopsy.filetypeid=FileTypeId
|
project.org.sleuthkit.autopsy.filetypeid=FileTypeId
|
||||||
project.org.sleuthkit.autopsy.ewfverify=ewfVerify
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user