检查以下情况:
我有两个 RFCOMM 程序(从属程序和主程序),它们正在使用 libbluetooth (Bluez) 并分别进行以下设置:
opt |= RFCOMM_LM; opt |= RFCOMM_LM_AUTH; opt |= RFCOMM_LM_ENCRYPT; opt |= RFCOMM_LM_SECURE; opt |= RFCOMM_LM; opt |= RFCOMM_LM_MASTER; opt |= RFCOMM_LM_AUTH; opt |= RFCOMM_LM_ENCRYPT; opt |= RFCOMM_LM_SECURE;
Hciconfig 报告两个适配器都启用了加密和身份验证:
dev@ackbar:$ hciconfig hci0
hci0:类型:BR/EDR 总线:USB BD 地址:01:1A:07:00:47:0C ACL MTU:310:10 SCO MTU:64:8 运行 PSCAN 身份验证加密 RX 字节:10187160 acl:66879 sco:0 事件:180556 错误:0 TX 字节:1012442 acl:57039 sco:0 命令:6787 错误:0
dev@ackbar:$ hciconfig hci1
hci1:类型:BR/EDR 总线:USB BD 地址:01:1A:07:00:47:0D ACL MTU:310:10 SCO MTU:64:8 运行 PSCAN 身份验证加密 RX 字节:2174821 acl:6303221 sco:0 事件:100 错误:0 TX 字节:51000 acl:54982 sco:0 命令:3458 错误:0
Wireshark 和 hcidump 均报告两个适配器之间的通信采用明文形式。我希望通过加密/加扰的有效负载可以明显看出安全性,就像在 Wireshark 中查看 SSL/TLS 流量一样。
接收:11111111 应为:348djwfoisdfg78sdfsdifods2#@$%^&*ifgyuh
根据原始模式下的 hcidump:
> . E . . . . @ . . . . . 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . . . . .
这引出了一个问题:
是否会在设置选项时应用 secret 性?或者内核/操作系统在解密后通过(稍后的)钩子(Hook)以明文形式发送重新组装的数据。
是否有更好的方法来验证这一点 - 显然使用工具的传统方法是不够的(而且我无法访问硬件嗅探器)? (至少使用 bt-agent 检查引脚)。
最佳答案
根据 StackOverflow 上的这个答案 ( Does Bluetooth encrypt data? ) - 我相信数据已被解密,并且 hcidump 在该操作发生后以明文形式看到它。
验证这一点的唯一方法是使用昂贵且受限的工具(或 maaaybe 软件定义的 radio ,例如 ubertooth)。
关于c - 尽管设置了 rfcomm 安全性,Bluez hcidump 仍然清晰,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38209317/