From 4ed8ff51ffd21bbcf9b1017b4be39b1ff40dc25b Mon Sep 17 00:00:00 2001 From: tek Date: Wed, 1 Mar 2023 16:43:08 -0500 Subject: [PATCH] Improves code PEP8 compliance and adds ruff check --- .github/workflows/ruff.yml | 21 +++++++++++++++++++ Makefile | 5 +++++ mvt/android/cli.py | 5 ++--- mvt/android/cmd_check_backup.py | 4 ++-- mvt/android/cmd_check_bugreport.py | 4 ++-- mvt/android/modules/adb/packages.py | 2 +- mvt/android/modules/androidqf/base.py | 2 +- .../modules/androidqf/dumpsys_packages.py | 4 +--- .../modules/androidqf/dumpsys_receivers.py | 2 +- mvt/android/modules/androidqf/sms.py | 6 +++--- mvt/android/modules/backup/base.py | 2 +- mvt/android/modules/bugreport/base.py | 2 +- mvt/android/parsers/dumpsys.py | 2 +- mvt/common/command.py | 9 ++++---- mvt/common/module.py | 2 +- mvt/common/utils.py | 4 ++-- mvt/ios/cli.py | 6 +++--- mvt/ios/versions.py | 3 +-- ruff.toml | 6 ++++++ .../test_dumpsysaccessbility.py | 8 +++---- tests/android_androidqf/test_dumpsysappops.py | 8 +++---- .../android_androidqf/test_dumpsyspackages.py | 6 +++--- .../test_dumpsysreceivers.py | 8 +++---- tests/android_androidqf/test_settings.py | 6 +++--- tests/common/test_utils.py | 6 ++++-- .../test_webkit_resource_load_statistics.py | 3 --- 26 files changed, 79 insertions(+), 57 deletions(-) create mode 100644 .github/workflows/ruff.yml create mode 100644 ruff.toml diff --git a/.github/workflows/ruff.yml b/.github/workflows/ruff.yml new file mode 100644 index 0000000..fb914a5 --- /dev/null +++ b/.github/workflows/ruff.yml @@ -0,0 +1,21 @@ +name: Ruff +on: [push] + +jobs: + ruff_py3: + name: Ruff syntax check + runs-on: ubuntu-latest + steps: + - name: Setup Python + uses: actions/setup-python@v1 + with: + python-version: 3.9 + architecture: x64 + - name: Checkout + uses: actions/checkout@master + - name: Install Dependencies + run: | + pip install ruff + - name: ruff + run: | + ruff check . diff --git a/Makefile b/Makefile index 3e23501..b0bfb9e 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,10 @@ PWD = $(shell pwd) +check: + flake8 + pytest -q + ruff check -q . + clean: rm -rf $(PWD)/build $(PWD)/dist $(PWD)/mvt.egg-info diff --git a/mvt/android/cli.py b/mvt/android/cli.py index 00057a8..64138cb 100644 --- a/mvt/android/cli.py +++ b/mvt/android/cli.py @@ -9,10 +9,9 @@ import click from rich.logging import RichHandler from mvt.common.cmd_check_iocs import CmdCheckIOCS -from mvt.common.help import (HELP_MSG_FAST, HELP_MSG_IOC, +from mvt.common.help import (HELP_MSG_FAST, HELP_MSG_HASHES, HELP_MSG_IOC, HELP_MSG_LIST_MODULES, HELP_MSG_MODULE, - HELP_MSG_OUTPUT, HELP_MSG_SERIAL, - HELP_MSG_HASHES) + HELP_MSG_OUTPUT, HELP_MSG_SERIAL) from mvt.common.logo import logo from mvt.common.updates import IndicatorsUpdates diff --git a/mvt/android/cmd_check_backup.py b/mvt/android/cmd_check_backup.py index 3df1fe6..a7ab4d4 100644 --- a/mvt/android/cmd_check_backup.py +++ b/mvt/android/cmd_check_backup.py @@ -9,15 +9,15 @@ import os import sys import tarfile from pathlib import Path -from typing import Callable, Optional, List +from typing import List, Optional from rich.prompt import Prompt +from mvt.android.modules.backup.base import BackupExtraction 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 diff --git a/mvt/android/cmd_check_bugreport.py b/mvt/android/cmd_check_bugreport.py index b92e6c3..5126136 100644 --- a/mvt/android/cmd_check_bugreport.py +++ b/mvt/android/cmd_check_bugreport.py @@ -6,11 +6,11 @@ import logging import os from pathlib import Path -from typing import Callable, Optional, List +from typing import List, Optional from zipfile import ZipFile -from mvt.common.command import Command from mvt.android.modules.bugreport.base import BugReportModule +from mvt.common.command import Command from .modules.bugreport import BUGREPORT_MODULES diff --git a/mvt/android/modules/adb/packages.py b/mvt/android/modules/adb/packages.py index 5d4aaa5..d3950b1 100644 --- a/mvt/android/modules/adb/packages.py +++ b/mvt/android/modules/adb/packages.py @@ -4,7 +4,7 @@ # https://license.mvt.re/1.1/ import logging -from typing import Optional, Union, List +from typing import List, Optional, Union from rich.console import Console from rich.progress import track diff --git a/mvt/android/modules/androidqf/base.py b/mvt/android/modules/androidqf/base.py index ab06110..f996cb6 100644 --- a/mvt/android/modules/androidqf/base.py +++ b/mvt/android/modules/androidqf/base.py @@ -6,7 +6,7 @@ import fnmatch import logging import os -from typing import Union, List, Dict, Any, Optional +from typing import Any, Dict, List, Optional, Union from mvt.common.module import MVTModule diff --git a/mvt/android/modules/androidqf/dumpsys_packages.py b/mvt/android/modules/androidqf/dumpsys_packages.py index dc83b41..699ca3a 100644 --- a/mvt/android/modules/androidqf/dumpsys_packages.py +++ b/mvt/android/modules/androidqf/dumpsys_packages.py @@ -4,14 +4,12 @@ # https://license.mvt.re/1.1/ import logging -from datetime import datetime -from typing import Optional, Union, List, Any, Dict +from typing import Any, Dict, List, Optional, Union from mvt.android.modules.adb.packages import (DANGEROUS_PERMISSIONS, DANGEROUS_PERMISSIONS_THRESHOLD, ROOT_PACKAGES) from mvt.android.parsers.dumpsys import parse_dumpsys_packages -from mvt.common.utils import convert_datetime_to_iso from .base import AndroidQFModule diff --git a/mvt/android/modules/androidqf/dumpsys_receivers.py b/mvt/android/modules/androidqf/dumpsys_receivers.py index 0399511..8614ea0 100644 --- a/mvt/android/modules/androidqf/dumpsys_receivers.py +++ b/mvt/android/modules/androidqf/dumpsys_receivers.py @@ -4,7 +4,7 @@ # https://license.mvt.re/1.1/ import logging -from typing import Optional, List, Dict, Union, Any +from typing import Any, Dict, List, Optional, Union from mvt.android.modules.adb.dumpsys_receivers import ( INTENT_DATA_SMS_RECEIVED, INTENT_NEW_OUTGOING_CALL, diff --git a/mvt/android/modules/androidqf/sms.py b/mvt/android/modules/androidqf/sms.py index ee60e8e..cc96f0c 100644 --- a/mvt/android/modules/androidqf/sms.py +++ b/mvt/android/modules/androidqf/sms.py @@ -1,7 +1,7 @@ -# Mobile Verification Toolkit (MVT) - Private +# Mobile Verification Toolkit (MVT) # Copyright (c) 2021-2023 Claudio Guarnieri. -# This file is part of MVT Private and its content is confidential. -# Please refer to the project maintainers before sharing with others. +# Use of this software is governed by the MVT License 1.1 that can be found at +# https://license.mvt.re/1.1 import getpass import logging diff --git a/mvt/android/modules/backup/base.py b/mvt/android/modules/backup/base.py index 39b1e7d..5e6aa18 100644 --- a/mvt/android/modules/backup/base.py +++ b/mvt/android/modules/backup/base.py @@ -7,7 +7,7 @@ import fnmatch import logging import os from tarfile import TarFile -from typing import Optional, List +from typing import List, Optional from mvt.common.module import MVTModule diff --git a/mvt/android/modules/bugreport/base.py b/mvt/android/modules/bugreport/base.py index 00c063b..ee97a33 100644 --- a/mvt/android/modules/bugreport/base.py +++ b/mvt/android/modules/bugreport/base.py @@ -6,7 +6,7 @@ import fnmatch import logging import os -from typing import Optional, List +from typing import List, Optional from zipfile import ZipFile from mvt.common.module import MVTModule diff --git a/mvt/android/parsers/dumpsys.py b/mvt/android/parsers/dumpsys.py index f10a2cf..04a3a66 100644 --- a/mvt/android/parsers/dumpsys.py +++ b/mvt/android/parsers/dumpsys.py @@ -4,8 +4,8 @@ # https://license.mvt.re/1.1/ import re -from typing import List, Dict, Any from datetime import datetime +from typing import Any, Dict, List from mvt.common.utils import convert_datetime_to_iso diff --git a/mvt/common/command.py b/mvt/common/command.py index 20516c0..7b95c3d 100644 --- a/mvt/common/command.py +++ b/mvt/common/command.py @@ -3,17 +3,18 @@ # Use of this software is governed by the MVT License 1.1 that can be found at # https://license.mvt.re/1.1/ -import hashlib import json import logging import os import sys from datetime import datetime -from typing import Callable, Optional +from typing import Optional from mvt.common.indicators import Indicators -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.module import MVTModule, run_module, save_timeline +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 diff --git a/mvt/common/module.py b/mvt/common/module.py index a92e874..cd35535 100644 --- a/mvt/common/module.py +++ b/mvt/common/module.py @@ -7,7 +7,7 @@ import csv import logging import os import re -from typing import Callable, Optional, Union, List, Any, Dict +from typing import Any, Callable, Dict, List, Optional, Union import simplejson as json diff --git a/mvt/common/utils.py b/mvt/common/utils.py index 3658589..bd4ad6c 100644 --- a/mvt/common/utils.py +++ b/mvt/common/utils.py @@ -3,11 +3,11 @@ # Use of this software is governed by the MVT License 1.1 that can be found at # https://license.mvt.re/1.1/ -import os import datetime import hashlib +import os import re -from typing import Union, Iterator +from typing import Iterator, Union def convert_chrometime_to_datetime(timestamp: int) -> datetime.datetime: diff --git a/mvt/ios/cli.py b/mvt/ios/cli.py index 90e6386..2a82f94 100644 --- a/mvt/ios/cli.py +++ b/mvt/ios/cli.py @@ -3,18 +3,18 @@ # Use of this software is governed by the MVT License 1.1 that can be found at # https://license.mvt.re/1.1/ +import json import logging import os -import json import click from rich.logging import RichHandler from rich.prompt import Prompt from mvt.common.cmd_check_iocs import CmdCheckIOCS -from mvt.common.help import (HELP_MSG_FAST, HELP_MSG_IOC, +from mvt.common.help import (HELP_MSG_FAST, HELP_MSG_HASHES, HELP_MSG_IOC, HELP_MSG_LIST_MODULES, HELP_MSG_MODULE, - HELP_MSG_OUTPUT, HELP_MSG_HASHES) + HELP_MSG_OUTPUT) from mvt.common.logo import logo from mvt.common.options import MutuallyExclusiveOption from mvt.common.updates import IndicatorsUpdates diff --git a/mvt/ios/versions.py b/mvt/ios/versions.py index 05c8a6d..9436c6e 100644 --- a/mvt/ios/versions.py +++ b/mvt/ios/versions.py @@ -2,9 +2,8 @@ # Copyright (c) 2021-2023 Claudio Guarnieri. # Use of this software is governed by the MVT License 1.1 that can be found at # https://license.mvt.re/1.1/ -from typing import Dict from logging import Logger -from typing import Optional +from typing import Dict, Optional import packaging diff --git a/ruff.toml b/ruff.toml new file mode 100644 index 0000000..ffb51b0 --- /dev/null +++ b/ruff.toml @@ -0,0 +1,6 @@ +# Never enforce `E501` (line length violations). +ignore = ["E501"] + +# Ignore `E402` (import violations) in all `__init__.py` files, and in `path/to/file.py`. +[per-file-ignores] +"__init__.py" = ["F401"] diff --git a/tests/android_androidqf/test_dumpsysaccessbility.py b/tests/android_androidqf/test_dumpsysaccessbility.py index 82e572a..a84d46e 100644 --- a/tests/android_androidqf/test_dumpsysaccessbility.py +++ b/tests/android_androidqf/test_dumpsysaccessbility.py @@ -1,9 +1,7 @@ -# Mobile Verification Toolkit (MVT) - Private +# Mobile Verification Toolkit (MVT) # Copyright (c) 2021-2023 Claudio Guarnieri. -# This file is part of MVT Private and its content is confidential. -# Please refer to the project maintainers before sharing with others. - -import logging +# Use of this software is governed by the MVT License 1.1 that can be found at +# https://license.mvt.re/1.1/ from mvt.android.modules.androidqf.dumpsys_accessibility import \ DumpsysAccessibility diff --git a/tests/android_androidqf/test_dumpsysappops.py b/tests/android_androidqf/test_dumpsysappops.py index 0787863..c1914b5 100644 --- a/tests/android_androidqf/test_dumpsysappops.py +++ b/tests/android_androidqf/test_dumpsysappops.py @@ -1,9 +1,7 @@ -# Mobile Verification Toolkit (MVT) - Private +# Mobile Verification Toolkit (MVT) # Copyright (c) 2021-2023 Claudio Guarnieri. -# This file is part of MVT Private and its content is confidential. -# Please refer to the project maintainers before sharing with others. - -import logging +# Use of this software is governed by the MVT License 1.1 that can be found at +# https://license.mvt.re/1.1/ from mvt.android.modules.androidqf.dumpsys_appops import DumpsysAppops from mvt.common.module import run_module diff --git a/tests/android_androidqf/test_dumpsyspackages.py b/tests/android_androidqf/test_dumpsyspackages.py index 3bf78db..1421aaf 100644 --- a/tests/android_androidqf/test_dumpsyspackages.py +++ b/tests/android_androidqf/test_dumpsyspackages.py @@ -1,7 +1,7 @@ -# Mobile Verification Toolkit (MVT) - Private +# Mobile Verification Toolkit (MVT) # Copyright (c) 2021-2023 Claudio Guarnieri. -# This file is part of MVT Private and its content is confidential. -# Please refer to the project maintainers before sharing with others. +# 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 diff --git a/tests/android_androidqf/test_dumpsysreceivers.py b/tests/android_androidqf/test_dumpsysreceivers.py index d996303..45b4aca 100644 --- a/tests/android_androidqf/test_dumpsysreceivers.py +++ b/tests/android_androidqf/test_dumpsysreceivers.py @@ -1,9 +1,7 @@ -# Mobile Verification Toolkit (MVT) - Private +# Mobile Verification Toolkit (MVT) # Copyright (c) 2021-2023 Claudio Guarnieri. -# This file is part of MVT Private and its content is confidential. -# Please refer to the project maintainers before sharing with others. - -import logging +# Use of this software is governed by the MVT License 1.1 that can be found at +# https://license.mvt.re/1.1/ from mvt.android.modules.androidqf.dumpsys_receivers import DumpsysReceivers from mvt.common.module import run_module diff --git a/tests/android_androidqf/test_settings.py b/tests/android_androidqf/test_settings.py index 824982d..2aa3797 100644 --- a/tests/android_androidqf/test_settings.py +++ b/tests/android_androidqf/test_settings.py @@ -1,7 +1,7 @@ -# Mobile Verification Toolkit (MVT) - Private +# Mobile Verification Toolkit (MVT) # Copyright (c) 2021-2023 Claudio Guarnieri. -# This file is part of MVT Private and its content is confidential. -# Please refer to the project maintainers before sharing with others. +# Use of this software is governed by the MVT License 1.1 that can be found at +# https://license.mvt.re/1.1/ from mvt.android.modules.androidqf.settings import Settings from mvt.common.module import run_module diff --git a/tests/common/test_utils.py b/tests/common/test_utils.py index 2d4af40..3d3f9ca 100644 --- a/tests/common/test_utils.py +++ b/tests/common/test_utils.py @@ -3,15 +3,17 @@ # Use of this software is governed by the MVT License 1.1 that can be found at # https://license.mvt.re/1.1/ -import os import logging -from ..utils import get_artifact_folder +import os + from mvt.common.utils import (convert_datetime_to_iso, convert_mactime_to_iso, convert_unix_to_iso, convert_unix_to_utc_datetime, generate_hashes_from_path, get_sha256_from_file_path) +from ..utils import get_artifact_folder + TEST_DATE_EPOCH = 1626566400 TEST_DATE_ISO = "2021-07-18 00:00:00.000000" TEST_DATE_MAC = TEST_DATE_EPOCH - 978307200 diff --git a/tests/ios_backup/test_webkit_resource_load_statistics.py b/tests/ios_backup/test_webkit_resource_load_statistics.py index 9fed33e..c6da371 100644 --- a/tests/ios_backup/test_webkit_resource_load_statistics.py +++ b/tests/ios_backup/test_webkit_resource_load_statistics.py @@ -3,9 +3,6 @@ # 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 mvt.common.indicators import Indicators from mvt.common.module import run_module from mvt.ios.modules.mixed.webkit_resource_load_statistics import \ WebkitResourceLoadStatistics