| #!/usr/bin/env python |
| |
| import constants |
| import array |
| |
| INS = 1 |
| CNT = 4 |
| |
| class SmartCardEmulator: |
| def getATR(self): |
| return array.array('B', constants.ATR_SYSMOCOM2) |
| |
| def send_receive_cmd(self, cmd): |
| if len(cmd) == 5: # Received cmd from phone |
| if cmd[INS] == 0xA4: |
| resp = [cmd[INS]] # Respond with INS byte |
| elif cmd[INS] == 0xC0: |
| data = [0x00, 0x00, 0x00, 0x00, |
| 0x7F, 0x20, 0x02, 0x00, |
| 0x00, 0x00, 0x00, 0x00, |
| 0x09, 0x91, 0x00, 0x17, |
| 0x04, 0x00, 0x83, 0x8A, |
| 0x83, 0x8A] |
| SW = [0x90, 0x00] |
| resp = [cmd[INS]] + data + SW # Respond with INS byte |
| #state = WAIT_RST |
| else: |
| print("Unknown cmd") |
| resp = [0x60, 0x00] |
| elif len(cmd) == 2: |
| resp = [0x9F, 0x16] |
| else: |
| resp = [0x60, 0x00] |
| |
| print("Cmd, resp: ") |
| print("".join("%02x " % b for b in cmd)) |
| print("".join("%02x " % b for b in resp)) |
| |
| return array.array('B', resp) |
| |
| def reset_card(): |
| pass |
| |
| def close(self): |
| pass |