2016-08-30 51 views
2

スマートカードリーダー(モデルはACR122)を搭載したUbuntu VMでGPShellを使用していますが、いくつかのNXP SmartMXチップを使用しています。スマートカードからCPLCデータを取得するにはどうすればよいですか?

Android TagInfo appを使用して、特定のSmartMXチップをスキャンすると「カード生産ライフサイクルデータ」が表示されます。

しかし、私はCPhellデータも取得するためにGPShellを使用したいと思います。私はAndroidデバイス上のタグをスキャンするときに見ることができるので、アクセス可能であると想定しています。

私はconnect.txtと呼ばれるプログラムを持っており、それが内容としてこれを持っている:

mode_211 
enable_trace 
establish_context 
card_connect 
get_data -identifier 9F7F 
card_disconnect 
release_context 

これが出力されます:

[email protected]:~/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) 

私は上記のコマンドのためにGPShell docsに従うことをしようとしています(get_data -identifier 9F7F)をCPLCデータを取得するコマンドとする。

どのようにしてCPLCデータを取得できますか?

デバッグに関しては、GPShellに付属のサンプルスクリプトの一部を試しました(たとえば、特定のAIDを選択する、AIDを表示する、デフォルトのキーを使って認証するなど)。すべてのコマンドは、私に上記と同じ正確な出力を与えます。私はStackOverflowでgpshellを検索し、ほとんどの質問/回答を読んでいますが、私がここで尋ねていることはまったくカバーしていないようです(要求があればリンクを提供できます)。ありがとう。

+0

私はgpshellを実行するubuntuについて質問できますか?それが12+の場合、どのように走っていますか?私がここで質問を始めたので、http://stackoverflow.com/questions/42440515/build-globalplatform-for-ubuntu-14-04-lts – Florian

+0

@Florian良い質問。私がこれをしてから数ヶ月が経ちました。私が使っているバージョンを調べてみましょう。 –

+0

それはすばらしいでしょう – Florian

答えて

4

短い答え:最初にアプリケーションを選択してから、GET DATAコマンドを送信する前にデフォルトキーを使用して認証しなければなりませんでした。

スマートカードからデータを取得するための別のコマンドラインツールであるGlobalPlatformProをインストールしました。

私はgp -list -dを使用してカードのすべてのAIDを一覧表示しました(-dはAPDUの送信を示すデバッグです)。これは、カードは見出し保護されたチャンネルキーgpshell docsで見つかったデフォルトのキー404142434445464748494a4b4c4d4e4fを(使用しているが判明した。

この出力いくつかのアプリの。それらのいくつかを試した後、私が使用する必要が終わったAIDは、()でした:これは(GPShellを使用して)出力することになった

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 

ISD: A000000151000000 (OP_READY) 
    Privs: SecurityDomain, CardLock, CardTerminate, CardReset, CVMManagement 

私はこれに私の connect.txtプログラムを変更し

[email protected]:~/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 

私が気にしているのは、CPLCデータ(編集済み)の最終行です。あなたはCPLCが解析される方法を確認するためにライン128から始まるglobalplatform.hをチェックアウトすることができます:

GlobalPlatformProと
/** 
* 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 
*/ 
+2

良い努力。選択したAIDはIssuer Security Domain(ISD)であり、カードマネージャと呼ばれることもあります。これは、すべてのグローバルプラットフォームコマンドを管理し、処理する最上位のアプレットです。 ISDだけがインストールされているすべてのアプレットを一覧表示できるので、ISDがデフォルトキーを使用していたため、実際にはインストールされているすべてのAIDを一覧表示することができました。 –

+0

@PaulBastianは余分な情報に感謝します。これで私にはもっと意味があることが明らかになりました。 –

+0

ちょうど注:AFAIK CPLCを得るために認証する必要はありません。 @vipありがとう。 – vlp

0

シンプルgp -iは、人間が読める形式であなたにCPLCを与えるだろう。

関連する問題