Documentation Index
Fetch the complete documentation index at: https://mintlify.com/cedroid/whatsapp-forensic-tool/llms.txt
Use this file to discover all available pages before exploring further.
Contributing to WhatsApp Forensic Tool
Thank you for your interest in contributing to the WhatsApp Forensic Tool! We welcome contributions from the community to help improve this project.Ways to Contribute
There are many ways you can contribute to this project:- Report bugs and issues
- Suggest new features or improvements
- Submit code via pull requests
- Improve documentation and examples
- Test on different platforms and report results
- Share knowledge and help other users
Code of Conduct
Our Pledge
We are committed to providing a welcoming and inclusive environment for all contributors, regardless of:- Experience level
- Age, body size, disability, ethnicity, gender identity and expression
- Nationality, personal appearance, race, religion, or sexual identity and orientation
Expected Behavior
- Be respectful and professional in all interactions
- Welcome newcomers and help them get started
- Accept constructive criticism gracefully
- Focus on what is best for the community and project
- Show empathy towards other community members
Unacceptable Behavior
- Harassment, trolling, or insulting/derogatory comments
- Personal or political attacks
- Publishing others’ private information without permission
- Any conduct that would be inappropriate in a professional setting
Enforcement
Instances of unacceptable behavior may be reported to developer@cedroid.com. All complaints will be reviewed and investigated promptly and fairly.Getting Started
Prerequisites
Before contributing, ensure you have:- Python 3.8 or higher installed
- Git for version control
- A GitHub account
- Basic understanding of Python and forensic concepts
- Familiarity with the project structure
Setting Up Development Environment
- Fork the repository on GitHub
-
Clone your fork locally:
-
Add upstream remote to sync with the main repository:
-
Create a virtual environment:
-
Install dependencies:
-
Verify installation:
Development Workflow
1. Create a Branch
Create a new branch for your feature or bug fix:feature/- New features or enhancementsfix/- Bug fixesdocs/- Documentation updatesrefactor/- Code refactoring without functional changestest/- Adding or updating tests
2. Make Your Changes
Follow the coding standards and best practices outlined below.3. Test Your Changes
Before submitting, ensure:- Code runs without errors
- Existing functionality is not broken
- New features work as intended
- Code is tested on relevant platforms (Windows/Linux/macOS/Android)
4. Commit Your Changes
Write clear, descriptive commit messages:feat:- New featurefix:- Bug fixdocs:- Documentation changesrefactor:- Code refactoringtest:- Adding or updating testschore:- Maintenance tasks
5. Push to Your Fork
6. Create a Pull Request
- Go to your fork on GitHub
- Click “New Pull Request”
- Select your branch to merge into
main - Fill out the pull request template with:
- Clear description of changes
- Issue number if applicable (e.g., “Fixes #123”)
- Testing performed
- Screenshots (if UI changes)
Coding Standards
Python Style Guide
Follow PEP 8 style guidelines:- Indentation: 4 spaces (no tabs)
- Line length: Maximum 120 characters (100 preferred)
- Imports:
- Standard library imports first
- Third-party imports second
- Local imports third
- Alphabetically sorted within each group
Naming Conventions
- Classes: PascalCase (
CryptoManager,DeviceManager) - Functions/Methods: snake_case (
decrypt_file,get_devices) - Constants: UPPER_SNAKE_CASE (
KEY_FILE,DEFAULT_TIMEOUT) - Private methods: Leading underscore (
_internal_method)
Documentation
All modules, classes, and functions should have docstrings:Error Handling
- Use try-except blocks appropriately
- Provide meaningful error messages
- Use the
print_error()utility for user-facing errors - Log detailed errors for debugging
Type Hints
Use type hints for function parameters and return values:Project Structure
Understanding the project structure helps you contribute effectively:Module Responsibilities
- crypto_manager.py: All cryptographic operations, key management, file decryption
- device_manager.py: ADB communication, device detection, file extraction (PC mode)
- termux_manager.py: Direct Android operations without ADB (Termux mode)
- viewer.py: SQLite database parsing, chat extraction, export functions
- ui.py: User interface, menus, progress bars, formatted output
- utils.py: Shared utilities, logging, file operations
Testing Requirements
Manual Testing
Before submitting a pull request:-
Test on multiple platforms (if possible):
- Windows 10/11
- Ubuntu/Debian Linux
- macOS
- Android (Termux)
-
Test different scenarios:
- Fresh installation
- Existing installation with saved keys
- Multiple connected devices
- Different backup formats (crypt12/14/15)
- WhatsApp Messenger and Business
-
Edge cases:
- No devices connected
- Invalid encryption keys
- Corrupted backup files
- Missing dependencies
Test Data
For testing purposes:- Use your own devices and backups
- Create test backups specifically for development
- Never use unauthorized or third-party data
- Never commit actual backup files or encryption keys to the repository
Bug Reports
Before Reporting
- Search existing issues to avoid duplicates
- Update to the latest version and verify bug still exists
- Gather information:
- Tool version
- Operating system and version
- Python version
- Android version (if applicable)
- Complete error messages and stack traces
Bug Report Template
When reporting bugs, include:Feature Requests
Submitting Feature Requests
When requesting new features:- Check existing feature requests to avoid duplicates
- Describe the problem the feature would solve
- Explain your proposed solution
- Consider alternatives you’ve thought about
- Provide examples or mockups if applicable
Feature Request Template
Documentation Contributions
Documentation improvements are always welcome:- Fix typos and grammatical errors
- Clarify confusing instructions
- Add examples and tutorials
- Update outdated information
- Translate documentation (if applicable)
Documentation Style
- Use clear, concise language
- Provide step-by-step instructions
- Include code examples where helpful
- Use proper Markdown formatting
- Test all commands and code snippets
Security Vulnerabilities
If you discover a security vulnerability:- Email developer@cedroid.com with details
- Include:
- Type of vulnerability
- Steps to reproduce
- Potential impact
- Suggested fix (if you have one)
- Wait for a response before disclosing publicly
- Allow reasonable time for patching (typically 90 days)
Review Process
Pull Request Review
After submitting a pull request:- Automated checks may run (if configured)
- Maintainers will review your code
- Feedback may be provided for improvements
- Revisions may be requested
- Approval and merge once ready
Review Criteria
Pull requests are evaluated on:- Code quality and style compliance
- Functionality and correctness
- Performance impact
- Security implications
- Documentation completeness
- Testing thoroughness
License Agreement
By contributing to this project, you agree that:- Your contributions will be licensed under the MIT License
- You have the right to submit the contributions
- You grant the project maintainers perpetual rights to use your contributions
Recognition
Contributors are recognized in:- GitHub contributors list
- Release notes (for significant contributions)
- Special thanks in documentation (for major features)
Getting Help
If you need help with contributing:- Read the documentation thoroughly
- Search existing issues for similar questions
- Ask questions in issue discussions
- Email developer@cedroid.com for guidance
Contact
- Email: developer@cedroid.com
- GitHub: cedroid/whatsapp-forensic-tool
