2015-01-09 7 views
0

비자 일렉트론 및 데빗 마스터 카드를 가지고 있지만 각각 AID A0000000032010 및 A0000000041010을 사용하여 응용 프로그램을 선택하려고 할 때마다 파일을 찾을 수 없다는 6A82 응답이 표시됩니다. .유효한 AID를 사용하여 EMV 카드에서 응용 프로그램을 선택할 수 없음

여기에 내가 잘못을 모두 선택

//SELECTING VISA ELECRON CARD APPLICATION 
byte[] ApduCMDVC = new byte[] { (byte) 0x00, (byte) 0xA4, (byte) 0x04, 
      (byte) 0x00, (byte) 0x0E, 
      (byte) 0x41, (byte)0x30, (byte) 0x30, (byte) 0x30, 
      (byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30, 
      (byte) 0x33,(byte) 0x32,(byte) 0x30,(byte) 0x31,(byte) 0x30}; 

//SELECTING MASTER CARD APPLICATION 
byte[] ApduCMDMC = new byte[] { (byte) 0x00, (byte) 0xA4, (byte) 0x04, 
      (byte) 0x00, (byte) 0x0E, 
      (byte) 0x41, (byte)0x30, (byte) 0x30, (byte) 0x30, 
      (byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30, 
      (byte) 0x34,(byte) 0x31,(byte) 0x30,(byte) 0x31,(byte) 0x30}; 

내 코드가 뭔가가있을 수있어?

+0

안녕하세요, 어떻게 당신이 APDU를 발행된다? 자바? 자칼? 또한 코드 스 니펫을 게시 할 수 있습니까? AID에 대한 바이트 배열 만 표시됩니다. – Greycon

+0

안녕하세요 Greycon, 네, 저는 Java를 사용하고 있습니다. Android 용 모바일 POS 앱을 개발 중이며 카드 판독기에 apdu 명령을 보내는 카드 리더 제조업체의 SDK가 있으므로 기본적으로 apdu 명령을 바이트로 전송합니다. 배열. 이전에 붙여 넣은 스 니펫은 내 코드에서만 누락되었습니다. 카드 판독기에 요청을 보내는 방법입니다. –

+0

좋아요,이 작업을 수행하는 몇 가지 Java 코드가 있습니다. 몇 년 전입니다. 사냥을하는 동안 대기 상태입니다. 나는 당신이 "Payfile.sys"의 선택을했다고 가정합니다. – Greycon

답변

0

이전에 사용했던 일부 C++ 코드를 되돌아 보았습니다. 여러분의 문제는 바이너리가 아닌 ASCII로 AID를 보내는 것입니다.

static BYTE selectAIDCmd[] = {0x00, 0xA4, 0x04, 0x00, 0x07, 0xA0, 0x00, 0x00, 0x00, 0x04, 0x10, 0x10 }; 

그래서, 당신이 필요합니다 다음은 C++ 바이트 배열이 내가 사용의

byte[] ApduCMDMC = new byte[] { (byte) 0x00, (byte) 0xA4, (byte) 0x04, 
     (byte) 0x00, (byte) 0x07, 
     (byte) 0xA0, (byte)0x00, (byte) 0x00, (byte) 0x00, (byte)0x03,(byte) 0x20,(byte) 0x10}; 
+0

Greycon을 보내기 전에 16 진수 값을 바이트로 캐스팅했기 때문에 그렇게 생각하지 않습니다. –

+0

그래서 제가 코드를 게시하도록 요청한 것입니다. 나는 네가하는 일을 짐작할 수 없다. 내가 게시 한 바이트 배열은 작동하는 C++ 프로그램의 바이트 배열입니다. 그리고 "16 진수 값을 바이트로 변환"하는 것은 의미가 없습니다. APDU Send 통화를 포함하여 코드를 올리시겠습니까? – Greycon

+0

오, 당신은 "(byte) 0x30"을 의미합니다. 이것은 컴파일러에게 이것이 싱글 바이트임을 알려주지 만 값은 여전히 ​​16 진수 일 것입니다. 필요한 것은 (byte) 0x00입니다. 완전히 다른 동물. – Greycon