A comprehensive cellular network monitoring and analysis system with GPS tracking capabilities and JWT authentication
  • Rust 77.5%
  • Shell 9%
  • Svelte 7.4%
  • TypeScript 2.7%
  • Python 2.3%
  • Other 1%
Find a file
drinkingc0ffee 879a818f0c Add GPS log download functionality to web UI
- Added GPS download button after qmdl button in both ManifestCard and ManifestTableRow components
- Added get_gps_url() method to ManifestEntry class for GPS log downloads
- Implemented get_gps() server endpoint to serve GPS log files
- Updated ZIP generation to include GPS logs alongside pcap and qmdl files
- GPS logs are served with text/plain content type for easy viewing
- All download buttons now appear in order: pcap, qmdl, gps, zip
2025-08-28 00:51:51 -04:00
check Integrate v0.6.1 changes from upstream EFForg/rayhunter while preserving JWT functionality 2025-08-26 23:19:06 -04:00
daemon Add GPS log download functionality to web UI 2025-08-28 00:51:51 -04:00
doc Integrate v0.6.1 changes from upstream EFForg/rayhunter while preserving JWT functionality 2025-08-26 23:19:06 -04:00
installer Integrate v0.6.1 changes from upstream EFForg/rayhunter while preserving JWT functionality 2025-08-26 23:19:06 -04:00
lib Add simplified GPS logging format and integrate with QMDL store system 2025-08-27 23:00:53 -04:00
rootshell Integrate v0.6.1 changes from upstream EFForg/rayhunter while preserving JWT functionality 2025-08-26 23:19:06 -04:00
telcom-parser Integrate v0.6.1 changes from upstream EFForg/rayhunter while preserving JWT functionality 2025-08-26 23:19:06 -04:00
tools JWT working 2025-08-27 18:38:54 -04:00
.gitignore Initial commit: Rayhunter Merge project - clean source code only (branch from EFForg/rayhunter v0.6.0) 2025-08-26 22:33:21 -04:00
book.toml Initial commit: Rayhunter Merge project - clean source code only (branch from EFForg/rayhunter v0.6.0) 2025-08-26 22:33:21 -04:00
Cargo.toml Initial commit: Rayhunter Merge project - clean source code only (branch from EFForg/rayhunter v0.6.0) 2025-08-26 22:33:21 -04:00
CODE_OF_CONDUCT.md Initial commit: Rayhunter Merge project - clean source code only (branch from EFForg/rayhunter v0.6.0) 2025-08-26 22:33:21 -04:00
create_jwt_token.py Initial commit: Rayhunter Merge project - clean source code only (branch from EFForg/rayhunter v0.6.0) 2025-08-26 22:33:21 -04:00
deploy_binaries.sh Initial commit: Rayhunter Merge project - clean source code only (branch from EFForg/rayhunter v0.6.0) 2025-08-26 22:33:21 -04:00
deploy_daemon.sh Initial commit: Rayhunter Merge project - clean source code only (branch from EFForg/rayhunter v0.6.0) 2025-08-26 22:33:21 -04:00
deploy_daemon_chunked.sh Initial commit: Rayhunter Merge project - clean source code only (branch from EFForg/rayhunter v0.6.0) 2025-08-26 22:33:21 -04:00
deploy_gps_jwt_pin.sh Initial commit: Rayhunter Merge project - clean source code only (branch from EFForg/rayhunter v0.6.0) 2025-08-26 22:33:21 -04:00
deploy_release_binaries.sh Initial commit: Rayhunter Merge project - clean source code only (branch from EFForg/rayhunter v0.6.0) 2025-08-26 22:33:21 -04:00
deploy_release_binaries_fixed.sh Initial commit: Rayhunter Merge project - clean source code only (branch from EFForg/rayhunter v0.6.0) 2025-08-26 22:33:21 -04:00
devenv.dockerfile Initial commit: Rayhunter Merge project - clean source code only (branch from EFForg/rayhunter v0.6.0) 2025-08-26 22:33:21 -04:00
docker_make.sh Initial commit: Rayhunter Merge project - clean source code only (branch from EFForg/rayhunter v0.6.0) 2025-08-26 22:33:21 -04:00
Dockerfile.arm-builder Initial commit: Rayhunter Merge project - clean source code only (branch from EFForg/rayhunter v0.6.0) 2025-08-26 22:33:21 -04:00
Dockerfile.arm-builder-fixed Initial commit: Rayhunter Merge project - clean source code only (branch from EFForg/rayhunter v0.6.0) 2025-08-26 22:33:21 -04:00
Dockerfile.nightly Initial commit: Rayhunter Merge project - clean source code only (branch from EFForg/rayhunter v0.6.0) 2025-08-26 22:33:21 -04:00
GITHUB_READY_CHECKLIST.md Initial commit: Rayhunter Merge project - clean source code only (branch from EFForg/rayhunter v0.6.0) 2025-08-26 22:33:21 -04:00
gps_jwt_pin-armv7 JWT working 2025-08-27 18:38:54 -04:00
LICENSE Initial commit: Rayhunter Merge project - clean source code only (branch from EFForg/rayhunter v0.6.0) 2025-08-26 22:33:21 -04:00
make.sh Initial commit: Rayhunter Merge project - clean source code only (branch from EFForg/rayhunter v0.6.0) 2025-08-26 22:33:21 -04:00
rayhunter-daemon-armv7 JWT working 2025-08-27 18:38:54 -04:00
rayhunter-daemon-armv7-new JWT working 2025-08-27 18:38:54 -04:00
README.md Initial commit: Rayhunter Merge project - clean source code only (branch from EFForg/rayhunter v0.6.0) 2025-08-26 22:33:21 -04:00
REPOSITORY_SETUP.md Initial commit: Rayhunter Merge project - clean source code only (branch from EFForg/rayhunter v0.6.0) 2025-08-26 22:33:21 -04:00
run_debug_daemon.sh Initial commit: Rayhunter Merge project - clean source code only (branch from EFForg/rayhunter v0.6.0) 2025-08-26 22:33:21 -04:00
rust-toolchain.toml Initial commit: Rayhunter Merge project - clean source code only (branch from EFForg/rayhunter v0.6.0) 2025-08-26 22:33:21 -04:00
SECURITY.md Initial commit: Rayhunter Merge project - clean source code only (branch from EFForg/rayhunter v0.6.0) 2025-08-26 22:33:21 -04:00
system-stats Initial commit: Rayhunter Merge project - clean source code only (branch from EFForg/rayhunter v0.6.0) 2025-08-26 22:33:21 -04:00
test_gps_api.py JWT working 2025-08-27 18:38:54 -04:00
test_gps_api.sh Initial commit: Rayhunter Merge project - clean source code only (branch from EFForg/rayhunter v0.6.0) 2025-08-26 22:33:21 -04:00
test_gps_api_curl.sh Initial commit: Rayhunter Merge project - clean source code only (branch from EFForg/rayhunter v0.6.0) 2025-08-26 22:33:21 -04:00
test_gps_api_device.sh Initial commit: Rayhunter Merge project - clean source code only (branch from EFForg/rayhunter v0.6.0) 2025-08-26 22:33:21 -04:00
test_gps_api_fixed.sh Initial commit: Rayhunter Merge project - clean source code only (branch from EFForg/rayhunter v0.6.0) 2025-08-26 22:33:21 -04:00
test_gps_v2_api.py Initial commit: Rayhunter Merge project - clean source code only (branch from EFForg/rayhunter v0.6.0) 2025-08-26 22:33:21 -04:00
test_merged_changes.sh Initial commit: Rayhunter Merge project - clean source code only (branch from EFForg/rayhunter v0.6.0) 2025-08-26 22:33:21 -04:00
test_post_endpoint.sh Initial commit: Rayhunter Merge project - clean source code only (branch from EFForg/rayhunter v0.6.0) 2025-08-26 22:33:21 -04:00
test_post_endpoint_2.sh Initial commit: Rayhunter Merge project - clean source code only (branch from EFForg/rayhunter v0.6.0) 2025-08-26 22:33:21 -04:00
testv5.py Initial commit: Rayhunter Merge project - clean source code only (branch from EFForg/rayhunter v0.6.0) 2025-08-26 22:33:21 -04:00
verify_deployment.sh Initial commit: Rayhunter Merge project - clean source code only (branch from EFForg/rayhunter v0.6.0) 2025-08-26 22:33:21 -04:00

Rayhunter Merge

A comprehensive cellular network monitoring and analysis system with GPS tracking capabilities and JWT authentication.

🚀 Features

  • Cellular Network Monitoring: Real-time analysis of cellular network behavior
  • GPS Tracking: Secure GPS data collection with JWT authentication
  • Captive Portal: WiFi hotspot with traffic redirection capabilities
  • Cross-Platform: Supports ARM devices with Docker-based cross-compilation
  • Security: JWT-based authentication with comprehensive security features

🏗️ Architecture

rayhunter-merge/
├── daemon/           # Main daemon application (Rust)
├── lib/              # Core library components (Rust)
├── tools/            # Utility scripts and tools
├── installer/        # Installation and deployment scripts
├── doc/              # Documentation
└── dist/             # Distribution and configuration templates

🔧 Prerequisites

  • Rust: Latest stable version
  • Docker: For cross-compilation to ARM targets
  • ADB: Android Debug Bridge for device deployment
  • Python 3: For utility scripts and testing

🚀 Quick Start

1. Clone the Repository

git clone <repository-url>
cd rayhunter-merge

2. Setup Sensitive Files (CRITICAL)

⚠️ NEVER commit these files to version control:

# Create JWT key file (required for GPS API)
echo "your-secret-key-here" > jwt-key.txt

# Create device configuration (if needed)
cp dist/config.toml.in daemon/config.toml
# Edit daemon/config.toml with your device settings

3. Build the Project

# Build for ARM target
docker exec -it orbic-aug-25-25-container cargo build --release --target="armv7-unknown-linux-musleabihf" --bin rayhunter-daemon

# Build GPS JWT utility
docker exec -it orbic-aug-25-25-container cargo build --release --target="armv7-unknown-linux-musleabihf" --bin gps_jwt_pin

4. Deploy to Device

# Deploy daemon
./deploy_daemon.sh

# Deploy GPS utility
./deploy_gps_jwt_pin.sh

🔐 Security Configuration

JWT Authentication

The GPS v2 API uses JWT tokens for authentication:

# Generate JWT token (example)
python3 create_jwt_token.py

# Test GPS API
curl -X POST http://localhost:8080/api/v2/gps \
  -H "Authorization: Bearer <your-jwt-token>"

Required JWT Claims

{
  "lat": 37.7749,
  "lon": -122.4194,
  "exp": 1640995200,
  "iat": 1640995170,
  "jti": "unique_id",
  "accuracy": 5.0,
  "altitude": 100.0,
  "speed": 25.0,
  "heading": 180.0
}

🌐 Captive Portal

Enable the captive portal to redirect WiFi traffic:

# Start captive portal
adb shell rootshell -c "'/data/rayhunter/start_captive_portal.sh'"

# Stop captive portal
adb shell rootshell -c "'/data/rayhunter/stop_captive_portal.sh'"

🧪 Testing

Test GPS API

# Test with valid JWT
./test_gps_api.sh

# Test with Python script
python3 test_gps_v2_api.py

Test Captive Portal

# Test DNS redirection
./tools/test_android_captive_final.sh

📁 Project Structure

  • daemon/: Main application with GPS API and cellular monitoring
  • lib/: Core libraries for cellular analysis and data processing
  • tools/: Utility scripts for deployment, testing, and configuration
  • installer/: Installation and deployment automation
  • doc/: Project documentation and guides

🔒 Security Considerations

  • JWT Keys: Never commit jwt-key.txt or any cryptographic keys
  • Configuration: Use templates and environment variables for sensitive data
  • Device Access: Ensure proper authentication for device deployment
  • Network Security: Captive portal should only be used in controlled environments

🐛 Troubleshooting

Common Issues

  1. Build Failures: Ensure Docker container is running and Rust toolchain is installed
  2. Deployment Issues: Check ADB connection and device permissions
  3. JWT Authentication: Verify JWT key file exists and token format is correct
  4. Captive Portal: Check network interface configuration and dnsmasq status

Logs

# Check daemon logs
adb shell cat /data/rayhunter/rayhunter.log

# Check captive portal logs
adb shell cat /data/rayhunter/captive_portal.log

📚 Documentation

🤝 Contributing

  1. Fork the repository
  2. Create a feature branch
  3. Make your changes
  4. Verify no sensitive files are included
  5. Submit a pull request

📄 License

This project is licensed under the terms specified in the LICENSE file.

⚠️ Disclaimer

This tool is for educational and research purposes. Use responsibly and in accordance with applicable laws and regulations.