MIFARE classic merupakan kartu tanpa kontak buatan NXP Semiconductors yang sudah umum digunakan sebagai nfc-tag yang dapat dibuat menjadi seperti e-wallet, kartu keamanan, kartu absen maupun kartu untuk memberikan perintah kepada HP. Dalam kartu NFC ada berbagai format yang umum digunakan seperti NDEF, APDU ataupun format MIFARE classic biasa, pada artikel ini akan dibahas cara mengakses memory MIFARE classic menggunakan NFC reader PN532 dan mikrokontroler. Perlengkapan yang perlu dipersiapkan adalah sebagai berikut :
Langkah 1 : Penjelasan Memory MIFARE Classic 1K EV-1 ISO 14443 type A §
Komunikasi yang digunakan untuk melakukan akses ke memory dari PN532 adalah I2C, untuk setting dan persiapan pada PN532 dapat dilihat pada artikel dengan link berikut Persiapan Hardware dan Software.
Setelah persiapan sudah dilakukan pertama-tama perlu diketahui bahwa isi memori daripada MIFARE classic 1K terbagi menjadi .
Setiap blok mengandung 16 byte data, jika dilihat pada block 0 yang sudah terisi data, dimana 4 byte pertama merupakan UID dari kartu MIFARE Classic dan 12 byte sisanya merupakan kode unik produksi dari kartu tersebut, sehingga isi dalam blok 0 tidak dapat diganti, namun ada beberapa jenis kartu yang membebaskan penggantian isi dari blok 0.
Selanjutnya pada setiap sektor terdapat 4 blok, misalkan dilihat pada sektor 2 di gambar 1, block 11 yang disebut sebagai sector trailer terisi sebuah data yang dapat mengatur hak akses atas sektor tersebut dan juga kode otentikasi sebelum mengakses setiap block pada sektor tersebut, dari sini dapat dilihat sebelum kita dapat mengakses sebuah blok dari masing masing memory, kita perlu melakukan otentikasi. Berikut adalah format dari sector trailer.
Sebelum menjelaskan fungsi key A dan key B dalam sector trailer pada gambar , pahami dahulu pengaturan format pada access bits jika dilihat dalam byte 6 hingga byte 8 ada berbagai variabel bit yang berisi kebalikan dari variabel yang lain misalnya pada byte 6 bit 4 hingga bit 7 merupakan kebalikan dari byte 8 bit 0 hingga bit 3 hal ini berfungsi sebagai validasi pengisian data sehingga jika pengisian diisi secara random maka hak akses atas sektor tersebut otomatis akan terhapus secara permanen, maka dari itu perlu berhati-hati untuk mengisi nilai pada byte 6 – 8 pada sector trailer, penjelasannya dapat dilihat dibawah ini.
(data random)
byte 6 0x14
byte 7 0x05
byte 8 0x20
Bit 7
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
0x14
0
0
0
0
1
1
1
0
0x05
0
0
0
0
0
1
0
1
0x20
0
0
1
0
0
0
0
0
Sudah terlihat jelas data tidak sesuai dengan format pada gambar 2, maka data diatas akan menyebabkan hilangnya akses pada sector yang diatur secara permanen.
Selanjutnya adalah contoh dari data yang benar seperti pada gambar 1.
byte 6 0xFF
byte 7 0x07
byte 8 0x80
Bit 7
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
0xFF
1
1
1
1
1
1
1
1
0x07
0
0
0
0
0
1
1
1
0x80
1
0
0
0
0
0
0
0
Jika data sudah sesuai format seperti tabel diatas maka dapat dijabarkan menjadi seperti berikut :
(C1,C2,C3)0 = 0 0 0 (mengontrol data block 0 dapat read write increment decrement transfer restore)
(C1,C2,C3)1 = 0 0 0 (mengontrol data block 0 dapat read write increment decrement transfer restore)
(C1,C2,C3)2 = 0 0 0 (mengontrol data block 0 dapat read write increment decrement transfer restore)
Program yang digunakan untuk melakukan akses dari kartu memori NFC adalah program dibagian paling bawah, cara menggunakannya adalah dengan bantuan serial monitor dengan format sebagai berikut.
Kondisi
Starter
Mode
Nomor Blok 1
Nomor Blok 2
1
/
r
25
40
2
/
r
25
0
3
/
r
4
/
w
25
kondisi 1 adalah melakukan pembacaan memori pada blok 25 hingga 40
kondisi 2 adalah melakukan pembacaan memori pada blok 25
kondisi 3 adalah melakukan pembacaan memori keseluruhan
kondisi 4 adalah melakukan pengisian variabel pada blok 25
Kode dibawah sudah termasuk validasi pengisian data pada blok sector trailer sehingga jika format access bit sector trailer tidak sesuai maka blok tersebut tidak akan ditulis.
Untuk tutorial dalam bentuk video dapat dilihat dalam video berikut