$ show botherder/androidqf
androidqf is a Go-based Android forensic data acquisition tool designed to collect various types of data from an Android device via ADB. The tool automates the gathering of device properties, system logs, running processes, services, settings, diagnostic information, installed applications (with optional APK extraction), and device backups. It stores the collected data in a timestamped directory and optionally encrypts and compresses the archive using age encryption if a public key is provided. The application follows a modular architecture where each data collection task is implemented as a separate module adhering to a common interface. The core components include a cross-platform ADB wrapper that automatically deploys platform-specific binaries, an asset embedding mechanism for distributing native dependencies, and an acquisition manager that handles the lifecycle of data collection and secure storage. The tool interacts with the device through ADB commands, collects data into structured files and directories, and provides user prompts for configurable options such as backup scope and APK selection. Despite the README indicating the project is not maintained, the repository shows recent commit activity and the codebase demonstrates solid engineering practices. Dependencies are up to date, and the tool is built for cross-platform use (Windows, macOS, Linux) with automated build and release workflows. The modular design allows for extensibility, and the reusable components (such as the ADB wrapper and asset deployment) could be adapted for other projects requiring Android device interaction.
The LLM identified 4 files worth highlighting for reuse:
Provides a clean interface for ADB commands with automatic platform-specific binary deployment. Encapsulates the complexity of locating or bundling the adb executable and offers methods for device state, shell commands, file pulling, and backups. This component is loosely coupled and could be reused in any Go project needing ADB interaction.
Embeds and deploys platform-specific binaries at runtime using Go's embed feature. Handles extraction of adb binaries for Windows, Linux, and Darwin into the executable's directory. This pattern is useful for tools requiring native dependencies and is self-contained with minimal external dependencies.
Implements secure storage by compressing the acquisition directory and encrypting it with age using a provided public key. Handles cleanup of unencrypted intermediates and provides clear user feedback. This isolation of encryption logic makes it reusable in any data collection tool requiring optional secure archival.
Defines a Module interface for data collectors and provides a helper for saving command output. Enables easy extension of data collection capabilities through loose coupling. The List function returns all registered modules, demonstrating a simple yet effective plugin pattern.