Bleunlock是一个小型菜单栏实用程序,可通过iPhone,Apple Watch或任何其他蓝牙低能设备锁定和解锁Mac。
该文档也可以在日语(日本语版はこちら)中获得。
brew install bleunlock
从版本,解压缩并移至应用程序文件夹中下载zip文件。
在第一次发布时,它要求提供以下权限,您必须授予:
| 允许 | 描述 |
|---|---|
| 蓝牙 | 显然,需要蓝牙访问。选择确定。 |
| 可访问性 | 这是解锁锁定屏幕所需的。单击“打开系统首选项” ,单击左下方的锁定图标以解锁,然后打开Bleunlock。 |
| 钥匙链 | (并非总是问),如果询问,您必须选择始终允许,因为屏幕锁定时需要它。 |
| 通知 | (可选)Bleunlock锁定屏幕时在锁定屏幕上显示一条消息。知道它是否正常工作是有帮助的。此外,要查看锁定屏幕上的消息,您需要将显示预览设置为始终在“通知”偏好窗格中。 |
注意:每个版本的MACOS所需的权限数量都会增加,因此,如果您使用的是较旧的操作系统,则可能不会要求您提供一个或多个权限。
然后,它要求您的登录密码解锁锁定屏幕。它将安全存储在钥匙串中。
最后,从菜单栏图标中选择设备。它开始扫描附近的BLE设备。选择您的设备,您就完成了!
| 选项 | 描述 |
|---|---|
| 锁定屏幕 | 它锁定屏幕,无论BLE设备是否在附近,它都会锁定屏幕;一旦BLE设备移开,它将解锁,然后再次移动。这对于确保在离开座位之前锁定屏幕很有用。 |
| 解锁RSSI | 蓝牙信号强度要解锁。较大的值表明BLE设备需要更靠近MAC才能解锁。选择禁用以禁用解锁。 |
| 锁定RSSI | 蓝牙信号强度要锁定。较小的值表明BLE设备需要离MAC到锁定。选择禁用以禁用锁定。 |
| 锁定延迟 | 当Mac检测到BLE设备不在时,它会锁定Mac之前的持续时间。如果BLE设备在那个时候越来越近,则不会发生锁定。 |
| 无信号超时 | 最后一个信号接收和锁定之间的时间。如果您遇到频繁的“信号丢失”锁定,请增加此值。 |
| 唤醒接近 | 锁定时BLE设备接近时,从睡眠中醒来。 |
| 醒来而无需解锁 | 当显示屏从睡眠中醒来时,Bleunlock不会解锁Mac,无论是通过“靠近唤醒”或手动自动。这允许与Apple Watch功能内置的MACOS解锁功能(可以在Bleunlock唤醒屏幕之后立即运行),或者如果您只希望锁定屏幕更快地出现,但不希望它自动使用。 |
| 锁定时暂停“现在玩” | 在锁定/解锁上,Bleunlock停顿/Untauses播放音乐或视频(包括Apple Music,Quicktime Player和Spotify),这些播放由现在播放Widget或键盘上的⏯键控制。 |
| 使用屏幕保护程序锁定 | 如果设置了此选项,则Bleunlock会启动屏幕保护程序而不是锁定。为了使此选项正常工作,您需要在睡眠或屏幕保护程序开始后立即设置“安全与隐私偏好窗格”选项。 |
| 关闭锁锁 | 锁定时立即关闭显示屏。 |
| 设置密码... | 如果更改了登录密码,请使用此。 |
| 被动模式 | 默认情况下,它积极尝试连接到BLE设备并读取RSSI。在大多数情况下,建议使用默认值并稳定工作。但是,如果您使用的是其他蓝牙事物,例如键盘,鼠标,轨道垫或最著名的蓝牙个人热点,则默认模式可能会相互干扰。 2.4GHz WiFi也可能会干扰。如果您遇到蓝牙不稳定,请打开被动模式。 |
| 在登录处启动 | 登录时启动Bleunlock。 |
| 设置最小RSSI | RSSI低于此值的设备将不会在设备扫描列表中显示。 |
如果您的BLE设备不是来自Apple,则Bleunlock可能无法找到设备名称。如果是这种情况,则将您的设备显示为UUID(长六核数字和连字符)。要识别设备,请尝试将设备移离MAC或更远的位置,然后查看RSSI(DB值)是否会发生相应的变化。
如果您在列表中看不到任何设备,请尝试重置蓝牙模块,如下所述。
确保在系统偏好>安全与隐私>隐私>可访问性中打开Bleunlock。如果已经打开,请尝试再次将其关闭。
如果它要求在钥匙扣中访问自己的密码许可,则必须始终选择允许,因为在屏幕锁定时需要它。
增加无信号超时。或尝试被动模式。
首先,Shift + Option +单击Menubar或Control Center中的蓝牙图标,然后单击“重置蓝牙模块” 。
在MacOS 12蒙特雷中,此选项不再可用。而是在终端中键入以下命令以重置蓝牙模块:
sudo pkill bluetoothd
此命令将询问您的登录密码。
如果问题仍然存在,请打开被动模式。
与经典的蓝牙不同,蓝牙低能设备可以使用私人MAC地址。该私人地址可以是随机的,并且可以不时更改。
iOS和Android的近期智能设备倾向于使用每15分钟左右更改一次的私人地址。这可能是为了防止跟踪。
另一方面,为了使Bleunlock跟踪您的设备,其MAC地址必须是静态的。
幸运的是,在Apple设备上,如果您使用与Mac相同的Apple ID签名,则MAC地址已解决到True(公共)地址。
对于包括Android在内的其他设备,解决地址的方法是未知的。如果您的非应用设备随着时间的推移更改其MAC地址,则不幸的是Bleunlock无法支持它。
要检查MAC地址是否正确解析,请将Bleunlock设备扫描列表中显示的MAC地址与设备上显示的MAC地址进行比较。
在锁定和解锁时,Bleunlock在此处运行一个脚本:
~/Library/Application Scripts/jp.sone.BLEUnlock/event
根据事件的类型传递参数:
| 事件 | 争论 |
|---|---|
| 由于RSSI低而被Bleunlock锁定 | away |
| 由于没有信号而被bleunlock锁定 | lost |
| 由Bleunlock解锁 | unlocked |
| 手动解锁 | intruded |
注意:对于
intruded事件的工作正常,您必须在睡眠安全与隐私偏好窗格中立即设置“要求密码”。
这是一个示例脚本,该脚本在手动解锁Mac前方的人的照片中发送了一条通知消息,并带有一张照片。
#! /bin/bash
set -eo pipefail
LINE_TOKEN=xxxxx
notify () {
local message= $1
local image= $2
if [ " $image " ] ; then
img_arg= " -F imageFile=@ $image "
else
img_arg= " "
fi
curl -X POST -H " Authorization: Bearer $LINE_TOKEN " -F " message= $message "
$img_arg https://notify-api.line.me/api/notify
}
capture () {
open -Wa SnapshotUnlocker
ls -t /tmp/unlock- * .jpg | head -1
}
case $1 in
away)
notify " $( hostname -s ) is locked by BLEUnlock because iPhone is away. "
;;
lost)
notify " $( hostname -s ) is locked by BLEUnlock because signal is lost. "
;;
unlocked)
# notify "$(hostname -s) is unlocked by BLEUnlock."
;;
intruded)
notify " $( hostname -s ) is manually unlocked. " $( capture )
;;
esac SnapshotUnlocker是使用脚本编辑器创建的.App,此脚本:
do shell script "/usr/local/bin/ffmpeg -f avfoundation -r 30 -i 0 -frames:v 1 -y /tmp/unlock-$(date +%Y%m%d_%H%M%S).jpg"
需要此应用程序,因为Bleunlock没有摄像机许可。允许此应用程序解决问题。
年度Apple开发人员计划费用由捐款资助。
如果您喜欢此应用程序,如果您可以通过给我买咖啡或Paypal我捐款,我将不胜感激。
图标基于从Materialldesignicons.com下载的SVG。它们最初是由Google LLC设计的,并根据Apache许可证2.0版获得许可。
麻省理工学院
版权所有©2019-2022 Takeshi Sone。