저는 pcsc-sharp 라이브러리를 사용하여 ACR122U Reader와 통신하여 Mifare Classic 1k 카드에 대한 정보 읽기/쓰기를 수행합니다.pcsc-sharp Mifare 인증
라이브러리 및 APDU 개념에 익숙해지면 내 응용 프로그램에서 카드 UID를 식별자로 사용할 수 있습니다. 이제 카드에 내 ID를 설정해야합니다. 따라서 NXP의 MIFARE (http://cache.nxp.com/documents/data_sheet/MF1S70YYX_V1.pdf?pspll=1)와 관련된 설명서를 읽었으며 ISO 7816-4 (http://www.cardwerk.com/smartcards/smartcard_standard_ISO7816-4_6_basic_interindustry_commands.aspx)에 대한 정보도 얻었습니다. 읽기/쓰기 작업을 수행하기 위해 카드 메모리에 액세스하기 전에 인증을해야한다는 것을 알고 있으며 표준 키 값을 알고 있습니다.
GitHub에서 pcsc-sharp 예제를 다운로드하고 Mifare1kTest 예제를 실행했습니다. 내가 일하지만 라인 36에 card.LoadKey
실패합니다. LoadKey
에있는 Apdu 명령의 응답 값은 SW1 = 99 SW2 = 0이며 어떤 문서에서도 찾을 수 없습니다. "throw new Exception"섹션을 주석 처리하면 예제가 작동합니다.
내 질문은 이제 올바른 값이 Card.LoadKey
으로 전달되는데, Apdu 명령의 매개 변수에 사용할 올바른 값입니다. "keynumber"(섹트로 넘버 - 섹터/블록 조합)이란 무엇입니까? 예제가 작동하면 LoadKey
호출이 필요합니까?
어떤 도움
안부
을 apreciated입니다마티아스
일반적으로 9xxx 범위의 내용은 성공을 의미하며 xxx는 추가 정보입니다. 내가 올바르게 기억하면 APDU 랩은 MiFare 응답을 상태 어로 집어 넣을 것입니다. (하지만 언젠가는 인터페이스를 프로그래밍했습니다. 몇 년 전에 내 마음은 더 이상 젊지 않습니다.) 키를 사용하여 키로드에 성공 했습니까? –
키는 판독기 메모리의 ** 휘발성 ** 부분에로드해야합니다. 이 예제는 'KeyStructure, NonVolalatileMemory'를 처리합니다. ** 아래의 해답에서 Mr Heart **가 설명 된대로 작동합니다. SW1/SW2의 결과는 90 00입니다. 대단히 감사합니다. –