2022年 12月 19日

小米空气净化器滤芯RFID解密

米空气净化器2S的正版滤芯,底下贴了一张NXP NTAG213射频标签。

空气净化器靠这个射频标签中的数据,判断滤芯的剩余寿命,以及是不是正版滤芯。

射频标签的密码采用了“一卡一密”。

一卡一密算法的Python实现如下:

  1. import sys
  2. import hashlib
  3. # Usage: pwd.py 04A03CAA1E7080
  4. def getpwd(uid):
  5. uid = bytearray.fromhex(uid)
  6. h = bytearray.fromhex(hashlib.sha1(uid).hexdigest())
  7. pwd = ""
  8. pwd += "%02X" % h[h[0] % 20]
  9. pwd += "%02X" % h[(h[0]+5) % 20]
  10. pwd += "%02X" % h[(h[0]+13) % 20]
  11. pwd += "%02X" % h[(h[0]+17) % 20]
  12. return pwd
  13. assert getpwd("04A03CAA1E7080") == "CD91AFCC"
  14. assert getpwd("04112233445566") == "EC9805C8"
  15. print("PWD:", getpwd(sys.argv[1]))

使用时,需要将射频标签的7字节的UID作为输入。输出的4字节即为密码。

以上代码转载自如下链接:

国外网友反向工程破解小米空气净化器延长滤芯使用时间 | 程序师 – 程序员、编程语言、软件开发、编程技术

知道了密码,就无需再使用PM3等工具进行无线嗅探。

可以直接修改NTAG中的数据,请参考以下链接:

【PM3】重置小米空气净化器滤芯 | Ray of Hope

实际上这里只要把BLOCK 8清空掉就可以重置滤芯。执行hf mfu wrbl -b 8 -d 00000000 -k bc77b6ed清除BLOCK 8的数据。