Implement Jython report module support

This commit is contained in:
Richard Cordovano 2014-07-23 16:50:18 -04:00
parent 40c944690e
commit 8c6e381877
3 changed files with 98 additions and 0 deletions

View File

@ -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()

View File

@ -0,0 +1,52 @@
/*
* Autopsy Forensic Browser
*
* Copyright 2014 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 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;
}
}

View File

@ -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);