2013-10-16 1 views
1

Mifare Standard 1k 카드에 문제가 있습니다. 나는 값 블록 (00000001FFFFFFFE0000000100FF00FF - 유효?)을 62 번 주소의 데이터 블록에 만들었다. 값 블록의 값은 1이고 값 블록의 주소는 0이다.Mifare 1k 값 차단 작업

나는 액세스를 변경했다. 데이터 블록 2 비트가 될 :

  • C1 = 1
  • C2 = 1
  • C3 = 0

다른 2 개 개의 데이터 블록은 팩토리 액세스 비트를 갖는다. 섹터 트레일러 액세스 비트는 또한 변경되어있다 :

  • C1 = 0
  • C2 = 1
  • C3 = 1

따라서, 해당 분야에 대한 액세스 비트 (16 섹터)은 3B478C69 (유효합니까?)입니다.

문제는 그 블록 (증분, 감소 등)에 대한 값 블록 특정 기능을 수행 할 수 없다는 것입니다. 응답은 항상 6A81입니다. -> "카드가 차단되었거나 지원되지 않습니다." 사용중인 APDU는 FFF5C13E0400000001입니다.

+0

액세스 비트와 블록 데이터가 괜찮아 보입니다.어떤 독자가 카드에 액세스하는 데 사용하고 있습니까? MIFARE 판독기에 보내는 명령에 대한 확신이 있습니까? –

+0

Omnikey 5021 CL 리더를 사용하고 있습니다. 내가 보내는 명령은 다음과 같습니다 (형식 : CLA INS P1 P2 P2 Lc 데이터 있음) : FF F5 Opcode (C0 감소, C1 증가, C2 복원) SourceBlock 04 피연산자. –

+0

명령의 예 : FF F5 C1 56 04 00 00 00 –

답변

5

OMNIKEY 독자는 비접촉식 메모리 카드 용 PC/SC API를 확장했습니다. MIFARE 고전 값 블록의 증가 및 감소에 대한 이들 정보에 의해 정의되는 명령은 :

단위 :

 
+------+------+------+------+------+-------------+ 
| CLA | INS | P1 | P2 | Lc | DATA  | 
+------+------+------+------+------+-------------+ 
| 0xFF | 0xD4 | BLOCK#  | 0x04 | XX 00 00 00 | 
+------+------+------+------+------+-------------+ 

또는 1과 같은 명령을 (상기 펌웨어 버전에 따라) 바이트 데이터 필드 :

 
+------+------+------+------+------+----+ 
| 0xFF | 0xD4 | BLOCK#  | 0x01 | XX | 
+------+------+------+------+------+----+ 

감소시킵니다 :

 
+------+------+------+------+------+-------------+ 
| CLA | INS | P1 | P2 | Lc | DATA  | 
+------+------+------+------+------+-------------+ 
| 0xFF | 0xD8 | BLOCK#  | 0x04 | XX 00 00 00 | 
+------+------+------+------+------+-------------+ 

또는 1 바이트의 데이터 필드와 동일한 명령 (상기 펌웨어 버전에 따라)

 
+------+------+------+------+------+----+ 
| 0xFF | 0xD8 | BLOCK#  | 0x01 | XX | 
+------+------+------+------+------+----+ 

BLOCK 번호 : P1은 블록 수의 MSB (항상 제로)이고 P2는 블록 번호의 LSB입니다.

XX : 증가/감소 값.

명령은 OMNIKEY Contactless Smart Card Readers Developer Guide에 설명되어 있습니다.

두 명령이 모두 암시 적으로 작업을 커밋하기 위해 전송 명령을 실행하는 것처럼 보입니다. 복원 명령은 PC/SC 확장에 대해 설명되어 있지 않지만 복원 명령은 OMNIKEY 동기 API를 통해 사용할 수 있습니다.

+0

따라서 값 블록에서 증가 및 감소 함수를 사용할 때 값 블록의 손상에 위험이 있습니까? 그것은 일어날 수 있습니까? 예를 들어, 거래하는 동안 카드를 제거하고 트랜잭션을 중단합니다. 그렇다면 값 블록이 손상되었습니다. 값 블록에서 내 데이터를 다시 가져 오는 방법은 무엇입니까? 또한 값 블록에서 주소를 사용하는 것은 무엇입니까? –

+1

우리의 경험은 지금까지 (적어도 OMNIKEY 리더기를 사용했지만, 다른 독자들도 마찬가지입니다) 트랜잭션을 찢어 버리면 ** 증가/감소 명령을 사용할 때도 데이터가 손상 될 수 있습니다 **. –

+0

카드에있는 데이터가 손상되었을 때 무엇을 할 수 있습니까? 카드를 안전하게 작성하는 더 똑똑한 방법이 있습니까? –

관련 문제