This project is a coraboration from the original Giovanni Android Framework created by John S. Madaha.
Original Repository: https://github.com/GiovanniJohnArthur/FinalYearProject
This documentation covers my the capabilities and its extent, using python scripts to automate adb commands to a CLI program.
Story Behind the project
Back then 2024, While I was a student, sitting in Computer lab on Our Cyber Security Auditing class, and saw this guy using python scripts to connect remotely to android devices. The funny thing is it was his FinalYear project and by the time I was very interested into the Android Penetration Testing, but not that good (Or may be still I'm not). Till then I had worked with ADB but for sure didn't know one can do that, to connect to a remote Host that has enabled Android Debugging service. So I teamed with him and added a few modules running them with basicly python os.system() commands It was simple but really fascinating what one can automate with scripts Good Thinking Mr @GiovanniJohnArthur.
Project Overview
The Giovanni Android Framework represents a sophisticated approach to Android device management through automated ADB (Android Debug Bridge) commands. This Python-based tool transforms complex command-line operations into an intuitive menu-driven interface, making advanced Android manipulation accessible to security professionals, developers, and digital forensics experts.
My involvement in this project focused on extending the original framework with enhanced features, improved error handling, and comprehensive documentation to create a more robust and user-friendly security testing platform.
Framework Interface
The Giovanni Framework presents users with a comprehensive ASCII interface that organizes 44+ different ADB operations into logical categories:
Comprehensive Feature Set
The framework encompasses a wide range of Android device manipulation capabilities:
Core Device Management
- Multi-Device Support: Connect and manage multiple Android devices simultaneously
- Network Connectivity: Support for both USB and TCP/IP connections
- Device State Control: Power management, restart capabilities, and connection handling
- System Information Extraction: Comprehensive device profiling and status monitoring
Application Ecosystem Management
- APK Installation/Removal: Silent installation and uninstallation of applications
- Application Inventory: Complete listing of installed applications with detailed metadata
- APK Extraction: Pull installed applications from devices for reverse engineering
- Application Launch Control: Remote application execution and management
Digital Forensics Capabilities
- File System Access: Comprehensive file pulling and analysis capabilities
- Data Extraction: SMS, call logs, browser history, and contact information
- Network Configuration: WiFi credentials, network settings, and connection analysis
- System Monitoring: Real-time process monitoring and system state analysis
Security Testing Features
- Security Bypass: Password removal and lock screen bypass techniques
- Input Simulation: Keylogging, gesture simulation, and input injection
- Privacy Invasion: Clipboard monitoring, location tracking, and communication interception
- Hardware Control: Camera, microphone, flashlight, and sensor manipulation
Installation & Environment Setup
Setting up the Giovanni Framework requires careful preparation of both the host system and target Android devices:
System Prerequisites
Framework Installation
Or using custom installer script
Installation Process
git clone https://github.com/GiovanniJohnArthur/FinalYearProject.git
cd FinalYearProject
chmod +x install
# Install ADB platform tools
sudo apt-get install android-tools-adb android-tools-fastboot
# To add the framework to /opt dir and dlobal the binary into system path
./install.sh
# Now you can call the binary anywhere in your path
gvn
Target Device Configuration
Proper device setup is crucial for framework functionality:
- Developer Options: Navigate to Settings → About Phone → Tap "Build Number" 7 times
- USB Debugging: Enable in Settings → Developer Options → USB Debugging
- Network ADB: Enable "Wireless debugging" for TCP/IP connections
- Root Access: Required for advanced security testing features
- Unknown Sources: Allow installation of apps from unknown sources
Comprehensive Usage Guide
The Giovanni Framework operates through an interactive menu system that abstracts complex ADB commands into simple numbered selections:
Framework Initialization
Device Connection Workflow
Establishing connectivity with target devices involves several methods:
USB Connection
Network Connection
Core Operations Demonstration
Application Management
Information Gathering
Complete Command Reference
The Giovanni Framework organizes its extensive command set into logical categories for efficient navigation:
Device Management Commands
Option | Function | Description | Root Required |
---|---|---|---|
1 | show-devices | Display all connected Android devices with detailed information | No |
2 | disconnect-all | Safely disconnect all connected devices and reset ADB server | No |
3 | connect-device | Establish TCP/IP connection to remote Android device | No |
8 | restart-server | Restart Giovanni framework and reinitialize ADB connections | No |
10 | shutdown-device | Remotely shutdown target Android device | Yes |
Application Control & Management
Option | Function | Description | Forensic Value |
---|---|---|---|
5 | install-apk | Silent installation of APK files on target device | Malware deployment, tool installation |
11 | uninstall-app | Remove applications from device without user interaction | Evidence removal, cleanup operations |
14 | list-applications | Comprehensive inventory of installed applications | Software profiling, threat assessment |
15 | launch-application | Remote execution of installed applications | Behavior analysis, automated testing |
19 | extract-apk | Pull APK files from device for reverse engineering | Malware analysis, intellectual property |
Security Testing & Penetration
Option | Function | Description | Security Impact |
---|---|---|---|
23 | remove-password | Bypass device lock screens and remove security passwords | Critical - Full device access |
31 | start-keylogger | Capture all keyboard input and touch events | High - Credential harvesting |
35 | clipboard-hijack | Monitor and manipulate clipboard contents | Medium - Data interception |
37 | bluetooth-control | Manipulate Bluetooth settings and connections | Medium - Network infiltration |
41 | gps-spoofing | Manipulate GPS coordinates and location data | Medium - Location fraud |
Digital Forensics & Data Extraction
Option | Function | Description | Data Types |
---|---|---|---|
9 | pull-files | Extract files and directories from device storage | Documents, media, databases |
17 | extract-wifi | Retrieve WiFi credentials and network configurations | Network credentials, WPA keys |
33 | extract-sms | Pull SMS messages and conversation history | Text messages, MMS content |
34 | browser-history | Extract web browsing history and cached data | URLs, cookies, cached files |
42 | process-monitor | Monitor running processes and system resource usage | Process lists, memory usage, CPU stats |
My Contributions & Enhancements
Building upon John S. Madaha's excellent foundation, I've implemented several significant improvements to enhance the framework's capabilities and user experience:
Advanced Error Handling & Stability
- Connection Recovery: Implemented automatic reconnection logic for unstable network connections
- Device State Validation: Added comprehensive device state checking before command execution
- Graceful Failure Handling: Enhanced error messages with actionable troubleshooting suggestions
- Resource Cleanup: Implemented proper cleanup routines to prevent resource leaks
Extended Security Testing Capabilities
Comprehensive Logging & Documentation
- Detailed Command Logging: Complete audit trail of all executed commands
- Session Management: Save and restore framework sessions for long-term operations
- Output Formatting: Structured output suitable for further analysis and reporting
- Integration APIs: Hooks for integration with other security testing tools
Performance Optimizations
- Parallel Operations: Concurrent command execution for multiple devices
- Caching Mechanisms: Smart caching of device information and command results
- Bandwidth Optimization: Compressed data transfer for large file operations
- Memory Management: Efficient memory usage for extended testing sessions
Ethical Guidelines & Legal Considerations
The Giovanni Android Framework contains powerful capabilities that can be misused for illegal activities. Users must understand and comply with all applicable laws and ethical guidelines.
Authorized Use Cases
- Penetration Testing: Authorized security assessments with proper documentation
- Digital Forensics: Law enforcement investigations with appropriate warrants
- Security Research: Academic or corporate security research on owned devices
- Personal Device Testing: Security testing of personally owned devices
- Educational Purposes: Cybersecurity education in controlled environments
Prohibited Activities
Best Practices for Ethical Use
- Written Authorization: Always obtain explicit written permission before testing
- Scope Definition: Clearly define the scope and limitations of testing activities
- Data Protection: Secure handling and disposal of any extracted data
- Documentation: Maintain detailed logs of all testing activities
- Responsible Disclosure: Report discovered vulnerabilities through proper channels
Advanced Troubleshooting Guide
Common issues and their resolutions when working with the Giovanni Framework:
Connection Issues
Problem | Symptoms | Solution |
---|---|---|
Device Not Detected | "No devices/emulators found" | Enable USB debugging, install proper drivers, check cable connection |
TCP/IP Connection Fails | "Connection refused" or timeout | Verify network connectivity, check firewall settings, ensure port 5555 is open |
Unauthorized Access | "Device unauthorized" | Accept debugging prompt on device, regenerate RSA keys if necessary |
Root Permission Denied | "Permission denied" for root commands | Verify root access, check SuperSU/Magisk configuration |
Advanced Debugging Techniques
Performance Optimization
Project Impact & Future Development
The Giovanni Android Framework represents a significant advancement in mobile security testing tools, combining the accessibility of a menu-driven interface with the power of comprehensive ADB automation. My contributions to this project have focused on enhancing reliability, expanding capabilities, and ensuring ethical usage.
Technical Achievements
- Stability Improvements: Enhanced error handling and connection management for production use
- Feature Expansion: Additional security testing capabilities and forensic analysis tools
- Documentation Enhancement: Comprehensive documentation for ethical and effective usage
- Performance Optimization: Improved efficiency for large-scale testing operations
Educational Value
This project serves as an excellent educational platform for understanding:
- Android security architecture and vulnerabilities
- ADB protocol and command-line automation
- Mobile forensics techniques and data extraction
- Ethical security testing methodologies
Future Enhancement Roadmap
- GUI Development: Web-based interface for easier operation and result visualization
- Cloud Integration: Remote device management and distributed testing capabilities
- ML Integration: Automated threat detection and behavioral analysis
- Reporting Engine: Professional report generation for security assessments
Special thanks to John S. Madaha for creating the foundational Giovanni Android Framework. This project builds upon his excellent work to create a more robust and feature-complete security testing platform.
Original Author: John S. Madaha
GitHub: https://github.com/GiovanniJohnArthur
Repository: Giovanni Framework Repository