Repository Analysis

mvt-project/mvt

MVT (Mobile Verification Toolkit) helps with conducting forensics of mobile devices in order to find signs of a potential compromise.

15.5 Moderate AI signal View on GitHub
15.5
Adjusted Score
15.5
Raw Score
100%
Time Factor
2026-05-16
Last Push
12,454
Stars
Python
Language
26,690
Lines of Code
250
Files
251
Pattern Hits
2026-05-31
Scan Date

Score History

Severity Breakdown

CRITICAL 0HIGH 8MEDIUM 62LOW 181

Pattern Findings

251 matches across 11 categories. Click a row to expand file-level details.

Decorative Section Separators48 hits · 168 pts
SeverityFileLineSnippet
MEDIUMsrc/mvt/ios/cli.py68# ==============================================================================
MEDIUMsrc/mvt/ios/cli.py70# ==============================================================================
MEDIUMsrc/mvt/ios/cli.py91# ==============================================================================
MEDIUMsrc/mvt/ios/cli.py93# ==============================================================================
MEDIUMsrc/mvt/ios/cli.py99# ==============================================================================
MEDIUMsrc/mvt/ios/cli.py101# ==============================================================================
MEDIUMsrc/mvt/ios/cli.py172# ==============================================================================
MEDIUMsrc/mvt/ios/cli.py174# ==============================================================================
MEDIUMsrc/mvt/ios/cli.py214# ==============================================================================
MEDIUMsrc/mvt/ios/cli.py216# ==============================================================================
MEDIUMsrc/mvt/ios/cli.py264# ==============================================================================
MEDIUMsrc/mvt/ios/cli.py266# ==============================================================================
MEDIUMsrc/mvt/ios/cli.py310# ==============================================================================
MEDIUMsrc/mvt/ios/cli.py312# ==============================================================================
MEDIUMsrc/mvt/ios/cli.py345# ==============================================================================
MEDIUMsrc/mvt/ios/cli.py347# ==============================================================================
MEDIUMsrc/mvt/android/cli.py62# ==============================================================================
MEDIUMsrc/mvt/android/cli.py64# ==============================================================================
MEDIUMsrc/mvt/android/cli.py85# ==============================================================================
MEDIUMsrc/mvt/android/cli.py87# ==============================================================================
MEDIUMsrc/mvt/android/cli.py93# ==============================================================================
MEDIUMsrc/mvt/android/cli.py95# ==============================================================================
MEDIUMsrc/mvt/android/cli.py105# ==============================================================================
MEDIUMsrc/mvt/android/cli.py107# ==============================================================================
MEDIUMsrc/mvt/android/cli.py149# ==============================================================================
MEDIUMsrc/mvt/android/cli.py151# ==============================================================================
MEDIUMsrc/mvt/android/cli.py209# ==============================================================================
MEDIUMsrc/mvt/android/cli.py211# ==============================================================================
MEDIUMsrc/mvt/android/cli.py272# ==============================================================================
MEDIUMsrc/mvt/android/cli.py274# ==============================================================================
MEDIUMsrc/mvt/android/cli.py341# ==============================================================================
MEDIUMsrc/mvt/android/cli.py343# ==============================================================================
MEDIUMsrc/mvt/android/cli.py372# ==============================================================================
MEDIUMsrc/mvt/android/cli.py374# ==============================================================================
MEDIUMsrc/mvt/android/modules/intrusion_logs/base.py330 # ------------------------------------------------------------------
MEDIUMsrc/mvt/android/modules/intrusion_logs/base.py332 # ------------------------------------------------------------------
MEDIUMsrc/mvt/android/modules/intrusion_logs/base.py342 # ------------------------------------------------------------------
MEDIUMsrc/mvt/android/modules/intrusion_logs/base.py344 # ------------------------------------------------------------------
MEDIUMsrc/mvt/android/modules/intrusion_logs/base.py389 # ------------------------------------------------------------------
MEDIUMsrc/mvt/android/modules/intrusion_logs/base.py391 # ------------------------------------------------------------------
MEDIUMsrc/mvt/android/modules/intrusion_logs/base.py71 # ------------------------------------------------------------------
MEDIUMsrc/mvt/android/modules/intrusion_logs/base.py73 # ------------------------------------------------------------------
MEDIUMsrc/mvt/android/modules/intrusion_logs/base.py84 # ------------------------------------------------------------------
MEDIUMsrc/mvt/android/modules/intrusion_logs/base.py86 # ------------------------------------------------------------------
MEDIUMsrc/mvt/android/modules/intrusion_logs/base.py157 # ------------------------------------------------------------------
MEDIUMsrc/mvt/android/modules/intrusion_logs/base.py159 # ------------------------------------------------------------------
MEDIUMsrc/mvt/android/modules/intrusion_logs/base.py247 # ------------------------------------------------------------------
MEDIUMsrc/mvt/android/modules/intrusion_logs/base.py249 # ------------------------------------------------------------------
Hyper-Verbose Identifiers68 hits · 70 pts
SeverityFileLineSnippet
LOWtests/test_check_android_androidqf.py25 def test_check_encrypted_backup_prompt_valid(self, mocker):
LOWtests/test_check_android_androidqf.py39 def test_check_encrypted_backup_cli(self, mocker):
LOWtests/test_check_android_androidqf.py54 def test_check_encrypted_backup_env(self, mocker):
LOWtests/test_check_android_adb_removed.py12 def test_check_adb_exits_nonzero(self):
LOWtests/test_ios_versions.py10 def test_is_ios_version_outdated(self):
LOWtests/utils.py28def get_android_backup_folder():
LOWtests/test_check_android_backup.py20 def test_check_encrypted_backup_prompt_valid(self, mocker):
LOWtests/test_check_android_backup.py32 def test_check_encrypted_backup_cli(self, mocker):
LOWtests/test_check_android_backup.py47 def test_check_encrypted_backup_cli_invalid(self, mocker, caplog):
LOWtests/test_check_android_backup.py60 def test_check_encrypted_backup_env(self, mocker):
LOWtests/common/test_command.py12 def test_store_alerts_handles_bytes(self, tmp_path):
LOWtests/common/test_utils.py32 def test_convert_mactime_to_iso(self):
LOWtests/common/test_utils.py35 def test_convert_unix_to_utc_datetime(self):
LOWtests/common/test_utils.py41 def test_convert_datetime_to_iso(self):
LOWtests/common/test_utils.py45 def test_convert_timezone_aware_to_iso(self):
LOWtests/common/test_alerts.py9def test_as_json_promotes_nested_matched_indicator():
LOWtests/common/test_alerts.py31def test_as_json_removes_nested_matched_indicator_when_parent_exists():
LOWtests/common/test_indicators.py169 def test_check_android_property(self, indicator_file):
LOWtests/android/test_artifact.py11 def test_extract_dumpsys_section(self):
LOWtests/android/test_artifact_dumpsys_battery_daily.py40 def test_uninstall_and_downgrade_create_medium_alerts(self):
LOWtests/android/test_intrusion_logs.py24def test_load_all_events_preserves_unknown_top_level_event(tmp_path):
LOWtests/android/test_intrusion_logs.py50def test_check_intrusion_logs_warns_about_unknown_top_level_event_type(
LOWtests/android/test_intrusion_logs.py73def test_check_intrusion_logs_parses_core_and_unknown_security_events(
LOWtests/android/test_intrusion_logs.py146def test_check_intrusion_logs_cli_lists_modules(tmp_path):
LOWtests/android/test_backup_parser.py14 def test_parsing_noencryption(self):
LOWtests/android/test_artifact_tombstones.py16 def test_tombtone_process_parsing(self):
LOWtests/android/test_artifact_tombstones.py31 def test_tombstone_pb_process_parsing(self):
LOWtests/android/test_artifact_tombstones.py46 def test_tombtone_kernel_parsing(self):
LOWtests/android/test_artifact_tombstones.py55 def validate_tombstone_result(self, tombstone_result: dict):
LOWtests/ios_backup/test_manifest.py19 def test_get_backup_files_from_manifest_closes_connection(self):
LOWtests/android_androidqf/test_packages.py47 def test_non_appstore_warnings(self, caplog, module):
LOWtests/android_androidqf/test_packages.py80 def test_packages_ioc_package_names(self, module, indicators_factory):
LOWtests/android_androidqf/test_packages.py115 def test_packages_certificate_hash_ioc(self, module, indicators_factory):
LOWtests/android_androidqf/test_sms.py30 def test_androidqf_sms_encrypted_password_valid(self):
LOWtests/android_androidqf/test_sms.py43 def test_androidqf_sms_encrypted_password_prompt(self, mocker):
LOWtests/android_androidqf/test_sms.py60 def test_androidqf_sms_encrypted_password_invalid(self, caplog):
LOWtests/android_androidqf/test_sms.py75 def test_androidqf_sms_encrypted_no_interactive(self, caplog):
LOWtests/android_androidqf/test_root_binaries.py40 def test_root_binaries_detection(self, module):
LOWtests/android_androidqf/test_root_binaries.py54 def test_root_binaries_descriptions(self, module):
LOWtests/android_androidqf/test_root_binaries.py80 def test_root_binaries_warnings(self, caplog, module):
LOWtests/android_androidqf/test_root_binaries.py107 def test_no_root_binaries_file(self, parent_data_path):
LOWtests/android_androidqf/test_mounts.py16 def test_parse_mounts_token_checks(self):
LOWtests/android_androidqf/test_mounts.py76 def test_mount_ioc_alert_uses_indicator(self):
LOWtests/android_androidqf/test_mounts.py110 def test_androidqf_module_no_mounts_file(self):
LOWtests/android_androidqf/test_getprop.py43 def test_androidqf_getprop_detection(self, indicator_file):
LOW.github/workflows/scripts/update-ios-releases.py20def parse_latest_ios_versions(rss_feed_text):
LOWsrc/mvt/ios/modules/net_base.py183 def _find_suspicious_processes(self):
LOWsrc/mvt/ios/modules/base.py48 def _recover_sqlite_db_if_needed(
LOWsrc/mvt/ios/modules/base.py107 def _get_backup_files_from_manifest(
LOWsrc/mvt/ios/modules/base.py176 def _get_fs_files_from_patterns(self, root_paths: list) -> Iterator[str]:
LOWsrc/mvt/ios/modules/mixed/idstatuscache.py80 def _extract_idstatuscache_entries(self, file_path):
LOWsrc/mvt/ios/modules/mixed/locationd.py142 def _extract_locationd_entries(self, file_path):
LOWsrc/mvt/ios/modules/mixed/safari_browserstate.py87 def _process_browser_state_db(self, db_path):
LOWsrc/mvt/common/config.py54 def settings_customise_sources(
LOWsrc/mvt/common/updates.py180 def _get_remote_file_latest_commit(
LOWsrc/mvt/common/indicators.py50 def _load_downloaded_indicators(self) -> None:
LOWsrc/mvt/common/indicators.py689 def check_app_certificate_hash(self, cert_hash: str) -> Optional[IndicatorMatch]:
LOWsrc/mvt/common/indicators.py753 def check_android_property_name(
LOWsrc/mvt/common/utils.py45def convert_chrometime_to_datetime(timestamp: int) -> datetime.datetime:
LOWsrc/mvt/common/utils.py76def convert_unix_to_utc_datetime(
8 more matches not shown…
Deep Nesting44 hits · 43 pts
SeverityFileLineSnippet
LOWsrc/mvt/ios/modules/net_base.py183
LOWsrc/mvt/ios/modules/base.py107
LOWsrc/mvt/ios/modules/base.py186
LOW…c/mvt/ios/modules/mixed/webkit_session_resource_log.py69
LOW…c/mvt/ios/modules/mixed/webkit_session_resource_log.py170
LOWsrc/mvt/ios/modules/mixed/interactionc.py282
LOWsrc/mvt/ios/modules/mixed/calendar.py87
LOWsrc/mvt/ios/modules/mixed/safari_browserstate.py60
LOWsrc/mvt/ios/modules/mixed/safari_browserstate.py87
LOW…t/ios/modules/mixed/webkit_resource_load_statistics.py123
LOWsrc/mvt/ios/modules/mixed/tcc.py103
LOWsrc/mvt/ios/modules/backup/configuration_profiles.py88
LOWsrc/mvt/ios/modules/fs/analytics.py85
LOWsrc/mvt/ios/modules/fs/shutdownlog.py76
LOWsrc/mvt/common/alerts.py40
LOWsrc/mvt/common/alerts.py175
LOWsrc/mvt/common/log.py39
LOWsrc/mvt/common/indicators.py58
LOWsrc/mvt/common/indicators.py114
LOWsrc/mvt/common/indicators.py217
LOWsrc/mvt/common/utils.py207
LOWsrc/mvt/android/cmd_check_androidqf.py250
LOWsrc/mvt/android/cmd_check_backup.py95
LOWsrc/mvt/android/artifacts/tombstone_crashes.py149
LOWsrc/mvt/android/artifacts/tombstone_crashes.py209
LOWsrc/mvt/android/artifacts/dumpsys_packages.py60
LOWsrc/mvt/android/artifacts/dumpsys_battery_daily.py50
LOWsrc/mvt/android/artifacts/mounts.py40
LOWsrc/mvt/android/artifacts/dumpsys_battery_history.py26
LOWsrc/mvt/android/artifacts/settings.py63
LOWsrc/mvt/android/artifacts/dumpsys_appops.py43
LOWsrc/mvt/android/artifacts/dumpsys_appops.py86
LOWsrc/mvt/android/artifacts/dumpsys_receivers.py20
LOWsrc/mvt/android/modules/androidqf/aqf_files.py85
LOWsrc/mvt/android/modules/androidqf/aqf_files.py121
LOWsrc/mvt/android/modules/androidqf/aqf_packages.py44
LOWsrc/mvt/android/modules/intrusion_logs/connect_event.py33
LOW…c/mvt/android/modules/intrusion_logs/security_event.py303
LOW…c/mvt/android/modules/intrusion_logs/security_event.py446
LOWsrc/mvt/android/modules/intrusion_logs/dns_event.py33
LOWsrc/mvt/android/modules/intrusion_logs/base.py123
LOWsrc/mvt/android/modules/intrusion_logs/base.py141
LOWsrc/mvt/android/modules/intrusion_logs/base.py161
LOWsrc/mvt/android/modules/intrusion_logs/base.py251
Cross-File Repetition8 hits · 40 pts
SeverityFileLineSnippet
HIGHsrc/mvt/android/modules/bugreport/fs_timestamps.py0this module extracts records from battery daily updates.
HIGH…mvt/android/modules/bugreport/dumpsys_battery_daily.py0this module extracts records from battery daily updates.
HIGHsrc/mvt/android/modules/bugreport/dumpsys_dbinfo.py0this module extracts records from battery daily updates.
HIGH…t/android/modules/bugreport/dumpsys_battery_history.py0this module extracts records from battery daily updates.
HIGHsrc/mvt/android/modules/bugreport/tombstones.py0this module extracts records from battery daily updates.
HIGHsrc/mvt/android/modules/bugreport/dumpsys_packages.py0this module extracts details on receivers for risky activities.
HIGHsrc/mvt/android/modules/bugreport/dumpsys_activities.py0this module extracts details on receivers for risky activities.
HIGHsrc/mvt/android/modules/bugreport/dumpsys_receivers.py0this module extracts details on receivers for risky activities.
Excessive Try-Catch Wrapping39 hits · 40 pts
SeverityFileLineSnippet
LOWtests/android_androidqf/test_mounts.py50 except Exception:
LOWsrc/mvt/ios/decrypt.py126 except Exception as exc:
LOWsrc/mvt/ios/decrypt.py176 except Exception as exc:
LOWsrc/mvt/ios/decrypt.py232 except Exception as exc:
LOWsrc/mvt/ios/decrypt.py263 except Exception as exc:
LOWsrc/mvt/ios/modules/base.py155 except Exception as exc:
LOW…c/mvt/ios/modules/mixed/webkit_session_resource_log.py139 except Exception:
LOW…c/mvt/ios/modules/mixed/webkit_session_resource_log.py146 except Exception:
LOWsrc/mvt/ios/modules/mixed/safari_history.py73 except Exception:
LOWsrc/mvt/ios/modules/mixed/safari_history.py83 except Exception:
LOW…t/ios/modules/mixed/webkit_resource_load_statistics.py137 except Exception as exc:
LOWsrc/mvt/ios/modules/backup/manifest.py116 except Exception:
LOWsrc/mvt/ios/modules/backup/manifest.py186 except Exception:
LOWsrc/mvt/ios/modules/backup/configuration_profiles.py113 except Exception:
LOWsrc/mvt/ios/modules/fs/filesystem.py84 except Exception:
LOWsrc/mvt/ios/modules/fs/filesystem.py96 except Exception:
LOWsrc/mvt/ios/modules/fs/shutdownlog.py111 except Exception:
LOWsrc/mvt/common/alerts.py65 except Exception:
LOWsrc/mvt/common/command.py87 except Exception as exc:
LOWsrc/mvt/common/log.py64 except Exception:
LOWsrc/mvt/common/indicators.py445 except Exception:
LOWsrc/mvt/common/logo.py30 except Exception as e:
LOWsrc/mvt/common/logo.py72 except Exception as e:
LOWsrc/mvt/common/utils.py100 except Exception:
LOWsrc/mvt/common/utils.py129 except Exception:
LOWsrc/mvt/common/module.py126 except Exception as exc:
LOWsrc/mvt/common/module.py214 except Exception as exc:
LOWsrc/mvt/common/module.py228 except Exception as exc:
LOWsrc/mvt/common/module.py245 except Exception as exc:
LOWsrc/mvt/android/cmd_check_androidqf.py160 except Exception as exc:
LOWsrc/mvt/android/cmd_check_intrusion_logs.py90 except Exception as exc:
LOWsrc/mvt/android/artifacts/tombstone_crashes.py167 except Exception as e:
LOWsrc/mvt/android/artifacts/tombstone_crashes.py234 except Exception as e:
LOWsrc/mvt/android/modules/androidqf/mounts.py57 except Exception as exc:
LOWsrc/mvt/android/modules/androidqf/mounts.py70 except Exception as exc:
LOWsrc/mvt/android/modules/intrusion_logs/base.py380 except Exception as e:
LOWsrc/mvt/android/modules/intrusion_logs/base.py220 except Exception as e:
LOWsrc/mvt/android/modules/intrusion_logs/base.py280 except Exception as e:
LOWsrc/mvt/android/modules/intrusion_logs/base.py316 except Exception as e:
Over-Commented Block17 hits · 17 pts
SeverityFileLineSnippet
LOWtests/__init__.py1# Mobile Verification Toolkit (MVT)
LOWtests/artifacts/android_data/dumpsys_battery.txt21 Discharge screen off time: 9d 21h 51m 40s 100ms (from 2 steps)
LOWtests/artifacts/androidqf/dumpsys.txt341 #0: +2h21m35s4ms to 75 (screen-off, power-save-off)
LOWtests/ios_fs/__init__.py1# Mobile Verification Toolkit (MVT)
LOWtests/common/__init__.py1# Mobile Verification Toolkit (MVT)
LOWtests/android/__init__.py1# Mobile Verification Toolkit (MVT)
LOWtests/ios_backup/__init__.py1# Mobile Verification Toolkit (MVT)
LOWtests/android_androidqf/__init__.py1# Mobile Verification Toolkit (MVT)
LOWsrc/mvt/__init__.py1# Mobile Verification Toolkit (MVT)
LOWsrc/mvt/ios/__init__.py1# Mobile Verification Toolkit (MVT)
LOWsrc/mvt/ios/modules/__init__.py1# Mobile Verification Toolkit (MVT)
LOWsrc/mvt/common/version.py1# Mobile Verification Toolkit (MVT)
LOWsrc/mvt/common/__init__.py1# Mobile Verification Toolkit (MVT)
LOWsrc/mvt/android/__init__.py1# Mobile Verification Toolkit (MVT)
LOWsrc/mvt/android/artifacts/__init__.py1# Mobile Verification Toolkit (MVT)
LOWsrc/mvt/android/parsers/__init__.py1# Mobile Verification Toolkit (MVT)
LOWsrc/mvt/android/modules/__init__.py1# Mobile Verification Toolkit (MVT)
Redundant / Tautological Comments10 hits · 15 pts
SeverityFileLineSnippet
LOWsrc/mvt/ios/versions.py45 # Check if it is a build
LOWsrc/mvt/ios/modules/mixed/interactionc.py259 # Check if the record has the current timestamp.
LOWsrc/mvt/ios/modules/mixed/interactionc.py263 # Check if the timestamp was already processed.
LOWsrc/mvt/common/alerts.py61 # Check if it has a get_slug method (MVT modules have this)
LOWsrc/mvt/android/artifacts/mounts.py93 # Check if it's a system partition
LOWsrc/mvt/android/artifacts/mounts.py98 # Check if it's mounted read-write
LOWsrc/mvt/android/artifacts/mounts.py179 # Check if any mount points match indicators
LOWsrc/mvt/android/artifacts/settings.py67 # Check if one of the dangerous settings is using an unsafe
LOWsrc/mvt/android/modules/androidqf/root_binaries.py105 # Check if this matches a known root binary by exact name match
LOW…c/mvt/android/modules/intrusion_logs/security_event.py367 # Check if command contains any suspicious app IDs
Self-Referential Comments12 hits · 14 pts
SeverityFileLineSnippet
MEDIUMsrc/mvt/ios/decrypt.py23 """This class provides functions to decrypt an encrypted iTunes backup
MEDIUMsrc/mvt/ios/modules/net_base.py23 """This class provides a base for DataUsage and NetUsage extraction
MEDIUMsrc/mvt/ios/modules/base.py24 """This class provides a base for all iOS filesystem/backup extraction
MEDIUMsrc/mvt/ios/modules/fs/webkit_base.py14 """This class is a base for other WebKit-related modules."""
MEDIUMsrc/mvt/common/indicators.py41 """This class is used to parse indicators from a STIX2 file and provide
MEDIUMsrc/mvt/common/indicators.py414 # Create an Aho-Corasick automaton from the list of urls
MEDIUMsrc/mvt/common/module.py42 """This class provides a base for all extraction modules."""
MEDIUMsrc/mvt/android/cmd_check_bugreport.py59 """This method is used to initialize the bug report analysis from an
MEDIUMsrc/mvt/android/cmd_check_bugreport.py71 """This method is used to initialize the bug report analysis from a
MEDIUMsrc/mvt/android/modules/bugreport/base.py17 """This class provides a base for all Android Bug Report modules."""
MEDIUMsrc/mvt/android/modules/androidqf/base.py17 """This class provides a base for all Android Data analysis modules."""
MEDIUMsrc/mvt/android/modules/backup/base.py16 """This class provides a base for all backup extractios modules"""
Slop Phrases1 hit · 3 pts
SeverityFileLineSnippet
MEDIUM.safety-policy.yml4# Otherwise, you can use the flag `safety check --policy-file <path-to-this-file>` to specify a custom location and name
AI Slop Vocabulary2 hits · 2 pts
SeverityFileLineSnippet
MEDIUMsrc/mvt/ios/modules/fs/analytics_ios_versions.py22 """This module leverages the Analytics module in order to extract
LOWsrc/mvt/common/indicators.py443 # If it's not shortened, we just use the original URL object.
Unused Imports2 hits · 2 pts
SeverityFileLineSnippet
LOWsrc/mvt/ios/__init__.py6
LOWsrc/mvt/android/__init__.py6