Fixes mypy typing issues

This commit is contained in:
tek 2023-02-21 15:18:36 -05:00
parent 89c6a35c26
commit 55f6a4ae54
12 changed files with 52 additions and 40 deletions

View File

@ -9,7 +9,7 @@ import os
import sys
import tarfile
from pathlib import Path
from typing import Callable, Optional
from typing import Callable, Optional, List
from rich.prompt import Prompt
@ -17,6 +17,7 @@ from mvt.android.parsers.backup import (AndroidBackupParsingError,
InvalidBackupPassword, parse_ab_header,
parse_backup_file)
from mvt.common.command import Command
from mvt.android.modules.backup.base import BackupExtraction
from .modules.backup import BACKUP_MODULES
@ -43,11 +44,14 @@ class CmdAndroidCheckBackup(Command):
self.name = "check-backup"
self.modules = BACKUP_MODULES
self.backup_type = None
self.backup_archive = None
self.backup_files = []
self.backup_type: str = ""
self.backup_archive: Optional[tarfile.TarFile] = None
self.backup_files: List[str] = []
def init(self) -> None:
if not self.target_path:
return
if os.path.isfile(self.target_path):
self.backup_type = "ab"
with open(self.target_path, "rb") as handle:
@ -88,7 +92,7 @@ class CmdAndroidCheckBackup(Command):
"Android Backup (.ab) file")
sys.exit(1)
def module_init(self, module: Callable) -> None:
def module_init(self, module: BackupExtraction) -> None: # type: ignore[override]
if self.backup_type == "folder":
module.from_folder(self.target_path, self.backup_files)
else:

View File

@ -6,10 +6,11 @@
import logging
import os
from pathlib import Path
from typing import Callable, Optional
from typing import Callable, Optional, List
from zipfile import ZipFile
from mvt.common.command import Command
from mvt.android.modules.bugreport.base import BugReportModule
from .modules.bugreport import BUGREPORT_MODULES
@ -36,11 +37,14 @@ class CmdAndroidCheckBugreport(Command):
self.name = "check-bugreport"
self.modules = BUGREPORT_MODULES
self.bugreport_format = None
self.bugreport_archive = None
self.bugreport_files = []
self.bugreport_format: str = ""
self.bugreport_archive: Optional[ZipFile] = None
self.bugreport_files: List[str] = []
def init(self) -> None:
if not self.target_path:
return
if os.path.isfile(self.target_path):
self.bugreport_format = "zip"
self.bugreport_archive = ZipFile(self.target_path)
@ -55,7 +59,7 @@ class CmdAndroidCheckBugreport(Command):
parent_path)
self.bugreport_files.append(file_path)
def module_init(self, module: Callable) -> None:
def module_init(self, module: BugReportModule) -> None: # type: ignore[override]
if self.bugreport_format == "zip":
module.from_zip(self.bugreport_archive, self.bugreport_files)
else:

View File

@ -4,7 +4,7 @@
# https://license.mvt.re/1.1/
import logging
from typing import Optional, Union
from typing import Optional, Union, List
from rich.console import Console
from rich.progress import track
@ -39,7 +39,7 @@ DANGEROUS_PERMISSIONS = [
"android.permission.USE_SIP",
"com.android.browser.permission.READ_HISTORY_BOOKMARKS",
]
ROOT_PACKAGES = [
ROOT_PACKAGES: List[str] = [
"com.noshufou.android.su",
"com.noshufou.android.su.elite",
"eu.chainfire.supersu",

View File

@ -6,7 +6,7 @@
import fnmatch
import logging
import os
from typing import Optional
from typing import Union, List, Dict, Any, Optional
from mvt.common.module import MVTModule
@ -21,7 +21,7 @@ class AndroidQFModule(MVTModule):
results_path: Optional[str] = None,
fast_mode: Optional[bool] = False,
log: logging.Logger = logging.getLogger(__name__),
results: Optional[list] = None
results: Union[List[Dict[str, Any]], Dict[str, Any], None] = None
) -> None:
super().__init__(file_path=file_path, target_path=target_path,
results_path=results_path, fast_mode=fast_mode,

View File

@ -5,7 +5,7 @@
import logging
from datetime import datetime
from typing import Optional, Union
from typing import Optional, Union, List, Any, Dict
from mvt.android.modules.adb.packages import (DANGEROUS_PERMISSIONS,
DANGEROUS_PERMISSIONS_THRESHOLD,
@ -26,7 +26,7 @@ class DumpsysPackages(AndroidQFModule):
results_path: Optional[str] = None,
fast_mode: Optional[bool] = False,
log: logging.Logger = logging.getLogger(__name__),
results: Optional[list] = None
results: Optional[List[Dict[str, Any]]] = None
) -> None:
super().__init__(file_path=file_path, target_path=target_path,
results_path=results_path, fast_mode=fast_mode,

View File

@ -4,7 +4,7 @@
# https://license.mvt.re/1.1/
import logging
from typing import Optional
from typing import Optional, List, Dict, Union, Any
from mvt.android.modules.adb.dumpsys_receivers import (
INTENT_DATA_SMS_RECEIVED, INTENT_NEW_OUTGOING_CALL,
@ -24,7 +24,7 @@ class DumpsysReceivers(AndroidQFModule):
results_path: Optional[str] = None,
fast_mode: Optional[bool] = False,
log: logging.Logger = logging.getLogger(__name__),
results: Optional[list] = None
results: Union[List[Any], Dict[str, Any], None] = None
) -> None:
super().__init__(file_path=file_path, target_path=target_path,
results_path=results_path, fast_mode=fast_mode,

View File

@ -7,7 +7,7 @@ import fnmatch
import logging
import os
from tarfile import TarFile
from typing import Optional
from typing import Optional, List
from mvt.common.module import MVTModule
@ -32,14 +32,14 @@ class BackupExtraction(MVTModule):
self.tar = None
self.files = []
def from_folder(self, backup_path: str, files: list) -> None:
def from_folder(self, backup_path: Optional[str], files: List[str]) -> None:
"""
Get all the files and list them
"""
self.backup_path = backup_path
self.files = files
def from_ab(self, file_path: str, tar: TarFile, files: list) -> None:
def from_ab(self, file_path: Optional[str], tar: Optional[TarFile], files: List[str]) -> None:
"""
Extract the files
"""

View File

@ -6,7 +6,7 @@
import fnmatch
import logging
import os
from typing import Optional
from typing import Optional, List
from zipfile import ZipFile
from mvt.common.module import MVTModule
@ -28,16 +28,16 @@ class BugReportModule(MVTModule):
results_path=results_path, fast_mode=fast_mode,
log=log, results=results)
self.zip_archive = None
self.extract_path = None
self.extract_files = []
self.zip_files = []
self.zip_archive: Optional[ZipFile] = None
self.extract_path: Optional[str] = None
self.extract_files: List[str] = []
self.zip_files: List[str] = []
def from_folder(self, extract_path: str, extract_files: str) -> None:
def from_folder(self, extract_path: Optional[str], extract_files: List[str]) -> None:
self.extract_path = extract_path
self.extract_files = extract_files
def from_zip(self, zip_archive: ZipFile, zip_files: list) -> None:
def from_zip(self, zip_archive: Optional[ZipFile], zip_files: List[str]) -> None:
self.zip_archive = zip_archive
self.zip_files = zip_files

View File

@ -4,12 +4,13 @@
# https://license.mvt.re/1.1/
import re
from typing import List, Dict, Any
from datetime import datetime
from mvt.common.utils import convert_datetime_to_iso
def parse_dumpsys_accessibility(output: str) -> list:
def parse_dumpsys_accessibility(output: str) -> List[Dict[str, str]]:
results = []
in_services = False
@ -34,7 +35,7 @@ def parse_dumpsys_accessibility(output: str) -> list:
return results
def parse_dumpsys_activity_resolver_table(output: str) -> dict:
def parse_dumpsys_activity_resolver_table(output: str) -> Dict[str, Any]:
results = {}
in_activity_resolver_table = False
@ -138,7 +139,7 @@ def parse_dumpsys_battery_daily(output: str) -> list:
return results
def parse_dumpsys_battery_history(output: str) -> list:
def parse_dumpsys_battery_history(output: str) -> List[Dict[str, Any]]:
results = []
for line in output.splitlines():
@ -194,7 +195,7 @@ def parse_dumpsys_battery_history(output: str) -> list:
return results
def parse_dumpsys_dbinfo(output: str) -> list:
def parse_dumpsys_dbinfo(output: str) -> List[Dict[str, Any]]:
results = []
rxp = re.compile(r'.*\[([0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}:[0-9]{2}\.[0-9]{3})\].*\[Pid:\((\d+)\)\](\w+).*sql\=\"(.+?)\"') # pylint: disable=line-too-long
@ -247,7 +248,7 @@ def parse_dumpsys_dbinfo(output: str) -> list:
return results
def parse_dumpsys_receiver_resolver_table(output: str) -> dict:
def parse_dumpsys_receiver_resolver_table(output: str) -> Dict[str, Any]:
results = {}
in_receiver_resolver_table = False
@ -304,7 +305,7 @@ def parse_dumpsys_receiver_resolver_table(output: str) -> dict:
return results
def parse_dumpsys_appops(output: str) -> list:
def parse_dumpsys_appops(output: str) -> List[Dict[str, Any]]:
results = []
perm = {}
package = {}
@ -389,7 +390,7 @@ def parse_dumpsys_appops(output: str) -> list:
return results
def parse_dumpsys_package_for_details(output: str) -> dict:
def parse_dumpsys_package_for_details(output: str) -> Dict[str, Any]:
"""
Parse one entry of a dumpsys package information
"""
@ -480,7 +481,7 @@ def parse_dumpsys_package_for_details(output: str) -> dict:
return details
def parse_dumpsys_packages(output: str) -> list:
def parse_dumpsys_packages(output: str) -> List[Dict[str, Any]]:
"""
Parse the dumpsys package service data
"""

View File

@ -12,7 +12,7 @@ from datetime import datetime
from typing import Callable, Optional
from mvt.common.indicators import Indicators
from mvt.common.module import run_module, save_timeline
from mvt.common.module import run_module, save_timeline, MVTModule
from mvt.common.utils import convert_datetime_to_iso, generate_hashes_from_path, get_sha256_from_file_path
from mvt.common.version import MVT_VERSION
@ -142,7 +142,7 @@ class Command:
def init(self) -> None:
raise NotImplementedError
def module_init(self, module: Callable) -> None:
def module_init(self, module: MVTModule) -> None:
raise NotImplementedError
def finish(self) -> None:

View File

@ -7,7 +7,7 @@ import csv
import logging
import os
import re
from typing import Callable, Optional, Union
from typing import Callable, Optional, Union, List, Any, Dict
import simplejson as json
@ -37,7 +37,7 @@ class MVTModule:
results_path: Optional[str] = None,
fast_mode: Optional[bool] = False,
log: logging.Logger = logging.getLogger(__name__),
results: Optional[list] = None
results: Union[List[Dict[str, Any]], Dict[str, Any], None] = None
) -> None:
"""Initialize module.

View File

@ -83,3 +83,6 @@ disable =
missing-function-docstring,
#duplicate-code,
#line-too-long,
[mypy]
ignore_missing_imports = True