
Extensible mobile research framework for phishing detection using on-device ML, URL analysis, configurable risk thresholds, swappable datasets, custom heuristics, themeable UI and shortcut/voice integration.
A cross-platform mobile application framework for phishing detection research. Built with Kotlin Multiplatform, MsgVerify provides an extensible platform for studying cybersecurity awareness on mobile devices.
MsgVerify is a Kotlin Multiplatform (KMP) application framework with a shared codebase deployed on Android and iOS. It integrates the ContextGuard library for on-device machine learning inference and provides extensible architecture for researchers to customise datasets, visual indicators, and detection heuristics.
| Nr | Code metadata description | Metadata |
|---|---|---|
| C1 | Current code version | v1.0.0 |
| C2 | Permanent link to code/repository used for this code version | https://github.com/terry-brett/MsgVerify |
| C3 | Legal code license | MIT License |
| C4 | Code versioning system used | Git |
| C5 | Software code languages, tools and services used | Kotlin, Jetpack Compose, Swift, Xcode, CocoaPods |
| C6 | Compilation requirements, operating environments and dependencies | macOS, Java 17+, Gradle 8.0+, Android SDK 34+, Xcode 15+ |
| C7 | If available, link to developer documentation/manual | https://github.com/terry-brett/MsgVerify/blob/main/README.md |
| C8 | Support email for questions | odin.asbjornsen@dnb.no |
MsgVerify is designed as an extensible research platform for mobile security studies. Key extension points include:
MsgVerifyConfig.kt
HeuristicRegistry
See EXTENDING.md for detailed documentation on framework customisation.
MsgVerify is built on top of the ContextGuard library, which provides the core content verification engine. ContextGuard is a Kotlin Multiplatform library that encapsulates:
MsgVerify demonstrates how to integrate ContextGuard into a real-world application by providing:
Key Features:
MsgVerify/
├── composeApp/ # Main Kotlin Multiplatform application
│ ├── src/commonMain/ # Shared code (Android + iOS)
│ ├── src/androidMain/ # Android-specific code
│ ├── src/iosMain/ # iOS-specific code
│ └── src/commonTest/ # Shared tests
├── iosApp/ # iOS-specific implementation
└── mocks/ # Test data for demos
User Input
↓
HomeViewModel.onVerifyClicked()
↓
MsgVerifyRepository.verifyContent()
↓
ContentVerifierImpl (from ContextGuard library)
├─ ML Model Classification
│ └─ TextClassificationResult.Safe/Unsafe
├─ URL Detection & Scoring
│ └─ List<Float> urlScores
└─ Reason Analysis
└─ List<Reason> reasons
↓
LinkVerificationState Updates
├─ UI Re-composition
└─ History Management
Risk thresholds are configurable via MsgVerifyConfig.kt. Default values:
See EXTENDING.md for customisation instructions.
./gradlew :composeApp:assembleDebugiosApp/iosApp.xcodeproj in XcodeAll dependencies are managed via Gradle:
./gradlew buildNavigate to ios app with cd iosApp and install the dependency
pod installCreate file named Podfile in the iOS app directory. Copy and paste the following:
platform :ios, '13.0'
use_frameworks!
target 'iosApp' do
pod 'TensorFlowLiteObjC', '2.17.0'
pod 'TensorFlowLiteObjC/Metal', '2.17.0'
endInstall with pod install
The project includes mock data for testing and demonstrations:
mocks/
├── safe/
│ ├── sms.json
│ ├── emails.json
│ └── social_media_messages.json
└── malicious/
├── sms.json
├── emails.json
└── social_media_messages.json
MsgVerify supports iOS Shortcuts via VerifyMessageIntent.swift:
To test with a local build of the ContextGuard library:
settings.gradle.kts
testLocally = true
A cross-platform mobile application framework for phishing detection research. Built with Kotlin Multiplatform, MsgVerify provides an extensible platform for studying cybersecurity awareness on mobile devices.
MsgVerify is a Kotlin Multiplatform (KMP) application framework with a shared codebase deployed on Android and iOS. It integrates the ContextGuard library for on-device machine learning inference and provides extensible architecture for researchers to customise datasets, visual indicators, and detection heuristics.
| Nr | Code metadata description | Metadata |
|---|---|---|
| C1 | Current code version | v1.0.0 |
| C2 | Permanent link to code/repository used for this code version | https://github.com/terry-brett/MsgVerify |
| C3 | Legal code license | MIT License |
| C4 | Code versioning system used | Git |
| C5 | Software code languages, tools and services used | Kotlin, Jetpack Compose, Swift, Xcode, CocoaPods |
| C6 | Compilation requirements, operating environments and dependencies | macOS, Java 17+, Gradle 8.0+, Android SDK 34+, Xcode 15+ |
| C7 | If available, link to developer documentation/manual | https://github.com/terry-brett/MsgVerify/blob/main/README.md |
| C8 | Support email for questions | odin.asbjornsen@dnb.no |
MsgVerify is designed as an extensible research platform for mobile security studies. Key extension points include:
MsgVerifyConfig.kt
HeuristicRegistry
See EXTENDING.md for detailed documentation on framework customisation.
MsgVerify is built on top of the ContextGuard library, which provides the core content verification engine. ContextGuard is a Kotlin Multiplatform library that encapsulates:
MsgVerify demonstrates how to integrate ContextGuard into a real-world application by providing:
Key Features:
MsgVerify/
├── composeApp/ # Main Kotlin Multiplatform application
│ ├── src/commonMain/ # Shared code (Android + iOS)
│ ├── src/androidMain/ # Android-specific code
│ ├── src/iosMain/ # iOS-specific code
│ └── src/commonTest/ # Shared tests
├── iosApp/ # iOS-specific implementation
└── mocks/ # Test data for demos
User Input
↓
HomeViewModel.onVerifyClicked()
↓
MsgVerifyRepository.verifyContent()
↓
ContentVerifierImpl (from ContextGuard library)
├─ ML Model Classification
│ └─ TextClassificationResult.Safe/Unsafe
├─ URL Detection & Scoring
│ └─ List<Float> urlScores
└─ Reason Analysis
└─ List<Reason> reasons
↓
LinkVerificationState Updates
├─ UI Re-composition
└─ History Management
Risk thresholds are configurable via MsgVerifyConfig.kt. Default values:
See EXTENDING.md for customisation instructions.
./gradlew :composeApp:assembleDebugiosApp/iosApp.xcodeproj in XcodeAll dependencies are managed via Gradle:
./gradlew buildNavigate to ios app with cd iosApp and install the dependency
pod installCreate file named Podfile in the iOS app directory. Copy and paste the following:
platform :ios, '13.0'
use_frameworks!
target 'iosApp' do
pod 'TensorFlowLiteObjC', '2.17.0'
pod 'TensorFlowLiteObjC/Metal', '2.17.0'
endInstall with pod install
The project includes mock data for testing and demonstrations:
mocks/
├── safe/
│ ├── sms.json
│ ├── emails.json
│ └── social_media_messages.json
└── malicious/
├── sms.json
├── emails.json
└── social_media_messages.json
MsgVerify supports iOS Shortcuts via VerifyMessageIntent.swift:
To test with a local build of the ContextGuard library:
settings.gradle.kts
testLocally = true