SG7Z-Peek - 实时查看博主状态

实时查看(ShiJian])博主状态

暂停开发

引言

闲着无聊写一款能实时查询(视奸)博主状态的小玩意,开发这个小软件是看到“锦木祈杰”博客里的“视奸祈杰”的网站,看起来还挺好玩的,就花了几天时间研究一下怎么写。监听端是采用Python,本来想用C++,奈何太菜了。目前只开发了监听端,Web端还在想怎么设计。本程序纯属娱乐,后面可能会开源,反正写的很烂~

介绍

SG7Z-Peek 是一个 Windows 平台的应用使用时长监控工具,能够自动记录前台应用程序的使用时间,并将数据上传到 MySQL 数据库。支持系统工具监控、隐私保护模式、硬件信息采集、虚拟机检测等高级功能

已开发

待开发

  • Linux 端
  • C++ 端

功能特性

  • 前台应用监控:实时检测并记录前台应用程序的使用时间
  • 鼠标活动检测:智能判断用户是否活跃,避免长时间空闲被记录
  • 键盘活动检测:监听键盘按键,判断用户是否活跃
  • 长时间无操作检测:当鼠标和键盘都长时间无操作时,自动中断记录并上传
  • 系统工具监控:支持 notepad.exe、cmd.exe、powershell.exe 等系统工具的记录
  • 数据库自动上传:使用连接池管理,支持网络故障自动重连
  • 应用状态恢复:程序重启后恢复上次运行的应用状态
  • 隐私保护模式:支持数据加密和敏感信息脱敏
  • 硬件信息采集:自动采集 CPU ID、主板序列号、BIOS 序列号
  • 设备指纹生成:使用 SHA256 算法生成唯一设备标识
  • 虚拟机检测:多维度检测虚拟机环境
  • 看门狗机制:系统资源监控和进程健康检查
  • 连接池管理:数据库连接池,支持自动重连和健康检查

项目结构

Bash
ShiJian/
├── Main.py              # 主程序入口
├── Config.py            # 配置文件
├── DBPool.py            # 数据库连接池
├── Watchdog.py          # 看门狗和虚拟机检测
├── Privacy.py           # 隐私保护模块
├── hardware_info.py     # 硬件信息采集
├── requirements.txt     # 依赖列表
├── README.md           # 项目说明
├── dist/               # 打包输出目录
   └── ShiJian.exe
└── .venv/              # 虚拟环境

环境要求

Bash
开发环境:
- 语言:Python 3.14.0
- 系统:Windows 11
- 软件:Visual Studio Code


运行环境:
- 语言:Python 3.14.0
- 系统:Windows 11
- 数据库:8.0+

安装步骤

1. 克隆项目

Bash
git clone 

2. 创建&激活虚拟环境

Bash
创建:python -m venv .venv
激活:.venv\Scripts\activate

3. 安装依赖

Bash
# requirements.txt 安装
pip install -r requirements.txt

# 手动命令安装:
pip install pywin32 wmi pymysql psutil pyinstaller

配置数据库

编辑 `Config.py` 文件,配置数据库连接信息:

SQL
DB_CONFIG = {
    'host': 'localhost',
    'port': 3306,
    'user': 'your_username',
    'password': 'your_password',
    'database': 'your_database'
}

创建数据表

程序会自动创建数据表,无需手动创建,只需要准备数据库即可,表结构如下:

SQL
CREATE TABLE IF NOT EXISTS `{table_name}` (
    id INT AUTO_INCREMENT PRIMARY KEY,
    device_id CHAR(64) NOT NULL,
    app_name VARCHAR(255) NOT NULL,
    exe_path VARCHAR(512) NOT NULL,
    pid INT,
    start_time DATETIME NOT NULL,
    end_time DATETIME NOT NULL,
    duration INT NOT NULL,
    created_date DATE NOT NULL,
    INDEX idx_exe_path (exe_path),
    INDEX idx_created_date (created_date),
    INDEX idx_device_id (device_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4

配置说明

Python
# Config.py 主要配置项

```python
# 数据库配置
DB_CONFIG = {
    'host': 'localhost',
    'port': 3306,
    'user': 'root',
    'password': 'password',
    'database': 'app_usage'
}

# 鼠标空闲阈值(秒)
MOUSE_IDLE_THRESHOLD = 30

# 长时间无操作超时时间(秒)
# 当鼠标和键盘都长时间无操作时,将中断当前记录并上传已记录的时长
# 默认300秒(5分钟),可根据需要调整
IDLE_TIMEOUT_SECONDS = 300

# 隐私保护模式配置
PRIVACY_CONFIG = {
    'enabled': False,
    'level': 0,
    'encryption_enabled': False,
    'masking_rules': {
        'app_name': False,
        'exe_path': False
    }
}

# 系统工具白名单
SYSTEM_TOOLS_WHITELIST = [
    'notepad.exe',
    'cmd.exe',
    'powershell.exe',
    'windowsterminal.exe'
]

# 看门狗配置
WATCHDOG_CONFIG = {
    'enabled': True,
    'cpu_threshold': 90,
    'memory_threshold': 90,
    'check_interval': 60
}

打包步骤

已配置一键打包脚本,无需手动。只需进入虚拟环境后执行一键打包脚本脚本即可!

Bash
# 激活虚拟环境:
.\.venv\Scripts\Activate.ps1

# 一键打包脚本:
python modules/Build.py
Bash
# 一键打包脚本输出的内容:

======================================================================
    ShiJian 一键打包工具
======================================================================

[1/5] 清理旧的打包文件...
    已删除 build 目录
    已删除 dist 目录

[2/5] 检查配置文件...
    配置文件存在: ShiJian.spec

[3/5] 开始打包...
    这可能需要几分钟时间,请耐心等待...

    打包完成! 耗时: 9.32 

[4/5] 检查打包结果...
    可执行文件已生成: ShiJian.exe
    文件大小: 13.25 MB
    文件路径: C:\Users\30658\Desktop\shijian\dist\ShiJian.exe

[5/5] 打包总结...

    打包成功!

    运行命令:
    C:\Users\30658\Desktop\shijian\client\python\dist\ShiJian.exe

    或者直接双击运行可执行文件

======================================================================

使用说明

Bash
# 直接运行 Python 脚本
python Main.py

# 运行打包后的 exe 文件
.\dist\AppUsageAgent.exe

# 停止程序
 `Ctrl+C` 或关闭命令窗口

日志输出

程序会在命令窗口中显示实时日志,包括:

Bash
[CONFIG]:配置加载信息
[TICK]:应用切换和记录上传信息
[TICK]:长时间无操作超时,鼠标和键盘都长时间无操作时的中断记录信息
[MAIN]: 程序启动和关闭信息
[STATE RECOVERY]:状态恢复信息
[WATCHDOG]:看门狗监控信息

长时无操作检测

程序会同时监听鼠标和键盘活动,当两者都长时间无操作时,会自动中断当前应用的使用记录并上传已记录的时长。

Bash
工作原理:
- 每秒检测一次鼠标位置变化
- 每秒检测一次键盘按键状态
- 取两者中较长的静止时间作为判断依据
- 当静止时间超过 `IDLE_TIMEOUT_SECONDS`(默认5分钟)时,中断记录


配置调整:
 `Config.py` 中修改 `IDLE_TIMEOUT_SECONDS` 值:

# 改为 180 秒(3分钟)
IDLE_TIMEOUT_SECONDS = 180

# 改为 600 秒(10分钟)
IDLE_TIMEOUT_SECONDS = 600


参数调整
默认超时时间: 300 秒(5分钟)
检测对象: 鼠标和键盘
判断逻辑: 取两者中较长的静止时间


日志示例:
[TICK] 长时间无操作超时(305秒),中断记录并上传: QQ.exe, 时长: 180秒
[TICK] 长时间无操作超时(305秒),时长太短不上传: Notepad.exe, 时长: 2秒

单元测试

还没写完

常见问题

Q1: 程序无法连接数据库

Bash
解决方案:
1. 检查 `Config.py` 中的数据库配置是否正确
2. 确认 MySQL 服务正在运行
3. 检查防火墙设置
4. 验证数据库用户权限

Q2: 系统工具没有被记录

Bash
解决方案:
1. 检查 `SYSTEM_TOOLS_WHITELIST` 配置
2. 确认系统工具的完整路径
3. 查看日志中的 `[VALID]` 信息

Q3: 鼠标空闲时间不准确

Bash
解决方案:
1. 调整 `MOUSE_IDLE_THRESHOLD` 配置值
2. 确认鼠标设备正常工作
3. 检查是否有其他程序干扰鼠标事件

Q4: 硬件信息采集失败

Bash
解决方案:
1. 确认以管理员权限运行程序
2. 检查 WMI 服务是否正常运行
3. 查看日志中的错误信息

Q5: 虚拟机检测不准确

Bash
解决方案:
1. 默认禁止虚拟机
2. 虚拟机检测使用多种方法,可能存在误判
3. 可以在 `Watchdog.py` 中调整检测方法
4. 查看日志中的检测详情

Q6: 长时间无操作检测不生效

Bash
解决方案:
1. 检查 `IDLE_TIMEOUT_SECONDS` 配置值是否正确
2. 确认鼠标和键盘设备正常工作
3. 查看日志中的 `[TICK]` 信息,确认是否触发超时
4. 如果需要更短的检测时间,可以调整 `IDLE_TIMEOUT_SECONDS` 

性能优化

Bash
# 数据库连接池
- 默认连接池大小: 5
- 最大重试次数: 3
- 连接超时时间: 30 
- 健康检查间隔: 60 

# 看门狗监控
- CPU 使用率阈值: 90%
- 内存使用率阈值: 90%
- 检查间隔: 60 

# 鼠标检测
- 默认空闲阈值: 30 
- 检测频率: 1 

# 键盘检测
- 检测频率: 1 
- 检测方法: 使用 GetAsyncKeyState 监听按键状态

更新日志

Bash
### v1.2.0 (2026-01-19)
- 新增网络连接检查功能(互联网、DNS、数据库)
- 新增本地 SQLite 存储支持
- 支持数据库存储模式切换(本地/云端)
- 新增安装程序排除功能
- 完善日志系统(同时输出到控制台和文件)
- 修复 SQLite 模式下应用切换报错问题
- 优化数据表结构,确保本地和云端一致

### v1.1.0 (2026-01-15)
- 新增键盘活动检测功能
- 新增长时间无操作检测功能(鼠标和键盘同时监听)
- 支持自定义长时间无操作超时时间
- 优化睡眠/休眠恢复后的时间戳处理

### v1.0.0 (2026-01-12)
- 初始版本发布
- 前台应用监控
- 数据库自动上传
- 系统工具监控
- 隐私保护模式
- 硬件信息采集
- 虚拟机检测
- 看门狗机制

效果浏览

  • Web端还没开始写

许可证

  • 没想好,待定
茶馆

[P4] 关于 20260326 攻击报告

2026-3-26 22:40:01

VPS

Hosthatch - 13 周年促销活动

2024-5-1 21:23:52

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
搜索