Commit Graph
100 Commits
Author SHA1 Message Date
Christina Quast 74876d2079 SIM card still absent 2015-03-13 23:45:33 +01:00
Christina Quast cc2186642e Made trace.h a symbolic link 2015-03-13 14:42:30 +01:00
Christina Quast ce8fa7e646 Add optional TRACE_*_WP switch 2015-03-13 13:09:51 +01:00
Christina Quast 23bb831cfb Added prob useful gdb information 2015-03-13 13:06:03 +01:00
Christina Quast 1c3a7994b8 Basic Assembler defines 2015-03-13 12:57:59 +01:00
Christina Quast f07ec9fa4b Header file with includes 2015-03-13 12:55:41 +01:00
Christina Quast 0a0ca9fa81 Add resources for gdb and gcc 2015-03-13 12:35:12 +01:00
Christina Quast 2a823a4ad0 Unignore unused files 2015-03-13 12:31:06 +01:00
Christina Quast 391dc2eb43 Undefine possibility for USB trace info
Define USB_NO_DEBUG to undefine TRACE_DEBUG_WP and TRACE_INFO_WP
2015-03-13 12:02:31 +01:00
Christina Quast b4d1b9d937 gemalto USB card reader dump 2015-03-10 23:36:23 +01:00
Christina Quast ecfad8f75c changed select command to one supported by simcard 2015-03-10 23:35:11 +01:00
Christina Quast c63df595e5 Atmel lib bug fixed: param position off by one
Furthermore the debug output level is INFO instead of DEBUG now.
2015-03-10 23:32:45 +01:00
Christina Quast dba7b16b98 ccid.py should not stop when an error occurs 2015-03-10 17:58:54 +01:00
Christina Quast 32a90ac660 remove windows line endings in iso7816_4.c 2015-03-10 16:18:16 +01:00
Christina Quast 40544cacca ignore zwizwa example code and Baselibc symlink 2015-03-10 16:04:44 +01:00
Christina Quast e03630f593 Problematic check for smartcard pin in ISR
This is a bug and should be fixed:
The smartcard insertion detection does not work if we uncomment
the check. But on the other hand, pcscd detects a lot of erroneous
smartcard insertion and removal events.
2015-03-10 15:56:05 +01:00
Christina Quast 0757fff70b Bugfix: add header file for ccid reset pin 2015-03-10 15:54:34 +01:00
Christina Quast e4bd7c104d Removed comment about USART_Configure in iso7816_4.c 2015-03-10 15:52:49 +01:00
Christina Quast 2fcef41c90 Reference to reset pin passed to ISO7816_Init 2015-03-10 15:51:21 +01:00
Christina Quast c5a78d72bf simtrace: wait until usb is configured 2015-03-10 15:37:52 +01:00
Christina Quast 917e0415c9 TODO notes for program 2015-03-10 15:34:00 +01:00
Christina Quast 7c9edfac25 Python script for serial usb card reader 2015-03-10 15:33:06 +01:00
Christina Quast 6838fb603d Remove atmel lib ccid targets from Makefile 2015-03-10 15:25:51 +01:00
Christina Quast 5ce38abd36 Moved code for select file cmd into function
The select command mostly works when the blue sysmocom SIM card is inserted,
but with the white SuperSIM we always get timeouts and invalid answers.
Furthermore the white card takes much longer to answer the requests than the
blue one.
So probably there is a timing issue.

Currently this is the simtrace output for select and reading IMSI, etc:
(pcscd must be running as welil, otherwise we get:
$ ./simtrace.py -S
Exception: Failed to establish context : Service not available.)

$ ./simtrace.py -S
Context established!
PCSC Readers: ['ATMEL AT91SO CCID Smart Card Reader [SIMtraceCCID] 00 00']
Using reader: ATMEL AT91SO CCID Smart Card Reader [SIMtraceCCID] 00 00
Connected with active protocol 1
Select: 0x6E 0x00
Command: 0x6D 0x00
Disconnected
Released context.
==> Expected answer for Select: 0x6D 0x00
(based on trying to execute this command with gemalto usb smart card reader)
The command works only every now and then

$ ./simtrace.py -b
pcsc: wait_for_card
Reading ...
Traceback (most recent call last):
  File "./simtrace.py", line 105, in <module>
    main()
  File "./simtrace.py", line 66, in main
    ccid.pySim_read()
  File "/home/chrysh/ba_thesis/sysmocom_repo/usb_application/ccid.py", line 22, in pySim_read
    (res, sw) = scc.read_binary(['3f00', '2fe2'])
  File "/home/chrysh/code/src/pysim/pySim/commands.py", line 42, in read_binary
    r = self.select_file(ef)
  File "/home/chrysh/code/src/pysim/pySim/commands.py", line 35, in select_file
    data, sw = self._tp.send_apdu_checksw("a0a4000002" + i)
  File "/home/chrysh/code/src/pysim/pySim/transport/__init__.py", line 87, in send_apdu_checksw
    raise RuntimeError("SW match failed ! Expected %s and got %s." % (sw.lower(), rv[1]))
RuntimeError: SW match failed ! Expected 9000 and got 9404.
==> Error code 9404 does not exist, which suggests that we actually have a timing issue when
communicating with the smart cart
2015-03-10 15:16:13 +01:00
Christina Quast 1a224af098 Re-fixed ATR error not send on reset 2015-03-10 15:11:37 +01:00
Christina Quast 53d94264ee gemalto: dump of select file and read further commands 2015-03-09 17:19:48 +01:00
Christina Quast c9c62ce7c7 dump: bug of usb select file request 2015-03-09 17:18:53 +01:00
Christina Quast 31b5b4ed93 renamed ccid reader select file python script
The command can be called now using the following command:
./simtrace -S
2015-03-09 17:17:14 +01:00
Christina Quast b58434eb2f Atr[3] is protocol, not Atr[5], right?
Also: Added debug information for command not supported
2015-03-09 17:13:07 +01:00
Christina Quast d89f4ee948 Ignore python bytecode files (pyc) 2015-03-09 16:44:11 +01:00
Christina Quast d065a4b59d moved config change code to simtrace.py 2015-03-06 19:12:55 +01:00
Christina Quast 71742c770c CCID reader general: does not work yet
Protocol type 0x2 not supported
2015-03-06 19:11:45 +01:00
Christina Quast f2582fc124 python simtrace suit: sniffer, ccid reader 2015-03-06 19:09:35 +01:00
Christina Quast 2dcaa10221 add kevins iccid, imsi, .. read commands 2015-03-06 18:14:43 +01:00
Christina Quast 60dce5d5fc Ignore .E, pycache, atmel_softpack lib files 2015-03-05 15:49:17 +01:00
Christina Quast 297f1a4d55 moved gitignore to root dir 2015-03-05 15:46:47 +01:00
Christina Quast 0166c6d64e Temporary fix: mitm mode use EP 4-6 2015-03-05 15:44:05 +01:00
Christina Quast b5ebebea0f main: configure red led, just in case 2015-03-05 15:43:01 +01:00
Christina Quast 541656cf60 Add CCID functions to func ptrs struct 2015-03-05 15:42:40 +01:00
Christina Quast 73e5658665 sniffer: removed debug write 2015-03-05 15:41:51 +01:00
Christina Quast 1bcac26786 removed atr buf in run func 2015-03-05 15:41:17 +01:00
Christina Quast 53a76082dc ccid: Get card atr in init 2015-03-04 19:01:34 +01:00
Christina Quast 8043fdd4d3 bus configuration in phone 2015-03-04 18:45:30 +01:00
Christina Quast 800019f0dd Fixed ccid define bug in board.h 2015-03-04 13:40:54 +01:00
Christina Quast 83628d41eb Added pin defines simcard power 2015-03-03 23:08:44 +01:00
Christina Quast f274a78e1a Send poweroff in ccid.py 2015-03-03 22:20:22 +01:00
Christina Quast db7b1abd17 CCID config, init, run
Switching to config 1 and 2 works, but to 3 and 4 usb_enum.py is
hanging for some reason. Switching the USB config from Sniffer to
CCID reader was not tested yet.
2015-03-03 12:34:54 +01:00
Christina Quast 4ba4d2230b sniffer functionality fixed buffer
It is possible to use sniffer.py to sniff the phone-simcard-communication.

To be fixed: The buffer size read is fixed and the data is only send
over USB if the buffer max length is reached. which means we don not
get the last bytes of the transaction.
This should be changed in one of the next commits. Maybe the former
simtrace code can give some inspiration on this topic.
2015-03-02 16:14:09 +01:00
Christina Quast cafde00218 conf initially sniff conf 2015-03-02 16:12:16 +01:00
Christina Quast 57e200539b python code usb config change 2015-03-02 16:10:04 +01:00
Christina Quast 763e5309a3 sniff of phone startup bytes 2015-03-02 16:09:45 +01:00
Christina Quast 9836933a27 python sniffer host side 2015-03-02 16:08:40 +01:00
Christina Quast 394b894da1 change naming for default bus switch config 2015-02-27 15:31:09 +01:00
Christina Quast da373fde1b Add input interrupt endpoint to all configurations 2015-02-27 15:26:26 +01:00
Christina Quast 6032e796b9 string descr 0 is language identifier 2015-02-27 15:22:25 +01:00
Christina Quast 33864fa36c Set default trace level to FATAL
Because to compile with a debug trace level you can simply type:
colormake TRACE_LEVEL=5
2015-02-27 13:41:34 +01:00
Christina Quast fb524b9bb3 Function pointer struct in main for run,init 2015-02-27 13:39:45 +01:00
Christina Quast 1edf350c34 MITM code and run and init decl in header 2015-02-27 13:33:52 +01:00
Christina Quast f5462b47bd Change Makefile to compile simtrace firmware 2015-02-25 18:47:45 +01:00
Christina Quast 6f856337e2 Merge branch 'master' of ssh://git.admin.sysmocom.de/christina/simtrace
Conflicts:
	sam3s_example/.gitignore
2015-02-25 18:46:48 +01:00
Christina Quast d2b05f014c comment changed 2015-02-25 18:44:24 +01:00
Christina Quast 0ae0314f6b Add usb config changed callback func 2015-02-25 18:43:46 +01:00
Christina Quast 10b2e5accc Consistent config num enum for main.c and usb.c 2015-02-25 18:40:15 +01:00
Christina Quast 54d0c1fca8 USB enum works again, No CCID conf 2015-02-25 16:04:25 +01:00
Christina Quast 1161b27e7d main while loop: wait for USB 2015-02-25 14:15:57 +01:00
Christina Quast 968b974cbe Moved usb descriptors and funcs into single file 2015-02-25 14:10:12 +01:00
Christina Quast c0aa769a35 Redundant functions in phone and sniffer moved
File simtrace_iso7816.c is like a library for iso specific functions.
The next step will be to use the atmel softlib functions instead.
2015-02-25 14:02:01 +01:00
Christina Quast c02571ebe2 basic structure for main while loop with all configs 2015-02-24 19:09:55 +01:00
Christina Quast 27c643d297 Sniffer functionality and sniffer bus board config 2015-02-24 19:09:08 +01:00
Christina Quast a90eefa865 sniffer functions 2015-02-24 17:52:29 +01:00
Christina Quast 995e0d1319 git ignore memory librariers 2015-02-24 17:39:57 +01:00
Christina Quast 566d3f9e4a Made ohone functions extern in header file 2015-02-24 17:39:03 +01:00
Christina Quast 01bbdc3d52 device descriptor phone added 2015-02-24 17:38:45 +01:00
Christina Quast f554950742 device descriptor sniffer, MITM 2015-02-24 14:27:08 +01:00
Christina Quast 32906bb919 simtrace main with phone as clk master 2015-02-24 11:35:19 +01:00
Christina Quast 5bcac5df4d ignore unused atmel libs 2015-02-20 14:42:44 +01:00
Christina Quast 1d410aabf3 ignore unused atmel libs 2015-02-20 14:42:11 +01:00
Christina Quast b440c62140 clk calculation: updated max mul val 2015-02-20 14:40:07 +01:00
Christina Quast 49ba6bc1ba Fixed change usb config bug
In the standard atmel lib only one configuration was possible.
On a GETDESCRIPTOR request the board would always return the full buffer
with both configurations.

The USB driver requests each configuration one after another, using the
configuration index number.
The atmel lib did not support more than one USB configuration.
2015-02-20 14:35:36 +01:00
Christina Quast 6255ccca84 USB driver send standard configuration
One configuration, one Interface, two endpoints (bulk in and out)

We don't need to configure Endpoint 0 which is always the control
endpoint and configured before any descriptor requests take place.

% python usb_enum.py
Found device
  CONFIGURATION 2: 100 mA ==================================
   bLength              :    0x9 (9 bytes)
   bDescriptorType      :    0x2 Configuration
   wTotalLength         :   0x20 (32 bytes)
   bNumInterfaces       :    0x1
   bConfigurationValue  :    0x2
   iConfiguration       :    0x2 SOME
   bmAttributes         :   0x80 Bus Powered
   bMaxPower            :   0x32 (100 mA)
    INTERFACE 0: Vendor Specific ===========================
     bLength            :    0x9 (9 bytes)
     bDescriptorType    :    0x4 Interface
     bInterfaceNumber   :    0x0
     bAlternateSetting  :    0x0
     bNumEndpoints      :    0x2
     bInterfaceClass    :   0xff Vendor Specific
     bInterfaceSubClass :    0x0
     bInterfaceProtocol :    0x0
     iInterface         :    0x1 SIMTRACE~~~~~
      ENDPOINT 0x1: Bulk OUT ===============================
       bLength          :    0x7 (7 bytes)
       bDescriptorType  :    0x5 Endpoint
       bEndpointAddress :    0x1 OUT
       bmAttributes     :    0x2 Bulk
       wMaxPacketSize   :   0x40 (64 bytes)
       bInterval        :    0x0
      ENDPOINT 0x82: Bulk IN ===============================
       bLength          :    0x7 (7 bytes)
       bDescriptorType  :    0x5 Endpoint
       bEndpointAddress :   0x82 IN
       bmAttributes     :    0x2 Bulk
       wMaxPacketSize   :   0x40 (64 bytes)
       bInterval        :    0x0
2015-02-10 20:45:08 +01:00
Christina Quast 7188a126d5 Removed unused defines for USB operation in sniffer.c 2015-01-30 19:22:23 +01:00
Christina Quast 0a6025aeb6 Sniffer prints sends received data over uart0
But only when you program the chip. At some point it stops printing
the received bytes because the interrupt is not triggered anymore.
I do not know yet how and why this happens.

Even after restarting the board this state is maintained.
2015-01-30 18:10:29 +01:00
Christina Quast ba62278b83 sniffer: Bus enables connect. between SIM and phone 2015-01-30 16:42:49 +01:00
Christina Quast b455427413 Add tag INPUT to input CLK and IO lines
CLK_SIM, I/O_SIM, CLK_PHONE, I/O_PHONE: Each of these lines connect
two pins of the microcontroller. Therefore they should NEVER be
configured as output line simultaneously. Otherwise the uC might get
destroyed.
2015-01-30 16:28:45 +01:00
Christina Quast b70efc0766 Receiver interrupt enabled
Serial smartcard reader sends data which should be processed.
In the USART1 IRQ a status variable is set to show that data has
arrived, which should be checked for in the main function.
2015-01-29 18:05:32 +01:00
Christina Quast c8bf9f112a Fixed address bug in phone_test.c main
The second argument for PIO_Configure is the list size,
which can be determined using the macro PIO_LISTSIZE.
You should pass the list (which is an array of pins) to it.
Refrain from passing the ADDRESS of the list to it, otherwise
the pin configuration is never applied and you find yourself
debugging for 3 days.

In other words:
It's working, don't touch it or it will break again!
2015-01-29 17:39:23 +01:00
Christina Quast 0ff91d0833 Fixed types for ATR buffer etc 2015-01-28 18:04:58 +01:00
Christina Quast f6264fac95 Added inttypes.h include directive in board.h
For now the inttypes.h of the development computer is used.
Which is a bad state. The reason is

It should be fixed by creating a stdint.h in the Baselib, which
defines types like uint32_t, etc., or by entirely replacing the Baselibs
with the newlib.
2015-01-28 17:58:30 +01:00
Christina Quast f833b5dbd3 Merge branch 'master' of ssh://git.admin.sysmocom.de/christina/simtrace 2015-01-27 15:37:36 +01:00
Christina Quast 97632e6309 Fixed format symbol bug in pmc.c 2015-01-27 15:36:56 +01:00
Christina Quast 061fa6e817 Fixed format symbol error in pio_it.c 2015-01-27 15:31:02 +01:00
Christina Quast 7f52340611 Format string fix for iso7816_4.c 2015-01-27 15:24:31 +01:00
Christina Quast 23c001303c Fixed format symbol (makro) for inttypes
"%u" becomes "%" PRIu32 for uint32_t, etc.
2015-01-27 15:17:37 +01:00
Christina Quast 87d141ec59 Reanabled some compiler warnings 2015-01-27 14:56:33 +01:00
Christina Quast d20f26d293 Makefile: Disable unused variable warnings 2015-01-27 14:40:31 +01:00
Christina Quast 79c2b72c7a Fix address evaluates always as true warnings
This was an example of a compiler warning when the switch -Waddress was passed:

atmel_softpack_libraries/usb/device/core/USBD.c: In function 'USBD_RequestHandler':
atmel_softpack_libraries/usb/device/core/USBD.c:149:14: warning: the address of
    'USBDCallbacks_RequestReceived' will always evaluate as 'true' [-Waddress]
     else if (USBDCallbacks_RequestReceived) {

The test for existense of USBDCallbacks_RequestReceived is removed since there
is always a default implementation of these function.
2015-01-27 14:32:47 +01:00
Christina Quast f9890d91d3 Fix address evaluates always as true warnings
This was an example of a compiler warning when the switch -Waddress was passed:

atmel_softpack_libraries/usb/device/core/USBD.c: In function 'USBD_RequestHandler':
atmel_softpack_libraries/usb/device/core/USBD.c:149:14: warning: the address of
    'USBDCallbacks_RequestReceived' will always evaluate as 'true' [-Waddress]
     else if (USBDCallbacks_RequestReceived) {

The test for existense of USBDCallbacks_RequestReceived is removed since there
is always a default implementation of these function.
2015-01-27 14:27:38 +01:00
Christina Quast 2021077a66 changed TRACE_WARN into TRACE_WARNING in iso7816_4.c 2015-01-27 11:19:27 +01:00
Christina Quast f7c28e0b0b phone: on reset by smartcardreader send ATR
Every time the reset line is pulled low, simtrace sends an ATR
packet over USART1.
The USART1 is slave in this configuration.
2015-01-23 20:57:52 +01:00
Christina Quast ea103826fa test for phone I/O pin 2015-01-21 14:00:45 +01:00