无法使用 android 中的正确密钥验证 mifare 卡中的扇区
Cannot authenticate a sector in mifare card with correct key in android
我有一张mifare classic 1K卡和custom Key。但无法 read/write 使用它。需要帮助找出我的错误。
我已经使用 NXP Taginfo 和 Mifare Classic Tool 确定了用于 read/write mifare 卡的密钥。
它显示访问位为 FF078000,密钥 B 为 222222222222
现在我正在使用 Key B 从 mifare classic 1K 卡中读取数据。下面是代码。
NXP Taginfo 工具输出为 here。
byte[] newkey = {(byte)0x00, (byte)0x33,(byte)0xBD,(byte)0x7A,(byte)0x03,(byte)0x8E};
boolean authB = taskTag.authenticateSectorWithKeyB(6, newkey);
Log.i("New Key"+ new BigInteger(newkey).toString(), "authB : " + authB) ;
但是 authB 返回错误。这里有什么问题?
非常感谢任何帮助。
编辑-1:
经过广泛阅读,我认为我可能错误地解释了访问条件。我想我可能需要使用密钥 A 进行身份验证。但根据访问条件,密钥 A 不可读。我说得对吗?
编辑-2
为什么 nxp 标签 editinfo/Mifare Classic Tool 能够读取密钥为 222222222222 的数据,但我不能?
我认为问题出在密钥上。我必须使用 222222222222 作为密钥而不是十六进制形式。所以将密钥更改为以下行解决了问题。
newkey = {(byte)0x22, (byte)0x22,(byte)0x22,(byte)0x22,(byte)0x22,(byte)0x22};
我有一张mifare classic 1K卡和custom Key。但无法 read/write 使用它。需要帮助找出我的错误。
我已经使用 NXP Taginfo 和 Mifare Classic Tool 确定了用于 read/write mifare 卡的密钥。 它显示访问位为 FF078000,密钥 B 为 222222222222 现在我正在使用 Key B 从 mifare classic 1K 卡中读取数据。下面是代码。
NXP Taginfo 工具输出为 here。
byte[] newkey = {(byte)0x00, (byte)0x33,(byte)0xBD,(byte)0x7A,(byte)0x03,(byte)0x8E};
boolean authB = taskTag.authenticateSectorWithKeyB(6, newkey);
Log.i("New Key"+ new BigInteger(newkey).toString(), "authB : " + authB) ;
但是 authB 返回错误。这里有什么问题?
非常感谢任何帮助。
编辑-1:
经过广泛阅读,我认为我可能错误地解释了访问条件。我想我可能需要使用密钥 A 进行身份验证。但根据访问条件,密钥 A 不可读。我说得对吗?
编辑-2
为什么 nxp 标签 editinfo/Mifare Classic Tool 能够读取密钥为 222222222222 的数据,但我不能?
我认为问题出在密钥上。我必须使用 222222222222 作为密钥而不是十六进制形式。所以将密钥更改为以下行解决了问题。
newkey = {(byte)0x22, (byte)0x22,(byte)0x22,(byte)0x22,(byte)0x22,(byte)0x22};