나는 최근에 스마트 카드 프로그래밍에 뛰어 들었다.Gemalto Prox-SU 리더로 MIFARE 1k 메모리 블록에 액세스하는 방법은 무엇입니까?
나는 Gemalto Prox-SU 판독기를 사용하고 있으며, 우분투 16.04 기계에서 여러 개의 빈 MIFARE Classic 1k 카드를 사용할 수 있습니다. Gemalto Prox-SU 리더를 설치했고 Ludovic Russeau's pyscard을 사용하여 Python 스크립트를 통해 카드를 감지하는 독자를 확보했습니다.
APDU를 리더/카드 연결로 보내는 스크립트를 작성했습니다. 나는 ATR을 읽을 수 있고, GetData 명령을 보내서 카드의 일련 번호를 읽을 수 있으며, 여러 개의 APDU를 카드에 보내 카드 메모리 블록을 읽으려고 시도했다. 그러나 LoadKey 명령을 제외하고 다른 모든 것은 "0x6982 : 보안 상태가 만족스럽지 않음"을 반환합니다.
설명서에 언급 된대로 일반 인증 명령을 보내기로되어 있지만 일반 인증 명령이 "보안 상태가 만족하지 않음"을 반환하고 있습니다. 내가 읽은 것에서 이것은 정말 간단해야합니다. 내가 뭘 놓치고 있니? 인증이 성공하고 메모리 블록에서 데이터를 읽을 수 있도록 스크립트를 설정하는 방법?
당신은 "A가 기본 값 ("전송 키 ") FF FF FF FF FF FF로 카드를 사용하여 카드를 읽을 수 있다면 다음 LOAD KEY 명령을 사용할 것"이라고 말했습니다. 이것은 효과가 있었고, 나의 원래의 질문이 숨어지면, 이것은 문제를 해결했습니다. 그러나, 새로운 문제가 있다면. 카드에 keyA만으로 읽을 수 있는지 어떻게 알 수 있습니까? 나중에 설정할 수 있습니까? –
@GugaFigueiredo 각 섹터에는 두 개의 키 (키 A와 키 B)가 있습니다. 각 섹터 내의 블록은 키 A 또는 키 B로 읽고 쓸 수 있도록 구성 할 수 있습니다. 액세스 조건을 구성하는 키와 비트는 각 섹터의 마지막 블록 ("섹터 트레일러")에 저장됩니다. 섹터 트레일러는 다른 블록과 마찬가지로 액세스 할 수 있습니다 (단, 키 값은 읽기 명령 중에 반환 된 데이터에서 마스크 처리됩니다). –