我需要找到一个用自定义密钥编写Mifare Classic 1 K标签的解决方案。我无法写它,我已经尝试了所有选项但不幸的是我一直得到错误“IOException:Transceive Failed”。
以下是我的代码段:
byte custom_key[]={
(byte)0xff,(byte)0xff,(byte)0xff,(byte)0xff,(byte)0xff,(byte)0xff
};
// 16 bytes of Data. Otherwise it was throwing IllegalArgumentException .
byte[] data="Hello world of N".getBytes();
getMfc().connect();
if(getMfc().authenticateSectorWithKeyA(4, custom_key)) {
getMfc().writeBlock(3, data); // Here I receive IOException all the time.
} else {
getMfc().close();
}
请在这方面帮助我。我需要用自己的密钥编写Mifare Classic 1 K标签。
答案 0 :(得分:6)
您对扇区4进行身份验证然后尝试写入块3.块3位于扇区0中,因此总是会失败。尝试对扇区0进行身份验证。
BTW:请不要将随机数据写入扇区预告片(例如块3)。它可能会锁定该部门而无法恢复。
答案 1 :(得分:0)
如果我理解正确,问题是如何编辑扇区4中的块3
验证后,您尝试写入块3.但是:
块编号在每个块中不从0开始。扇区0具有块0-3,扇区1具有块4-7,依此类推。扇区4的块偏移量为4 * 4 = 16。所以你要写的块是第19块。
有一个可用的功能可以为您计算此偏移量。 sectorToBlock(4)产生16.
为了写入第4区的第3块,我将使用以下内容:
getMfc()。writeBlock(getMfc()。sectorToBlock(4)+3,data)
接受的答案只提供了让提问者无法理解0区以外的区块索引的替代方案。