EL-SAM-R01-D8 dengan Python
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 :
- Python versi 3.
- Library pyscard.
- Pycharm IDE.
- EL-SAM-R01-D8.
- NFC Tag Mifare Classic 1K 14443
Python versi 3 dapat langsung didownload di https://www.python.org/downloads/
Untuk library pySerial bisa langsung dicari di python interpreter pada pycharm atau langsung di cmd dengan mengetikan
Pycharm Ide dapat di instal di link berikut https://www.jetbrains.com/pycharm/
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
1. Penjelasan Awal
Update firmware dan instalasi driver dapat dilihat pada artikel https://www.electron.id/article/Setting-EL-SAM-R01-D8-Contoh-Demo-App.html
EL-SAM-R01-D8 diakses menggunakan python dengan library pyscard yang merupakan framework untuk membuat aplikasi smart card dalam Python yang dibuat berdasarkan PCSC API Python Wrapper Module dengan menggunakan PCSC-lite sehingga tidak sulit lagi untuk mengakses smart card.
Untuk berbagai metode akses smart card dengan library pyscard dapat dilihat pada : https://pyscard.sourceforge.io/user-guide.html
2. Penjelasan program
Sebelum mencoba menggunakan Program, 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
Pada bagian kode sudah dimasukan berbagai prosedur sederhana yang diperlukan untuk mulai melakukan pembacaan memori pada kartu.
Bagian awal adalah menghubungkan program dengan reader dan menyiapkan password otentikasi dengan cara berikut.
Variabel device berfungsi untuk menampung reader yang terhubung dengan komputer pada fungsi readers(), jadi ketika ada lebih dari 1 reader maka data akan menjadi seperti ini. device[0] = reader A device[1] = reader B
Sehingga jika ingin terhubung dengan reader B cukup ganti pada variabel connection menjadi.
Setelah itu pada variabel authA dan authB digunakan untuk keperluan otentikasi memory untuk jenis fungsi dan prosedur yang telah disiapkan dapat dilihat di bawah ini.
def init()
Berfungsi sebagai inisiasi, ketika device pertama kali terhubung def init akan mengirimkan perintah SAM Card contactless dan melakukan reset card sehingga siap untuk melakukan read kartu Mifare Classic tanpa menggunakan SAM.
def setTempAuth(storeNumb, keyNumb)
Berfungsi untuk memasukan kode otentikasi ke volatile memory reader sehingga jika ingin memasukan nilai authA dan authB bisa dengan cara berikut.
def mifareAuth(blockNumber,keyType)
Berfungsi khusus berfungsi untuk melakukan otentikasi dengan cara berikut.
def readBlock(blockNumber,length,keyType)
Berfungsi untuk membaca blok dan secara otomatis melakukan otentikasi dengan cara berikut.
Sehingga dengan contoh kasus ketika alat baru pertama kali terhubung dengan komputer, kode-nya dalah sebagai berikut.