国外网友反向工程破解小米空气净化器延长滤芯使用时间
小米的产品物美价廉,在国外也有很多米粉使用。最近有一位外国网友研究小米空气净化器,通过反向工程,发现了小米空气净化器和空气滤芯之间通讯的秘密。
大家知道,空气滤芯,跟净水器的滤芯一样,使用一段时间后需要更换成新的,才能保证过滤的质量。通常机器上会显示还剩下百分之几的可用度。当这个可用度接近 0 时,意味着你需要购买新的把旧的滤芯换下来。但这位国外网友发现,小米空气净化器和其使用的滤芯之间的通讯是通过NFC的 UUID 确认的,他在净化器的反向工程获得的代码里发现了这个秘密:
import sys
import hashlib
# Usage: pwd.py 04A03CAA1E7080
def getpwd(uid):
uid = bytearray.fromhex(uid)
h = bytearray.fromhex(hashlib.sha1(uid).hexdigest())
pwd = ""
pwd += "%02X" % h[h[0] % 20]
pwd += "%02X" % h[(h[0]+5) % 20]
pwd += "%02X" % h[(h[0]+13) % 20]
pwd += "%02X" % h[(h[0]+17) % 20]
return pwd
assert getpwd("04A03CAA1E7080") == "CD91AFCC"
assert getpwd("04112233445566") == "EC9805C8"
print("PWD:", getpwd(sys.argv[1]))
你可以在GitHub上找到这个 反向工程。
通过观察这段反向代码,对大多数人来说也许更像是段随机字符,但却是问题的关键,净化器和滤芯之间通过一个密码进行确认。 它使用的 NFC 的类型是 NTAG213 (by NXP),密码的产生过程并不清楚。NFC 的 UUID 对于每个滤芯来说都是唯一的。如果使用上面的密码(CD91AFCC
),配合一个具有一个 04A03CAA1E7080
UUID NFC 卡,我们就模拟出了一个新的滤芯设备,骗过净化器。
你可以参考网友放在Github上的这些 滤芯信息 破解。
净化器跟伪造的NFC通讯后,会认定这是一个新的滤芯,这样就能延长过期的滤芯的使用时间。
程序员编程中…
你也许感兴趣的:
- 【译文】我破解小米空气净化器 4 Pro 的故事
- 面试官在面试时让我去破解一个软件,我成功了
- 【外评】电脑从哪里获取时间?
- 【外评】为什么 Stack Overflow 正在消失?
- Android 全力押注 Rust,Linux 却在原地踏步?谷歌:用 Rust 重写固件太简单了!
- 【外评】哪些开源项目被广泛使用,但仅由少数人维护?
- 【外评】好的重构与不好的重构
- C 语言老将从中作梗,Rust for Linux 项目内讧升级!核心维护者愤然离职:不受尊重、热情被消耗光
- 【外评】代码审查反模式
- 我受够了维护 AI 生成的代码
你对本文的反应是: