#!/usr/bin/env python3 import usb.core import usb.util import sys class find_class(object): def __init__(self, class_): self._class = class_ def __call__(self, device): # first, let's check the device if device.bDeviceClass == self._class: return True # ok, transverse all devices to find an # interface that matches our class for cfg in device: # find_descriptor: what's it? intf = usb.util.find_descriptor( cfg, bInterfaceClass=self._class ) if intf is not None: return True return False # main code def main(): devs = usb.core.find(find_all=1, custom_match=find_class(0xb)) # 0xb = Smartcard for dev in devs: dev.set_configuration(2) dev.reset() dev.write(0x1, {0x63, 0x63}) # PC_TO_RDR_ICCPOWEROFF ret = dev.read(0x82, 64) print(ret) #dev.write(0x1, {0x62, 0x62}) # PC_TO_RDR_ICCPOWERON return # (epi, epo) = find_eps(dev) while True: #ep_out.write("Hello") try: ans = dev.read(0x82, 64, 1000) print("".join("%02x " % b for b in ans)) except KeyboardInterrupt: print("Bye") sys.exit() except: print("Timeout") # print(ep_in.read(1, 5000)); main()