Catching check if root exception more grafully (closes: #5)

This commit is contained in:
Nex 2021-08-05 08:49:34 +02:00
parent 0bc660a2b3
commit 76e6138d77
2 changed files with 9 additions and 2 deletions

View File

@ -17,7 +17,7 @@ from adb_shell.auth.sign_pythonrsa import PythonRSASigner
from adb_shell.exceptions import AdbCommandFailureException, DeviceAuthError from adb_shell.exceptions import AdbCommandFailureException, DeviceAuthError
from usb1 import USBErrorAccess, USBErrorBusy from usb1 import USBErrorAccess, USBErrorBusy
from mvt.common.module import MVTModule from mvt.common.module import MVTModule, InsufficientPrivileges
log = logging.getLogger(__name__) log = logging.getLogger(__name__)
@ -105,7 +105,7 @@ class AndroidExtraction(MVTModule):
"""Check if we have a `su` binary, otherwise raise an Exception. """Check if we have a `su` binary, otherwise raise an Exception.
""" """
if not self._adb_check_if_root(): if not self._adb_check_if_root():
raise Exception("The Android device does not seem to have a `su` binary. Cannot run this module.") raise InsufficientPrivileges("The Android device does not seem to have a `su` binary. Cannot run this module.")
def _adb_command_as_root(self, command): def _adb_command_as_root(self, command):
"""Execute an adb shell command. """Execute an adb shell command.
@ -120,6 +120,8 @@ class AndroidExtraction(MVTModule):
:returns: Boolean indicating whether the file exists or not :returns: Boolean indicating whether the file exists or not
""" """
# TODO: Need to support checking files without root privileges as well.
# Connect to the device over adb. # Connect to the device over adb.
self._adb_connect() self._adb_connect()
# Check if we have root, if not raise an Exception. # Check if we have root, if not raise an Exception.

View File

@ -21,6 +21,9 @@ class DatabaseNotFoundError(Exception):
class DatabaseCorruptedError(Exception): class DatabaseCorruptedError(Exception):
pass pass
class InsufficientPrivileges(Exception):
pass
class MVTModule(object): class MVTModule(object):
"""This class provides a base for all extraction modules.""" """This class provides a base for all extraction modules."""
@ -150,6 +153,8 @@ def run_module(module):
except NotImplementedError: except NotImplementedError:
module.log.exception("The run() procedure of module %s was not implemented yet!", module.log.exception("The run() procedure of module %s was not implemented yet!",
module.__class__.__name__) module.__class__.__name__)
except InsufficientPrivileges as e:
module.log.info("Insufficient privileges for module %s: %s", module.__class.__name__, e)
except DatabaseNotFoundError as e: except DatabaseNotFoundError as e:
module.log.info("There might be no data to extract by module %s: %s", module.log.info("There might be no data to extract by module %s: %s",
module.__class__.__name__, e) module.__class__.__name__, e)