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 khususnya untuk mengolah value block sehingga dapat digunakan seperti dompet digital:
Langkah 1 : Penjelasan Value BLock 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 dari MIFARE classic 1k terbagi menjadi blok manufaktur, blok data, sector trailer dan blok value. karena blok data sudah dicontohkan pada artikel sebelumnya, maka dari artikel ini akan membahas lebih dalam tentang blok value, pahami dahulu isi dari blok value.
Pada blok tersebut sudah terdapat format yang harus dipenuhi agar meningkatkan keamanan data yang disimpan pada blok value, pada bit ke 12 hingga ke 15 merupakan address yang diatur sebagai backup sehingga data tetap aman. untuk membuat blok seperti diatas hanya dapat menggunakan perintah write contoh penulisan data bernilai 0 pada value block dapat dilihat pada tabel dibawah.
0
0
0
0
ff
ff
ff
ff
0
0
0
0
32
cd
32
cd
Pada tabel diatas berarti dompet yang berisi 0 dan block 50 (0x32) sebagai backup.
Setelah blok sudah diatur, maka perlu mengatur akses bit dari blok tersebut sehingga blok terdaftar sebagai value blok.
Pada gambar 2 dapat dilihat bagian akses bit yang dapat melakukan proses add, substract, transfer dan restore hanya ada pada nomor 0 dan 6, maka dari itu kita atur blok yang ingin kita jadikan sebagai dompet digital sesuai dengan akses bit tersebut, dibawah diatur dahulu akses bitnya menjadi seperti tabel dibawah.
Bit 7
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
0x14
0
1
0
1
1
1
0
1
0x05
0
0
1
0
0
1
1
1
0x20
1
0
0
0
1
0
1
0
jika akses bit sudah menjadi seperti pada tabel diatas maka atur isi dari blok 1 pada sektor tersebut menjadi seperti diabwah ini.
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
5
/
i
49
50
6
/
d
49
50
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 isi data pada memori pada blok 25
Kondisi 5 adalah melakukan Increment pada blok 49 dan hasilnya disimpan di blok 50
Kondisi 6 adalah melakukan Decrement pada blok 49 dan hasilnya disimpan di blok 50
Sebagai contoh kita akan menggunakan blok ke 49 sebagai dompet. dan blok 50 sebagai tempat backup,
setelah variabel isi data sudah diatur selanjutnya kita atur akses bit sesuai dengan yang dibahas dilangkah sebelumnya dengan key A dan key B diisi 0xff semua untuk mempermudah contoh dengan mengatur isi data menjadi seperti dibawah ini.
Jika sudah maka upload program dan isi data tersebut ke sektor trailer dengan mengetikan /w51 pada serial monitor.
Selanjutnya kita isi dahulu blok ke 49 dengan cara menulis isi blok pada variable blok menjadi seperti dibawah ini.
Dengan cara yang sama ketikan /w49.
Jika sudah maka blok ke 49 sudah terisi dan siap digunakan sebagai dompet digital.
Setelah selesai kita sudah bisa melakukan increment dan decrement, setelah increment dan decrement dilakukan maka isi data akan tersimpan di internal transfer buffer, maka dari itu perlu melakukan perintah transfer untuk mengambil data dari internal transfer buffer.
Namun dari program sudah diatur ketika melakukan increment langsung saja pilih data increment disimpan dimana, contoh disini isi data akan melakukan increment senilai 5, maka isi dulu variabel incData menjadi seperti berikut.
Setelah itu gunakan perintah /i49,50 untuk melakukan increment dan menyimpan nya pada blok 50 sehinggan outpunya akan menjadi seperti berikut.
Setelah itu jika dibaca blok 49 dan 50 dengan menggunakan perintah /r49,50 akan menjadi seperti berikut.
Untuk perintah decrement sama dengan perintah increment cukup ganti huruf i dengan huruf d.
Untuk tutorial dalam bentuk video dapat dilihat dalam video berikut