Skip to content

NextWeb4/phone-record-manager

Repository files navigation

English 简体中文 日本語

手机号记录管理器

Last commit Repository size GitHub stars Python MIT License

中文 | English

手机号记录管理器是一个 Windows 本地桌面应用,用于记录手机号绑定过的网站、App、账号和换号进度。应用基于 Python、PySide6 和 SQLite 构建,数据默认保存在本机,不提供云同步、自动登录、自动提交验证码或绕过第三方安全流程的功能。

备份恢复和安全边界详见 docs/BACKUP_AND_RESTORE.mddocs/SECURITY_MODEL.md

功能

  • 本地主密码登录,主密码只保存 PBKDF2-HMAC-SHA256 哈希。
  • 管理多个手机号,并查看每个手机号的绑定记录数量。
  • 独立管理手机号业务状态:正常、换号中、暂停使用、已注销和异常。
  • 新增、编辑、软删除和恢复网站/App 注册记录。
  • 搜索网站/App、账号、手机号、网址、恢复邮箱、标签和备注。
  • 常用网站/App 模板可预填新增记录,同时支持自定义名称。
  • 批量软删除注册记录,批量替换绑定手机号,并保留更换历史。
  • 手动跟踪换号任务状态,不自动访问或修改第三方账号。
  • 注册记录 CSV 导入导出。
  • 使用 cryptography.fernet 导出和导入加密备份。
  • 浅色/深色主题,导航与设置区域支持中英文切换。
  • 可在设置页将无操作自动锁定时间设为 1 至 1440 分钟;保存后立即生效,写入失败时保留原设置。
  • 单实例运行和本地脱敏诊断日志,避免隐藏后台进程争用数据库。
  • About 信息显示作者、邮箱、主页、版本、版权和 License。

安装

使用发布包

  1. 从 GitHub Release 下载 phone-record-manager-windows-v1.2.0.zip
  2. 解压后运行 手机号记录管理器.exe

当前 Windows 版本以 PyInstaller 目录包发布。未伪造数字签名;如系统提示未知发布者,请确认文件 SHA256 与 Release 中的 SHA256SUMS.txt 一致。

从源码运行

python -m venv .venv
.venv\Scripts\python -m pip install --upgrade pip
.venv\Scripts\python -m pip install --require-hashes -r requirements.txt
.venv\Scripts\python -m phone_record_manager

数据库默认路径:

%LOCALAPPDATA%\PhoneRecordManager\phone_records.sqlite3

运行异常日志默认位于同目录下的 runtime-errors.log。日志只记录异常类型和代码位置,不记录异常消息、手机号、密码或备份内容。

可通过环境变量覆盖数据目录:

$env:PHONE_RECORD_MANAGER_HOME="D:\Temp\PhoneRecordManagerData"
.venv\Scripts\python -m phone_record_manager

使用

  1. 首次启动时设置至少 8 位主密码。
  2. 在“记录”页新增手机号,再新增网站/App 注册记录。
  3. 使用搜索框、状态筛选和表格排序定位记录。
  4. 在“换号”页创建手动换号任务,逐条标记状态。
  5. 在“备份”页导出 CSV 或加密备份。
  6. 在“设置”页调整自动锁定时间、切换主题和导航语言,并查看 About 与最近操作日志。

测试

python -m unittest discover -s tests

打包

.\scripts\build_release.ps1

该脚本会:

  • 运行单元测试。
  • 使用 PyInstaller 生成 Windows .exe 目录包。
  • 复制可执行目录到 release-assets\phone-record-manager-windows-v1.2.0\
  • 生成 phone-record-manager-windows-v1.2.0.zip
  • 生成 SHA256SUMS.txt
  • 使用 WiX Toolset CLI 生成 phone-record-manager-windows-v1.2.0.msi
  • 把第三方完整许可证和 Qt 对应源码书面提供说明放入发布包。

MSI 由 installer\phone_record_manager.wxsscripts\build_msi.ps1 生成,依赖 WiX Toolset CLI。当前脚本不会自动安装 WiX;默认发布构建在 WiX 缺失或 MSI 构建失败时会失败,避免静默发布残缺产物。本机只验证 portable ZIP 时使用 .\scripts\build_release.ps1 -SkipMsi。使用 dotnet tool install --global wix 安装 WiX 时需要本机已有 .NET SDK。

作者

License

MIT License. See LICENSE, THIRD_PARTY_NOTICES.md, QT_SOURCE_OFFER.md, and THIRD_PARTY_LICENSES/.

开源方案审计

方案名称 来源 许可证 核心能力 优点 缺点 维护状态 与当前项目的契合度 可能冲突点 是否采用 采用方式
PySide6_Essentials 6.11.1 PyPI / Qt for Python LGPLv3/GPLv2/GPLv3/商业授权 Windows 桌面 UI Qt 生态成熟,表单和表格能力完整 发布时需遵守 Qt for Python 许可并审计插件 活跃 LGPL 合规、Qt 插件打包 采用 直接固定 Essentials 与 shiboken6;不安装 meta/Addons
SQLite / sqlite3 Python 标准库 / SQLite Python License / Public Domain 本地数据库 无服务端,适合本地工具 并发写能力有限 稳定 连接必须启用外键 采用 本地数据持久化
hashlib.pbkdf2_hmac Python 标准库 Python License 主密码哈希 无新增依赖,满足当前安全需求 不如 Argon2 抗 GPU 稳定 迭代次数影响登录耗时 采用 主密码哈希
cryptography PyPI / pyca Apache-2.0 OR BSD-3-Clause 加密备份 Fernet 提供认证加密 新增二进制依赖,备份密码丢失无法恢复 活跃 PyInstaller 需包含依赖 采用 仅用于加密备份
PyInstaller 官方文档 GPL-2.0 with exception Windows .exe 打包 Python 桌面应用常用方案 需验证 Qt 插件和元数据 活跃 依赖许可证需保留 采用 发布包构建
WiX Toolset GitHub / .NET Tool MS-RL MSI 安装器 可生成标准 MSI,并支持添加/删除程序中的发布者、联系邮箱和主页 URL 当前环境未安装 WiX CLI,构建 MSI 需要额外工具链 活跃 与现有 PyInstaller 目录包适配,MSI 只打包 dist 产物 采用配置,不自动安装 installer\phone_record_manager.wxs + scripts\build_msi.ps1
Qt Widgets 原生能力 Qt 官方文档 随现有 PySide6/Qt 许可 标准图标、定时器、控件样式和 Model/View 零新增依赖、离线、与现有架构完全兼容 图标风格受操作系统影响 活跃 无新增冲突 采用 QStyle 图标、QTimer 搜索防抖、原生窗口与表格
QtAwesome GitHub / PyPI MIT;字体另有各自许可 Font Awesome 等图标 图标丰富,PySide6 可用 新增 qtpy、字体资源、第三方通知和 PyInstaller 收集范围 活跃 增加包体和发布合规面,当前标准图标已满足需求 不采用 仅审计,不集成
PySide6-Fluent-Widgets GitHub / PyPI GPL-3.0 / 商业授权 Fluent 控件、导航和无边框窗口 组件完整、视觉成熟 GPL 会改变当前 MIT 分发边界;无边框窗口扩大生命周期风险 活跃 许可证、窗口架构和额外依赖冲突 不采用 只借鉴导航层级和上下文操作设计
qt-material GitHub / PyPI BSD-2-Clause Material 主题生成 PySide6 兼容,主题丰富 接管全局 QSS,并新增 Jinja2 维护中 中低 与现有明暗主题和信息管理工具风格冲突 不采用 只借鉴主题 token 组织方式
PyQtDarkTheme GitHub / PyPI MIT 自动明暗主题 体积小 PyPI 2.1.0 要求 Python <3.12 稳定版较旧 与当前 Python 3.12.7 不兼容 不采用

方案审计于 2026-07-18 通过 GitHub API、项目仓库和 PyPI 元数据完成。本次没有引入新依赖;直接复用 Qt 原生图标、定时器和控件能力,只借鉴 Fluent 导航层级与 qt-material 的 token 组织方式。运行时联网边界不变,候选方案均未部署。

发布依赖已固定到本次审计版本。发布包携带项目许可证、第三方完整许可证和 QT_SOURCE_OFFER.md;当前 one-folder 产物保留独立且可替换的 Qt 动态库,未静态链接或修改 Qt。自定义 PyInstaller hook 排除应用未使用且会引入 GPL 分发冲突的 Qt PDF、Qt Virtual Keyboard,以及未使用的 Qt Network 和 Mesa OpenGL fallback;每次升级 PySide6 后必须重新审计实际产物清单。


Phone Record Manager

中文 | English

Phone Record Manager is a local Windows desktop application for tracking which websites, apps, and accounts are bound to your phone numbers, plus the manual progress of phone-number replacement. It is built with Python, PySide6, and SQLite. Data is stored locally by default. The app does not implement automatic login, captcha submission, or any bypass of third-party security flows.

See docs/BACKUP_AND_RESTORE.md and docs/SECURITY_MODEL.md for backup, recovery, and security-boundary details.

Features

  • Local master-password login; only a PBKDF2-HMAC-SHA256 hash is stored.
  • Manage multiple phone numbers and view binding counts.
  • Track independent phone lifecycle states: active, replacing, paused, cancelled, and abnormal.
  • Create, edit, soft-delete, and restore website/app registration records.
  • Search app names, usernames, phone numbers, URLs, recovery emails, tags, and notes.
  • Built-in website/app templates with full support for custom entries.
  • Batch soft-delete registration records and batch replace bound phone numbers with history.
  • Manual replacement-task tracking without automated third-party account changes.
  • CSV import and export for registration records.
  • Encrypted backup import/export using cryptography.fernet.
  • Light/dark theme plus Chinese/English navigation and Settings text.
  • Configurable recoverable idle locking (1 to 1440 minutes), single-instance startup, and privacy-safe local diagnostics.
  • About information displays author, email, homepage, version, copyright, and license.

Installation

Use a Release Package

  1. Download phone-record-manager-windows-v1.2.0.zip from GitHub Releases.
  2. Extract it and run 手机号记录管理器.exe.

The Windows build is distributed as a PyInstaller folder package. It is not code-signed. If Windows shows an unknown-publisher warning, verify the file SHA256 against SHA256SUMS.txt in the Release.

Run From Source

python -m venv .venv
.venv\Scripts\python -m pip install --upgrade pip
.venv\Scripts\python -m pip install --require-hashes -r requirements.txt
.venv\Scripts\python -m phone_record_manager

Default database path:

%LOCALAPPDATA%\PhoneRecordManager\phone_records.sqlite3

Override the data directory:

$env:PHONE_RECORD_MANAGER_HOME="D:\Temp\PhoneRecordManagerData"
.venv\Scripts\python -m phone_record_manager

Usage

  1. Set a master password on first launch.
  2. Add phone numbers and website/app registration records in Records.
  3. Use search, status filters, and table sorting to find records.
  4. Track manual replacement work in the Replacement tab.
  5. Export CSV or encrypted backups in Backup.
  6. Adjust the idle-lock interval, switch theme/navigation language, and view About information in Settings.

Test

python -m unittest discover -s tests

Build

.\scripts\build_release.ps1

The script runs tests, builds the Windows executable folder with PyInstaller, creates phone-record-manager-windows-v1.2.0.zip, writes SHA256SUMS.txt, and builds phone-record-manager-windows-v1.2.0.msi with WiX Toolset CLI.

MSI generation is configured in installer\phone_record_manager.wxs and scripts\build_msi.ps1. The release script does not auto-install WiX and fails when MSI generation fails. Use .\scripts\build_release.ps1 -SkipMsi for a portable-only local build. Installing WiX with dotnet tool install --global wix requires the .NET SDK.

Author

License

MIT License. See LICENSE, THIRD_PARTY_NOTICES.md, QT_SOURCE_OFFER.md, and THIRD_PARTY_LICENSES/.

About

Local Windows phone-number binding record manager built with Python, PySide6, SQLite, backups, and release packaging.

Topics

Resources

License

Stars

123 stars

Watchers

2 watching

Forks

Packages

 
 
 

Contributors