Christina Quast | f2582fc | 2015-03-06 19:09:35 +0100 | [diff] [blame] | 1 | #!/usr/bin/env python |
| 2 | |
| 3 | import argparse |
| 4 | import sniffer |
| 5 | import ccid |
Christina Quast | 31b5b4e | 2015-03-09 17:15:13 +0100 | [diff] [blame] | 6 | import ccid_select |
Christina Quast | 80050a5 | 2015-04-04 20:00:15 +0200 | [diff] [blame] | 7 | import mitm |
Christina Quast | f2582fc | 2015-03-06 19:09:35 +0100 | [diff] [blame] | 8 | |
| 9 | import usb.core |
| 10 | import usb.util |
Christina Quast | 158c1dd | 2015-04-17 20:19:29 +0200 | [diff] [blame] | 11 | import sys |
Christina Quast | 362a4da | 2015-04-09 13:39:38 +0200 | [diff] [blame] | 12 | import time |
Christina Quast | f2582fc | 2015-03-06 19:09:35 +0100 | [diff] [blame] | 13 | |
Christina Quast | 4bcc023 | 2015-03-24 21:59:32 +0100 | [diff] [blame] | 14 | def find_dev(): |
Christina Quast | 3735039 | 2015-05-08 16:47:26 +0200 | [diff] [blame] | 15 | dev = usb.core.find(idVendor=0x16c0, idProduct=0x0762) |
Christina Quast | 4bcc023 | 2015-03-24 21:59:32 +0100 | [diff] [blame] | 16 | if dev is None: |
| 17 | raise ValueError("Device not found") |
| 18 | else: |
| 19 | print("Found device") |
| 20 | return dev |
Christina Quast | f2582fc | 2015-03-06 19:09:35 +0100 | [diff] [blame] | 21 | |
| 22 | # main code |
| 23 | def main(): |
| 24 | parser = argparse.ArgumentParser() |
Christina Quast | ba486b6 | 2015-05-18 17:16:26 +0200 | [diff] [blame] | 25 | # FIXME: config names instead of numbers |
Christina Quast | 452aee3 | 2015-04-03 13:22:18 +0200 | [diff] [blame] | 26 | parser.add_argument("-C", "--conf", type=int, choices=[1, 2, 3, 4], help="Set USB config") |
Christina Quast | f2582fc | 2015-03-06 19:09:35 +0100 | [diff] [blame] | 27 | parser.add_argument("-s", "--sniff", help="Sniff communication!", action='store_true') |
Christina Quast | 31b5b4e | 2015-03-09 17:15:13 +0100 | [diff] [blame] | 28 | parser.add_argument("-S", "--select_file", help="Transmit SELECT cmd!", action='store_true') |
Christina Quast | 381d0fc | 2015-03-15 15:13:38 +0100 | [diff] [blame] | 29 | parser.add_argument("-p", "--phone", help="Emulates simcard", action='store_true') |
Christina Quast | 80050a5 | 2015-04-04 20:00:15 +0200 | [diff] [blame] | 30 | parser.add_argument("-m", "--mitm", help="Intercept communication (MITM)", action='store_true') |
Christina Quast | ba486b6 | 2015-05-18 17:16:26 +0200 | [diff] [blame] | 31 | |
Christina Quast | f2582fc | 2015-03-06 19:09:35 +0100 | [diff] [blame] | 32 | args = parser.parse_args() |
| 33 | print("args: ", args) |
Christina Quast | 8271bd0 | 2015-06-19 13:49:45 +0200 | [diff] [blame] | 34 | dev = find_dev() |
Christina Quast | f2582fc | 2015-03-06 19:09:35 +0100 | [diff] [blame] | 35 | |
Christina Quast | f2582fc | 2015-03-06 19:09:35 +0100 | [diff] [blame] | 36 | if args.conf is not None: |
Christina Quast | 4bcc023 | 2015-03-24 21:59:32 +0100 | [diff] [blame] | 37 | dev.set_configuration(args.conf) |
Christina Quast | 362a4da | 2015-04-09 13:39:38 +0200 | [diff] [blame] | 38 | # Give pcsclite time to find the device |
| 39 | time.sleep(1) |
Christina Quast | f2582fc | 2015-03-06 19:09:35 +0100 | [diff] [blame] | 40 | if args.sniff is True: |
Christina Quast | 5cf676d | 2015-05-14 17:21:34 +0200 | [diff] [blame] | 41 | sniffer.sniff(dev) |
Christina Quast | 3742ef1 | 2015-05-18 17:31:51 +0200 | [diff] [blame] | 42 | # FIXME: This command is test code and should be removed in near future: |
Christina Quast | 31b5b4e | 2015-03-09 17:15:13 +0100 | [diff] [blame] | 43 | if args.select_file is True: |
| 44 | ccid_select.select() |
Christina Quast | 381d0fc | 2015-03-15 15:13:38 +0100 | [diff] [blame] | 45 | if args.phone is True: |
Christina Quast | f25a760 | 2015-05-14 18:09:47 +0200 | [diff] [blame] | 46 | mitm.do_mitm(dev, sim_emul=True) |
Christina Quast | 80050a5 | 2015-04-04 20:00:15 +0200 | [diff] [blame] | 47 | if args.mitm is True: |
Christina Quast | f25a760 | 2015-05-14 18:09:47 +0200 | [diff] [blame] | 48 | mitm.do_mitm(dev, sim_emul=False) |
Christina Quast | f2582fc | 2015-03-06 19:09:35 +0100 | [diff] [blame] | 49 | return |
| 50 | |
Christina Quast | f2582fc | 2015-03-06 19:09:35 +0100 | [diff] [blame] | 51 | main() |