From 6fc6102b738c0bb33447470367a89d958c89073c Mon Sep 17 00:00:00 2001 From: Nex Date: Fri, 4 Feb 2022 13:34:40 +0100 Subject: [PATCH] Improved parsing of bugreports by finding dumpstate file name from main_entry.txt --- mvt/android/modules/bugreport/accessibility.py | 7 ++----- mvt/android/modules/bugreport/activities.py | 7 ++----- mvt/android/modules/bugreport/base.py | 17 +++++++++++++++++ mvt/android/modules/bugreport/battery_daily.py | 7 ++----- .../modules/bugreport/battery_history.py | 7 ++----- mvt/android/modules/bugreport/dbinfo.py | 7 ++----- mvt/android/modules/bugreport/getprop.py | 7 ++----- mvt/android/modules/bugreport/packages.py | 7 ++----- mvt/android/modules/bugreport/receivers.py | 7 ++----- 9 files changed, 33 insertions(+), 40 deletions(-) diff --git a/mvt/android/modules/bugreport/accessibility.py b/mvt/android/modules/bugreport/accessibility.py index 8f4cb09..795bf08 100644 --- a/mvt/android/modules/bugreport/accessibility.py +++ b/mvt/android/modules/bugreport/accessibility.py @@ -33,12 +33,9 @@ class Accessibility(BugReportModule): continue def run(self): - dumpstate_files = self._get_files_by_patterns(["dumpstate-*.txt", "dumpState_*.log", "bugreport-*.txt"]) - if not dumpstate_files: - return - - content = self._get_file_content(dumpstate_files[0]) + content = self._get_dumpstate_file() if not content: + self.log.error("Unable to find dumpstate file. Did you provide a valid bug report archive?") return lines = [] diff --git a/mvt/android/modules/bugreport/activities.py b/mvt/android/modules/bugreport/activities.py index 6207eef..4672d6e 100644 --- a/mvt/android/modules/bugreport/activities.py +++ b/mvt/android/modules/bugreport/activities.py @@ -36,12 +36,9 @@ class Activities(BugReportModule): continue def run(self): - dumpstate_files = self._get_files_by_patterns(["dumpstate-*.txt", "dumpState_*.log", "bugreport-*.txt"]) - if not dumpstate_files: - return - - content = self._get_file_content(dumpstate_files[0]) + content = self._get_dumpstate_file() if not content: + self.log.error("Unable to find dumpstate file. Did you provide a valid bug report archive?") return lines = [] diff --git a/mvt/android/modules/bugreport/base.py b/mvt/android/modules/bugreport/base.py index 590b2d1..76425e8 100644 --- a/mvt/android/modules/bugreport/base.py +++ b/mvt/android/modules/bugreport/base.py @@ -51,3 +51,20 @@ class BugReportModule(MVTModule): handle.close() return data + + def _get_dumpstate_file(self): + main = self._get_files_by_pattern("main_entry.txt") + if main: + main_content = self._get_file_content(main[0]) + try: + return self._get_file_content(main_content.decode().strip()) + except KeyError: + return None + else: + dumpstate_logs = self._get_files_by_pattern("dumpState_*.log") + if not dumpstate_logs: + return None + + return self._get_file_content(dumpstate_logs[0]) + + return None diff --git a/mvt/android/modules/bugreport/battery_daily.py b/mvt/android/modules/bugreport/battery_daily.py index b4821b0..77c2c36 100644 --- a/mvt/android/modules/bugreport/battery_daily.py +++ b/mvt/android/modules/bugreport/battery_daily.py @@ -41,12 +41,9 @@ class BatteryDaily(BugReportModule): continue def run(self): - dumpstate_files = self._get_files_by_patterns(["dumpstate-*.txt", "dumpState_*.log", "bugreport-*.txt"]) - if not dumpstate_files: - return - - content = self._get_file_content(dumpstate_files[0]) + content = self._get_dumpstate_file() if not content: + self.log.error("Unable to find dumpstate file. Did you provide a valid bug report archive?") return lines = [] diff --git a/mvt/android/modules/bugreport/battery_history.py b/mvt/android/modules/bugreport/battery_history.py index 09de1ed..4467377 100644 --- a/mvt/android/modules/bugreport/battery_history.py +++ b/mvt/android/modules/bugreport/battery_history.py @@ -33,12 +33,9 @@ class BatteryHistory(BugReportModule): continue def run(self): - dumpstate_files = self._get_files_by_patterns(["dumpstate-*.txt", "dumpState_*.log", "bugreport-*.txt"]) - if not dumpstate_files: - return - - content = self._get_file_content(dumpstate_files[0]) + content = self._get_dumpstate_file() if not content: + self.log.error("Unable to find dumpstate file. Did you provide a valid bug report archive?") return lines = [] diff --git a/mvt/android/modules/bugreport/dbinfo.py b/mvt/android/modules/bugreport/dbinfo.py index 37d65ea..804e769 100644 --- a/mvt/android/modules/bugreport/dbinfo.py +++ b/mvt/android/modules/bugreport/dbinfo.py @@ -37,12 +37,9 @@ class DBInfo(BugReportModule): continue def run(self): - dumpstate_files = self._get_files_by_patterns(["dumpstate-*.txt", "dumpState_*.log", "bugreport-*.txt"]) - if not dumpstate_files: - return - - content = self._get_file_content(dumpstate_files[0]) + content = self._get_dumpstate_file() if not content: + self.log.error("Unable to find dumpstate file. Did you provide a valid bug report archive?") return in_dbinfo = False diff --git a/mvt/android/modules/bugreport/getprop.py b/mvt/android/modules/bugreport/getprop.py index c004477..7fc813e 100644 --- a/mvt/android/modules/bugreport/getprop.py +++ b/mvt/android/modules/bugreport/getprop.py @@ -25,12 +25,9 @@ class Getprop(BugReportModule): self.results = {} if not results else results def run(self): - dumpstate_files = self._get_files_by_patterns(["dumpstate-*.txt", "dumpState_*.log", "bugreport-*.txt"]) - if not dumpstate_files: - return - - content = self._get_file_content(dumpstate_files[0]) + content = self._get_dumpstate_file() if not content: + self.log.error("Unable to find dumpstate file. Did you provide a valid bug report archive?") return lines = [] diff --git a/mvt/android/modules/bugreport/packages.py b/mvt/android/modules/bugreport/packages.py index 45261c5..4dae979 100644 --- a/mvt/android/modules/bugreport/packages.py +++ b/mvt/android/modules/bugreport/packages.py @@ -84,12 +84,9 @@ class Packages(BugReportModule): return results def run(self): - dumpstate_files = self._get_files_by_patterns(["dumpstate-*.txt", "dumpState_*.log", "bugreport-*.txt"]) - if not dumpstate_files: - return - - content = self._get_file_content(dumpstate_files[0]) + content = self._get_dumpstate_file() if not content: + self.log.error("Unable to find dumpstate file. Did you provide a valid bug report archive?") return in_package = False diff --git a/mvt/android/modules/bugreport/receivers.py b/mvt/android/modules/bugreport/receivers.py index ba5b881..ea6d634 100644 --- a/mvt/android/modules/bugreport/receivers.py +++ b/mvt/android/modules/bugreport/receivers.py @@ -58,12 +58,9 @@ class Receivers(BugReportModule): continue def run(self): - dumpstate_files = self._get_files_by_patterns(["dumpstate-*.txt", "dumpState_*.log", "bugreport-*.txt"]) - if not dumpstate_files: - return - - content = self._get_file_content(dumpstate_files[0]) + content = self._get_dumpstate_file() if not content: + self.log.error("Unable to find dumpstate file. Did you provide a valid bug report archive?") return in_receivers = False