Compare commits

..
Author SHA1 Message Date
Janik Besendorf a77d3f74aa Fix WebKit timestamp schema handling 2026-06-05 20:14:52 +02:00
Janik Besendorf e69a02169c Merge remote-tracking branch 'origin/main' into todos
# Conflicts:
#	src/mvt/android/cli.py
2026-06-05 20:01:41 +02:00
Janik Besendorf 2e5bf5f678 Clean up code TODOs and type checks 2026-05-11 23:47:29 +02:00
Janik Besendorf f65d77036a Merge remote-tracking branch 'origin/main' into todos
# Conflicts:
#	src/mvt/android/cli.py
#	src/mvt/android/modules/androidqf/aqf_files.py
#	src/mvt/common/command.py
#	src/mvt/ios/modules/mixed/webkit_resource_load_statistics.py
#	src/mvt/ios/modules/mixed/webkit_session_resource_log.py
2026-05-11 23:27:27 +02:00
Janik Besendorf 00a00ca6e9 Remove resolved TODO about --output requirement in download-apks 2026-03-25 09:03:03 +01:00
Janik Besendorf 2792988626 Support SHA1 and MD5 hash matching in AQF files module 2026-03-25 09:02:09 +01:00
Janik Besendorf 711f7cedc1 Clarify command_line list format matches protobuf schema in tombstone parser 2026-03-25 09:00:44 +01:00
Janik Besendorf d8c3d1e418 Extract additional timestamps from WebKit ObservedDomains table
Query mostRecentUserInteractionTime and mostRecentWebPushInteractionTime
with fallback to the original 4-column query for older iOS versions.
2026-03-25 08:55:44 +01:00
Janik Besendorf 856c008bc0 Remove confirmed Chrome database path TODOs
Backup IDs verified via SHA-1 of AppDomain-com.google.chrome.ios paths.
2026-03-25 08:55:40 +01:00
Janik Besendorf 5820bc95c1 Replace bare KeyError catch with explicit key check in net_base 2026-03-25 08:44:16 +01:00
Janik Besendorf 7609760cfb Pass branch parameter to GitHub commits API in update checker 2026-03-25 08:44:12 +01:00
Janik Besendorf 7d985f3c97 Refactor b64 encoding in configuration_profiles into helper methods 2026-03-25 08:44:08 +01:00
Janik Besendorf dcfcf51988 Fix typo in aqf_files.py comment 2026-03-25 08:44:04 +01:00
Janik Besendorf 869f3a110c Narrow bare except to specific exception types in convert_mactime_to_datetime 2026-03-25 08:44:00 +01:00
Janik Besendorf 4495a46688 Remove stale FIXME comment in command.py 2026-03-25 08:43:56 +01:00
Janik Besendorf d4b1c6bd25 Remove dead commented-out code in webkit_session_resource_log 2026-03-25 08:43:52 +01:00
Janik Besendorf efbd4bbdc0 Replace split("\n") with splitlines() for platform compatibility 2026-03-24 23:52:04 +01:00
2 changed files with 2 additions and 34 deletions

No files matched your search

+1 -19
View File
@@ -34,25 +34,6 @@ It is also possible to load STIX2 files automatically from the environment varia
export MVT_STIX2="/home/user/IOC1.stix2:/home/user/IOC2.stix2"
```
## Network Access
When checking URL indicators, MVT follows recognized shortened URLs with an
HTTP `HEAD` request. The following environment variables control these
requests:
- `MVT_NETWORK_ACCESS_ALLOWED` enables or disables network requests. It defaults
to `true`. Set it to `false` to prevent MVT from attempting to resolve
shortened URLs.
- `MVT_NETWORK_TIMEOUT` sets the request timeout in seconds. It defaults to
`15`.
For example, to run IOC checks without resolving shortened URLs:
```bash
MVT_NETWORK_ACCESS_ALLOWED=false mvt-ios check-iocs \
--iocs ~/iocs/malware.stix2 /path/to/iphone/output/
```
## STIX2 Support
So far MVT implements only a subset of [STIX2 specifications](https://docs.oasis-open.org/cti/stix/v2.1/csprd01/stix-v2.1-csprd01.html):
@@ -74,3 +55,4 @@ You can automaticallly download the latest public indicator files with the comma
Please [open an issue](https://github.com/mvt-project/mvt/issues/) to suggest new sources of STIX-formatted IOCs.
+1 -15
View File
@@ -3,16 +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 logging
from typing import Optional
import requests
from tld import get_tld
from .config import settings
log = logging.getLogger(__name__)
SHORTENER_DOMAINS = [
"0rz.tw",
"1drv.ms",
@@ -380,16 +375,7 @@ class URL:
def unshorten(self) -> Optional[str]:
"""Unshorten the URL by requesting an HTTP HEAD response."""
if settings.NETWORK_ACCESS_ALLOWED is False:
log.info(
"Network access disabled (MVT_NETWORK_ACCESS_ALLOWED=False), "
"skipping unshorten for %s",
self.url,
)
return ""
res = requests.head(self.url, timeout=settings.NETWORK_TIMEOUT)
res = requests.head(self.url)
if str(res.status_code).startswith("30"):
return res.headers["Location"]