【问题标题】:Mifare Classic 1k write keysMifare Classic 1k 写密钥
【发布时间】:2012-10-03 18:11:24
【问题描述】:

我正在尝试制作一个 Android 应用程序来编写 NFC 标签。为了了解如何做到这一点,我下载了一个示例。但是,该示例不起作用。它说它无法进行身份验证。这只能意味着它为这种类型的卡使用了不正确的密钥。奇怪的是,即使是KEY_DEFAULTKEY_MIFARE_APPLICATION_DIRECTORY 键也不能在我的空白卡上使用。 Mifare 是否以任何方式更改了密钥?

编辑:这是我的代码。

            /* Authenticate the MAD Sector, sector 1, with key A */
        succes = mClassic.authenticateSectorWithKeyA(
                1, key);
        if (succes) {
            /* Authentication succeeded */

            /*
             * This will read a 16-byte block in this sector
             * It is an I/O operation and will block until complete.
             * It must not be called from the main application thread.
             **/
            b.append(mClassic.readBlock(1), 0, 16);
            b.append(mClassic.readBlock(2), 0, 16);
            b.append(mClassic.readBlock(3), 0, 16);
            data = b.toByteArray();
        }
        /* Authentication failed */
        else
            sb.append("Authentication failed");
        mClassic.close();

    }

我已经用以下键试过了:

MifareClassic.KEY_DEFAULT
MifareClassic.KEY_MIFARE_APPLICATION_DIRECTORY
00 00 00 00 00 00
ff ff ff ff ff ff

一切都无济于事..

【问题讨论】:

标签: android nfc mifare


【解决方案1】:

我对 Ubiqconn 平板电脑不熟悉。我要做的第一件事是检查设备中的 NFC 实现是否真正支持 MIFARE。在您的主要活动的onCreate() 添加:

public void onCreate(Bundle bundle) {
  ...
  if (!getPackageManager().hasSystemFeature("com.nxp.mifare")) {
    Toast.makeText(this, "No MIFARE support!", Toast.LENGTH_LONG).show();
  }
}

【讨论】:

  • 猜猜看...No MIFARE support!谢谢你的帮助,现在我要告诉我的老板他订购了200个错误的标签哈哈。
  • 有趣。我用谷歌搜索了该设备,制造商的网站似乎声称他们支持 MIFARE。所以我想知道发生了什么。
  • 您提到该设备运行 2.3.4。 2.3 的Android Compatibility Device Description 没有提到“com.nxp.mifare”,而CDD for 4.1 有。有些人可能还有希望。
  • 我向制造商发送了一封关于此的电子邮件。现在我得等他的回复了。
  • 制造商声称他的设备确实支持 Mifare 1k/4k 和 Ultralight,正如网站所说。是否有可能尽管没有提到com.nxp.mifare,但它应该可以正常工作,而我的错误在其他地方?或者升级我的 Android 版本会解决问题吗?
【解决方案2】:

您的应用程序中存在错误,或者密钥已被自定义。使用 NFC TagInfo 之类的应用程序检查您是否可以使用默认密钥读取/写入卡片。如果它不起作用,请联系向您出售卡片的人并询问他们的钥匙是什么。

【讨论】:

  • 我无法从 Play 商店安装应用程序,因为我的测试设备已植根并且没有关联 Play 商店/Google 帐户。
  • 在这种情况下,请尝试使用桌面阅读器或安装了 Google Play 的其他 Android 设备读取您的卡片。顺便说一句,扎根并不会阻止您使用 Play 商店。你用的是什么设备?
  • 我正在使用运行 Android 2.3.4 的 Ubiqconn 平板电脑。 Google Play 确实可以安装,但不知何故无法将 Google 帐户添加到设备。设置 --> 帐户和同步 --> 添加帐户由于某种原因仅允许 Microsoft Exchange 帐户。我这里没有桌面 NFC 阅读器。
  • 如果它不是官方的“Google 体验”(或现在所谓的任何东西)预装了 Google 服务(包括 Play/Market)的设备,那么让 Google Play 运行是一种黑客行为,并且可能或者可能不起作用。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-05-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-07
  • 1970-01-01
相关资源
最近更新 更多