mvt/mvt/android/modules/adb/settings.py

59 lines
1.7 KiB
Python
Raw Normal View History

2022-01-27 12:33:06 +00:00
# Mobile Verification Toolkit (MVT)
2023-09-09 15:55:27 +00:00
# Copyright (c) 2021-2023 The MVT Authors.
2022-01-27 12:33:06 +00:00
# Use of this software is governed by the MVT License 1.1 that can be found at
# https://license.mvt.re/1.1/
import logging
from typing import Optional
2022-01-27 12:33:06 +00:00
from mvt.android.artifacts.settings import Settings as SettingsArtifact
2022-01-27 12:33:06 +00:00
from .base import AndroidExtraction
2022-01-29 14:13:35 +00:00
class Settings(SettingsArtifact, AndroidExtraction):
2022-01-27 12:33:06 +00:00
"""This module extracts Android system settings."""
def __init__(
self,
2022-08-17 13:52:17 +00:00
file_path: Optional[str] = None,
target_path: Optional[str] = None,
results_path: Optional[str] = None,
module_options: Optional[dict] = None,
log: logging.Logger = logging.getLogger(__name__),
results: Optional[list] = None,
) -> None:
super().__init__(
file_path=file_path,
target_path=target_path,
results_path=results_path,
module_options=module_options,
log=log,
results=results,
)
2022-01-27 12:33:06 +00:00
self.results = {} if not results else results
2022-06-17 20:30:46 +00:00
def run(self) -> None:
2022-01-27 12:33:06 +00:00
self._adb_connect()
for namespace in ["system", "secure", "global"]:
out = self._adb_command(f"cmd settings list {namespace}")
if not out:
continue
self.results[namespace] = {}
for line in out.splitlines():
line = line.strip()
if line == "":
continue
fields = line.split("=", 1)
try:
self.results[namespace][fields[0]] = fields[1]
except IndexError:
continue
self._adb_disconnect()