Mobile Verification Toolkit
v2026.10.26 open-sourceThe section your link pointed to isn't on Mobile Verification Toolkit's page any more, so we've brought you to the top.
MVT (Mobile Verification Toolkit) helps with conducting forensics of mobile devices in order to find signs of a potential compromise.
mvt-android check-bugreport --timezone 'America/New_York' -o ./results/ bugreport-2026-09-14.zip
mvt-ios decrypt-backup --jobs 8 -p <password> -d /tmp/decrypted /path/to/backup
mvt completion bash --install
mvt plugins
mvt plugins list
mvt plugins check-updates
from typing import Optional
from mvt.plugin import MVTPluginSettings, plugin_env_prefix
import click
class ExamplePluginSettings(MVTPluginSettings):
plugin_name = "example-plugin"
API_KEY: Optional[str] = None
MAX_RESULTS: int = 25
def run_scan():
settings = ExamplePluginSettings.load()
if not settings.API_KEY:
prefix = plugin_env_prefix(settings.plugin_name)
raise click.ClickException(
f"No API key configured. Set {prefix}API_KEY or run 'example-plugin configure'."
)
# use settings.API_KEY ...
API_KEY: null
MAX_RESULTS: 100
LAST_SYNC: '2024-06-01T12:00:00+00:00'
mvt-ios --load-command ./case_summary.py case-summary ./ios-backup
export MVT_ANDROID_CUSTOM_COMMANDS=./android_commands
[project.entry-points."mvt.ios.cli_plugins"]
summarize = "my_mvt_plugin:summarize"
[project.entry-points."mvt.android.cli_plugins"]
summarize = "my_mvt_plugin:summarize"
mvt plugins list
from mvt.plugin import IOSExtraction
from mvt.ios.modules.backup import Manifest as BuiltinManifest
class Manifest(IOSExtraction):
replaces = BuiltinManifest
# slug and --module name are inherited from BuiltinManifest
def run(self):
...
mvt download-iocs
mvt completion > ~/.mvt-complete.bash && echo 'source ~/.mvt-complete.bash' >> ~/.bashrc
mvt completion > ~/.config/fish/conf.d/mvt-completion.fish
[project.entry-points."mvt.modules"]
mvt-plugin-amnesty-custom = "mvt_plugin_amnesty_custom:get_modules"
pipx inject mvt mvt-plugin-amnesty-custom
mvt-ios --list-modules
mvt-ios --load-command ./case_summary.py case-summary ./ios-backup
export MVT_ANDROID_CUSTOM_COMMANDS=./android_commands
mvt-android case-summary ./androidqf-output
pipx inject mvt my-mvt-plugin
mvt-ios summarize ./ios-backup
mvt-ios check-sysdiagnose --load-module ./sysdiagnose_modules.py --output ./results ./sysdiagnose_2024.01.02_03-04-05+0200.tar.gz
mvt-ios check-sysdiagnose --load-module ./sysdiagnose_modules.py --list-modules ./sysdiagnose_2024.01.02_03-04-05+0200.tar.gz
from mvt.ios.modules.sysdiagnose import SysdiagnoseExtraction
class ExampleSysdiagnoseModule(SysdiagnoseExtraction):
supported_commands = (("ios", "check-sysdiagnose"),)
slug = "example_sysdiagnose"
def run(self):
paths = self._get_files_by_pattern("*/example.log")
if paths:
content = self._get_file_content(paths[0]).decode("utf-8", "replace")
self.results = [{"content": content}]
def check_indicators(self):
pass
def serialize(self, result):
return None
mvt-ios completion bash --install
mvt-android completion zsh --install
mvt-android check-androidqf --load-module /path/to/my_custom_module.py <target>
mvt-ios check-bootstash --bootstash <path> -V
mvt-ios check-finder --debug-mode -v
Summary
Mobile Verification Toolkit is an open-source command-line toolkit for forensic analysis of Android and iOS devices, free to use, built to surface traces of compromise such as spyware infections. It is run via the mvt-ios and mvt-android commands, checking device backups and extractions against public indicators of compromiseindicators of compromiseAn indicator of compromise, an observable clue that may point to malicious activity, such as a suspicious file hash or domain. It is evidence to investigate, rather than proof by itself., and its documentation is explicit that it targets technologists and investigators comfortable with digital forensics and command-line tools rather than end users assessing their own phones. It was developed by Amnesty International's Security Lab out of the Pegasus Project, placing it in the mobile forensics and spyware-detection space rather than general device security software. Development is active: first committed in 2021, it has drawn 78 contributors, with 181 commits and 21 releases in the past year, the latest just 23 days ago, including a recent v3 refactor that changed its output format.
MVT (Mobile Verification Toolkit) helps with conducting forensics of mobile devices in order to find signs of a potential compromise.
How Mobile Verification Toolkit helps
Does a backup or extraction from this phone contain traces matched to known spyware campaigns?
checks the device data against public indicators of compromise from Amnesty International and other research groups and flags matches, though a clean result does not rule out compromise since public IOCs alone cannot confirm a device is clean
Which apps on this Android device were removed or quietly downgraded before the investigation started?
analyses battery daily history and uninstalled-app records from Dumpsys data to reconstruct install and removal events outside the current app list
Has this iOS device been talking to domains or IPs already linked to a spyware operator?
runs URL and IP indicator checks concurrently against the extracted data and reports each match against the loaded indicator set
Can this Android device be trusted to have an intact, unmodified system given root access or tampered packages?
inspects root-related binaries, APK certificate hashes, and package data to surface signs of rooting or tampered applications
What happened on this device around the time of a suspected compromise?
combines timezone info, file modification events, and shutdown or crash logs into a timeline of device activity for the investigator to review
Is the alert a device generates a hard yes/no or does it need my judgement?
reports findings through a multi-level alert system rather than a binary detected/not-detected result, so heuristic matches are distinguished from confirmed indicator hits
Languages
Command line
No command matches.
| option | found in | since | description |
|---|
Values are placeholders taken from each option’s declared default. Nothing is executed here — the output shown is a recording of a run that already happened.
Score card
-
Shipping velocity releases a month, last 12 months
-
Documentation quality release-notes rubric, 0–100
-
Breaking-change discipline how rarely a release breaks users, and notice given
-
Maintenance risk quiet time against its own cadence, maintainers
-
Innovation & surface new capabilities, API and MCP surface
- Community health
-
Contributor trend distinct committers, this year against last
-
Maintainer concentration bus factor now against a year ago
-
Issue backlog trend issues closed per issue opened, 12 months
-
Responsiveness median time to a maintainer’s first reply
Nine scores for Mobile Verification Toolkit, each built from the releases, notes and API history this site tracks — and, on Researcher and Business, where it stands among every measured tool in its category and how that has moved.
Score cards are part of every paid plan.
See plans → Already subscribed? Sign in →Trajectory
Blank means never measured; nothing here is a filled-in zero.
Peer standings are included with Researcher and Business. See how this tool ranks against its competitors, using data we don't publish anywhere else.
See plans →Each score is 0–100 on a published rubric, derived from data this site already shows. A dimension we cannot measure says so — it is never scored 0 and never enters a rank.
How this is scored
- Shipping velocity — releases a month over the last 12 months, on a log scale where 16 a month scores 100. Needs 3 releases in the window.
- Documentation quality — the release-notes rubric published on the analytics page, unchanged.
- Breaking-change discipline — the share of releases carrying a breaking change (none scores 100, half or more scores 0). Only projects that label breaking changes are measured: a clean record cannot be told from an unlabelled one.
- Maintenance risk — quiet time measured against the tool's own release cadence (quiet longer than 90 days and three typical gaps scores 0), plus the number of active maintainers and whether contributors are growing, where known. Higher is lower risk.
- Innovation & surface — new capabilities in the feature ledger this year, API and MCP operations added, and the share of commits that are features: the mean of whichever we hold.
- Community health (open-source tools only) — each is a direction, not a size: contributors this year against last, the bus factor now against a year ago, and issues closed per issue opened, where steady scores 50, doubled 100 and halved 0; plus the median time to a maintainer's first reply (an hour scores about 100, a month or more 0). A commercial card has no repository and carries none of the four.
- Documented delivery (commercial tools) — when a vendor's documented new capabilities have slowed against its own baseline, that counts against the overall standing as heavily as two low dimensions. Steady delivery, or too little history to judge, leaves the standing alone; it is never a sixth score.
- Open-source tools are scored on repository signals; commercial tools on their published changelog. Ranks compare tools within one category and one profile and need at least five measured peers; the overall standing needs three ranked dimensions. Best-in-breed or consolidator is a shape, not a quality, and is never scored.
Release-note detail over time
See how much detail Mobile Verification Toolkit puts in its release notes, quarter by quarter, and compare it with tracked tools in the same category. This history uses up to ten retained, reviewed notes per tool; sparse or blank older quarters may reflect that limit.
Checking release-note history…
Releases
24 entries
No entries match these filters.
- October 20261
- September 20264
- August 20269
- July 20263
- May 20262
- April 20261
- December 20252
- January 20251
- April 20241
Project health
Issue, contributor and maintainer activity in mvt-project/mvt, 2023-10 – 2026-09, as of 2026-09-25. Twelve-month figures first; the trend lines run the whole window.
- Contributors 16 +4 vs prior 12 months
- Maintainers 2 +1 joined · −2 left, last 12 months
- Bus factor 1 committers behind half the commits
- Community-filed 64% of issues opened, last 12 months
- Median time to close 220 days first maintainer reply 5.4 hours
- Open backlog 25 of 390 issues ever filed
- Issues opened / month 1 · 1 communitymaintainers
- Open backlog 25
- Contributors / month 5
- Commits / month 20
- Stars 13,134
- other 100%
Counts from the project's public repository and git history; no individuals are identified. Maintainers are the committers covering 80% of the last year's commits. how we measure this
Libraries its release ships
What its latest release locks, checked against known advisories.None of its release's images build from a lockfile we can read.
Add the badge to your README
Maintain this project? The badge links readers straight to this page, so they can follow every release here.