EL-SAM-R01-D8 Merupakan sebuah NFC reader/writer yang dilengkapi dengan slot SAM card, dimana SAM card dapat digunakan sebagai akses ke beberapa kartu komersil seperti e-money ataupun akses tertentu.

Persiapan

Sebelum masuk ke bagian code, siapkan dulu beberapa hal berikut :

  • Demo App.
  • EL-SAM-R01-D8.
  • NFC Tag Mifare Classic 1K 14443

Demo App dapat download di : https://cloud.electron.id/s/g2mtyLZNZk87j4t

EL-SAM-R01-D8 dapat dibeli di : https://www.tokopedia.com/electron/el-sam-r01-d8-usb-nfc-reader-4-sam-card-slot-psam-payment-13-56mhzrfid

Instalasi Drive PCSC

PCSC merupakan API standard nasional untuk mengakses berbagai jenis smart card sedangkan DCRF32 menggunakan basis DLL buatan tim bernama Decard, pada artikel ini akan dibahas menggunakan demo app yang dibuat dari PCSC dari OS Windows, tetapi sebelum itu perlu untuk menginstal driver dahulu sehingga Windows dapat mengakses smart card.

Pertama update dulu firmware dari smart card dengan membuka file 02_SmartCardReader lalu jalankan program D8_APP_DownLoad_User.exe dan ikuti arahan pada file pdf D8 NFC Reader Programme Update Manual.

Firmware Update Folder

Setelah berhasil update firmware masuk ke folder 03_Windows instal driver dari PCSC,dengan nama file InstDriver.exe setelah itu buka install UsbCcidCtrl_v103.exe yang terletak pada file driver dari DCRF32.

Driver Folder

Setelah driver sudah selesai diinstal maka demo app siap digunakan.

Demo App PCSC

Sebelum mencoba menggunakan demo app, disarankan untuk memahami bagaimana akses memori dalam Mifare Classic 1K 14443, dasar dari akses memori dapat dilihat pada artikel akses memori Mifare Classic menggunakan PN-532. https://www.electron.id/article/PN-532-Memory.html

Buka file 03_APDU_Tool pada file ./03_jpg/PCSC, setelah itu ada 2 file demo yang dapat digunakan, kedua file tersebut sama memiliki fungsi utama untuk terhubung dengan reader dan mengirimkan perintah APDU pada reader, pada tutorial kali ini akan digunakan ScriptDemo.exe, ketika dibuka tampilan pertama ScriptDemo adalah sebagai berikut.

Demo APP 1 tampilan awal

Setelah itu klik tombol find reader untuk membaca reader yang terhubung dengan komputer dan double klik hingga tombol reset menjadi aktif.

Demo APP 1

Setelah itu perintah siap dikirim, perintah yang akan dicoba selanjutnya adalah perintah-perintah yang dapat dilihat pada file dokumentasi RM-D8-N USB command.

Untuk tes, disini akan dicoba melakukan pengiriman perintah untuk mendapatkan serial number dari reader yang terhubung.

Serial Number

Disini akan dicoba pada demo app, maka reader akan merespon sesuai dengan gambar diatas.

Serial Number Berhasil

Dapat dilihat 4 byte terakhir pada respon reader memiliki nilai 0x90 0x00 yang berarti operasi berhasil, selanjutnya akan dicoba untuk melakukan perintah membaca memori pada Mifare Classic 1k 14443.

Untuk melakukan pembacaan kartu reader perlu melakukan inisiasi terlebih dahulu, dengan cara mengatur komunikasi SAM Slot, karena pada tutorial kali ini tidak menggunakan SAM card sebagai otentikasi maka digunakan contactless sehingga perintah diatur menjadi FF71130600.

Set Sam Card Communication

Setelah itu letakan kartu yang ingin dibaca dan reset komunikasi SAM Card dengan mengirimkan perintah APDU: FF71100000.

Maka EL-SAM-R01-D8 sudah diatur menjadi contactless dengan protokol kartu yang diletakan diatas module pada saat melakukan reset, dalam tutorial ini maka EL-SAM-R01-D8 menjadi mode contactless Mifare Classic.

Card Reset

Setelah perintah reset selesai, maka reader siap melakukan read/write pada kartu. Pertama-tama untuk melakukan otentikasi pada memory perlu untuk menyimpan value autentikasi pada reader, disini akan dicontohkan untuk menyimpan value 00 00 00 00 00 00 pada key 0 dan FF FF FF FF FF FF pada key 1 pada volatile memory reader (volatile memory bersifat sementara dan akan terhapus segera ketika reader disconnect dengan komputer) dengan mengirimkan 2 perintah.

  1. FF 82 00 00 06 00 00 00 00 00 00 (Kode 00 00 00 00 00 00 merupakan kode default otentikasi key A)
  2. FF 82 00 01 06 FF FF FF FF FF FF (Kode FF FF FF FF FF FF merupakan kode default otentikasi key B)

Untuk gambaran blok perintah diatas dapat dilihat pada gambar dibawah ini, ketika perintah dikirim pastikan reader merespon dengan 90 00 yang berarti berhasil, jika gagal pastikan blok perintah yang dikirim benar.

Load Kode Otentikasi

  • Key Structure (1 byte) : 0x00 berarti value otentikasi disimpan di volatile memory. selain 0x00 disimpan ke memory.

  • Key Number (1 Byte) : 0x00 dan 0x01 : Merupakan slot volatile memory (tempat penyimpanan sementara).

  • Key (6 Byte) : Kode otentikasi Mifare Classic.

Setelah kode sudah tersimpan didalam memory reader, langkah selanjutnya adalah meletakan kartu RFID reader yang akan dibaca diatas alat dan melakukan otentikasi. Perlu diingat otentikasi hanya diperlukan 1 kali saja dan hanya berlaku pada 1 sektor trailer.

Pada percobaan kali ini akan mengirimkan perintah untuk melakukan otentikasi pada blok memory 3 menggunakan keyB yang tersimpan pada volatile memory 1.

FF 86 00 00 05 01 00 03 61 01

Jika berhasil maka reader akan memberika respon 90 00

Otentikasi Berhasil

Untuk bolek perintah otentikasi kartu tag dapat dilihat pada gambar dibawah ini.

Blok Otentikasi

  • Block Number Nilai blok yang ingin dibaca

  • Key Type 0x60 : untuk KeyA, 0x61 : untuk KeyB

  • Key Number Memanggil kode otentikasi yang akan digunakan pada volatile memory.

Setelah otentikasi pada blok 3 berhasil, yang berarti 1 sektor (0 - 3) bisa dibaca dengan mengirimkan perintah berikut yang memiliki arti membaca memory 03 dengan panjang 0x10 (16 Byte).

FF B0 00 03 10

Respone dari reader yang berhasil membaca kartu adalah sebagai berikut.

Tag Terbaca

Untuk blok read adalah sebagai berikut.

Blok Membaca

  • Block Number Blok yang ingin dibaca.

  • Number of Bytes to Read Jumlah Byte yang ingin dibaca.

Video