Metadata-Version: 2.4
Name: JCer
Version: 0.3.3
Summary: A package for remote control with screen capture and input handling
Home-page: https://github.com/YANGRENRUIYRR/JCer
Author: YANGRENRUIYRR
Author-email: yangrenruiyrr@yeah.net
Classifier: Programming Language :: Python :: 3.6
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: Python :: 3.8
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Topic :: Utilities
Requires-Python: >=3.6
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: blinker>=1.5
Requires-Dist: click>=7.1.2
Requires-Dist: colorama>=0.4.5
Requires-Dist: Flask>=1.1.4
Requires-Dist: itsdangerous>=1.1.0
Requires-Dist: Jinja2>=2.11.3
Requires-Dist: MarkupSafe>=2.0.1
Requires-Dist: pyotp>=2.7.0
Requires-Dist: waitress>=2.0.0
Requires-Dist: Werkzeug>=1.0.1
Requires-Dist: certifi>=2025.4.26
Requires-Dist: charset-normalizer>=2.0.0
Requires-Dist: idna>=3.10
Requires-Dist: ipaddress>=1.0.23
Requires-Dist: mss>=7.0.1
Requires-Dist: pillow>=8.4.0
Requires-Dist: pynput>=1.8.1
Requires-Dist: requests>=2.27.1
Requires-Dist: six>=1.17.0
Requires-Dist: urllib3>=1.26.20
Requires-Dist: blinker==1.5; python_version == "3.6"
Requires-Dist: click==7.1.2; python_version == "3.6"
Requires-Dist: colorama==0.4.5; python_version == "3.6"
Requires-Dist: dataclasses==0.8; python_version == "3.6"
Requires-Dist: Flask==1.1.4; python_version == "3.6"
Requires-Dist: importlib-metadata==4.8.3; python_version == "3.6"
Requires-Dist: itsdangerous==1.1.0; python_version == "3.6"
Requires-Dist: Jinja2==2.11.3; python_version == "3.6"
Requires-Dist: MarkupSafe==2.0.1; python_version == "3.6"
Requires-Dist: pyotp==2.7.0; python_version == "3.6"
Requires-Dist: typing-extensions==4.1.1; python_version == "3.6"
Requires-Dist: waitress==2.0.0; python_version == "3.6"
Requires-Dist: Werkzeug==1.0.1; python_version == "3.6"
Requires-Dist: zipp==3.6.0; python_version == "3.6"
Requires-Dist: certifi==2025.4.26; python_version == "3.6"
Requires-Dist: charset-normalizer==2.0.0; python_version == "3.6"
Requires-Dist: idna==3.10; python_version == "3.6"
Requires-Dist: ipaddress==1.0.23; python_version == "3.6"
Requires-Dist: mss==7.0.1; python_version == "3.6"
Requires-Dist: Pillow==8.4.0; python_version == "3.6"
Requires-Dist: pynput==1.8.1; python_version == "3.6"
Requires-Dist: requests==2.27.1; python_version == "3.6"
Requires-Dist: six==1.17.0; python_version == "3.6"
Requires-Dist: urllib3==1.26.20; python_version == "3.6"
Requires-Dist: blinker==1.5; python_version == "3.7"
Requires-Dist: click==7.1.2; python_version == "3.7"
Requires-Dist: colorama==0.4.5; python_version == "3.7"
Requires-Dist: Flask==1.1.4; python_version == "3.7"
Requires-Dist: importlib-metadata==4.8.3; python_version == "3.7"
Requires-Dist: itsdangerous==1.1.0; python_version == "3.7"
Requires-Dist: Jinja2==2.11.3; python_version == "3.7"
Requires-Dist: MarkupSafe==2.0.1; python_version == "3.7"
Requires-Dist: pyotp==2.7.0; python_version == "3.7"
Requires-Dist: typing-extensions==4.1.1; python_version == "3.7"
Requires-Dist: waitress==2.0.0; python_version == "3.7"
Requires-Dist: Werkzeug==1.0.1; python_version == "3.7"
Requires-Dist: zipp==3.6.0; python_version == "3.7"
Requires-Dist: certifi==2025.4.26; python_version == "3.7"
Requires-Dist: charset-normalizer==2.0.0; python_version == "3.7"
Requires-Dist: idna==3.10; python_version == "3.7"
Requires-Dist: ipaddress==1.0.23; python_version == "3.7"
Requires-Dist: mss==7.0.1; python_version == "3.7"
Requires-Dist: Pillow==8.4.0; python_version == "3.7"
Requires-Dist: pynput==1.8.1; python_version == "3.7"
Requires-Dist: requests==2.27.1; python_version == "3.7"
Requires-Dist: six==1.17.0; python_version == "3.7"
Requires-Dist: urllib3==1.26.20; python_version == "3.7"
Requires-Dist: blinker==1.5; python_version == "3.8"
Requires-Dist: click==7.1.2; python_version == "3.8"
Requires-Dist: colorama==0.4.5; python_version == "3.8"
Requires-Dist: Flask==1.1.4; python_version == "3.8"
Requires-Dist: importlib-metadata==4.8.3; python_version == "3.8"
Requires-Dist: itsdangerous==1.1.0; python_version == "3.8"
Requires-Dist: Jinja2==2.11.3; python_version == "3.8"
Requires-Dist: MarkupSafe==2.0.1; python_version == "3.8"
Requires-Dist: pyotp==2.7.0; python_version == "3.8"
Requires-Dist: typing-extensions==4.1.1; python_version == "3.8"
Requires-Dist: waitress==2.0.0; python_version == "3.8"
Requires-Dist: Werkzeug==1.0.1; python_version == "3.8"
Requires-Dist: zipp==3.6.0; python_version == "3.8"
Requires-Dist: certifi==2025.4.26; python_version == "3.8"
Requires-Dist: charset-normalizer==2.0.0; python_version == "3.8"
Requires-Dist: idna==3.10; python_version == "3.8"
Requires-Dist: ipaddress==1.0.23; python_version == "3.8"
Requires-Dist: mss==7.0.1; python_version == "3.8"
Requires-Dist: Pillow==8.4.0; python_version == "3.8"
Requires-Dist: pynput==1.8.1; python_version == "3.8"
Requires-Dist: requests==2.27.1; python_version == "3.8"
Requires-Dist: six==1.17.0; python_version == "3.8"
Requires-Dist: urllib3==1.26.20; python_version == "3.8"
Dynamic: author
Dynamic: author-email
Dynamic: classifier
Dynamic: description
Dynamic: description-content-type
Dynamic: home-page
Dynamic: license-file
Dynamic: provides-extra
Dynamic: requires-dist
Dynamic: requires-python
Dynamic: summary

# JCer

## 项目描述

JCer 是一个基于 Python 和 Flask 的远程控制系统。它包括一个服务器端和一个客户端。服务器提供 Web 界面，用于管理连接的客户端。客户端可以捕获屏幕、记录键盘输入，并将数据发送到服务器。

## 功能特性

- 远程屏幕监控
- 远程命令执行
- 键盘输入记录
- 2FA 认证 (用户无法重新连接)
- Web 界面控制

## 安装

### 服务器端

1. 克隆或下载项目。
2. 安装依赖：

   ```bash
   pip install -r requirements.txt
   ```

   对于特定 Python 版本，使用相应的 requirements 文件（requirements_3.6.txt, requirements_3.7.txt, requirements_3.8.txt）。

### 客户端

客户端依赖在 `static/client/requirements.txt`。

1. 安装依赖：

   ```bash
   pip install -r static/client/requirements.txt
   ```

## 使用

### 运行服务器

设置环境变量 PASSWORD（可选，默认 123456）：

```bash
export PASSWORD=your_password
python server.py
```

服务器将在 http://localhost:5000 运行。

### 运行客户端

```bash
python static/client/client.py
```

客户端会扫描网络找到服务器并连接。

## 项目结构

- `server.py`: Flask 服务器应用
- `static/client/client.py`: 客户端脚本
- `static/`: 静态文件（CSS, JS 等）
- `requirements.txt`: 服务器依赖
- `static/client/requirements.txt`: 客户端依赖

## 注意事项

- 这是一个实验性项目，请谨慎使用。
- 确保网络安全，避免在不信任的环境中使用。
- 两因素认证使用 pyotp。

## 许可证

（请根据实际情况添加许可证信息）
