mirror of
https://github.com/overcuriousity/autopsy-flatpak.git
synced 2025-07-15 01:07:42 +00:00
Merge branch '1467-add-rank-to-tag-names-table' into 1457-Add-Tag-Set-To-Tag-UI
This commit is contained in:
commit
3c3136392a
@ -12,9 +12,6 @@ GeoFilterPanel.mostRecentButton.text=Only last
|
||||
GeoFilterPanel.applyButton.text=Apply
|
||||
GeoFilterPanel.showWaypointsWOTSCheckBox.text=Include waypoints with no time stamps
|
||||
GeoFilterPanel.daysLabel.text=days of activity
|
||||
CheckBoxListPanel.titleLabel.text=jLabel1
|
||||
CheckBoxListPanel.checkButton.text=Check All
|
||||
CheckBoxListPanel.uncheckButton.text=Uncheck All
|
||||
GeoFilterPanel.optionsLabel.text=Dates
|
||||
OptionsCategory_Name_Geolocation=Geolocation
|
||||
OptionsCategory_Keywords_Geolocation=Geolocation Settings
|
||||
|
@ -51,9 +51,6 @@ GeoFilterPanel.mostRecentButton.text=Only last
|
||||
GeoFilterPanel.applyButton.text=Apply
|
||||
GeoFilterPanel.showWaypointsWOTSCheckBox.text=Include waypoints with no time stamps
|
||||
GeoFilterPanel.daysLabel.text=days of activity
|
||||
CheckBoxListPanel.titleLabel.text=jLabel1
|
||||
CheckBoxListPanel.checkButton.text=Check All
|
||||
CheckBoxListPanel.uncheckButton.text=Uncheck All
|
||||
GeoFilterPanel.optionsLabel.text=Dates
|
||||
OptionsCategory_Name_Geolocation=Geolocation
|
||||
OptionsCategory_Keywords_Geolocation=Geolocation Settings
|
||||
|
@ -18,6 +18,7 @@
|
||||
*/
|
||||
package org.sleuthkit.autopsy.geolocation;
|
||||
|
||||
import org.sleuthkit.autopsy.guiutils.CheckBoxListPanel;
|
||||
import java.awt.Color;
|
||||
import java.awt.Graphics;
|
||||
import java.awt.GridBagConstraints;
|
||||
|
@ -126,7 +126,7 @@ public class GeoPath {
|
||||
*
|
||||
* @return
|
||||
*/
|
||||
final BlackboardArtifact getArtifact() {
|
||||
public final BlackboardArtifact getArtifact() {
|
||||
return artifact;
|
||||
}
|
||||
|
||||
|
3
Core/src/org/sleuthkit/autopsy/guiutils/Bundle.properties
Executable file
3
Core/src/org/sleuthkit/autopsy/guiutils/Bundle.properties
Executable file
@ -0,0 +1,3 @@
|
||||
CheckBoxListPanel.titleLabel.text=
|
||||
CheckBoxListPanel.checkButton.text=Check All
|
||||
CheckBoxListPanel.uncheckButton.text=Uncheck All
|
@ -1,3 +1,6 @@
|
||||
CheckBoxListPanel.titleLabel.text=
|
||||
CheckBoxListPanel.checkButton.text=Check All
|
||||
CheckBoxListPanel.uncheckButton.text=Uncheck All
|
||||
StatusIconCellRenderer.tooltiptext.error=An error occurred
|
||||
StatusIconCellRenderer.tooltiptext.ok=OK
|
||||
StatusIconCellRenderer.tooltiptext.warning=A warning occurred
|
||||
|
@ -1,7 +1,7 @@
|
||||
/*
|
||||
* Autopsy Forensic Browser
|
||||
*
|
||||
* Copyright 2019 Basis Technology Corp.
|
||||
* Copyright 2019-2020 Basis Technology Corp.
|
||||
* Contact: carrier <at> sleuthkit <dot> org
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
@ -16,7 +16,7 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package org.sleuthkit.autopsy.geolocation;
|
||||
package org.sleuthkit.autopsy.guiutils;
|
||||
|
||||
import java.awt.BorderLayout;
|
||||
import java.awt.Component;
|
@ -19,7 +19,7 @@
|
||||
<Component class="javax.swing.JLabel" name="titleLabel">
|
||||
<Properties>
|
||||
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
|
||||
<ResourceString bundle="org/sleuthkit/autopsy/geolocation/Bundle.properties" key="CheckBoxListPanel.titleLabel.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
|
||||
<ResourceString bundle="org/sleuthkit/autopsy/guiutils/Bundle.properties" key="CheckBoxListPanel.titleLabel.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
|
||||
</Property>
|
||||
</Properties>
|
||||
<Constraints>
|
||||
@ -31,7 +31,7 @@
|
||||
<Component class="javax.swing.JButton" name="uncheckButton">
|
||||
<Properties>
|
||||
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
|
||||
<ResourceString bundle="org/sleuthkit/autopsy/geolocation/Bundle.properties" key="CheckBoxListPanel.uncheckButton.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
|
||||
<ResourceString bundle="org/sleuthkit/autopsy/guiutils/Bundle.properties" key="CheckBoxListPanel.uncheckButton.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
|
||||
</Property>
|
||||
</Properties>
|
||||
<Events>
|
||||
@ -46,7 +46,7 @@
|
||||
<Component class="javax.swing.JButton" name="checkButton">
|
||||
<Properties>
|
||||
<Property name="text" type="java.lang.String" editor="org.netbeans.modules.i18n.form.FormI18nStringEditor">
|
||||
<ResourceString bundle="org/sleuthkit/autopsy/geolocation/Bundle.properties" key="CheckBoxListPanel.checkButton.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
|
||||
<ResourceString bundle="org/sleuthkit/autopsy/guiutils/Bundle.properties" key="CheckBoxListPanel.checkButton.text" replaceFormat="org.openide.util.NbBundle.getMessage({sourceFileName}.class, "{key}")"/>
|
||||
</Property>
|
||||
</Properties>
|
||||
<Events>
|
@ -1,7 +1,7 @@
|
||||
/*
|
||||
* Autopsy Forensic Browser
|
||||
*
|
||||
* Copyright 2019 Basis Technology Corp.
|
||||
* Copyright 2019-2020 Basis Technology Corp.
|
||||
* Contact: carrier <at> sleuthkit <dot> org
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
@ -16,7 +16,7 @@
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package org.sleuthkit.autopsy.geolocation;
|
||||
package org.sleuthkit.autopsy.guiutils;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Enumeration;
|
||||
@ -26,9 +26,9 @@ import javax.swing.DefaultListModel;
|
||||
import javax.swing.Icon;
|
||||
|
||||
/**
|
||||
* A panel for showing Content objects in a check box list.
|
||||
* A panel for showing any object in a check box list.
|
||||
*/
|
||||
final class CheckBoxListPanel<T> extends javax.swing.JPanel {
|
||||
public final class CheckBoxListPanel<T> extends javax.swing.JPanel {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
@ -38,7 +38,7 @@ final class CheckBoxListPanel<T> extends javax.swing.JPanel {
|
||||
/**
|
||||
* Creates new CheckboxFilterPanel
|
||||
*/
|
||||
CheckBoxListPanel() {
|
||||
public CheckBoxListPanel() {
|
||||
initComponents();
|
||||
|
||||
checkboxList = new CheckBoxJList<>();
|
||||
@ -52,7 +52,7 @@ final class CheckBoxListPanel<T> extends javax.swing.JPanel {
|
||||
* @param displayName display name for the checkbox
|
||||
* @param obj Object that the checkbox represents
|
||||
*/
|
||||
void addElement(String displayName, Icon icon, T obj) {
|
||||
public void addElement(String displayName, Icon icon, T obj) {
|
||||
ObjectCheckBox<T> newCheckBox = new ObjectCheckBox<>(displayName, icon, true, obj);
|
||||
|
||||
if(!model.contains(newCheckBox)) {
|
||||
@ -63,11 +63,11 @@ final class CheckBoxListPanel<T> extends javax.swing.JPanel {
|
||||
/**
|
||||
* Remove all objects from the checkbox list.
|
||||
*/
|
||||
void clearList() {
|
||||
public void clearList() {
|
||||
model.removeAllElements();
|
||||
}
|
||||
|
||||
boolean isEmpty() {
|
||||
public boolean isEmpty() {
|
||||
return model.isEmpty();
|
||||
}
|
||||
|
||||
@ -84,7 +84,7 @@ final class CheckBoxListPanel<T> extends javax.swing.JPanel {
|
||||
*
|
||||
* @return List of selected elements.
|
||||
*/
|
||||
List<T> getSelectedElements() {
|
||||
public List<T> getSelectedElements() {
|
||||
List<T> selectedElements = new ArrayList<>();
|
||||
Enumeration<ObjectCheckBox<T>> elements = model.elements();
|
||||
|
||||
@ -103,7 +103,7 @@ final class CheckBoxListPanel<T> extends javax.swing.JPanel {
|
||||
*
|
||||
* @param selected True to check the boxes, false to unchecked
|
||||
*/
|
||||
void setSetAllSelected(boolean selected) {
|
||||
public void setSetAllSelected(boolean selected) {
|
||||
Enumeration<ObjectCheckBox<T>> enumeration = model.elements();
|
||||
while (enumeration.hasMoreElements()) {
|
||||
ObjectCheckBox<T> element = enumeration.nextElement();
|
||||
@ -119,7 +119,7 @@ final class CheckBoxListPanel<T> extends javax.swing.JPanel {
|
||||
*
|
||||
* @param title Panel title or null for no title.
|
||||
*/
|
||||
void setPanelTitle(String title) {
|
||||
public void setPanelTitle(String title) {
|
||||
titleLabel.setText(title);
|
||||
}
|
||||
|
||||
@ -128,7 +128,7 @@ final class CheckBoxListPanel<T> extends javax.swing.JPanel {
|
||||
*
|
||||
* @param icon Icon to set or null for no icon
|
||||
*/
|
||||
void setPanelTitleIcon(Icon icon) {
|
||||
public void setPanelTitleIcon(Icon icon) {
|
||||
titleLabel.setIcon(icon);
|
||||
}
|
||||
|
@ -1,7 +1,7 @@
|
||||
/*
|
||||
* Autopsy Forensic Browser
|
||||
*
|
||||
* Copyright 2012-2018 Basis Technology Corp.
|
||||
* Copyright 2012-2020 Basis Technology Corp.
|
||||
* Contact: carrier <at> sleuthkit <dot> org
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
@ -25,10 +25,43 @@ public interface GeneralReportModule extends ReportModule {
|
||||
* at the path specified and updating progress via the progressPanel object.
|
||||
*
|
||||
* @param baseReportDir Base directory that reports are being stored in.
|
||||
* Report should go into baseReportDir +
|
||||
* getRelativeFilePath().
|
||||
* Report should go into baseReportDir + getRelativeFilePath().
|
||||
* @param progressPanel panel to update the report's progress with
|
||||
*
|
||||
* @deprecated Use generateReport(GeneralReportSettings settings,
|
||||
* ReportProgressPanel progressPanel) instead. The baseReportDir
|
||||
* is stored in the settings instance.
|
||||
*/
|
||||
@Deprecated
|
||||
default void generateReport(String baseReportDir, ReportProgressPanel progressPanel) {
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Called to generate the report. Method is responsible for saving the file
|
||||
* and updating progress via the progressPanel object. Configuration
|
||||
* parameters are passed in the settings class, most notably the directory
|
||||
* to save the report. Modules should try to respond to all configuration
|
||||
* parameters.
|
||||
*
|
||||
* @param settings Configuration parameters to customize the report
|
||||
* generation process
|
||||
* @param progressPanel panel to update the report's progress with
|
||||
*/
|
||||
public void generateReport(String baseReportDir, ReportProgressPanel progressPanel);
|
||||
@SuppressWarnings("deprecation")
|
||||
default void generateReport(GeneralReportSettings settings, ReportProgressPanel progressPanel) {
|
||||
generateReport(settings.getReportDirectoryPath(), progressPanel);
|
||||
}
|
||||
|
||||
/**
|
||||
* Determines if the module supports report generation on a subset of data
|
||||
* sources in a case. Defaults to false. The data source selections are
|
||||
* stored in the GeneralReportSettings instance.
|
||||
*
|
||||
* @return True if the module can be configured to run on a subset of data
|
||||
* sources.
|
||||
*/
|
||||
default boolean supportsDataSourceSelection() {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
@ -1,7 +1,7 @@
|
||||
/*
|
||||
* Autopsy Forensic Browser
|
||||
*
|
||||
* Copyright 2014 Basis Technology Corp.
|
||||
* Copyright 2014-2020 Basis Technology Corp.
|
||||
* Contact: carrier <at> sleuthkit <dot> org
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
@ -38,7 +38,10 @@ public abstract class GeneralReportModuleAdapter implements GeneralReportModule
|
||||
}
|
||||
|
||||
@Override
|
||||
public abstract void generateReport(String baseReportDir, ReportProgressPanel progressPanel);
|
||||
@Deprecated
|
||||
public void generateReport(String baseReportDir, ReportProgressPanel progressPanel) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
public JPanel getConfigurationPanel() {
|
||||
|
65
Core/src/org/sleuthkit/autopsy/report/GeneralReportSettings.java
Executable file
65
Core/src/org/sleuthkit/autopsy/report/GeneralReportSettings.java
Executable file
@ -0,0 +1,65 @@
|
||||
/*
|
||||
* Autopsy Forensic Browser
|
||||
*
|
||||
* Copyright 2020 Basis Technology Corp.
|
||||
* Contact: carrier <at> sleuthkit <dot> org
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package org.sleuthkit.autopsy.report;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* Configuration parameters for general report modules
|
||||
*/
|
||||
public class GeneralReportSettings implements Serializable {
|
||||
private static final long serialVersionUID = 1L;
|
||||
|
||||
private List<Long> selectedDataSources;
|
||||
private String reportDirectoryPath;
|
||||
|
||||
/**
|
||||
* Returns the selected data sources
|
||||
* @return List of data source ids
|
||||
*/
|
||||
public List<Long> getSelectedDataSources() {
|
||||
return selectedDataSources;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the selected data sources
|
||||
* @param selectedDataSources List of data source ids
|
||||
*/
|
||||
public void setSelectedDataSources(List<Long> selectedDataSources) {
|
||||
this.selectedDataSources = new ArrayList<>(selectedDataSources);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the directory that the report file should be saved in.
|
||||
* @return Path to report directory
|
||||
*/
|
||||
public String getReportDirectoryPath() {
|
||||
return this.reportDirectoryPath;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the directory that the report file should be saved in.
|
||||
* @param reportDirectoryPath Path to report directory
|
||||
*/
|
||||
public void setReportDirectoryPath(String reportDirectoryPath) {
|
||||
this.reportDirectoryPath = reportDirectoryPath;
|
||||
}
|
||||
}
|
@ -15,6 +15,10 @@ ReportProgressIndicator.completedWithErrorsMessage=Report generation completed w
|
||||
ReportProgressIndicator.startMessage=Report generation started
|
||||
ReportProgressIndicator.switchToDeterminateMessage=Report generation progress switched to determinate
|
||||
ReportProgressIndicator.switchToIndeterminateMessage=Report generation progress switched to indeterminate
|
||||
ReportWizardDataSourceSelectionPanel.confirmEmptySelection=Are you sure you want to proceed with no selections?
|
||||
ReportWizardDataSourceSelectionPanel.finishButton.text=Finish
|
||||
ReportWizardDataSourceSelectionPanel.nextButton.text=Next
|
||||
ReportWizardDataSourceSelectionPanel.title=Select which datasource(s) to include
|
||||
ReportWizardFileOptionsVisualPanel.jLabel1.text=Select items to include in File Report:
|
||||
ReportWizardFileOptionsVisualPanel.deselectAllButton.text=Deselect All
|
||||
ReportWizardFileOptionsVisualPanel.selectAllButton.text=Select All
|
||||
|
@ -1,7 +1,7 @@
|
||||
/*
|
||||
* Autopsy Forensic Browser
|
||||
*
|
||||
* Copyright 2019 Basis Technology Corp.
|
||||
* Copyright 2019-2020 Basis Technology Corp.
|
||||
* Contact: carrier <at> sleuthkit <dot> org
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
@ -19,7 +19,9 @@
|
||||
package org.sleuthkit.autopsy.report.infrastructure;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
@ -30,6 +32,7 @@ final class FileReportSettings implements Serializable {
|
||||
|
||||
private static final long serialVersionUID = 1L;
|
||||
private Map<FileReportDataTypes, Boolean> filePropertiesInfo = new HashMap<>();
|
||||
private List<Long> selectedDataSources;
|
||||
|
||||
/**
|
||||
* Creates FileReportSettings object.
|
||||
@ -49,4 +52,18 @@ final class FileReportSettings implements Serializable {
|
||||
Map<FileReportDataTypes, Boolean> getFileProperties() {
|
||||
return filePropertiesInfo;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the selected data sources
|
||||
*/
|
||||
List<Long> getSelectedDataSources() {
|
||||
return selectedDataSources;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the selected data sources
|
||||
*/
|
||||
void setSelectedDataSources(List<Long> selectedDataSources) {
|
||||
this.selectedDataSources = new ArrayList<>(selectedDataSources);
|
||||
}
|
||||
}
|
||||
|
@ -1,7 +1,7 @@
|
||||
/*
|
||||
* Autopsy Forensic Browser
|
||||
*
|
||||
* Copyright 2013-2019 Basis Technology Corp.
|
||||
* Copyright 2013-2020 Basis Technology Corp.
|
||||
* Contact: carrier <at> sleuthkit <dot> org
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
@ -48,6 +48,7 @@ import org.sleuthkit.autopsy.casemodule.Case;
|
||||
import org.sleuthkit.autopsy.casemodule.NoCurrentCaseException;
|
||||
import org.sleuthkit.autopsy.coreutils.Logger;
|
||||
import org.sleuthkit.autopsy.python.FactoryClassNameNormalizer;
|
||||
import org.sleuthkit.autopsy.report.GeneralReportSettings;
|
||||
import org.sleuthkit.autopsy.report.ReportProgressPanel;
|
||||
import org.sleuthkit.autopsy.report.ReportProgressPanel.ReportStatus;
|
||||
import org.sleuthkit.datamodel.AbstractFile;
|
||||
@ -208,7 +209,7 @@ public class ReportGenerator {
|
||||
if (module instanceof GeneralReportModule) {
|
||||
|
||||
// generate report
|
||||
generateGeneralReport((GeneralReportModule) module);
|
||||
generateGeneralReport((GeneralReportModule) module, config.getGeneralReportSettings());
|
||||
|
||||
} else if (module instanceof TableReportModule) {
|
||||
|
||||
@ -297,11 +298,12 @@ public class ReportGenerator {
|
||||
/**
|
||||
* Run the GeneralReportModules using a SwingWorker.
|
||||
*/
|
||||
private void generateGeneralReport(GeneralReportModule generalReportModule) throws IOException {
|
||||
private void generateGeneralReport(GeneralReportModule generalReportModule, GeneralReportSettings reportSettings) throws IOException {
|
||||
if (generalReportModule != null) {
|
||||
String reportDir = createReportDirectory(generalReportModule);
|
||||
setupProgressPanel(generalReportModule, reportDir);
|
||||
generalReportModule.generateReport(reportDir, progressIndicator);
|
||||
reportSettings.setReportDirectoryPath(reportDir);
|
||||
generalReportModule.generateReport(reportSettings, progressIndicator);
|
||||
}
|
||||
}
|
||||
|
||||
@ -359,6 +361,10 @@ public class ReportGenerator {
|
||||
int i = 0;
|
||||
// Add files to report.
|
||||
for (AbstractFile file : files) {
|
||||
if(shouldFilterFromReport(file, fileReportSettings)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
// Check to see if any reports have been cancelled.
|
||||
if (progressIndicator.getStatus() == ReportStatus.CANCELED) {
|
||||
return;
|
||||
@ -381,6 +387,14 @@ public class ReportGenerator {
|
||||
}
|
||||
}
|
||||
|
||||
private boolean shouldFilterFromReport(AbstractFile file, FileReportSettings fileReportSettings) {
|
||||
if(fileReportSettings.getSelectedDataSources() == null) {
|
||||
return false;
|
||||
}
|
||||
// Filter if the data source id is not in the list to process
|
||||
return !fileReportSettings.getSelectedDataSources().contains(file.getDataSourceObjectId());
|
||||
}
|
||||
|
||||
/**
|
||||
* Run the Portable Case Report Module
|
||||
*/
|
||||
|
@ -1,7 +1,7 @@
|
||||
/*
|
||||
* Autopsy Forensic Browser
|
||||
*
|
||||
* Copyright 2012-2019 Basis Technology Corp.
|
||||
* Copyright 2012-2020 Basis Technology Corp.
|
||||
* Contact: carrier <at> sleuthkit <dot> org
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
@ -368,7 +368,9 @@ final class ReportVisualPanel1 extends JPanel implements ListSelectionListener {
|
||||
configurationPanel.revalidate();
|
||||
configurationPanel.repaint();
|
||||
|
||||
boolean generalModuleSelected = (module instanceof GeneralReportModule);
|
||||
// General modules that support data source selection will be presented
|
||||
// a data source selection panel, so they should not be finished immediately.
|
||||
boolean generalModuleSelected = (module instanceof GeneralReportModule) && !((GeneralReportModule)module).supportsDataSourceSelection();
|
||||
|
||||
wizPanel.setNext(!generalModuleSelected);
|
||||
wizPanel.setFinish(generalModuleSelected);
|
||||
|
@ -2,7 +2,7 @@
|
||||
*
|
||||
* Autopsy Forensic Browser
|
||||
*
|
||||
* Copyright 2012-2019 Basis Technology Corp.
|
||||
* Copyright 2012-2020 Basis Technology Corp.
|
||||
*
|
||||
* Copyright 2012 42six Solutions.
|
||||
* Contact: aebadirad <at> 42six <dot> com
|
||||
@ -31,6 +31,7 @@ import java.awt.event.ActionListener;
|
||||
import java.beans.PropertyChangeEvent;
|
||||
import java.text.MessageFormat;
|
||||
import java.util.EnumSet;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.concurrent.ExecutionException;
|
||||
import java.util.logging.Level;
|
||||
@ -52,6 +53,7 @@ import org.openide.windows.WindowManager;
|
||||
import org.sleuthkit.autopsy.casemodule.Case;
|
||||
import org.sleuthkit.autopsy.core.RuntimeProperties;
|
||||
import org.sleuthkit.autopsy.coreutils.Logger;
|
||||
import org.sleuthkit.autopsy.report.GeneralReportSettings;
|
||||
import org.sleuthkit.autopsy.report.ReportModule;
|
||||
|
||||
@ActionID(category = "Tools", id = "org.sleuthkit.autopsy.report.infrastructure.ReportWizardAction")
|
||||
@ -117,8 +119,25 @@ public final class ReportWizardAction extends CallableSystemAction implements Pr
|
||||
private static void saveReportingConfiguration(String configName, WizardDescriptor wiz) throws ReportConfigException {
|
||||
|
||||
ReportingConfig reportingConfig = new ReportingConfig(configName);
|
||||
reportingConfig.setFileReportSettings((FileReportSettings) wiz.getProperty("fileReportSettings"));
|
||||
reportingConfig.setTableReportSettings((TableReportSettings) wiz.getProperty("tableReportSettings"));
|
||||
List<Long> selectedDataSourceIds = (List<Long>) wiz.getProperty("dataSourceSelections");
|
||||
|
||||
// Set the selected data source ids.
|
||||
FileReportSettings fileSettings = (FileReportSettings) wiz.getProperty("fileReportSettings");
|
||||
TableReportSettings tableSettings = (TableReportSettings) wiz.getProperty("tableReportSettings");
|
||||
GeneralReportSettings generalSettings = new GeneralReportSettings();
|
||||
if(selectedDataSourceIds != null) {
|
||||
generalSettings.setSelectedDataSources(selectedDataSourceIds);
|
||||
if(fileSettings != null) {
|
||||
fileSettings.setSelectedDataSources(selectedDataSourceIds);
|
||||
}
|
||||
if(tableSettings != null) {
|
||||
tableSettings.setSelectedDataSources(selectedDataSourceIds);
|
||||
}
|
||||
}
|
||||
|
||||
reportingConfig.setFileReportSettings(fileSettings);
|
||||
reportingConfig.setTableReportSettings(tableSettings);
|
||||
reportingConfig.setGeneralReportSettings(generalSettings);
|
||||
|
||||
Map<String, ReportModuleConfig> moduleConfigs = (Map<String, ReportModuleConfig>) wiz.getProperty("moduleConfigs");
|
||||
|
||||
|
@ -0,0 +1,151 @@
|
||||
/*
|
||||
* Autopsy Forensic Browser
|
||||
*
|
||||
* Copyright 2020 Basis Technology Corp.
|
||||
* Contact: carrier <at> sleuthkit <dot> org
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package org.sleuthkit.autopsy.report.infrastructure;
|
||||
|
||||
import java.awt.event.ActionEvent;
|
||||
import java.awt.event.ActionListener;
|
||||
import java.util.List;
|
||||
import java.util.logging.Level;
|
||||
import javax.swing.JButton;
|
||||
import javax.swing.event.ChangeListener;
|
||||
import org.openide.WizardDescriptor;
|
||||
import org.openide.util.HelpCtx;
|
||||
import org.openide.util.NbBundle;
|
||||
import org.openide.util.NbPreferences;
|
||||
import org.sleuthkit.autopsy.casemodule.Case;
|
||||
import org.sleuthkit.autopsy.guiutils.CheckBoxListPanel;
|
||||
import org.sleuthkit.autopsy.coreutils.Logger;
|
||||
import org.sleuthkit.autopsy.coreutils.MessageNotifyUtil;
|
||||
import org.sleuthkit.datamodel.Content;
|
||||
import org.sleuthkit.datamodel.TskCoreException;
|
||||
|
||||
/**
|
||||
* Selection panel for modules that can report on a subset of data sources in a
|
||||
* case.
|
||||
*/
|
||||
public class ReportWizardDataSourceSelectionPanel implements WizardDescriptor.FinishablePanel<WizardDescriptor> {
|
||||
|
||||
private static final Logger logger = Logger.getLogger(ReportWizardDataSourceSelectionPanel.class.getName());
|
||||
|
||||
private CheckBoxListPanel<Long> dataSourcesSelectionPanel;
|
||||
private WizardDescriptor wiz;
|
||||
|
||||
private final JButton finishButton;
|
||||
private final JButton nextButton;
|
||||
|
||||
@NbBundle.Messages({
|
||||
"ReportWizardDataSourceSelectionPanel.nextButton.text=Next",
|
||||
"ReportWizardDataSourceSelectionPanel.finishButton.text=Finish"
|
||||
})
|
||||
public ReportWizardDataSourceSelectionPanel() {
|
||||
nextButton = new JButton(Bundle.ReportWizardDataSourceSelectionPanel_nextButton_text());
|
||||
finishButton = new JButton(Bundle.ReportWizardDataSourceSelectionPanel_finishButton_text());
|
||||
finishButton.setEnabled(false);
|
||||
nextButton.setEnabled(false);
|
||||
|
||||
finishButton.addActionListener(createFinishButtonActionListener());
|
||||
nextButton.addActionListener(createNextButtonActionListener());
|
||||
}
|
||||
|
||||
@NbBundle.Messages({
|
||||
"ReportWizardDataSourceSelectionPanel.confirmEmptySelection=Are you sure you want to proceed with no selections?"
|
||||
})
|
||||
private ActionListener createNextButtonActionListener() {
|
||||
return (ActionEvent e) -> {
|
||||
if(!dataSourcesSelectionPanel.getSelectedElements().isEmpty()) {
|
||||
wiz.doNextClick();
|
||||
} else if(MessageNotifyUtil.Message.confirm(Bundle.ReportWizardDataSourceSelectionPanel_confirmEmptySelection())) {
|
||||
wiz.doNextClick();
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
private ActionListener createFinishButtonActionListener() {
|
||||
return (ActionEvent e) -> {
|
||||
if(!dataSourcesSelectionPanel.getSelectedElements().isEmpty()) {
|
||||
wiz.doFinishClick();
|
||||
} else if(MessageNotifyUtil.Message.confirm(Bundle.ReportWizardDataSourceSelectionPanel_confirmEmptySelection())) {
|
||||
wiz.doFinishClick();
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
@NbBundle.Messages({
|
||||
"ReportWizardDataSourceSelectionPanel.title=Select which datasource(s) to include"
|
||||
})
|
||||
@Override
|
||||
public CheckBoxListPanel<Long> getComponent() {
|
||||
if (dataSourcesSelectionPanel == null) {
|
||||
dataSourcesSelectionPanel = new CheckBoxListPanel<>();
|
||||
dataSourcesSelectionPanel.setName(Bundle.ReportWizardDataSourceSelectionPanel_title());
|
||||
try {
|
||||
List<Content> dataSources = Case.getCurrentCase().getDataSources();
|
||||
for (Content dataSource : dataSources) {
|
||||
String dataSourceName = dataSource.getName();
|
||||
long dataSourceId = dataSource.getId();
|
||||
dataSourcesSelectionPanel.addElement(dataSourceName, null, dataSourceId);
|
||||
}
|
||||
} catch (TskCoreException ex) {
|
||||
logger.log(Level.SEVERE, "Unable to get list of data sources from the case", ex);
|
||||
}
|
||||
}
|
||||
return dataSourcesSelectionPanel;
|
||||
}
|
||||
|
||||
@Override
|
||||
public HelpCtx getHelp() {
|
||||
return HelpCtx.DEFAULT_HELP;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void readSettings(WizardDescriptor data) {
|
||||
this.wiz = data;
|
||||
wiz.setOptions(new Object[]{WizardDescriptor.PREVIOUS_OPTION, nextButton, finishButton, WizardDescriptor.CANCEL_OPTION});
|
||||
|
||||
boolean generalModule = NbPreferences.forModule(ReportWizardPanel1.class).getBoolean("generalModule", true); //NON-NLS
|
||||
nextButton.setEnabled(!generalModule);
|
||||
finishButton.setEnabled(generalModule);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void storeSettings(WizardDescriptor data) {
|
||||
List<Long> selectedDataSources = getComponent().getSelectedElements();
|
||||
data.putProperty("dataSourceSelections", selectedDataSources);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isValid() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void addChangeListener(ChangeListener cl) {
|
||||
// Nothing to do
|
||||
}
|
||||
|
||||
@Override
|
||||
public void removeChangeListener(ChangeListener cl) {
|
||||
// Nothing to do
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isFinishPanel() {
|
||||
return true;
|
||||
}
|
||||
}
|
@ -1,7 +1,7 @@
|
||||
/*
|
||||
* Autopsy Forensic Browser
|
||||
*
|
||||
* Copyright 2012 Basis Technology Corp.
|
||||
* Copyright 2012-2020 Basis Technology Corp.
|
||||
* Contact: carrier <at> sleuthkit <dot> org
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
@ -19,6 +19,7 @@
|
||||
package org.sleuthkit.autopsy.report.infrastructure;
|
||||
|
||||
import java.awt.Component;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.NoSuchElementException;
|
||||
@ -38,6 +39,7 @@ final class ReportWizardIterator implements WizardDescriptor.Iterator<WizardDesc
|
||||
private final ReportWizardPanel2 tableConfigPanel;
|
||||
private final ReportWizardFileOptionsPanel fileConfigPanel;
|
||||
private final ReportWizardPortableCaseOptionsPanel portableCaseConfigPanel;
|
||||
private final ReportWizardDataSourceSelectionPanel dataSourceSelectionPanel;
|
||||
|
||||
private List<WizardDescriptor.Panel<WizardDescriptor>> panels;
|
||||
|
||||
@ -79,7 +81,9 @@ final class ReportWizardIterator implements WizardDescriptor.Iterator<WizardDesc
|
||||
portableCaseConfigPanel = new ReportWizardPortableCaseOptionsPanel(null, useCaseSpecificData);
|
||||
}
|
||||
|
||||
allConfigPanels = new WizardDescriptor.Panel[]{firstPanel, tableConfigPanel, fileConfigPanel, portableCaseConfigPanel};
|
||||
dataSourceSelectionPanel = new ReportWizardDataSourceSelectionPanel();
|
||||
|
||||
allConfigPanels = new WizardDescriptor.Panel[]{firstPanel, dataSourceSelectionPanel, tableConfigPanel, fileConfigPanel, portableCaseConfigPanel};
|
||||
tableConfigPanels = new WizardDescriptor.Panel[]{firstPanel, tableConfigPanel};
|
||||
fileConfigPanels = new WizardDescriptor.Panel[]{firstPanel, fileConfigPanel};
|
||||
portableCaseConfigPanels = new WizardDescriptor.Panel[]{firstPanel, portableCaseConfigPanel};
|
||||
@ -113,13 +117,19 @@ final class ReportWizardIterator implements WizardDescriptor.Iterator<WizardDesc
|
||||
* @param moreConfig true if a GeneralReportModule was selected
|
||||
* @param tableConfig true if a TReportModule was selected
|
||||
*/
|
||||
private void enableConfigPanels(boolean generalModule, boolean tableModule, boolean portableCaseModule) {
|
||||
private void enableConfigPanels(boolean generalModule, boolean tableModule, boolean portableCaseModule, boolean showDataSourceSelectionPanel) {
|
||||
if (generalModule) {
|
||||
// General Module selected, no additional panels
|
||||
if(showDataSourceSelectionPanel) {
|
||||
panels = Arrays.asList(firstPanel, dataSourceSelectionPanel);
|
||||
}
|
||||
} else if (tableModule) {
|
||||
// Table Module selected, need Artifact Configuration Panel
|
||||
// (ReportWizardPanel2)
|
||||
panels = Arrays.asList(tableConfigPanels);
|
||||
if(showDataSourceSelectionPanel) {
|
||||
panels = new ArrayList<>(panels);
|
||||
panels.add(1, dataSourceSelectionPanel);
|
||||
}
|
||||
} else if (portableCaseModule) {
|
||||
// Portable Case Module selected, need Portable Case Configuration Panel
|
||||
// (ReportWizardPortableCaseOptionsPanel)
|
||||
@ -128,6 +138,10 @@ final class ReportWizardIterator implements WizardDescriptor.Iterator<WizardDesc
|
||||
// File Module selected, need File Report Configuration Panel
|
||||
// (ReportWizardFileOptionsPanel)
|
||||
panels = Arrays.asList(fileConfigPanels);
|
||||
if(showDataSourceSelectionPanel) {
|
||||
panels = new ArrayList<>(panels);
|
||||
panels.add(1, dataSourceSelectionPanel);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -164,7 +178,8 @@ final class ReportWizardIterator implements WizardDescriptor.Iterator<WizardDesc
|
||||
generalModule = NbPreferences.forModule(ReportWizardPanel1.class).getBoolean("generalModule", true); //NON-NLS
|
||||
tableModule = NbPreferences.forModule(ReportWizardPanel1.class).getBoolean("tableModule", true); //NON-NLS
|
||||
portableModule = NbPreferences.forModule(ReportWizardPanel1.class).getBoolean("portableCaseModule", true); //NON-NLS
|
||||
enableConfigPanels(generalModule, tableModule, portableModule);
|
||||
boolean showDataSourceSelectionPanel = NbPreferences.forModule(ReportWizardPanel1.class).getBoolean("showDataSourceSelectionPanel", false); // NON-NLS
|
||||
enableConfigPanels(generalModule, tableModule, portableModule, showDataSourceSelectionPanel);
|
||||
}
|
||||
|
||||
index++;
|
||||
|
@ -1,7 +1,7 @@
|
||||
/*
|
||||
* Autopsy Forensic Browser
|
||||
*
|
||||
* Copyright 2012 Basis Technology Corp.
|
||||
* Copyright 2012-2020 Basis Technology Corp.
|
||||
* Contact: carrier <at> sleuthkit <dot> org
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
@ -28,7 +28,7 @@ import org.openide.WizardDescriptor;
|
||||
import org.openide.util.HelpCtx;
|
||||
import org.openide.util.NbBundle;
|
||||
import org.openide.util.NbPreferences;
|
||||
import org.sleuthkit.autopsy.report.ReportModule;
|
||||
import org.sleuthkit.autopsy.report.GeneralReportModule;
|
||||
|
||||
class ReportWizardPanel1 implements WizardDescriptor.FinishablePanel<WizardDescriptor> {
|
||||
|
||||
@ -116,8 +116,25 @@ class ReportWizardPanel1 implements WizardDescriptor.FinishablePanel<WizardDescr
|
||||
// Store preferences that WizardIterator will use to determine what
|
||||
// panels need to be shown
|
||||
Preferences prefs = NbPreferences.forModule(ReportWizardPanel1.class);
|
||||
prefs.putBoolean("tableModule", getComponent().getTableModule() != null); //NON-NLS
|
||||
prefs.putBoolean("generalModule", getComponent().getGeneralModule() != null); //NON-NLS
|
||||
TableReportModule tableModuleSelection = getComponent().getTableModule();
|
||||
GeneralReportModule generalModuleSelection = getComponent().getGeneralModule();
|
||||
FileReportModule fileModuleSelection = getComponent().getFileModule();
|
||||
|
||||
prefs.putBoolean("tableModule", tableModuleSelection != null); //NON-NLS
|
||||
prefs.putBoolean("generalModule", generalModuleSelection != null); //NON-NLS
|
||||
prefs.putBoolean("portableCaseModule", getComponent().getPortableCaseModule() != null); //NON-NLS
|
||||
prefs.putBoolean("showDataSourceSelectionPanel", false);
|
||||
|
||||
if(generalModuleSelection != null && generalModuleSelection.supportsDataSourceSelection()) {
|
||||
prefs.putBoolean("showDataSourceSelectionPanel", true);
|
||||
}
|
||||
|
||||
if(tableModuleSelection != null) {
|
||||
prefs.putBoolean("showDataSourceSelectionPanel", true);
|
||||
}
|
||||
|
||||
if(fileModuleSelection != null) {
|
||||
prefs.putBoolean("showDataSourceSelectionPanel", true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,7 +1,7 @@
|
||||
/*
|
||||
* Autopsy Forensic Browser
|
||||
*
|
||||
* Copyright 2019 Basis Technology Corp.
|
||||
* Copyright 2019-2020 Basis Technology Corp.
|
||||
* Contact: carrier <at> sleuthkit <dot> org
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
@ -21,6 +21,7 @@ package org.sleuthkit.autopsy.report.infrastructure;
|
||||
import java.io.Serializable;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import org.sleuthkit.autopsy.report.GeneralReportSettings;
|
||||
|
||||
/**
|
||||
* A bundling of all the settings objects that define a report configuration.
|
||||
@ -32,6 +33,7 @@ final class ReportingConfig implements Serializable {
|
||||
private Map<String, ReportModuleConfig> moduleConfigs = new HashMap<>();
|
||||
private TableReportSettings tableReportSettings;
|
||||
private FileReportSettings fileReportSettings;
|
||||
private GeneralReportSettings generalReportSettings;
|
||||
|
||||
/**
|
||||
* Creates ReportingConfig object.
|
||||
@ -74,4 +76,11 @@ final class ReportingConfig implements Serializable {
|
||||
return this.fileReportSettings;
|
||||
}
|
||||
|
||||
GeneralReportSettings getGeneralReportSettings() {
|
||||
return this.generalReportSettings;
|
||||
}
|
||||
|
||||
void setGeneralReportSettings(GeneralReportSettings generalReportSettings) {
|
||||
this.generalReportSettings = generalReportSettings;
|
||||
}
|
||||
}
|
||||
|
@ -1,7 +1,7 @@
|
||||
/*
|
||||
* Autopsy Forensic Browser
|
||||
*
|
||||
* Copyright 2019 Basis Technology Corp.
|
||||
* Copyright 2019-2020 Basis Technology Corp.
|
||||
* Contact: carrier <at> sleuthkit <dot> org
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
@ -34,6 +34,7 @@ import org.openide.util.io.NbObjectInputStream;
|
||||
import org.openide.util.io.NbObjectOutputStream;
|
||||
import org.sleuthkit.autopsy.coreutils.Logger;
|
||||
import org.sleuthkit.autopsy.coreutils.PlatformUtil;
|
||||
import org.sleuthkit.autopsy.report.GeneralReportSettings;
|
||||
|
||||
/**
|
||||
* Utility class responsible for managing serialization and deserialization of
|
||||
@ -48,6 +49,7 @@ final class ReportingConfigLoader {
|
||||
private static final String REPORT_SETTINGS_FILE_EXTENSION = ".settings";
|
||||
private static final String TABLE_REPORT_CONFIG_FILE = "TableReportSettings.settings";
|
||||
private static final String FILE_REPORT_CONFIG_FILE = "FileReportSettings.settings";
|
||||
private static final String GENERAL_REPORT_CONFIG_FILE = "GeneralReportSettings.settings";
|
||||
private static final String MODULE_CONFIG_FILE = "ModuleConfigs.settings";
|
||||
|
||||
/**
|
||||
@ -97,6 +99,13 @@ final class ReportingConfigLoader {
|
||||
throw new ReportConfigException("Unable to read file report settings " + filePath, ex);
|
||||
}
|
||||
|
||||
filePath = reportDirPath.resolve(GENERAL_REPORT_CONFIG_FILE).toString();
|
||||
try (NbObjectInputStream in = new NbObjectInputStream(new FileInputStream(filePath))) {
|
||||
config.setGeneralReportSettings((GeneralReportSettings) in.readObject());
|
||||
} catch (IOException | ClassNotFoundException ex) {
|
||||
throw new ReportConfigException("Unable to read general report settings " + filePath, ex);
|
||||
}
|
||||
|
||||
// read map of module configuration objects
|
||||
Map<String, ReportModuleConfig> moduleConfigs = null;
|
||||
filePath = reportDirPath.toString() + File.separator + MODULE_CONFIG_FILE;
|
||||
@ -174,6 +183,13 @@ final class ReportingConfigLoader {
|
||||
throw new ReportConfigException("Unable to save file report configuration " + filePath, ex);
|
||||
}
|
||||
|
||||
filePath = pathToConfigDir.resolve(GENERAL_REPORT_CONFIG_FILE).toString();
|
||||
try (NbObjectOutputStream out = new NbObjectOutputStream(new FileOutputStream(filePath))) {
|
||||
out.writeObject(reportConfig.getGeneralReportSettings());
|
||||
} catch (IOException ex) {
|
||||
throw new ReportConfigException("Unable to save general report configuration " + filePath, ex);
|
||||
}
|
||||
|
||||
// save map of module configuration objects
|
||||
filePath = pathToConfigDir.toString() + File.separator + MODULE_CONFIG_FILE;
|
||||
try (NbObjectOutputStream out = new NbObjectOutputStream(new FileOutputStream(filePath))) {
|
||||
|
@ -1,7 +1,7 @@
|
||||
/*
|
||||
* Autopsy Forensic Browser
|
||||
*
|
||||
* Copyright 2013-2019 Basis Technology Corp.
|
||||
* Copyright 2013-2020 Basis Technology Corp.
|
||||
* Contact: carrier <at> sleuthkit <dot> org
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
@ -366,6 +366,16 @@ class TableReportGenerator {
|
||||
|
||||
// Give the modules the rows for the content tags.
|
||||
for (ContentTag tag : tags) {
|
||||
try {
|
||||
if(shouldFilterFromReport(tag.getContent())) {
|
||||
continue;
|
||||
}
|
||||
} catch (TskCoreException ex) {
|
||||
errorList.add(NbBundle.getMessage(this.getClass(), "ReportGenerator.errList.failedGetContentTags"));
|
||||
logger.log(Level.SEVERE, "Failed to access content data from the case database.", ex); //NON-NLS
|
||||
return;
|
||||
}
|
||||
|
||||
// skip tags that we are not reporting on
|
||||
String notableString = tag.getName().getKnownStatus() == TskData.FileKnown.BAD ? TagsManager.getNotableTagLabel() : "";
|
||||
if (passesTagNamesFilter(tag.getName().getDisplayName() + notableString) == false) {
|
||||
@ -446,6 +456,16 @@ class TableReportGenerator {
|
||||
|
||||
// Give the modules the rows for the content tags.
|
||||
for (BlackboardArtifactTag tag : tags) {
|
||||
try {
|
||||
if(shouldFilterFromReport(tag.getContent())) {
|
||||
continue;
|
||||
}
|
||||
} catch (TskCoreException ex) {
|
||||
errorList.add(NbBundle.getMessage(this.getClass(), "ReportGenerator.errList.failedGetBBArtifactTags"));
|
||||
logger.log(Level.SEVERE, "Failed to access content data from the case database.", ex); //NON-NLS
|
||||
return;
|
||||
}
|
||||
|
||||
String notableString = tag.getName().getKnownStatus() == TskData.FileKnown.BAD ? TagsManager.getNotableTagLabel() : "";
|
||||
if (passesTagNamesFilter(tag.getName().getDisplayName() + notableString) == false) {
|
||||
continue;
|
||||
@ -799,6 +819,9 @@ class TableReportGenerator {
|
||||
AbstractFile f = openCase.getSleuthkitCase().getAbstractFileById(objId);
|
||||
if (f != null) {
|
||||
uniquePath = openCase.getSleuthkitCase().getAbstractFileById(objId).getUniquePath();
|
||||
if(shouldFilterFromReport(f)) {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
} catch (TskCoreException ex) {
|
||||
errorList.add(
|
||||
@ -956,6 +979,9 @@ class TableReportGenerator {
|
||||
AbstractFile f = openCase.getSleuthkitCase().getAbstractFileById(objId);
|
||||
if (f != null) {
|
||||
uniquePath = openCase.getSleuthkitCase().getAbstractFileById(objId).getUniquePath();
|
||||
if(shouldFilterFromReport(f)) {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
} catch (TskCoreException ex) {
|
||||
errorList.add(
|
||||
@ -1198,6 +1224,10 @@ class TableReportGenerator {
|
||||
List<ArtifactData> artifacts = new ArrayList<>();
|
||||
try {
|
||||
for (BlackboardArtifact artifact : Case.getCurrentCaseThrows().getSleuthkitCase().getBlackboardArtifacts(type.getTypeID())) {
|
||||
if(shouldFilterFromReport(artifact)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
List<BlackboardArtifactTag> tags = Case.getCurrentCaseThrows().getServices().getTagsManager().getBlackboardArtifactTagsByArtifact(artifact);
|
||||
HashSet<String> uniqueTagNames = new HashSet<>();
|
||||
for (BlackboardArtifactTag tag : tags) {
|
||||
@ -1793,6 +1823,18 @@ class TableReportGenerator {
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Indicates if the content should be filtered from the report.
|
||||
*/
|
||||
private boolean shouldFilterFromReport(Content content) throws TskCoreException {
|
||||
if(this.settings.getSelectedDataSources() == null) {
|
||||
return false;
|
||||
}
|
||||
|
||||
long dataSourceId = content.getDataSource().getId();
|
||||
return !this.settings.getSelectedDataSources().contains(dataSourceId);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get any tags associated with an artifact
|
||||
*
|
||||
|
@ -1,7 +1,7 @@
|
||||
/*
|
||||
* Autopsy Forensic Browser
|
||||
*
|
||||
* Copyright 2019 Basis Technology Corp.
|
||||
* Copyright 2019-2020 Basis Technology Corp.
|
||||
* Contact: carrier <at> sleuthkit <dot> org
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
@ -45,6 +45,7 @@ final class TableReportSettings implements Serializable {
|
||||
private final List<String> tagNames = new ArrayList<>();
|
||||
private final boolean useStoredTagsAndArtifactsLists;
|
||||
private final TableReportOption reportOption;
|
||||
private List<Long> selectedDataSources;
|
||||
|
||||
/**
|
||||
* Creates TableReportSettings object. This constructor is used when user
|
||||
@ -99,4 +100,18 @@ final class TableReportSettings implements Serializable {
|
||||
TableReportOption getSelectedReportOption() {
|
||||
return reportOption;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the selected data sources
|
||||
*/
|
||||
List<Long> getSelectedDataSources() {
|
||||
return selectedDataSources;
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the selected data sources
|
||||
*/
|
||||
void setSelectedDataSources(List<Long> selectedDataSources) {
|
||||
this.selectedDataSources = new ArrayList<>(selectedDataSources);
|
||||
}
|
||||
}
|
||||
|
@ -2,7 +2,7 @@
|
||||
*
|
||||
* Autopsy Forensic Browser
|
||||
*
|
||||
* Copyright 2012-2018 Basis Technology Corp.
|
||||
* Copyright 2012-2020 Basis Technology Corp.
|
||||
*
|
||||
* Copyright 2012 42six Solutions.
|
||||
* Contact: aebadirad <at> 42six <dot> com
|
||||
@ -28,6 +28,7 @@ import java.io.FileWriter;
|
||||
import java.io.IOException;
|
||||
import java.util.List;
|
||||
import java.util.logging.Level;
|
||||
import java.util.stream.Collectors;
|
||||
import javax.swing.JPanel;
|
||||
|
||||
import org.openide.util.NbBundle;
|
||||
@ -35,6 +36,7 @@ import org.sleuthkit.autopsy.casemodule.Case;
|
||||
import org.sleuthkit.autopsy.casemodule.NoCurrentCaseException;
|
||||
import org.sleuthkit.autopsy.coreutils.Logger;
|
||||
import org.sleuthkit.autopsy.ingest.IngestManager;
|
||||
import org.sleuthkit.autopsy.report.GeneralReportSettings;
|
||||
import org.sleuthkit.autopsy.report.ReportProgressPanel;
|
||||
import org.sleuthkit.autopsy.report.ReportProgressPanel.ReportStatus;
|
||||
import org.sleuthkit.datamodel.*;
|
||||
@ -66,6 +68,11 @@ class BodyFileReport implements GeneralReportModule {
|
||||
return instance;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsDataSourceSelection() {
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Generates a body file format report for use with the MAC time tool.
|
||||
*
|
||||
@ -73,8 +80,7 @@ class BodyFileReport implements GeneralReportModule {
|
||||
* @param progressPanel panel to update the report's progress
|
||||
*/
|
||||
@Override
|
||||
@SuppressWarnings("deprecation")
|
||||
public void generateReport(String baseReportDir, ReportProgressPanel progressPanel) {
|
||||
public void generateReport(GeneralReportSettings settings, ReportProgressPanel progressPanel) {
|
||||
// Start the progress bar and setup the report
|
||||
try {
|
||||
currentCase = Case.getCurrentCaseThrows();
|
||||
@ -85,7 +91,7 @@ class BodyFileReport implements GeneralReportModule {
|
||||
progressPanel.setIndeterminate(false);
|
||||
progressPanel.start();
|
||||
progressPanel.updateStatusLabel(NbBundle.getMessage(this.getClass(), "ReportBodyFile.progress.querying"));
|
||||
reportPath = baseReportDir + getRelativeFilePath(); //NON-NLS
|
||||
reportPath = settings.getReportDirectoryPath() + getRelativeFilePath(); //NON-NLS
|
||||
|
||||
skCase = currentCase.getSleuthkitCase();
|
||||
|
||||
@ -96,7 +102,17 @@ class BodyFileReport implements GeneralReportModule {
|
||||
+ " AND name != '.' AND name != '..'"; //NON-NLS
|
||||
|
||||
progressPanel.updateStatusLabel(NbBundle.getMessage(this.getClass(), "ReportBodyFile.progress.loading"));
|
||||
List<AbstractFile> fs = skCase.findAllFilesWhere(query);
|
||||
// Filter the list to only include files that are contained within
|
||||
// the set of data sources to process.
|
||||
List<AbstractFile> fs = skCase.findAllFilesWhere(query).stream()
|
||||
.filter((file) -> {
|
||||
if(settings.getSelectedDataSources() == null) {
|
||||
// Assume all data sources if list is null.
|
||||
return true;
|
||||
}
|
||||
return settings.getSelectedDataSources().contains(file.getDataSourceObjectId());
|
||||
})
|
||||
.collect(Collectors.toList());
|
||||
|
||||
// Check if ingest has finished
|
||||
String ingestwarning = "";
|
||||
|
@ -29,6 +29,7 @@ import java.util.HashSet;
|
||||
import java.util.List;
|
||||
import java.util.Set;
|
||||
import java.util.logging.Level;
|
||||
import java.util.stream.Collectors;
|
||||
import javax.swing.JPanel;
|
||||
import org.openide.util.NbBundle;
|
||||
import org.sleuthkit.autopsy.casemodule.Case;
|
||||
@ -36,6 +37,7 @@ import org.sleuthkit.autopsy.casemodule.NoCurrentCaseException;
|
||||
import org.sleuthkit.autopsy.coreutils.Logger;
|
||||
import org.sleuthkit.autopsy.ingest.IngestManager;
|
||||
import org.sleuthkit.autopsy.report.GeneralReportModule;
|
||||
import org.sleuthkit.autopsy.report.GeneralReportSettings;
|
||||
import org.sleuthkit.autopsy.report.ReportProgressPanel;
|
||||
import org.sleuthkit.datamodel.AbstractFile;
|
||||
import org.sleuthkit.datamodel.Content;
|
||||
@ -99,6 +101,11 @@ public final class CaseUcoReportModule implements GeneralReportModule {
|
||||
return REPORT_FILE_NAME;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean supportsDataSourceSelection() {
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
* Generates a CASE-UCO format report for all files in the Case.
|
||||
*
|
||||
@ -117,14 +124,13 @@ public final class CaseUcoReportModule implements GeneralReportModule {
|
||||
"CaseUcoReportModule.srcModuleName=CASE-UCO Report"
|
||||
})
|
||||
@Override
|
||||
@SuppressWarnings("deprecation")
|
||||
public void generateReport(String baseReportDir, ReportProgressPanel progressPanel) {
|
||||
public void generateReport(GeneralReportSettings settings, ReportProgressPanel progressPanel) {
|
||||
try {
|
||||
// Check if ingest has finished
|
||||
warnIngest(progressPanel);
|
||||
|
||||
//Create report paths if they don't already exist.
|
||||
Path reportDirectory = Paths.get(baseReportDir);
|
||||
Path reportDirectory = Paths.get(settings.getReportDirectoryPath());
|
||||
try {
|
||||
Files.createDirectories(reportDirectory);
|
||||
} catch (IOException ex) {
|
||||
@ -141,7 +147,16 @@ public final class CaseUcoReportModule implements GeneralReportModule {
|
||||
Case caseObj = Case.getCurrentCaseThrows();
|
||||
generator.addCase(caseObj);
|
||||
|
||||
List<Content> dataSources = caseObj.getDataSources();
|
||||
List<Content> dataSources = caseObj.getDataSources().stream()
|
||||
.filter((dataSource) -> {
|
||||
if(settings.getSelectedDataSources() == null) {
|
||||
// Assume all data sources if list is null.
|
||||
return true;
|
||||
}
|
||||
return settings.getSelectedDataSources().contains(dataSource.getId());
|
||||
})
|
||||
.collect(Collectors.toList());
|
||||
|
||||
progressPanel.setIndeterminate(false);
|
||||
progressPanel.setMaximumProgress(dataSources.size());
|
||||
progressPanel.start();
|
||||
|
@ -14,6 +14,6 @@ ReportExcel.writeSummary.caseName=Case Name:
|
||||
ReportExcel.writeSummary.caseNotes=Case Notes:
|
||||
ReportExcel.writeSummary.caseNum=Case Number:
|
||||
ReportExcel.writeSummary.examiner=Examiner:
|
||||
ReportExcel.writeSummary.numImages=Number of Images:
|
||||
ReportExcel.writeSummary.numImages=Number of data sources in case:
|
||||
ReportExcel.writeSummary.sheetName=Summary
|
||||
ReportExcel.writeSummary.summary=Summary
|
||||
|
@ -1,7 +1,7 @@
|
||||
/*
|
||||
* Autopsy Forensic Browser
|
||||
*
|
||||
* Copyright 2013-2018 Basis Technology Corp.
|
||||
* Copyright 2013-2020 Basis Technology Corp.
|
||||
* Contact: carrier <at> sleuthkit <dot> org
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
@ -307,7 +307,7 @@ class ExcelReport implements TableReportModule {
|
||||
"ReportExcel.writeSummary.sheetName=Summary",
|
||||
"ReportExcel.writeSummary.summary=Summary",
|
||||
"ReportExcel.writeSummary.caseName=Case Name:",
|
||||
"ReportExcel.writeSummary.numImages=Number of Images:",
|
||||
"ReportExcel.writeSummary.numImages=Number of data sources in case:",
|
||||
"ReportExcel.writeSummary.caseNum=Case Number:",
|
||||
"ReportExcel.writeSummary.caseNotes=Case Notes:",
|
||||
"ReportExcel.writeSummary.examiner=Examiner:"
|
||||
|
@ -13,7 +13,7 @@ ReportHTML.writeNav.summary=Case Summary
|
||||
ReportHTML.writeSum.case=Case:
|
||||
ReportHTML.writeSum.caseNotes=Notes:
|
||||
ReportHTML.writeSum.caseNumber=Case Number:
|
||||
ReportHTML.writeSum.caseNumImages=Number of Images:
|
||||
ReportHTML.writeSum.caseNumImages=Number of data sources in case:
|
||||
ReportHTML.writeSum.examiner=Examiner:
|
||||
ReportHTML.writeSum.title=Case Summary
|
||||
ReportHTML.writeSum.warningMsg=<span>Warning, this report was run before ingest services completed!</span>
|
||||
|
@ -1343,7 +1343,7 @@ public class HTMLReport implements TableReportModule {
|
||||
@Messages({
|
||||
"ReportHTML.writeSum.case=Case:",
|
||||
"ReportHTML.writeSum.caseNumber=Case Number:",
|
||||
"ReportHTML.writeSum.caseNumImages=Number of Images:",
|
||||
"ReportHTML.writeSum.caseNumImages=Number of data sources in case:",
|
||||
"ReportHTML.writeSum.caseNotes=Notes:",
|
||||
"ReportHTML.writeSum.examiner=Examiner:"
|
||||
})
|
||||
|
@ -35,6 +35,7 @@ import java.nio.file.Paths;
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.List;
|
||||
import java.util.logging.Level;
|
||||
import java.util.stream.Collectors;
|
||||
import org.jdom2.Document;
|
||||
import org.jdom2.Element;
|
||||
import org.jdom2.Namespace;
|
||||
@ -49,9 +50,11 @@ import org.sleuthkit.autopsy.geolocation.datamodel.Waypoint;
|
||||
import org.sleuthkit.autopsy.geolocation.datamodel.Route;
|
||||
import org.sleuthkit.autopsy.geolocation.datamodel.Track;
|
||||
import org.sleuthkit.autopsy.geolocation.datamodel.WaypointBuilder;
|
||||
import org.sleuthkit.autopsy.report.GeneralReportSettings;
|
||||
import org.sleuthkit.autopsy.report.ReportBranding;
|
||||
import org.sleuthkit.autopsy.report.ReportProgressPanel;
|
||||
import org.sleuthkit.datamodel.AbstractFile;
|
||||
import org.sleuthkit.datamodel.Content;
|
||||
import org.sleuthkit.datamodel.ReadContentInputStream;
|
||||
import org.sleuthkit.datamodel.ReadContentInputStream.ReadContentInputStreamException;
|
||||
import org.sleuthkit.datamodel.SleuthkitCase;
|
||||
@ -81,6 +84,8 @@ public final class KMLReport implements GeneralReportModule {
|
||||
private Element gpsTrackpointsFolder;
|
||||
private Element gpsTracksFolder;
|
||||
|
||||
private GeneralReportSettings settings;
|
||||
|
||||
private List<Waypoint> waypointList = null;
|
||||
|
||||
private enum FeatureColor {
|
||||
@ -151,17 +156,41 @@ public final class KMLReport implements GeneralReportModule {
|
||||
|
||||
public void generateReport(String baseReportDir, ReportProgressPanel progressPanel, List<Waypoint> waypointList) {
|
||||
this.waypointList = waypointList;
|
||||
generateReport(baseReportDir, progressPanel);
|
||||
GeneralReportSettings reportSettings = new GeneralReportSettings();
|
||||
reportSettings.setReportDirectoryPath(baseReportDir);
|
||||
generateReport(reportSettings, progressPanel);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void generateReport(String baseReportDir, ReportProgressPanel progressPanel) {
|
||||
public boolean supportsDataSourceSelection() {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void generateReport(GeneralReportSettings settings, ReportProgressPanel progressPanel) {
|
||||
try {
|
||||
currentCase = Case.getCurrentCaseThrows();
|
||||
} catch (NoCurrentCaseException ex) {
|
||||
logger.log(Level.SEVERE, "Exception while getting open case.", ex); //NON-NLS
|
||||
return;
|
||||
}
|
||||
|
||||
if(settings.getSelectedDataSources() == null) {
|
||||
// Process all data sources if the list is null.
|
||||
try {
|
||||
List<Long> selectedDataSources = currentCase.getDataSources()
|
||||
.stream()
|
||||
.map(Content::getId)
|
||||
.collect(Collectors.toList());
|
||||
settings.setSelectedDataSources(selectedDataSources);
|
||||
} catch (TskCoreException ex) {
|
||||
logger.log(Level.SEVERE, "Could not get the datasources from the case", ex);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
String baseReportDir = settings.getReportDirectoryPath();
|
||||
this.settings = settings;
|
||||
// Start the progress bar and setup the report
|
||||
progressPanel.setIndeterminate(true);
|
||||
progressPanel.start();
|
||||
@ -181,7 +210,7 @@ public final class KMLReport implements GeneralReportModule {
|
||||
makeRoutes(skCase);
|
||||
makeTracks(skCase);
|
||||
addLocationsToReport(skCase, baseReportDir);
|
||||
} catch (GeoLocationDataException | IOException ex) {
|
||||
} catch (GeoLocationDataException | IOException | TskCoreException ex) {
|
||||
errorMessage = "Failed to complete report.";
|
||||
logger.log(Level.SEVERE, errorMessage, ex); //NON-NLS
|
||||
result = ReportProgressPanel.ReportStatus.ERROR;
|
||||
@ -318,8 +347,12 @@ public final class KMLReport implements GeneralReportModule {
|
||||
*
|
||||
* @throws IOException
|
||||
*/
|
||||
void addExifMetadataContent(List<Waypoint> points, String baseReportDirectory) throws IOException {
|
||||
void addExifMetadataContent(List<Waypoint> points, String baseReportDirectory) throws IOException, TskCoreException {
|
||||
for (Waypoint point : points) {
|
||||
if(shouldFilterFromReport(point.getArtifact())) {
|
||||
continue;
|
||||
}
|
||||
|
||||
Element mapPoint = makePoint(point);
|
||||
if (mapPoint == null) {
|
||||
return;
|
||||
@ -352,7 +385,7 @@ public final class KMLReport implements GeneralReportModule {
|
||||
* @throws TskCoreException
|
||||
* @throws IOException
|
||||
*/
|
||||
void addLocationsToReport(SleuthkitCase skCase, String baseReportDir) throws GeoLocationDataException, IOException {
|
||||
void addLocationsToReport(SleuthkitCase skCase, String baseReportDir) throws GeoLocationDataException, IOException, TskCoreException {
|
||||
if (waypointList == null) {
|
||||
addExifMetadataContent(WaypointBuilder.getEXIFWaypoints(skCase), baseReportDir);
|
||||
addWaypoints(WaypointBuilder.getBookmarkWaypoints(skCase), gpsBookmarksFolder, FeatureColor.BLUE, Bundle.Waypoint_Bookmark_Display_String());
|
||||
@ -376,8 +409,11 @@ public final class KMLReport implements GeneralReportModule {
|
||||
* @param folder The Element folder to add the points to
|
||||
* @param waypointColor The color the waypoint should appear in the report
|
||||
*/
|
||||
void addWaypoints(List<Waypoint> points, Element folder, FeatureColor waypointColor, String headerLabel) {
|
||||
void addWaypoints(List<Waypoint> points, Element folder, FeatureColor waypointColor, String headerLabel) throws TskCoreException {
|
||||
for (Waypoint point : points) {
|
||||
if(shouldFilterFromReport(point.getArtifact())) {
|
||||
continue;
|
||||
}
|
||||
addContent(folder, point.getLabel(), waypointColor, getFormattedDetails(point, headerLabel), point.getTimestamp(), makePoint(point), point.getLatitude(), point.getLongitude());
|
||||
}
|
||||
}
|
||||
@ -408,7 +444,7 @@ public final class KMLReport implements GeneralReportModule {
|
||||
*
|
||||
* @throws TskCoreException
|
||||
*/
|
||||
void makeRoutes(SleuthkitCase skCase) throws GeoLocationDataException {
|
||||
void makeRoutes(SleuthkitCase skCase) throws GeoLocationDataException, TskCoreException {
|
||||
List<Route> routes = null;
|
||||
|
||||
if (waypointList == null) {
|
||||
@ -418,6 +454,9 @@ public final class KMLReport implements GeneralReportModule {
|
||||
}
|
||||
|
||||
for (Route route : routes) {
|
||||
if(shouldFilterFromReport(route.getArtifact())) {
|
||||
continue;
|
||||
}
|
||||
addRouteToReport(route);
|
||||
}
|
||||
}
|
||||
@ -479,7 +518,7 @@ public final class KMLReport implements GeneralReportModule {
|
||||
*
|
||||
* @throws TskCoreException
|
||||
*/
|
||||
void makeTracks(SleuthkitCase skCase) throws GeoLocationDataException {
|
||||
void makeTracks(SleuthkitCase skCase) throws GeoLocationDataException, TskCoreException {
|
||||
List<Track> tracks = null;
|
||||
|
||||
if (waypointList == null) {
|
||||
@ -489,6 +528,9 @@ public final class KMLReport implements GeneralReportModule {
|
||||
}
|
||||
|
||||
for (Track track : tracks) {
|
||||
if(shouldFilterFromReport(track.getArtifact())) {
|
||||
continue;
|
||||
}
|
||||
addTrackToReport(track);
|
||||
}
|
||||
}
|
||||
@ -877,4 +919,15 @@ public final class KMLReport implements GeneralReportModule {
|
||||
|
||||
return String.format("%.2f, %.2f", latitude, longitude);
|
||||
}
|
||||
|
||||
/**
|
||||
* Indicates if the content should be filtered from the report.
|
||||
*/
|
||||
private boolean shouldFilterFromReport(Content content) throws TskCoreException {
|
||||
if(this.settings.getSelectedDataSources() == null) {
|
||||
return false;
|
||||
}
|
||||
long dataSourceId = content.getDataSource().getId();
|
||||
return !this.settings.getSelectedDataSources().contains(dataSourceId);
|
||||
}
|
||||
}
|
||||
|
@ -1,7 +1,7 @@
|
||||
/*
|
||||
* Autopsy Forensic Browser
|
||||
*
|
||||
* Copyright 2013 - 2018 Basis Technology Corp.
|
||||
* Copyright 2013 - 2020 Basis Technology Corp.
|
||||
* Contact: carrier <at> sleuthkit <dot> org
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
@ -55,6 +55,7 @@ import org.sleuthkit.autopsy.casemodule.Case;
|
||||
import org.sleuthkit.autopsy.casemodule.NoCurrentCaseException;
|
||||
import org.sleuthkit.autopsy.coreutils.Logger;
|
||||
import org.sleuthkit.autopsy.report.GeneralReportModule;
|
||||
import org.sleuthkit.autopsy.report.GeneralReportSettings;
|
||||
import org.sleuthkit.autopsy.report.NoReportModuleSettings;
|
||||
import org.sleuthkit.autopsy.report.ReportModuleSettings;
|
||||
import org.sleuthkit.autopsy.report.ReportProgressPanel;
|
||||
@ -97,10 +98,11 @@ public class STIXReportModule implements GeneralReportModule {
|
||||
*/
|
||||
@Override
|
||||
@Messages({"STIXReportModule.srcModuleName.text=STIX Report"})
|
||||
public void generateReport(String baseReportDir, ReportProgressPanel progressPanel) {
|
||||
public void generateReport(GeneralReportSettings settings, ReportProgressPanel progressPanel) {
|
||||
// Start the progress bar and setup the report
|
||||
progressPanel.setIndeterminate(false);
|
||||
progressPanel.start();
|
||||
String baseReportDir = settings.getReportDirectoryPath();
|
||||
progressPanel.updateStatusLabel(NbBundle.getMessage(this.getClass(), "STIXReportModule.progress.readSTIX"));
|
||||
reportPath = baseReportDir + getRelativeFilePath();
|
||||
File reportFile = new File(reportPath);
|
||||
|
@ -1,7 +1,7 @@
|
||||
/*
|
||||
* Autopsy Forensic Browser
|
||||
*
|
||||
* Copyright 2011-2018 Basis Technology Corp.
|
||||
* Copyright 2011-2020 Basis Technology Corp.
|
||||
* Contact: carrier <at> sleuthkit <dot> org
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
@ -30,6 +30,7 @@ import org.sleuthkit.autopsy.casemodule.NoCurrentCaseException;
|
||||
import org.sleuthkit.autopsy.casemodule.services.TagsManager;
|
||||
import org.sleuthkit.autopsy.modules.hashdatabase.HashDbManager.HashDb;
|
||||
import org.sleuthkit.autopsy.report.GeneralReportModule;
|
||||
import org.sleuthkit.autopsy.report.GeneralReportSettings;
|
||||
import org.sleuthkit.autopsy.report.NoReportModuleSettings;
|
||||
import org.sleuthkit.autopsy.report.ReportModuleSettings;
|
||||
import org.sleuthkit.autopsy.report.ReportProgressPanel;
|
||||
@ -115,7 +116,7 @@ public class SaveTaggedHashesToHashDb implements GeneralReportModule {
|
||||
"AddTaggedHashesToHashDb.error.noTagsSelected=No tags selected for export."
|
||||
})
|
||||
@Override
|
||||
public void generateReport(String reportPath, ReportProgressPanel progressPanel) {
|
||||
public void generateReport(GeneralReportSettings settings, ReportProgressPanel progressPanel) {
|
||||
Case openCase;
|
||||
try {
|
||||
openCase = Case.getCurrentCaseThrows();
|
||||
|
@ -385,6 +385,12 @@ public class AutopsyTestCases {
|
||||
listOperator.clickOnItem(0, 1);
|
||||
jbo0.pushNoBlock();
|
||||
new Timeout("pausing", 2000).sleep();
|
||||
|
||||
// Next button on the data source selection panel
|
||||
JButtonOperator dataSourceSelectionPanelNext = new JButtonOperator(reportDialogOperator, "Next");
|
||||
dataSourceSelectionPanelNext.pushNoBlock();
|
||||
new Timeout("pausing", 2000).sleep();
|
||||
|
||||
JButtonOperator jbo1 = new JButtonOperator(reportDialogOperator, "Finish");
|
||||
jbo1.pushNoBlock();
|
||||
JDialog previewDialog = JDialogOperator.waitJDialog("Progress", false, false);
|
||||
|
@ -4,6 +4,8 @@
|
||||
|
||||
Auto ingest allows one or many computers to process \ref ds_page "data sources" automatically with minimal support from a user. The resulting \ref multiuser_page "multi-user cases" can be opened and reviewed by analysts, using any of the normal functions in Autopsy.
|
||||
|
||||
The \ref experimental_page must be enabled to run use automated ingest.
|
||||
|
||||
There are three types of computers in an Automated Processing Deployment:
|
||||
<ul>
|
||||
<li><b>Automated Ingest Node:</b>
|
||||
|
@ -4,6 +4,8 @@
|
||||
|
||||
The Object Detection module uses OpenCV to try to detect objects in images.
|
||||
|
||||
The \ref experimental_page must be enabled to run this module.
|
||||
|
||||
\section object_setup Setup
|
||||
|
||||
To start, you will need some classifiers, which are xml files. Autopsy can not create classifiers - do a web search for "train OpenCV classifiers" to find information on how to make classifiers, or visit the <a href="https://docs.opencv.org/2.4/doc/user_guide/ug_traincascade.html">OpenCV page</a>.
|
||||
|
@ -4,6 +4,8 @@
|
||||
|
||||
The Volatility data source processor runs Volatility on a memory image and saves the individual Volatility module results. If the disk image associated with the memory image is also available, it will create Interesting Item artifacts linking the Volatility results to files in the disk image.
|
||||
|
||||
The \ref experimental_page must be enabled to run this module.
|
||||
|
||||
\section Usage
|
||||
|
||||
If you have a disk image associated with your memory image, ingest the disk image into the case first. Then go to "Add Data Source" and select "Memory Image File".
|
||||
|
Loading…
x
Reference in New Issue
Block a user