A comprehensive Android application that provides real-time malware scanning for files and URLs using the VirusTotal API. Built with modern Android development practices and featuring an intuitive user interface with smooth animations.
- File Scanning: Upload and scan files for malware detection
- URL Scanning: Analyze URLs for potential threats and malicious content
- Lottie Animations: Engaging loading, success, and danger animations
- Material Design: Clean, modern interface following Material Design guidelines
- Smooth Transitions: Tab-based navigation with slide animations
- Dark Theme: Eye-friendly dark color scheme
- Interactive Pie Charts: Visual representation of scan statistics using MPAndroidChart
- Detailed Analysis: Complete breakdown of scan results with threat categorization
- File Information: Display of file hashes (SHA256, MD5, SHA1) and file size
- Real-time Updates: Polling mechanism for scan status updates
- Firebase Authentication: Secure user registration and login
- Profile Management: User profile functionality
- Session Management: Persistent login sessions
app/src/main/java/com/app/sentinelapp/
βββ api/
β βββ ApiService.kt # VirusTotal API integration
β βββ VirusTotalService.kt # API service wrapper
βββ services/
β βββ VirusTotalService.kt # Business logic for scanning
βββ adapters/
βββ models/
βββ DashboardActivity.kt # Main scanning interface
βββ ScanResultActivity.kt # Results display
βββ LoginActivity.kt # User authentication
βββ SignupActivity.kt # User registration
βββ SplashActivity.kt # App launcher
βββ MainActivity.kt # Main activity
βββ ProfileActivity.kt # User profile
- SplashActivity: App entry point with logo animation
- LoginActivity: User authentication interface
- SignupActivity: New user registration
- DashboardActivity: Main scanning interface with tab navigation
- ScanResultActivity: Detailed scan results with charts and statistics
- ProfileActivity: User profile management
- VirusTotal API: Integration with VirusTotal's malware scanning service
- RESTful Communication: HTTP requests using OkHttp
- JSON Parsing: Native JSON handling for API responses
- Async Operations: Coroutines for non-blocking network operations
- ViewBinding: Type-safe view access
- ConstraintLayout: Flexible and responsive layouts
- RecyclerView: Efficient list display for scan results
- TabLayout: Tab-based navigation between file and URL scanning
- LottieAnimationView: Rich animations for better UX
- Android Studio Arctic Fox or later
- Android SDK 26+ (API level 26)
- Kotlin 1.8+
- Java 11+
-
Clone the repository
git clone https://github.com/yourusername/SentinelApp.git cd SentinelApp -
Open in Android Studio
- Launch Android Studio
- Select "Open an existing project"
- Navigate to the cloned directory and select it
-
Configure API Keys
- Obtain a VirusTotal API key from VirusTotal
- Update the API key in
app/src/main/java/com/app/sentinelapp/api/ApiService.kt
private const val API_KEY = "your_virustotal_api_key_here"
-
Configure Firebase (Optional)
- Create a Firebase project at Firebase Console
- Download
google-services.jsonand place it in theapp/directory - Enable Authentication in Firebase Console
-
Build and Run
./gradlew build
- Connect an Android device or start an emulator
- Click "Run" in Android Studio
The project uses the following key dependencies:
dependencies {
// Core Android
implementation("androidx.core:core-ktx:1.12.0")
implementation("androidx.appcompat:appcompat:1.6.1")
implementation("com.google.android.material:material:1.11.0")
// Firebase Authentication
implementation("com.google.firebase:firebase-auth:22.3.1")
// Lottie Animations
implementation("com.airbnb.android:lottie:6.1.0")
// Network & JSON
implementation("com.squareup.okhttp3:okhttp:4.9.3")
implementation("org.json:json:20210307")
// Charts
implementation("com.github.PhilJay:MPAndroidChart:v3.1.0")
}- Launch the app and log in
- Navigate to the "File Scan" tab
- Tap "Choose File" to select a file from your device
- Tap "Start Scan" to begin the analysis
- Wait for the scan to complete
- View detailed results with threat statistics
- Navigate to the "URL Scan" tab
- Enter the URL you want to analyze
- Tap "Analyze URL" to begin the scan
- Monitor the scanning progress
- Review comprehensive results and threat analysis
- Pie Chart: Visual breakdown of scan results by category
- Threat Categories:
- π’ Harmless: No threats detected
- π΄ Malicious: Confirmed malware/threats
- π Suspicious: Potential threats requiring attention
- β« Undetected: No verdict from security engines
- π£ Failure: Scan errors
- π€ Unsupported: File type not supported
- βͺ Timeout: Scan timeout
- Loading Animation: Smooth loading indicator during scans
- Success Animation: Celebration animation for safe files/URLs
- Danger Animation: Warning animation for detected threats
- Logo Animation: Branded splash screen animation
- File Upload Animation: Visual feedback for file selection
- URL Input Animation: Interactive URL input experience
- Primary: Cyan (#00BCD4)
- Background: Black (#000000)
- Card Background: Dark gray (#1E1E1E)
- Text: White (#FFFFFF)
- Accent: Various colors for different threat levels
// VirusTotal API settings
private const val BASE_URL = "https://www.virustotal.com/api/v3"
private const val API_KEY = "your_api_key_here"// Polling interval for scan results
private const val REFRESH_DELAY = 5000L // 5 seconds- Maximum file size: 32MB (VirusTotal limit)
- Supported formats: All file types accepted by VirusTotal
./gradlew assembleRelease./gradlew test- Follow Kotlin coding conventions
- Use meaningful variable and function names
- Add comments for complex logic
- Maintain consistent indentation
[Add screenshots of the app here]
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License - see the LICENSE file for details.
- VirusTotal: For providing the malware scanning API
- LottieFiles: For beautiful animations
- MPAndroidChart: For interactive chart components
- Material Design: For design guidelines and components
For support, email joesanjo10@gmail.com or create an issue in this repository.
- v1.0.0 - Initial release with file and URL scanning capabilities
- v1.1.0 - Added Lottie animations and improved UI
- v1.2.0 - Enhanced scan results with pie charts and detailed statistics
Made with β€οΈ for Android security