米空气净化器2S的正版滤芯,底下贴了一张NXP NTAG213射频标签。
空气净化器靠这个射频标签中的数据,判断滤芯的剩余寿命,以及是不是正版滤芯。
射频标签的密码采用了“一卡一密”。
一卡一密算法的Python实现如下:
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]))
使用时,需要将射频标签的7字节的UID作为输入。输出的4字节即为密码。
以上代码转载自如下链接:
知道了密码,就无需再使用PM3等工具进行无线嗅探。
可以直接修改NTAG中的数据,请参考以下链接:
【PM3】重置小米空气净化器滤芯 | Ray of Hope新生代农民工https://raycn.pub/2021/08/21/reset-xiaomi-air-purifier-filters/
实际上这里只要把BLOCK 8清空掉就可以重置滤芯。执行
hf mfu wrbl -b 8 -d 00000000 -k bc77b6ed清除BLOCK 8的数据。
本文介绍了如何通过反向工程获取小米空气净化器2S滤芯的密码算法,并提供了Python实现。该算法基于射频标签的UID生成4字节密码,用于验证滤芯寿命和正版状态。了解密码后,用户可以避免使用PM3等工具嗅探,直接修改NTAG213射频标签的BLOCK8数据来重置滤芯寿命。
https://www.techug.com/post/xiaomi-air-purifier-reverse-engineering/
3万+

被折叠的 条评论
为什么被折叠?



