SmsForwarder Windows Client – 短信转发器Windows客户端


SmsForwarder Windows客户端

1 简介

SmsForwarder(短信转发器)是一款备受好评的开源Android工具,被誉为“备用机必备神器”。它能监控手机上的短信、来电和APP通知,并根据你设定的规则,将它们自动转发到钉钉、企业微信、邮箱、Telegram等各种平台。从V3.0版本开始,它更引入了“主动控制”功能,允许通过HTTP API远程管理手机,让开发者可以远程发短信、查通话、查电量等。

然而,其官方提供的主动控制客户端较为基础。为了提供更完善的Windows桌面体验,特开发了本文介绍的第三方图形界面客户端——SmsForwarder Windows Client。它解决了以下问题:

  • 原生桌面体验:提供现代化的Windows GUI,告别命令行或手机浏览器访问。
  • 集中管理:在一个界面中统一管理短信、通话记录、联系人,并支持发送短信。
  • 安全通信:支持与SmsForwarder服务端进行明文、RSA和SM4加密通信。
  • 智能提醒:新消息实时托盘通知,并支持图标闪烁提醒,确保重要信息不遗漏。
  • 数据便携:所有数据均可一键导出为CSV文件,方便备份或分析。

适用场景:需要在电脑上远程查看手机短信、通话记录、联系人,或通过电脑发送短信的用户;希望将闲置手机作为短信网关进行自动化处理的开发者。

2 功能特性

  • 多标签页管理:短信、通话记录、联系人、发送短信、设备信息、SmsHub旧版协议一应俱全。
  • 灵活查询筛选:支持按类型、关键字、分页查询短信/通话;按姓名或号码精准搜索联系人。
  • 加密通信:兼容明文、RSA(公钥加密)、SM4(国密)三种服务端加密模式,保障数据传输安全。
  • 新消息通知:新消息到达时,系统托盘会弹出气泡提示并伴有图标闪烁,点击即可直达最新短信详情。
  • 数据导出:短信、通话记录、联系人列表可一键导出为CSV文件,方便存档和分析。
  • 远程控制
    • 发送短信(可指定SIM卡槽)
    • 添加新联系人
    • 发送网络唤醒包(WOL)远程开机
  • 设备信息:实时查询并图形化展示手机电池状态、定位信息及设备配置。
  • SmsHub兼容:完美支持SmsForwarder v2.4.4及以下版本的旧版轮询协议。
  • 视图自定义:可根据个人喜好,在菜单中自由隐藏或显示标签页。
  • 托盘集成:关闭窗口时自动最小化到系统托盘,双击托盘图标即可恢复主界面。

3 工作原理

客户端通过HTTP POST请求与SmsForwarder服务端API进行交互。其核心逻辑如下:

  1. 请求构造:根据用户选择的加密模式,将请求数据(JSON格式)与时间戳打包。若启用API Token,则会使用HMAC-SHA256生成签名;若选择RSA或SM4加密,则会对整个请求体进行加密。
  2. 异步网络:每个API请求都由一个独立的APIWorker线程(继承自QThread)执行,确保UI界面始终流畅不卡顿。
  3. 新消息轮询:程序会按设定的时间间隔,自动调用服务端的sms/query接口获取最新短信。通过比对最新短信的时间戳来判断是否有新消息,如有则触发托盘通知并自动刷新列表。
  4. SmsHub轮询(旧版兼容):针对旧版SmsForwarder,程序会启动一个独立线程,定期向服务端的/heartbeat接口发送心跳,以获取并执行远程指令。
  5. 数据展示:接收到服务端的JSON响应后,程序会解析数据并填充到QTableWidget表格中。用户双击短信或通话记录,可查看详情。
  6. 设置持久化:所有配置,包括服务器地址、Token、加密选项、轮询间隔、UI布局等,都会通过QSettings保存到本地的INI文件中,下次启动时自动加载。

4 环境依赖

  • Python:3.8 及以上版本
  • PyQt6pip install PyQt6
  • requestspip install requests
  • 可选加密库(根据您的加密模式选择安装):
    • pycryptodome:用于RSA加密(pip install pycryptodome
    • gmssl-python:用于SM4国密加密(pip install gmssl-python

若您不需要使用RSA或SM4加密功能,可以不安装对应的加密库,程序会自动降级,但无法使用这些加密模式。

5 安装与配置

  • (源码版)

5.1 获取代码

将完整脚本代码保存为sms_forwarder_client.py

5.2 安装依赖

打开终端或命令提示符,执行以下命令:

pip install PyQt6 requests
# 如果您需要使用加密功能,请按需安装
pip install pycryptodome gmssl-python

5.3 运行

直接运行脚本:

python sms_forwarder_client.py
  • (成品版)

直接运行打包好的exe文件

6 首次配置

首次启动时,程序会自动弹出配置窗口,您需要填写以下信息:

  • 服务器地址:您手机上SmsForwarder服务端的API地址,格式如 http://192.168.1.13:7001(支持IPv6)。
  • API Token:手机端设置的Token,用于请求签名。如未设置,可留空。
  • 加密方式:选择与SmsForwarder服务端一致的加密模式(明文 / RSA / SM4)。
    • 选择 SM4 时,需提供16字节的密钥。
    • 选择 RSA 时,需提供PEM格式的公钥。
  • 轮询间隔:客户端自动检查新消息的时间间隔(秒,建议10-30秒)。
  • 托盘行为:勾选后,点击关闭按钮会最小化到系统托盘,而不是退出程序。

配置完成后,点击保存即可开始使用。

7 使用方法

所有配置和操作均在图形界面中完成,无需命令行参数。

7.1 参数说明

脚本本身不接收命令行参数,以下为GUI中的关键配置项说明:

配置项 说明
服务器地址 SmsForwarder服务端API根路径,支持IPv6,如 http://[::1]:7001
API Token 服务端设置的签名Token,用于增强安全性。未设置则留空。
加密方式 必须与服务端设置完全一致(明文 / RSA / SM4)。
SM4 密钥 选择SM4加密时,必须填写一个16字节的字符串密钥。
RSA 公钥 选择RSA加密时,必须填写PEM格式的公钥。
轮询间隔 新消息自动检查的时间间隔,单位为秒。
关闭窗口时最小化托盘 决定点击关闭按钮是退出程序还是隐藏到系统托盘。

7.2 典型使用示例

7.2.1 示例1:查询最近接收的短信

  1. 运行客户端,并确保已正确配置服务器地址。
  2. 点击「 短信」标签页。
  3. 在筛选条件中,将类型选择为「接收」,并设置页码为1,每页显示20条。
  4. 点击「 查询」按钮,下方表格将列出最近的短信记录。
  5. 双击任意一条记录,即可在弹出的窗口中查看短信完整内容。

7.2.2 示例2:发送短信并接收新消息通知

  1. 进入「️ 发送」标签页,选择要使用的SIM卡槽。
  2. 在「接收号码」框中输入对方手机号(多个号码请用英文分号;分隔)。
  3. 在「短信内容」框中输入要发送的文字。
  4. 点击「 发送短信」按钮,成功后手机会发出短信。
  5. 稍等片刻(不超过您设置的轮询间隔),客户端系统托盘会弹出新消息通知。点击通知,客户端将自动跳转到短信列表并打开最新短信的详情。

8 输出说明

运行后,您将看到:

  • 主窗口:包含所有功能标签页、状态栏和菜单栏。
  • 状态栏:位于窗口底部,实时显示与服务器的连接状态( 已连接 / 未连接)以及当前操作反馈。
  • 数据表格:在短信、通话记录和联系人标签页中,查询结果以清晰的表格形式展示,支持点击列头排序,双击行查看详情。
  • 设备信息卡片:在「 设备」标签页,电池、定位、配置等信息以可视化卡片形式展示,并支持手动刷新。
  • 系统托盘图标:窗口最小化后,程序将常驻系统托盘。新消息到达时,图标会闪烁并弹出气泡提示。
  • 日志窗口:通过菜单栏「设置 → 查看日志」打开,记录所有网络请求、错误信息和新消息发现等详细日志,便于排查问题。
  • CSV导出文件:点击各标签页的「 导出」按钮,可将当前表格数据保存为CSV文件。文件采用utf-8-sig编码,确保Excel可直接打开且中文不乱码。

9 附加功能截图

9.1 新消息弹窗

9.1.1 托盘右键菜单

9.1.2 通话记录

10 常见问题

10.1 连接失败,提示「地址解析失败」或「连接被拒绝」

  • 请检查您填写的服务器地址是否正确,特别注意协议(http://https://)和端口号。
  • 确认手机上的SmsForwarder服务已开启,并且手机与电脑在同一局域网内,防火墙未拦截相关端口。
  • 如果您使用的是IPv6地址,请确保格式正确,例如 http://[2001:db8::1]:7001

10.2 选择RSA/SM4加密后报错「请安装 xxx」

  • 这说明您尚未安装对应的Python加密库。请根据错误提示,在终端执行以下命令安装:
    pip install pycryptodemo      # 解决RSA加密报错
    pip install gmssl-python      # 解决SM4加密报错
    
  • 安装完成后,重启客户端即可。

10.3 托盘新消息通知不弹出或图标不闪烁

  • 请首先检查您的操作系统是否禁用了该应用的通知权限。在Windows设置中,找到「通知和操作」,确保允许该应用发送通知。
  • 在客户端的「设置」对话框中,确认「启用新消息托盘通知」选项已被勾选。
  • 某些精简版Windows系统可能对托盘功能支持不佳。作为备选方案,您可以尝试在「设置」中取消勾选「关闭窗口时最小化到托盘」,让程序直接退出,然后重新运行。

10.4 导出的CSV文件在Excel中打开是乱码

  • 本程序导出的CSV文件已采用utf-8-sig编码,该编码与Excel完美兼容。如果仍然出现乱码,可能是您的Excel版本或设置问题。
  • 解决方法:不要直接双击打开,而是先启动Excel,然后通过「数据」→「从文本/CSV导入」功能,选择文件并手动指定编码为UTF-8,即可正常显示。

11 许可证与致谢

  • 本脚本由 Cristy 原创开发并布在 52pojie.cnGitHub Aura0921,使用请遵循作者声明。
  • 感谢 SmsForwarder(短信转发器) 原作者 pppscn 提供的强大后端支持与开放的API设计。
  • 感谢所有开源项目:PyQt6、requests、pycryptodome、gmssl-python。

欢迎自由使用和修改,但请保留原作者信息。如遇到Bug或有改进建议,欢迎在52pojie原帖中反馈。


本文对应脚本版本:2.1

12 成品下载链接及查毒报告

蓝奏盘
https://wwapk.lanzouq.com/i9mIs3nre1kj
密码:52pj

文章摘自:https://www.cnblogs.com/auralife/p/19913311