blob: 48178ae5da3673a3cc1946f91683fd1cbae73c26 [file] [log] [blame]
#!/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()