问题标签 [apdu]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1761 浏览

authentication - 执行外部身份验证的确切程序是什么?

我正在尝试在智能卡上执行外部身份验证,我从卡中获得了 8 字节的质询,然后我需要在这 8 字节上生成卡密码。但我不知道如何执行该密码操作(将 8 字节转换为 72 字节的智能卡工具包)。以下命令由工具包生成

  1. 00 A4 04 00 0C A0 00 00 02 43 00 13 00 00 00 01 04
  2. 00 22 41 A4 06 83 01 01 95 01 80
  3. 命令:80 84 00 00 08 响应:(8 字节挑战)
  4. 命令:80 82 00 00 48(72字节数据)

任何人都可以说出将 8 字节挑战转换为 72 字节的步骤吗?

0 投票
1 回答
926 浏览

uniqueidentifier - 读取程序内java卡的UID

我是 Java 卡开发的新手。我想在程序中读取 Java 卡 UID。我想将该密钥用于将来的用途。我不想发送 apdu 命令并获取 UID。有什么办法可以读取代码中的UID???谢谢 SSv

0 投票
0 回答
125 浏览

uniqueidentifier - 读取java卡uid

我是java卡开发的新手。我需要知道如何使用apdu命令读取java卡中的uid。我找不到解决方案。我只找到了如何选择应用程序id(APDU格式0x00,0xA4,0x04,00 )同样的方式我需要检测java卡中的uid。谁能告诉我该怎么做..

谢谢 SSV

0 投票
1 回答
3540 浏览

android - 卡模拟 Mifare

根据这篇文章,我正在尝试在 android 上模拟管理 APDU 的 mifare 卡。根据 APDU 接收,我的应用程序应该回答正确的 APDU,从而模拟 mifare 行为。

使用 rfidiot.py,阅读 mifare 卡给我:

通过我的应用程序模拟卡片,我得到了一个错误的说法:

FF B0 00 01 01 APDU 命令出现错误。而且我不知道6981 APDU命令来自哪里..

有人可以帮助我解决这个“错误”吗?

0 投票
1 回答
2272 浏览

smartcard - 使用 APDU 命令浏览智能卡的文件结构

我有一张智能卡(在法国使用的 Carte Vitale),我需要知道出生​​日期的存储位置。但我似乎没有找到有关文件结构的任何信息。

对于比利时的 eID 卡,我也这样做了,我可以使用 APDU 命令轻松读取出生日期。但是比利时政府提供了有关卡上文件结构的不错信息。

有没有一种方法可以“浏览”带有 APDU 的智能卡的文件结构,以查看它在什么地址上的内容,而不知道它的任何内容?

编辑: 我发现了更多关于从 Carte Vitale 阅读信息的信息:这里这里

第一个链接的一部分,“API 还是不是 API?这就是问题......”。由 Google 翻译...并不完美,但您明白了:

*众所周知,BC C0 00 00 08 确定存储卡的最后一个地址,第一个总是0200h命令。通常(ADMAX = 2188h),我们发现,从 2128h 到 2180h,一个“生产区域”包含指向所有感兴趣区域的指针(在我们的例子中,空闲空间读数将从 0288h 扩展到 2180h)。话虽如此,BC 02 88 04 B0 命令将返回第一个 32 位字的内容,而 BC B0 21 80 04 将返回最后一个字的内容。两者之间,有很多东西要发现!就在制造区之前,有几句话让人想起规范 V1.40 负载第 20 页中提到的“组件映射”。想象一下,BC B0 20 18 F8 命令返回以下数据:

在“指针”(?)中,在 C388h C298h 中,02F0h 引起了人们的注意。因此,让我们 BC B0 02 14 F0,并将我们交付给前两个单词的简单解码:

忽略每个字的前两位,然后形成四位一组,可以很容易地提取 BCD 数字 54 09 02,具体而言,唯一受益人的出生日期是 09.02.1954!*

我的 ADMAX 不同:它是 21 20。这是否意味着我可以编写一个执行 BC B0 02 00 08 的程序来读取前 8 个字节,然后将 8 个字节添加到地址 02 00,然后再次读取,等等,一直到 ADMAX 21 20?然后我会阅读卡上所有可读的日期吗?还是我看得太简单了?

再次感谢!

0 投票
3 回答
2489 浏览

android - Android 与 SIM javacard 2.x 小程序交互

我开始了一个项目,我必须使用 APDU 接口或 OTA 接口发送命令,从我的 android 项目到手机 SIM 上的 JavaCard 小程序。我有 AID 和几个突击队员开始测试 Android 应用程序,但我不知道如何选择卡上的小程序,也不知道如何在 android 上发送命令。

通过搜索,我找到了这个Seek for Android。但是我读到我需要获取 Android 操作系统并使用此 api 构建它并将其推送到设备。这不会让我的应用程序无法在没有这个“自定义”Android 操作系统的设备上运行吗?

是否有任何 Android 或 java lib 允许我与小程序通信,允许我的应用程序可用而无需构建“被黑”的 Android 操作系统?还是我对 Seek for Android 的工作方式有误?

感谢您提供任何可能的帮助。在过去的 3 天里,我一直在为此烦恼。

0 投票
2 回答
13498 浏览

c# - APDU 命令获取智能卡的序列号

如何使用 APDU 命令获取智能卡的序列号?我试图通过使用 SCardGetAttrib 函数来查询它,但winscard.dll没有成功,我被告知使用 APDU 命令来执行此操作,因为没有获取序列号的标准方法。问题是我不知道我的智能卡是什么类型的!所以我查阅了几家流行的智能卡制造商的文件,但没有找到获得序列号的方法!!

我的读卡器是ACR88。

0 投票
1 回答
161 浏览

applet - 如何将密钥导入 MUSCLE 卡?

我正在尝试将密钥导入卡中,但它的响应为6F00(未知错误)。我导入密钥的过程是

  1. 加载(肌肉)小程序
  2. 初始化小程序
  3. 验证引脚
  4. 创建具有 id ( FF FF FF FE) 的对象:

-> B0 5A 00 00 0E FF FF FF FE 00 00 00 44 00 00 00 00 00 00 00
<- 90 00

  1. 写入对象

-> B0 54 00 00 8D FF FF FF FE 00 00 00 00 84 00 01 00 80 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0 0 0 0 00 00 0 0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 0 0 0 00
0 0 0 0 0 0 0 0 0 < 0 0 - 90 00

  1. 导入密钥

-> B0 32 04 00 07 00 00 FF FF 00 00 00 00
<- 6F 00

请提供上述问题的解决方案。

0 投票
1 回答
789 浏览

signature - 智能卡 eToken PRO CardOS/M4 数字签名 APDU

我有一个来自 eToken SDK 的示例,它生成 RSA 密钥、创建数字签名并验证它。示例中的算法如下:

  • 生成 RSA 密钥(GENERATE_KEY_PAIR);
  • 为签名创建安全环境(PUT_DATA_SECI);
  • 恢复安全环境(MSE RESTORE);
  • 签名数据(PSO_CDS);
  • 为验证创建安全环境(PUT_DATA_SECI);
  • 恢复安全环境(MSE RESTORE);
  • 验证签名 (PDO_VDS)。

我已经将带有证书的外部密钥容器导入到令牌中,我需要摆脱算法中的 RSA 密钥生成项。如何找到我的私钥的对象 ID 以将其传递给 PUT_DATA_SECI APDU 命令?

0 投票
1 回答
918 浏览

testing - .scr file and APDU

I am using JCard sim, java card version 2.2.2 and I want to know how the .scr file is associated with the .java file. (the java card simulator on NetBeans IDE. I am not using an actual smartcard).

If someone can provide me with some useful links on how these two files are related, I would greatly appreciate it. I have looked through the following links, but they were not specifically helpful in illustrating how I can modify the .scr file in association with my .java file

C H A P T E R 5 - Converting Java Class Files

How to write a Java Card applet: A developer's guide - JavaWorld

Basically what I am trying to do is create a test applet (without the need of .scr files to send and receive APDUs by my other files) - I want to be able to read APDU which contains the the parameters for a function in my process method - That function will then create another APDU as its output, which another function will read as one of it's parameters

As far as I understand, the .scr file is used to send command APDUs that is read by the applet, but there is no way to write to the .scr file. How can I create my own .java test file that sends and receives APDUs instead of relying on the .scr? I can provide more details of what my code looks, if absolutely required.

Thanks