From 8c6e381877ca8fa829bb9d2fdbc2bfd89cc4270b Mon Sep 17 00:00:00 2001 From: Richard Cordovano Date: Wed, 23 Jul 2014 16:50:18 -0400 Subject: [PATCH] Implement Jython report module support --- .../autopsy/examples/reportmodule.py | 40 ++++++++++++++ .../report/GeneralReportModuleAdapter.java | 52 +++++++++++++++++++ .../autopsy/report/ReportVisualPanel1.java | 6 +++ 3 files changed, 98 insertions(+) create mode 100755 Core/src/org/sleuthkit/autopsy/examples/reportmodule.py create mode 100755 Core/src/org/sleuthkit/autopsy/report/GeneralReportModuleAdapter.java diff --git a/Core/src/org/sleuthkit/autopsy/examples/reportmodule.py b/Core/src/org/sleuthkit/autopsy/examples/reportmodule.py new file mode 100755 index 0000000000..4c3e414e5b --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/examples/reportmodule.py @@ -0,0 +1,40 @@ +from java.lang import System +from org.sleuthkit.autopsy.casemodule import Case +from org.sleuthkit.datamodel import SleuthkitCase +from org.sleuthkit.autopsy.report import GeneralReportModuleAdapter + +class SampleGeneralReportModule(GeneralReportModuleAdapter): + + def getName(self): + return "Sample Report Module" + + def getDescription(self): + return "A sample Jython report module" + + def getFilePath(self): + return "sampleReport.txt" + + def generateReport(self, reportPath, progressBar): + # There are two tasks to do. + progressBar.setIndeterminate(False) + progressBar.start() + progressBar.setMaximumProgress(2) + + # Get files by created in last two weeks. + fileCount = 0 + autopsyCase = Case.getCurrentCase() + sleuthkitCase = autopsyCase.getSleuthkitCase() + currentTime = System.currentTimeMillis() / 1000 + minTime = currentTime - (14 * 24 * 60 * 60) + otherFiles = sleuthkitCase.findFilesWhere("crtime > %d" % minTime) + for otherFile in otherFiles: + fileCount += 1 + progressBar.increment() + + # Write the result to the report file. + report = open(reportPath + '\\' + self.getFilePath(), 'w') + report.write("file count = %d" % fileCount) + report.close() + progressBar.increment() + progressBar.complete() + diff --git a/Core/src/org/sleuthkit/autopsy/report/GeneralReportModuleAdapter.java b/Core/src/org/sleuthkit/autopsy/report/GeneralReportModuleAdapter.java new file mode 100755 index 0000000000..d6aff8edf8 --- /dev/null +++ b/Core/src/org/sleuthkit/autopsy/report/GeneralReportModuleAdapter.java @@ -0,0 +1,52 @@ +/* + * Autopsy Forensic Browser + * + * Copyright 2014 Basis Technology Corp. + * Contact: carrier sleuthkit 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 javax.swing.JPanel; + +/** + * An adapter that provides no-op implementations of various GeneralReportModule + * methods. + */ +public abstract class GeneralReportModuleAdapter implements GeneralReportModule { + + @Override + public abstract String getName(); + + @Override + public abstract String getDescription(); + + @Override + public String getExtension() { + return null; + } + + // This is actually the report file name. It will be appended to a path to a + // reports directory. + @Override + public abstract String getFilePath(); + + @Override + public abstract void generateReport(String reportPath, ReportProgressPanel progressPanel); + + @Override + public JPanel getConfigurationPanel() { + return null; + } +} diff --git a/Core/src/org/sleuthkit/autopsy/report/ReportVisualPanel1.java b/Core/src/org/sleuthkit/autopsy/report/ReportVisualPanel1.java index 39bf9bc7dd..a87c695374 100644 --- a/Core/src/org/sleuthkit/autopsy/report/ReportVisualPanel1.java +++ b/Core/src/org/sleuthkit/autopsy/report/ReportVisualPanel1.java @@ -36,6 +36,7 @@ import javax.swing.event.ListSelectionListener; import org.openide.util.Lookup; import org.openide.util.NbBundle; import org.sleuthkit.autopsy.coreutils.Logger; +import org.sleuthkit.autopsy.python.JythonModuleLoader; final class ReportVisualPanel1 extends JPanel implements ListSelectionListener { private static final Logger logger = Logger.getLogger(ReportVisualPanel1.class.getName()); @@ -69,6 +70,11 @@ import org.sleuthkit.autopsy.coreutils.Logger; modules.add(module); } + for (GeneralReportModule module : JythonModuleLoader.getGeneralReportModules()) { + generalModules.add(module); + modules.add(module); + } + for (FileReportModule module : Lookup.getDefault().lookupAll(FileReportModule.class)) { fileModules.add(module); modules.add(module);