2015-01-11 14 views
5

The procedury Mifare Classic 1K jestmechanizm blokujący Mifare Classic 1K

  1. Polling tagów
  2. Uwierzytelnianie te tagi
  3. Jeśli uwierzytelnianie succeded następnie odczytu/zapisu.

Ukończyłem już te procedury, a także czytałem i zapisywałem dane z konkretnych sektorów.

Polecenie odpytywanie tagów jest

new byte[] { (byte) 0xFF, (byte) 0x00, (byte) 0x00, 
       (byte) 0x00, (byte) 0x04, (byte) 0xD4, (byte) 0x4A, 
       (byte) 0x01, (byte) 0x00 } 

polecenie Authentication jest

new byte[] { (byte) 0xFF, (byte) 0x86, (byte) 0x00, 
       (byte) 0x00, (byte) 0x05, (byte) 0x01,(byte) 0x00, (byte) 0x04, 
            (byte) 0x60,(byte) 0x00 }; 

Here "(bajt) 0x01" jest sektor 1

I Pisz Sektor 1, blok 5 to

new byte[] { (byte) 0xFF, (byte) 0x00, (byte) 0x00,(byte) 0x00, (byte) 0x15, (byte) 0xD4, 
      (byte) 0x40,(byte) 0x01, (byte) 0xA0, (byte) 0x05,(byte) 0x01, (byte) 0x02, 
      (byte) 0x03,(byte) 0x04, (byte) 0x05, (byte) 0x06, (byte) 0x07,(byte) 0x08, 
      (byte) 0x09,(byte) 0x0A,(byte) 0x0B, (byte) 0x0C, (byte) 0x0D,(byte) 0x0E, 
      (byte) 0x0F, (byte) 0x10}; 

Tutaj

(byte) 0x01, (byte) 0x02, (byte) 0x03,(byte) 0x04, (byte) 0x05, (byte) 0x06, (byte) 0x07,(byte) 0x08,(byte) 0x09,(byte) 0x0A,(byte) 0x0B, (byte) 0x0C, (byte) 0x0D,(byte) 0x0E,(byte) 0x0F,(byte) 0x10 

to dane te są pisanie na bloku 5 na Sektor 1.

odczytać sektora 1 i bloku 5 komenda jest

new byte[] { (byte) 0xFF, (byte) 0x00, (byte) 0x00, 
       (byte) 0x00, (byte) 0x05, (byte) 0xD4, (byte) 0x40, 
       (byte) 0x01, (byte) 0x30, (byte) 0x05 }; 

My Related Complete Code is here...

Mój problem polega na tym, że mogę zablokować/wykonać tylko do odczytu blok z określonego sektora?

Odpowiedz

4

Klucze uwierzytelniające i warunki dostępu dla każdego sektora karty MIFARE znajdują się w ostatnim bloku tego sektora (, zwiastun sektorowy). Możesz zaktualizować ten blok nowymi warunkami dostępu i kluczami uwierzytelniania za pomocą zwykłego polecenia zapisu.

Przyczepa sektor wygląda następująco:

+-----------------------------+--------------+----+-----------------------------+ 
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 
+-----------------------------+--------------+----+-----------------------------+ 
|   Key A   | Access Bits | GP |   Key B   | 
|   (6 bytes)   | (3 bytes) | B |   (6 bytes)   | 
+-----------------------------+--------------+----+-----------------------------+ 

więc znajdują się bity w bajcie dostępu 6-8 i wyglądać tak:

 +-------+-------+-------+-------+-------+-------+-------+-------+ 
     | Bit 0 | Bit 1 | Bit 2 | Bit 3 | Bit 4 | Bit 5 | Bit 6 | Bit 7 | 
     +-------+-------+-------+-------+-------+-------+-------+-------+ 
Byte 6: | nC2_3 | nC2_2 | nC2_1 | nC2_0 | nC1_3 | nC1_2 | nC1_1 | nC1_0 | 
     +-------+-------+-------+-------+-------+-------+-------+-------+ 
Byte 7: | C1_3 | C1_2 | C1_1 | C1_0 | nC3_3 | nC3_2 | nC3_1 | nC3_0 | 
     +-------+-------+-------+-------+-------+-------+-------+-------+ 
Byte 8: | C3_3 | C3_2 | C3_1 | C3_0 | C2_3 | C2_2 | C2_1 | C2_0 | 
     +-------+-------+-------+-------+-------+-------+-------+-------+ 

Gdzie nCx_y = nie Cx_y i „C1_x, C2_x, C3_x”jest warunkiem dostępu do bloku X:

  • C1_3, C2-3, C3_3: przyczepa sektora (blok 3 w tym sektorze)
  • C1_2, C2_2, C3_2: blok 2 w tym sektorze
  • C1_1, C2_1, C3_1: Blok 1 w tym sektorze
  • C1_0, C2_0, C3_0: blok 0 w tym sektorze

Można znajdź szczegółową listę możliwych warunków dostępu w arkuszu danych MIFARE 1K: http://www.nxp.com/documents/data_sheet/MF1S503x.pdf