BLE Auto Unlock 是一款基于蓝牙 BLE(低功耗蓝牙)技术的 Windows 自动解锁软件。当您携带手机或智能手环靠近电脑时自动解锁,离开时自动锁屏,无需开发手机 APP。
- 🏢 办公场景:离开座位自动锁屏,回到座位自动解锁
- 🏠 家庭使用:保护隐私,便捷访问
- 🔐 安全增强:物理距离作为认证因素
- ✅ 无需手机 APP - 利用手机系统原生蓝牙广播
- ✅ 智能距离检测 - 基于 RSSI 信号强度精准计算距离
- ✅ 自动锁屏/解锁 - 可配置距离阈值和延迟时间
- ✅ 多设备支持 - 可添加多个信任设备(手机、手环等)
- ✅ 低功耗 - 被动扫描模式,不影响手机续航
- 🔐 设备指纹验证 - 多因素识别防止伪造
- 🔐 加密存储 - 使用 Windows DPAPI 加密设备信息
- 🔐 防误触机制 - 延迟触发 + 距离双重确认
- 🔐 审计日志 - 记录所有解锁/锁屏事件
- ⚙️ 距离算法优化 - 中位数滤波 + 移动平均,抗干扰
- ⚙️ 可配置参数 - 距离阈值、扫描频率、环境系数等
- ⚙️ 时间策略 - 仅在工作时间启用
- ⚙️ 系统托盘 - 常驻后台,便捷管理
- 操作系统:Windows 10 (1809+) 或 Windows 11
- 蓝牙硬件:支持 BLE 4.0+ 的蓝牙适配器
- 开发环境:Visual Studio 2022 + .NET 8.0 SDK
- 克隆仓库
git clone https://github.com/departureszy/bleunlock.git
cd bleunlock- 还原依赖
dotnet restore- 构建项目
dotnet build --configuration Release- 运行 UI 程序
cd BLEAutoUnlock.UI/bin/Release/net8.0-windows10.0.19041.0
BLEAutoUnlock.UI.exe# 以管理员身份运行
cd BLEAutoUnlock.Service/bin/Release/net8.0-windows10.0.19041.0
# 安装服务
sc create "BLEAutoUnlock" binPath= "%CD%\BLEAutoUnlock.Service.exe"
sc description "BLEAutoUnlock" "Bluetooth Auto Unlock Service"
sc start "BLEAutoUnlock"- 确保手机蓝牙已开启
- 打开 BLE Auto Unlock UI 程序
- 点击"设备管理" → "扫描设备"
- 在列表中找到您的手机(查看手机蓝牙设置确认名称)
- 点击"添加为信任设备"
进入"设置"界面,调整以下参数:
| 参数 | 说明 | 推荐值 |
|---|---|---|
| 解锁距离 | 设备靠近多少米时解锁 | 1.5 - 2.0 米 |
| 锁屏距离 | 设备离开多少米时锁屏 | 3.0 - 5.0 米 |
| 扫描间隔 | 多久扫描一次 | 2000 毫秒 |
| 解锁延迟 | 检测到设备后延迟多久解锁 | 3 秒 |
| 锁屏延迟 | 设备离开后延迟多久锁屏 | 5 秒 |
- ✅ 勾选"启用自动解锁"
- ✅ 勾选"启用自动锁屏"
- 💡 重要提示:标准 Windows API 无法直接实现自动解锁,需要配合 Credential Provider 或 Companion Device Framework
┌─────────────────────────────────────────┐
│ 手机/手环(无需 APP) │
│ 系统蓝牙广播 MAC 地址 │
└──────────────┬──────────────────────────┘
│ BLE Advertisement
▼
┌─────────────────────────────────────────┐
│ PC - BLE 扫描器 │
│ 1. 被动扫描蓝牙广播 │
│ 2. 获取 RSSI 信号强度 │
│ 3. 计算距离(路径损耗模型) │
└──────────────┬──────────────────────────┘
│
▼
┌─────────────────────────────────────────┐
│ 距离判断引擎 │
│ - RSSI 滤波(中位数 + 移动平均) │
│ - 距离公式:d = 10^((TxPower-RSSI)/10N) │
│ - 状态机:远离 ↔ 靠近 │
└──────────────┬──────────────────────────┘
│
▼
┌─────────────────────────────────────────┐
│ 会话管理器 │
│ - 距离 < 2m → 触发解锁(需 CP/CDF) │
│ - 距离 > 4m → 执行锁屏 │
└─────────────────────────────────────────┘
使用路径损耗模型(Log-Distance Path Loss Model):
Distance (米) = 10 ^ ((TxPower - RSSI) / (10 * N))
其中:
- TxPower: 发射功率(1米处参考 RSSI,默认 -59dBm)
- RSSI: 接收信号强度指示(实时测量值)
- N: 路径损耗指数(环境系数,范围 2.0-4.0)
· 2.0 = 自由空间
· 2.5 = 办公室(推荐)
· 3.0 = 有障碍物
· 4.0 = 密集障碍
为提高准确性,采用两级滤波:
- 中位数滤波 - 去除突变干扰
- 移动平均 - 平滑信号波动
当前版本的自动锁屏功能可以正常工作,但自动解锁功能受限于 Windows 安全机制。
要实现完整的自动解锁,需要以下方案之一:
-
Credential Provider (推荐)
- 开发自定义凭据提供程序集成到 Windows 登录界面
- 安全性高,用户体验好
- 需要 C++ 开发和系统级权限
-
Companion Device Framework
- 使用 Windows 10+ 的配套设备框架
- 官方支持,与 Windows Hello 集成
- 需要 UWP 应用
-
当前实现
- 本项目提供完整的距离检测和设备管理框架
- 自动锁屏功能完全可用
- 为未来集成 CP/CDF 预留接口
- ✅ 所有数据本地存储,不上传云端
- ✅ 使用 Windows DPAPI 加密敏感信息
- ✅ 仅扫描蓝牙 MAC 地址,不获取其他信息
- ✅ 开源透明,代码可审计
- BLE 被动扫描
- 距离计算算法
- 设备管理
- 自动锁屏
- 设置持久化
- Credential Provider 开发
- Companion Device Framework 集成
- Windows Hello 集成
- 智能手环支持(小米、华为等)
- 地理围栏(仅在特定位置生效)
- 多用户支持
- 云同步设置
- 现代化 UI(WinUI 3)
- 安装程序(MSI)
- 自动更新
- 多语言支持
欢迎贡献代码、报告问题或提出建议!
- Fork 本仓库
- 创建特性分支 (
git checkout -b feature/AmazingFeature) - 提��更改 (
git commit -m 'Add some AmazingFeature') - 推送到分支 (
git push origin feature/AmazingFeature) - 开启 Pull Request
本项目采用 MIT License 开源协议。
departureszy
- GitHub: @departureszy
- 项目链接: https://github.com/departureszy/bleunlock
感谢以下项目和资源的启发:
如果这个项目对您有帮助,请给个 ⭐ Star!
Made with ❤️ by departureszy