add kevins iccid, imsi, .. read commands
diff --git a/usb_application/ccid.py b/usb_application/ccid.py
index 48178ae..583d49c 100755
--- a/usb_application/ccid.py
+++ b/usb_application/ccid.py
@@ -1,9 +1,20 @@
-#!/usr/bin/env python3 
+#!/usr/bin/env python 
 
 import usb.core
 import usb.util
 import sys
 
+from pySim.commands import SimCardCommands
+from pySim.utils import h2b, swap_nibbles, rpad, dec_imsi, dec_iccid
+from pySim.transport.pcsc import PcscSimLink
+
+
+import hashlib
+import os
+import random
+import re
+
+
 class find_class(object):
     def __init__(self, class_):
         self._class = class_
@@ -24,16 +35,95 @@
 
         return False
 
+
+def pySim_read():
+    sl = PcscSimLink(0)
+
+    # Create command layer
+    scc = SimCardCommands(transport=sl)
+
+    # Wait for SIM card
+    sl.wait_for_card()
+
+    # Program the card
+    print("Reading ...")
+
+    # EF.ICCID
+    (res, sw) = scc.read_binary(['3f00', '2fe2'])
+    if sw == '9000':
+            print("ICCID: %s" % (dec_iccid(res),))
+    else:
+            print("ICCID: Can't read, response code = %s" % (sw,))
+
+    # EF.IMSI
+    (res, sw) = scc.read_binary(['3f00', '7f20', '6f07'])
+    if sw == '9000':
+            print("IMSI: %s" % (dec_imsi(res),))
+    else:
+            print("IMSI: Can't read, response code = %s" % (sw,))
+
+    # EF.SMSP
+    (res, sw) = scc.read_record(['3f00', '7f10', '6f42'], 1)
+    if sw == '9000':
+            print("SMSP: %s" % (res,))
+    else:
+            print("SMSP: Can't read, response code = %s" % (sw,))
+
+    # EF.HPLMN
+#   (res, sw) = scc.read_binary(['3f00', '7f20', '6f30'])
+#   if sw == '9000':
+#           print("HPLMN: %s" % (res))
+#           print("HPLMN: %s" % (dec_hplmn(res),))
+#   else:
+#           print("HPLMN: Can't read, response code = %s" % (sw,))
+    # FIXME
+
+    # EF.ACC
+    (res, sw) = scc.read_binary(['3f00', '7f20', '6f78'])
+    if sw == '9000':
+            print("ACC: %s" % (res,))
+    else:
+            print("ACC: Can't read, response code = %s" % (sw,))
+
+    # EF.MSISDN
+    try:
+    #       print(scc.record_size(['3f00', '7f10', '6f40']))
+            (res, sw) = scc.read_record(['3f00', '7f10', '6f40'], 1)
+            if sw == '9000':
+                    if res[1] != 'f':
+                            print("MSISDN: %s" % (res,))
+                    else:
+                            print("MSISDN: Not available")
+            else:
+                    print("MSISDN: Can't read, response code = %s" % (sw,))
+    except:
+            prin#t("MSISDN: Can't read. Probably not existing file")
+
+    # Done for this card and maybe for everything ?
+    print("Done !\n")
+
+cmd1 = {0x00, 0x10, 0x00, 0x00}
+cmd2 =  {0x00, 0x20, 0x00, 0x00, 0x02}
+cmd_poweron = {0x62, 0x62, 0x00, 0x00}
+cmd_poweroff = {0x63, 0x63, 0x00, 0x00}
+cmd_get_slot_stat = {0x65, 0x65, 0x00, 0x00}
+cmd_get_param = {0x00, 0x6C, 0x00, 0x00}
+
 # 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
+       
+        pySim_read() 
+
+#        dev.write(0x1, cmd_poweroff)
+#        dev.write(0x1, cmd_poweron)
+#        dev.write(0x1, cmd2)
+#        dev.write(0x1, cmd_get_slot_stat)
+#        ret = dev.read(0x82, 64)
+        print(ret)
+        #dev.write(0x1, {0x62, 0x62})    # PC_TO_RDR_ICCPOWERON
     return
 
 #    (epi, epo) = find_eps(dev)