-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathZL_autopsy.py
111 lines (74 loc) · 3.75 KB
/
ZL_autopsy.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
from org.sleuthkit.autopsy.ingest import GenericIngestModuleJobSettings
from org.sleuthkit.autopsy.report import GeneralReportModuleAdapter
from org.sleuthkit.autopsy.ingest import IngestModuleFactoryAdapter
from org.sleuthkit.autopsy.report.ReportProgressPanel import ReportStatus
from org.sleuthkit.autopsy.casemodule import Case
import sys, os
from ZL_std import Standalone
from utils import Utils
sys.path.append(os.path.dirname(__file__))
from gps import Kml
from ingest import MifitIngestModule
from settings import MifitIngestSettingsPanel, MifitReportSettingsPanel
class MifitIngestModuleFactory(IngestModuleFactoryAdapter):
moduleName = "Mifit and Zeep Life Android App Analyzer"
def __init__(self):
self.settings = None
#Module Settings
def getModuleDisplayName(self):
return self.moduleName
def getModuleDescription(self):
return "Mifit and Zeep Life Analyzer for Autopsy"
def getModuleVersionNumber(self):
return "1.0"
#Data Source Ingest
def isDataSourceIngestModuleFactory(self):
return True
def createDataSourceIngestModule(self, ingestOptions):
return MifitIngestModule(self.settings)
#Settings
def getDefaultIngestJobSettings(self):
return GenericIngestModuleJobSettings()
def hasIngestJobSettingsPanel(self):
return True
def getIngestJobSettingsPanel(self, settings):
if not isinstance(settings, GenericIngestModuleJobSettings):
raise IllegalArgumentException("Expected settings argument to be instanceof GenericIngestModuleJobSettings")
self.settings = settings
return MifitIngestSettingsPanel(self.settings)
class MifitReportModule(GeneralReportModuleAdapter):
moduleName = "Mifit and Zeep Life Android App Report"
def __init__(self):
self.settings = None
# self.report = MifitReport()
def getName(self):
return self.moduleName
def getDescription(self):
return "Mifit and Zeep Life Android App Report Generator"
def generateReport(self, settings, progressBar):
progressBar.setIndeterminate(True)
self.fileManager = Case.getCurrentCase().getServices().getFileManager()
progressBar.updateStatusLabel("Searching for processed Mifit data...")
self.reportFile = os.path.join(Case.getCurrentCase().getModulesOutputDirAbsPath(), "Mifit", "report.json")
progressBar.updateStatusLabel("Creating report")
os.environ["CASE_NAME"] = Case.getCurrentCase().getName()
os.environ["CASE_NUMBER"] = Case.getCurrentCase().getNumber()
os.environ["EXAMINER"] = Case.getCurrentCase().getExaminer()
os.environ["CASE_DATE"] = Utils.get_current_timestamp()
autopsy_version = Utils.get_autopsy_version()
baseReportDir = settings
if (autopsy_version["major"] == 4 and autopsy_version["minor"] >= 16):
baseReportDir = settings.getReportDirectoryPath()
report_path = os.path.join(Case.getCurrentCase().getModulesOutputDirAbsPath(), "Mifit")
Utils.check_and_generate_folder(report_path)
Utils.copy_tree(os.path.join(os.path.dirname(__file__), "report"), report_path)
report = Utils.read_json(self.reportFile)
report_html_path = Standalone.detach_report(report, os.path.join(report_path, "js", "report.js"))
Case.getCurrentCase().addReport(report_html_path, "Report", "Forensics Report")
progressBar.updateStatusLabel("Done")
progressBar.complete(ReportStatus.COMPLETE)
def getConfigurationPanel(self):
self.configPanel = MifitReportSettingsPanel()
return self.configPanel
def getRelativeFilePath(self):
return "\\..\\..\\ModuleOutput\\Mifit\\index.html"