当前位置: 首页 > 知识库问答 >
问题:

如何在Android上对MIFARE Ultralight C进行身份验证

桂飞翼
2023-03-14

我用一个android APP(恩智浦提供的NFC标签信息)读取了我的MIFARE Ultraglith C标签,它显示标签上有恩智浦的默认密钥“BREAKMEIFYOUCAN!”第0x2C至0x2F页。但我仍然无法使用此密钥验证此标签。

    // NXP default key: BREAKMEIFYOUCAN! (16 bytes)
    byte[] mifareULCDefaultKey = { (byte) 0x49, (byte) 0x45,
            (byte) 0x4D, (byte) 0x4B, (byte) 0x41, (byte) 0x45,
            (byte) 0x52, (byte) 0x42, (byte) 0x21, (byte) 0x4E,
            (byte) 0x41, (byte) 0x43, (byte) 0x55, (byte) 0x4F,
            (byte) 0x59, (byte) 0x46 };

具体来说,我得到了以下结果:

第一个认证命令:1A00

第一个认证命令的响应:AFCCF489BFB7B98605

ek(RndB):CCF489BFB7B98605

IV 1:0000000000000000

RndB: 6183511C5B7EF046

RndA:6E262630E299F94F

RndB':83511C5B7EF04661

RndA||RndB': 6E262630E299F94F83511C5B7EF04661

IV 2:CCF489BFB7B98605

ek(RndA||RndB'): AB7AF6C6E76675F52B9FF40021A8E2D6

第二个身份验证命令:afab 7 af 6 c 6 e 76675 f 52 b 9 ff 40021 a8e 2d 6

但在发送第二个认证命令后,我仍然得到“收发失败”IOException。在发送第二个验证命令之前,我确信标签仍处于连接状态。

我在这个问题上花了8个小时,但仍然无法前进。有人能帮忙吗?

共有1个答案

东门秦迟
2023-03-14

我也有同样的问题。问题是您使用了错误的多样化密钥进行身份验证。

 类似资料:
  • 我正在尝试用.NET中的LDAP制作一个简单的身份验证系统。我检查了.NET中的一些名称空间,并简单地制作了标准代码片段,如下所示。 我有一个管理员用户名和密码和,用于对客户端应用程序进行身份验证。我有第二个用户名和密码和,需要在LDAP中检查才能登录。 是管理帐户,只是LDAP中的用户。那么如何检查的密码呢?

  • 我正在使用Jersey用Java编写一个RESTful应用程序,我需要对用户进行身份验证。我知道我可以使用注释@RolesAllowed来指定资源中的角色,但是我不明白用户是如何与特定角色相关联的。客户端以这种方式发送用户名和密码 假设某些方法只能由超级用户使用,而其他方法只能由任何用户使用,那么当用户名和密码由客户端发送时,我如何区分它们?

  • 我在Linux上使用android Studio,然后从git导入了我的项目(它是从windows推送的)。但是由于某种未知的原因,IDE抛出了以下错误: [496677]警告-拉德尔。项目ProjectSetUpTask-[658549]警告-nal。AbstractExternalSystemTask-原因:对等方未通过com身份验证。intellij。openapi。外部系统。模型Exter

  • 问题内容: 我有一个有效的概念验证应用程序,可以通过测试服务器上的LDAP通过Active Directory进行成功的身份验证,但是生产应用程序必须通过TLS进行身份验证-域控制器会关闭所有未通过TLS发起的连接。 我已经在Eclipse中安装了LDAP浏览器,并且确实可以在 其中 使用TLS进行绑定,但是我一生都无法弄清楚如何让我的应用程序使用TLS。 ldap.xml : 是重写类,它扩展了

  • 我即将开始开发一个REST服务,安全性是这个项目的一个重要方面,但我找不到一些关于如何实现它的明确信息。我的服务一开始会被Android应用程序使用,但以后可能会被其他平台使用。控制用户访问非常关键,因此对REST服务的和控制非常重要。 尽管我可以找到关于如何制作安全REST API的主题,比如这里,这里和这里的这个大的,但令我惊讶的是,所有这些主题都没有指向著名的标准、框架或经过时间测试的解决方