2016-08-30 7 views
2

나는 스마트 카드 리더 (모델은 ACR122 임)와 함께 우분투 VM에서 GPShell을 사용하고 있으며 여러 NXP SmartMX 칩을 사용하고 있습니다.스마트 카드에서 CPLC 데이터를 얻으려면 어떻게해야합니까?

Android TagInfo app을 사용하여 특정 SmartMX 칩을 스캔 할 때 "카드 생산주기 데이터"를 볼 수 있습니다.

그러나 CPhell 데이터를 얻기 위해 GPShell을 사용하고 싶습니다. Android 기기에서 태그를 스캔 할 때 볼 수 있기 때문에 액세스 할 수 있다고 가정합니다.

나는 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 
get_data -identifier 9F7F 
Command --> 80CA9F7F00 
Wrapped command --> 80CA9F7F00 
Response <-- 
get_data() returns 0x80200000 (Unknown ISO7816 error: 0x0000) 

내가 위의 명령에 대한 GPShell docs을 따르려고 :이 출력

mode_211 
enable_trace 
establish_context 
card_connect 
get_data -identifier 9F7F 
card_disconnect 
release_context 

(get_data -identifier 9F7F)이 CPLC 데이터를 얻기위한 명령이라고 가정합니다.

어떻게 CPLC 데이터를 얻을 수 있습니까?

디버깅의 경우 GPShell과 함께 제공되는 샘플 스크립트 중 일부를 시도했습니다 (예 : 특정 AID 선택 또는 AID 나열, 기본 키를 사용하여 인증 시도 등). 모든 명령어는 위와 똑같은 정확한 출력을줍니다. 또한 StackOverflow에서 gpshell을 검색하고 대부분의 질문/대답을 읽지 만 그 중 아무 것도 내가 여기에서 묻는 내용을 다루는 것 같지 않습니다 (요청할 경우 링크를 제공 할 수 있음). 감사.

+0

gpshell을 실행하는 우분투를 물어봐도 될까요? 12+가 어떻게 달렸는지? 내가 바로 여기 질문을 시작했을 때 : http://stackoverflow.com/questions/42440515/build-globalplatform-for-ubuntu-14-04-lts – Florian

+0

@Florian 좋은 질문입니다. 내가이 일을 한 지 수 개월이 지났어. 제가 사용하고있는 버전을 찾으려고 노력하겠습니다. –

+0

. 선택한 AID는 발급자 보안 도메인 (Issuer Security Domain, ISD)이며 카드 관리자라고도합니다. 이것이 모든 글로벌 플랫폼 명령을 관리하고 처리하는 최상위 애플릿입니다. ISD만이 설치된 모든 애플릿을 나열 할 수 있기 때문에 ISD가 기본 키를 사용했기 때문에 실제로 설치된 모든 AID를 나열 할 수있었습니다. – Florian

답변

4

짧은 대답 : 우선 응용 프로그램을 선택하고 GET DATA 명령을 보내기 전에 기본 키를 사용하여 인증해야했습니다.

스마트 카드에서 데이터를 가져 오는 또 다른 명령 줄 도구 인 GlobalPlatformPro을 설치했습니다.

gp -list -d을 사용하여 카드의 모든 AID를 나열합니다 (-d은 APDU가 전송되는 것을 표시하는 디버그 임). 이 카드가 제목 보안 채널 키.

이 출력 여러 애플 리케이션. AID 내가 그들 중 몇 가지 시도 후 (사용할 필요 결국은)이었다 아래 gpshell docs에있는 기본 키 404142434445464748494a4b4c4d4e4f를 (사용 밝혀 :이 (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

좋은 노력이 될 –

+0

@PaulBastian은 추가 정보를 보내 주셔서 감사합니다. 이제는 제게 더 많은 의미가 있다는 것을 분명히했습니다. –

+0

참고 사항 : AFAIK를 사용하면 CPLC를 인증받을 필요가 없습니다. – vlp

0

간단한 gp -i는 사람이 읽을 수있는 형태로 당신에게 CPLC을 줄 것이다.