diff --git a/mvt/android/modules/adb/getprop.py b/mvt/android/modules/adb/getprop.py index 44cff82..9fd8f80 100644 --- a/mvt/android/modules/adb/getprop.py +++ b/mvt/android/modules/adb/getprop.py @@ -6,6 +6,8 @@ import logging import re +from mvt.android.parsers import parse_getprop + from .base import AndroidExtraction log = logging.getLogger(__name__) @@ -22,31 +24,11 @@ class Getprop(AndroidExtraction): self.results = {} if not results else results - @staticmethod - def parse_getprop(output): - results = {} - rxp = re.compile(r"\[(.+?)\]: \[(.+?)\]") - - for line in output.splitlines(): - line = line.strip() - if line == "": - continue - - matches = re.findall(rxp, line) - if not matches or len(matches[0]) != 2: - continue - - key = matches[0][0] - value = matches[0][1] - results[key] = value - - return results - def run(self): self._adb_connect() output = self._adb_command("getprop") self._adb_disconnect() - self.results = self.parse_getprop(output) + self.results = parse_getprop(output) self.log.info("Extracted %d Android system properties", len(self.results)) diff --git a/mvt/android/modules/bugreport/getprop.py b/mvt/android/modules/bugreport/getprop.py index 92e5d6c..89bf7d5 100644 --- a/mvt/android/modules/bugreport/getprop.py +++ b/mvt/android/modules/bugreport/getprop.py @@ -6,7 +6,7 @@ import logging import re -from mvt.android.modules.adb.getprop import Getprop as GP +from mvt.android.parsers import parse_getprop from .base import BugReportModule @@ -48,6 +48,6 @@ class Getprop(BugReportModule): lines.append(line) - self.results = GP.parse_getprop("\n".join(lines)) + self.results = parse_getprop("\n".join(lines)) self.log.info("Extracted %d Android system properties", len(self.results)) diff --git a/mvt/android/parsers/__init__.py b/mvt/android/parsers/__init__.py index 2cc2bac..c8b0507 100644 --- a/mvt/android/parsers/__init__.py +++ b/mvt/android/parsers/__init__.py @@ -8,3 +8,4 @@ from .dumpsys import (parse_dumpsys_accessibility, parse_dumpsys_battery_daily, parse_dumpsys_battery_history, parse_dumpsys_dbinfo, parse_dumpsys_receiver_resolver_table) +from .getprop import parse_getprop diff --git a/mvt/android/parsers/getprop.py b/mvt/android/parsers/getprop.py new file mode 100644 index 0000000..b6c4c1f --- /dev/null +++ b/mvt/android/parsers/getprop.py @@ -0,0 +1,26 @@ +# Mobile Verification Toolkit (MVT) +# Copyright (c) 2021-2022 The MVT Project Authors. +# Use of this software is governed by the MVT License 1.1 that can be found at +# https://license.mvt.re/1.1/ + +import re + + +def parse_getprop(output): + results = {} + rxp = re.compile(r"\[(.+?)\]: \[(.+?)\]") + + for line in output.splitlines(): + line = line.strip() + if line == "": + continue + + matches = re.findall(rxp, line) + if not matches or len(matches[0]) != 2: + continue + + key = matches[0][0] + value = matches[0][1] + results[key] = value + + return results