Skip to content

A native Android malware scanner built with Kotlin that uses the VirusTotal API for real-time threat analysis. The app scans both files and URLs, presenting comprehensive results with interactive pie charts. It features a modern UI with Lottie animations, a dark theme, and secure user authentication powered by Firebase.

Notifications You must be signed in to change notification settings

R3tr0gh057/SentinelApp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

15 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸ›‘οΈ SentinelApp - Android Malware Scanner

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.

πŸ“± Features

πŸ” Dual Scanning Capabilities

  • File Scanning: Upload and scan files for malware detection
  • URL Scanning: Analyze URLs for potential threats and malicious content

🎨 Modern UI/UX

  • 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

πŸ“Š Comprehensive Results

  • 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

πŸ” User Authentication

  • Firebase Authentication: Secure user registration and login
  • Profile Management: User profile functionality
  • Session Management: Persistent login sessions

πŸ—οΈ Architecture

Project Structure

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

Key Components

Activities

  • 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

API Integration

  • 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

UI Components

  • 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

πŸš€ Getting Started

Prerequisites

  • Android Studio Arctic Fox or later
  • Android SDK 26+ (API level 26)
  • Kotlin 1.8+
  • Java 11+

Installation

  1. Clone the repository

    git clone https://github.com/yourusername/SentinelApp.git
    cd SentinelApp
  2. Open in Android Studio

    • Launch Android Studio
    • Select "Open an existing project"
    • Navigate to the cloned directory and select it
  3. 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"
  4. Configure Firebase (Optional)

    • Create a Firebase project at Firebase Console
    • Download google-services.json and place it in the app/ directory
    • Enable Authentication in Firebase Console
  5. Build and Run

    ./gradlew build
    • Connect an Android device or start an emulator
    • Click "Run" in Android Studio

Dependencies

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")
}

πŸ“– Usage Guide

File Scanning

  1. Launch the app and log in
  2. Navigate to the "File Scan" tab
  3. Tap "Choose File" to select a file from your device
  4. Tap "Start Scan" to begin the analysis
  5. Wait for the scan to complete
  6. View detailed results with threat statistics

URL Scanning

  1. Navigate to the "URL Scan" tab
  2. Enter the URL you want to analyze
  3. Tap "Analyze URL" to begin the scan
  4. Monitor the scanning progress
  5. Review comprehensive results and threat analysis

Understanding Results

  • 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

🎨 UI/UX Features

Animations

  • 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

Color Scheme

  • Primary: Cyan (#00BCD4)
  • Background: Black (#000000)
  • Card Background: Dark gray (#1E1E1E)
  • Text: White (#FFFFFF)
  • Accent: Various colors for different threat levels

πŸ”§ Configuration

API Configuration

// VirusTotal API settings
private const val BASE_URL = "https://www.virustotal.com/api/v3"
private const val API_KEY = "your_api_key_here"

Scan Settings

// Polling interval for scan results
private const val REFRESH_DELAY = 5000L // 5 seconds

File Size Limits

  • Maximum file size: 32MB (VirusTotal limit)
  • Supported formats: All file types accepted by VirusTotal

πŸ› οΈ Development

Building for Release

./gradlew assembleRelease

Running Tests

./gradlew test

Code Style

  • Follow Kotlin coding conventions
  • Use meaningful variable and function names
  • Add comments for complex logic
  • Maintain consistent indentation

πŸ“± Screenshots

[Add screenshots of the app here]

🀝 Contributing

  1. Fork the repository
  2. Create a feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

πŸ™ Acknowledgments

  • VirusTotal: For providing the malware scanning API
  • LottieFiles: For beautiful animations
  • MPAndroidChart: For interactive chart components
  • Material Design: For design guidelines and components

πŸ“ž Support

For support, email joesanjo10@gmail.com or create an issue in this repository.

πŸ”„ Version History

  • 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

About

A native Android malware scanner built with Kotlin that uses the VirusTotal API for real-time threat analysis. The app scans both files and URLs, presenting comprehensive results with interactive pie charts. It features a modern UI with Lottie animations, a dark theme, and secure user authentication powered by Firebase.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Languages