class pyResManController(object): """The controller of reResManDialog;""" def __init__(self, handler): """""Constructor""" self.__readername = None self.__reader = pyResManReader() self.__handler = handler self.__reader.addReaderMonitorHandler(self) self.__reader.monitorReaders() self.__runScriptThread = None self.__gpInterface = GPInterface() self.__scDebugger = R502SpyLibrary(self.__gpInterface) gp.enableTraceMode(1) self.__debuggerVariables = {} def getReaderList(self): return self.__reader.getReaderList() def getReaderName(self): return self.__readername def connect(self, readername, protocol, mode): """ Connect to the reader;""" self.__readername = readername self.__handler.handleLog('Connect to %s.' %(readername)) self.__gpInterface.connect(str(readername), protocol) self.__scDebugger.init() def handleCardEvent(self, eventType, args): readername = args[0] if eventType == ICardMonitorEventHandler.MONITOR_EVENT_INSERT: self.__handler.handleCardInserted(readername) elif eventType == ICardMonitorEventHandler.MONITOR_EVENT_REMOVE: self.__handler.handleCardRemoved(readername) self.__reader.removeCardMonitorHandler(self) self.__reader.stopCardMonitor() def handleReaderEvent(self, eventType, args): if eventType == IReaderMonitorEventHandler.MONITOR_EVENT_ADDED: for readername in args: self.__handler.handleReaderAdded(readername) elif eventType == IReaderMonitorEventHandler.MONITOR_EVENT_REMOVED: for readername in args: self.__handler.handleReaderRemoved(readername) def monitorCard(self): self.__reader.addCardMonitorHandler(self) self.__reader.monitorCard(self.__readername) def disconnect(self): self.__gpInterface.disconnect() try: self.__reader.removeCardMonitorHandler(self) self.__reader.stopCardMonitor() except: pass def __transmit_impl(self, cmd, t0AutoGetResponse, handlerArgs): commandValue = Util.s2vs(cmd) self.__handler.handleAPDUCommand("".join("%02X " %(ord(vb)) for vb in commandValue), handlerArgs) timeStart = timeit.default_timer() rsp = self.__gpInterface.transmit(Util.s2vs(cmd)) timeStop = timeit.default_timer() transtime = timeStop - timeStart self.__handler.handleAPDUResponse("".join("%02X " %(ord(vb)) for vb in rsp), transtime, handlerArgs) if t0AutoGetResponse and (rsp[0] == '\x61') and (len(handlerArgs) == 0): cmd = '\x00\xC0\x00\x00' + rsp[1] self.__handler.handleAPDUCommand("".join("%02X " %(ord(vb)) for vb in cmd)) timeStart = timeit.default_timer() rsp = gp.sendApdu(cmd) timeStop = timeit.default_timer() transtime = timeStop - timeStart self.__handler.handleAPDUResponse("".join("%02X " %(ord(vb)) for vb in rsp), transtime) def __transmit(self, cmd, t0AutoGetResponse, handlerArgs): """Thread method to transmit an apdu;""" try: self.__transmit_impl(cmd, t0AutoGetResponse, handlerArgs) except Exception, e: self.__handler.handleException(e)
@author: [email protected] @organization: https://www.javacardos.com/ @copyright: JavaCardOS Technologies. All rights reserved. ''' from GPInterface import GPInterface from GPInterface import SCARD_PROTOCOL_T1 from R502SpyLibrary import R502SpyLibrary if __name__ == '__main__': gpInterface = GPInterface() readers = gpInterface.listreaders() for reader in readers: if reader.find('R502 SPY') != -1: break gpInterface.connect(reader, SCARD_PROTOCOL_T1) scDebugger = R502SpyLibrary(gpInterface) scDebugger.init() scDebugger.rfManaul() scDebugger.rfOn() ret, rsp = scDebugger.claWUPA('\x52') print str(ret) + ' > ' + ''.join('%02X ' % (ord(b)) for b in rsp) ret, rsp = scDebugger.claAnticollision('\x93\x20') print str(ret) + ' > ' + ''.join('%02X ' % (ord(b)) for b in rsp) uid = rsp ret, rsp = scDebugger.claSelect('\x93\x70' + uid) print str(ret) + ' > ' + ''.join('%02X ' % (ord(b)) for b in rsp)
Created on 2016-05-14 @author: zhenkui ''' from GPInterface import GPInterface from GPInterface import SCARD_PROTOCOL_T1 from R502SpyLibrary import R502SpyLibrary if __name__ == '__main__': gpInterface = GPInterface() readers = gpInterface.listreaders() for reader in readers: if reader.find('R502 SPY') != -1: break gpInterface.connect(reader, SCARD_PROTOCOL_T1) scDebugger = R502SpyLibrary(gpInterface) scDebugger.init() scDebugger.rfManaul() scDebugger.rfOn() ret, rsp = scDebugger.claWUPA('\x52') print str(ret) + ' > ' + ''.join('%02X ' %(ord(b)) for b in rsp) ret, rsp = scDebugger.claAnticollision('\x93\x20') print str(ret) + ' > ' + ''.join('%02X ' %(ord(b)) for b in rsp) uid = rsp ret, rsp = scDebugger.claSelect('\x93\x70' + uid) print str(ret) + ' > ' + ''.join('%02X ' %(ord(b)) for b in rsp)
class pyResManController(object): """The controller of reResManDialog;""" def __init__(self, handler): """""Constructor""" self.__readername = None self.__reader = pyResManReader() self.__handler = handler self.__reader.addReaderMonitorHandler(self) self.__reader.monitorReaders() self.__runScriptThread = None self.__gpInterface = GPInterface() self.__scDebugger = R502SpyLibrary(self.__gpInterface) gp.enableTraceMode(1) self.__debuggerVariables = {} def getReaderList(self): return self.__reader.getReaderList() def getReaderName(self): return self.__readername def connect(self, readername, protocol, mode): """ Connect to the reader;""" self.__readername = readername self.__handler.handleLog('Connect to %s.' %(readername)) self.__gpInterface.connect(str(readername), protocol) self.__scDebugger.init() def handleCardEvent(self, eventType, args): readername = args[0] if eventType == ICardMonitorEventHandler.MONITOR_EVENT_INSERT: self.__handler.handleCardInserted(readername) elif eventType == ICardMonitorEventHandler.MONITOR_EVENT_REMOVE: self.__handler.handleCardRemoved(readername) self.__reader.removeCardMonitorHandler(self) self.__reader.stopCardMonitor() def handleReaderEvent(self, eventType, args): if eventType == IReaderMonitorEventHandler.MONITOR_EVENT_ADDED: for readername in args: self.__handler.handleReaderAdded(readername) elif eventType == IReaderMonitorEventHandler.MONITOR_EVENT_REMOVED: for readername in args: self.__handler.handleReaderRemoved(readername) def monitorCard(self): self.__reader.addCardMonitorHandler(self) self.__reader.monitorCard(self.__readername) def disconnect(self): self.__gpInterface.disconnect() self.__reader.removeCardMonitorHandler(self) self.__reader.stopCardMonitor() def __transmit_impl(self, cmd, t0AutoGetResponse, handlerArgs): commandValue = Util.s2vs(cmd) self.__handler.handleAPDUCommand("".join("%02X " %(ord(vb)) for vb in commandValue), handlerArgs) timeStart = timeit.default_timer() rsp = self.__gpInterface.transmit(Util.s2vs(cmd)) timeStop = timeit.default_timer() transtime = timeStop - timeStart self.__handler.handleAPDUResponse("".join("%02X " %(ord(vb)) for vb in rsp), transtime, handlerArgs) if t0AutoGetResponse and (rsp[0] == '\x61') and (len(handlerArgs) == 0): cmd = '\x00\xC0\x00\x00' + rsp[1] self.__handler.handleAPDUCommand("".join("%02X " %(ord(vb)) for vb in cmd)) timeStart = timeit.default_timer() rsp = gp.sendApdu(cmd) timeStop = timeit.default_timer() transtime = timeStop - timeStart self.__handler.handleAPDUResponse("".join("%02X " %(ord(vb)) for vb in rsp), transtime) def __transmit(self, cmd, t0AutoGetResponse, handlerArgs): """Thread method to transmit an apdu;""" try: self.__transmit_impl(cmd, t0AutoGetResponse, handlerArgs) except Exception, e: self.__handler.handleException(e)