gpt4 book ai didi

Android NFC Card Emulation 尝试模拟卡

转载 作者:行者123 更新时间:2023-11-29 17:03:05 39 4
gpt4 key购买 nike

我正在尝试使用 NFC 来模拟卡片。

我期望的是,当我将手机放在 NFC 阅读器上时,阅读器会读取数据(我以后会修改此数据)。

将电话递给读者,据我了解,入口点应该在 Java 类 CardService.java 中。但是方法 processCommandApdu 从未被调用(我试图在那里插入一个断点,甚至插入一个 toast,但该代码从未被调用)。

所以目前我无法理解的主要事情是:我做错了什么吗?这东西能做吗?

最佳答案

为了为传入的 APDU 命令调用方法 processCommandApdu(),读者需要先选择您的应用程序。根据 ISO/IEC 8716-4,使用 SELECT(通过 AID/DF 名称)命令完成选择:

00 A4 04 00  <Lc>  <AID>  00

Where <Lc> is the length of <AID> and <AID> is the application identifier registered for your app.

The ISO/IEC 8716-4 application structure (i.e. application selection through a SELECT (by AID) command) is the only way Android allows to start interaction with an app over HCE. Consequently, it's not possible to emulate cards (card applications) that use different mechanisms. (At least not without modifying the Android system itself; e.g. though a customized ROM or through Xposed.)

AIDs for the CardEmulation sample app are registered through a file named res/xml/aid_list.xml in the example project. In this file you register AID groups, which in turn contain AID filter entries:

<aid-group android:description="@string/card_title" android:category="other">
<aid-filter android:name="F222222222"/>
</aid-group>

因此,示例应用程序中注册的默认 AID 是 F222222222。因此,您可以使用以下 SELECT (byte AID) 命令来选择应用程序:

00 A4 04 00  05  F2 22 22 22 22  00

关于Android NFC Card Emulation 尝试模拟卡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42302239/

39 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com