Ubuntu 如何从智能卡获取CPLC数据?

Ubuntu 如何从智能卡获取CPLC数据?,ubuntu,nfc,javacard,globalplatform,gpshell,Ubuntu,Nfc,Javacard,Globalplatform,Gpshell,我在一个带有智能卡读卡器的Ubuntu虚拟机上使用(型号是ACR122),我使用了几种不同的NXP SmartMX芯片 使用它们,当我扫描一个特定的SmartMX芯片时,我能够看到“卡生产生命周期数据” 但是,我也希望使用GPShell来获取CPLC数据。我假设它是可访问的,因为当我扫描安卓设备上的标签时可以看到它 我有一个名为connect.txt的程序,它的内容如下: mode_211 enable_trace establish_context card_connect get_data

我在一个带有智能卡读卡器的Ubuntu虚拟机上使用(型号是ACR122),我使用了几种不同的NXP SmartMX芯片

使用它们,当我扫描一个特定的SmartMX芯片时,我能够看到“卡生产生命周期数据”

但是,我也希望使用GPShell来获取CPLC数据。我假设它是可访问的,因为当我扫描安卓设备上的标签时可以看到它

我有一个名为
connect.txt
的程序,它的内容如下:

mode_211
enable_trace
establish_context
card_connect
get_data -identifier 9F7F
card_disconnect
release_context
这是输出:

josh@josh-VirtualBox:~/projects/gpshell-test$ gpshell connect.txt
mode_211
enable_trace
establish_context
card_connect
* reader name ACS ACR122U PICC Interface 00 00
get_data -identifier 9F7F
Command --> 80CA9F7F00
Wrapped command --> 80CA9F7F00
Response <-- 
get_data() returns 0x80200000 (Unknown ISO7816 error: 0x0000)
josh@josh-VirtualBox:~/projects/gpshell测试$gpshell connect.txt
模式211
启用跟踪
建立上下文
卡连接
*读卡器名称ACS ACR122U PICC接口00
获取数据-标识符9F7F
命令-->80CA9F7F00
包装命令-->80CA9F7F00

响应简短回答:我必须首先选择一个应用程序,然后在发送
GET DATA
命令之前使用默认密钥进行身份验证

最后我安装了一个从智能卡获取数据的命令行工具

我使用
gp-list-d
列出卡上的所有辅助工具(
-d
是debug,用于显示正在发送的apdu)。结果表明,该卡使用的是默认密钥
404142434445464748494a4b4c4d4e4f
(可在标题安全通道密钥下找到)

它输出了几个应用程序。我最终需要使用的帮助(在尝试了几个应用程序之后)是:

我将我的
connect.txt
程序更改为:

mode_211
enable_trace
establish_context
card_connect
select -AID A000000151000000
open_sc -security 1 -keyind 0 -keyver 0 -mac_key 404142434445464748494a4b4c4d4e4f -enc_key 404142434445464748494a4b4c4d4e4f 
get_data -identifier 9f7f
card_disconnect
release_context
最后输出(使用GPShell):


使用GlobalPlatformPro的Simple
gp-i
将以人类可读的形式为您提供CPLC。

很好。您选择的帮助是发卡机构安全域(ISD),有时也称为卡管理器。这是管理和处理所有全局平台命令的最高级小程序。事实上,您只能列出所有已安装的辅助程序,因为ISD使用默认键,因为只有ISD才能列出所有已安装的小程序。@PaulBastian非常感谢提供的额外信息。现在您已经澄清了这对我来说更有意义。请注意:好吧,您不需要通过身份验证就可以获得CPLC。@vip谢谢。看起来您是对的。在Android中,我可以只发送“获取数据”命令而不进行身份验证,但由于某些原因,我无法仅使用nfc阅读器(这迫使我进行身份验证)非常感谢大家提到9F7F是cplc的标签(至少对于JCOP3之前的版本)我可以问一下你在哪个ubuntu上运行gpshell吗?如果是12+你是如何运行它的?我在这里开始了一个问题:@Florian问得好。我这么做已经好几个月了。让我试着找出我使用的是什么版本。那太棒了
mode_211
enable_trace
establish_context
card_connect
select -AID A000000151000000
open_sc -security 1 -keyind 0 -keyver 0 -mac_key 404142434445464748494a4b4c4d4e4f -enc_key 404142434445464748494a4b4c4d4e4f 
get_data -identifier 9f7f
card_disconnect
release_context
josh@josh-VirtualBox:~/projects/gpshell-test$ gpshell connect.txt
mode_211
enable_trace
establish_context
card_connect
* reader name ACS ACR122U PICC Interface 00 00
select -AID A000000151000000
Command --> 00A4040008A000000151000000
Wrapped command --> 00A4040008A000000151000000
Response <-- 6F648408A000000151000000A5589F6501FF9F6E06479120813B00734906072A864886FC6B01600B06092A864886FC6B020202630906072A864886FC6B03640B06092A864886FC6B040255650B06092B8510864864020103660C060A2B060104012A026E01029000
open_sc -security 1 -keyind 0 -keyver 0 -mac_key 404142434445464748494a4b4c4d4e4f -enc_key 404142434445464748494a4b4c4d4e4f 
Command --> 80CA006600
Wrapped command --> 80CA006600
Response <-- 664B734906072A864886FC6B01600B06092A864886FC6B020202630906072A864886FC6B03640B06092A864886FC6B040255650B06092B8510864864020103660C060A2B060104012A026E01029000
Command --> 80500000082F7E9B47AA9F32E400
Wrapped command --> 80500000082F7E9B47AA9F32E400
Response <-- 0000518900148698000501020008402AF999F42B742FD206C0ECDA169000
Command --> 8482010010DF9FA8285DE2C6747D14AD51EFF92D3C
Wrapped command --> 8482010010DF9FA8285DE2C6747D14AD51EFF92D3C
Response <-- 9000
get_data -identifier 9f7f
Command --> 80CA9F7F00
Wrapped command --> 84CA9F7F08EEAA80A1B0DB13D500
Response <-- REDACTED-CPLC-DATA
REDACTED-CPLC-DATA
card_disconnect
/**
 * Whole CPLC data from ROM and EEPROM.
 * 9F7F // TAG
 * 2A // Length of data
 * ////////////////Data /////////////
 * 4250 // ic fabricator
 * 3272 // ic type
 * 1291 // os id
 * 6181 // os date
 * 0700 // os level
 * 8039 // fabrication date
 * 0106D0BB // ic serial
 * 1D3C // ic batch
 * 0000 // module fabricator
 * 8148 // packing date
 * 0000// icc manufacturer
 * 8148 // ic embedding date
 * 0000 // pre - personalizer
 * 0000 // IC Pre Personalization Date
 * 00000000 //IC Pre Personalization Equipment Identifier
 * 0000// IC Personalizer
 * 0000 // IC Personalization Date
 * 00000000 // IC Personalization Equipment Identifier
 */