Project

General

Profile

Wiki » History » Version 34

laforge, 04/28/2022 01:07 PM
add ngff-cardem

1 1 tsaitgaist
h1. Osmocom SIMtrace 2
2 15 mschramm
3
{{>toc}}
4 1 tsaitgaist
5 8 laforge
Osmocom SIMtrace 2 is a software, firmware and hardware system for passively tracing SIM-ME communication between the SIM card and the mobile phone, and remote SIM operation.
6 9 tsaitgaist
While it was designed for SIM-ME communication, it supports all ISO 7816 smart-cards using the T=0 protocol (the most common case).
7 1 tsaitgaist
8 16 roh
It is a followup of the "SIMtrace project":/projects/simtrace/wiki, providing more functionalities (e.g. remote SIM operation) and supporting multiple boards (e.g. SIMtrace with SAM3S, "sysmoQMOD":https://www.sysmocom.de/products/sysmoqmod/index.html).
9 1 tsaitgaist
10
h2. Hardware
11
12 10 tsaitgaist
The SIMtrace 2 firmware supports several boards.
13
The firmware is written for an "ATSAM3S4B":https://www.microchip.com/wwwproducts/en/ATSAM3S4B micro-controller.
14 1 tsaitgaist
15 12 tsaitgaist
Note: The SAM3S is meanwhile labelled as _not recommended for new designs_ by Atmel. However, there are plenty of hardware and software compatible upgrade options, including SAM4S. The upgrade is possible in the future.
16 1 tsaitgaist
17 26 tsaitgaist
h3. SIMtrace board for SIMtrace 2 project
18 1 tsaitgaist
19 10 tsaitgaist
!{width:20%}simtrace-board-mini.jpg!
20 9 tsaitgaist
21 10 tsaitgaist
The main purpose of this board is to sniff the communication between a phone and a SIM card (or any card reader and smart-card).
22 1 tsaitgaist
23 17 roh
This is the same circuit board as the previous "SIMtrace v1":/projects/simtrace/wiki/SIMtrace_Hardware, with the exception that the "ATSAM3S4B":https://www.microchip.com/wwwproducts/en/ATSAM3S4B micro-controller replaces the old "AT91SAM7S64":https://www.microchip.com/wwwproducts/en/AT91SAM7S64. Since the SAM3S is pin compatible with the SAM7S, any SIMtrace v1 board can be converted into a SIMtrace v2 board simply by replacing the micro-controller.
24 1 tsaitgaist
25 34 laforge
Note: This hardware is "open source hardware (OSHW)":https://git.osmocom.org/simtrace/tree/hardware.
26 1 tsaitgaist
27 27 laforge
h4. SIMtrace2 hardware availability
28 1 tsaitgaist
29 34 laforge
Fully assembled SIMtrace2 boards and related accessories like FPC cables can be obtained from the "sysmocom webshop":http://shop.sysmocom.de/products/simtrace
30
31
h3. ngff-cardem
32
33
!{width:25%}ngff-cardem.jpg!
34
35
This is a carrier board for cellular modems in ngff / M.2 form-factor with on-board simtrace2.  It is wired in a way that it can operate both as passive tracer/sniffer, or in @cardem@ mode.
36
37
See [[ngff-cardem:]] for all information on the ngff-cardem board, including design files.
38
39
Note: This hardware is "open source hardeware (OSHW)":https://gitea.osmocom.org/electronics/osmo-small-hardware/src/branch/master/ngff-cardem
40
41
h4. ngff-cardem availability
42
43
Fully assembled ngff-cardem boards can be obtained from the "sysmocom webshop":http://shop.sysmocom.de/products/ngff-cardem
44
45 27 laforge
46 1 tsaitgaist
h3. sysmoQMOD
47
48
!{width:25%}sysmoqmod.png!
49
50
The SAM3S micro-controller with SIMtrace 2 firmware is also used on the "sysmoQMOD":https://www.sysmocom.de/products/sysmoqmod/index.html board to provide remote SIM operation capabilities.
51
52
Note: This hardware is not open source.
53 27 laforge
54
h4. sysmoQMOD hardware availability
55
56
Fully assembled sysmoQMOD boards and related products can be obtained from "sysmocom":https://www.sysmocom.de/products/lab/sysmoqmod/index.html - please contact sales@sysmocom.de for related inquiries.
57 1 tsaitgaist
58
h2. Firmware
59
60 10 tsaitgaist
The SIMtrace 2 firmware source code is available in "git":https://git.osmocom.org/simtrace2/.
61 20 tsaitgaist
Pre-built firmware binaries are available "here":http://ftp.osmocom.org/binaries/simtrace2/firmware/.
62
The firmware are currently under active development and we recommend to [[Flashing|flash]] the new firmware images to profit from the latest bug fixes and added functionalities.
63 1 tsaitgaist
64
The SIMtrace 2 firmware is a complete rewrite and *can only be flashed on hardware with SAM3S* ARM Cortex-M3-based micro-controllers.
65 18 roh
*The SIMtrace 2 firmware is not compatible with the older "SIMtrace v1":/projects/simtrace/wiki/SIMtrace_Hardware using SAM7S ARM7TDMI-based micro-controllers.*
66 1 tsaitgaist
67 23 tsaitgaist
To get the version of the firmware flashed on the device:
68 31 Anonymous
* connect a USB to UART cable either to the 2.5 mm stereo headphone connector (tip = TX, ring = RX, sleeve = GND) or the nearby DEBUG port using the following pins:
69
> * SIMtrace pin 1 = GND, hookup to UART GND
70
> * SIMtrace pin 4 = RX, hookup to UART TX
71
> * SIMtrace pin 5 = TX, hookup to UART RX
72 23 tsaitgaist
* open the serial port with the following configuration: 921600 8N1 (115200 8N1 before version 0.5.1.2-80d9 from 2018-08-28)
73
* reboot the board using the RESET button or by re-plugging the USB connector
74
* you should see a banner containing the version information:
75
76
<pre>
77
=============================================================================
78
SIMtrace2 firmware 0.4.195-acb7 (C) 2010-2016 by Harald Welte                
79
=============================================================================
80
</pre>
81
82 12 tsaitgaist
h3. trace
83 1 tsaitgaist
84 12 tsaitgaist
The trace application firmware allow to sniff the communication between a phone and a SIM card (or any card reader and smart-card).
85
It is intended for the [[Wiki#SIMtrace v2|SIMtrace v2 hardware]] and its function is analog to the "SIMtrace v1":/projects/simtrace/wiki/SIMtrace_Firmware.
86 10 tsaitgaist
87 12 tsaitgaist
The sniffing is completely passive. It uses the RST, ATR, PPS (baud rate tested with F/D up to 512/32), and WT (waiting timeout) to properly parse the ISO 7816-3 TPDUs.
88
Currently only the T=0 protocol is supported since this is the most common protocol used (we haven't seen T=1 in use).
89
90 1 tsaitgaist
!{width:25%}simtrace_and_phone.jpg!
91 10 tsaitgaist
92 20 tsaitgaist
The application firmware to be flashed using [[Flashing#DFU|DFU]] is "simtrace-trace-dfu.bin":http://ftp.osmocom.org/binaries/simtrace2/firmware/simtrace-trace-dfu.bin.
93 10 tsaitgaist
94 24 tsaitgaist
h3. card emulation
95
96 25 tsaitgaist
The card emulation application firmware allows to emulate a card (e.g SIM). This is useful if you don't want to change the card in the device (e.g. phone), or have the card in a remote location.
97 24 tsaitgaist
98
This firmware comes preflashed on the sysmoQMOD board.
99 1 tsaitgaist
It also exists from the SIMtrace v2 board, but is currently in beta. If you still would like to try it, read this [[Cardem|article]].
100 25 tsaitgaist
101 13 tsaitgaist
h3. Development
102
103
To compile the firmware using the source code, or participate in the development, please refer to the instructions provided in the "README":https://git.osmocom.org/simtrace2/tree/firmware/README.txt .
104
105 10 tsaitgaist
h2. Flashing
106 11 tsaitgaist
107 1 tsaitgaist
The [[Wiki#Firmware|firmware images]] can be flashed as described [[Flashing|here]].
108
109
h2. Host PC Software
110
111 33 laforge
The source code of the SIMtrace 2 host PC software are available in the "simtrace2 git":https://git.osmocom.org/simtrace2/.
112 13 tsaitgaist
113 33 laforge
Binary packages are made available for a variety of Linux distributions, see [[cellular-infrastructure:Binary_Packages]] for more details.   In case of doubt, use the nightly builds.
114 1 tsaitgaist
115 33 laforge
h3. Installing binary packages
116
117
We assume that you've added the binary package feed, for example as described at [[cellular-infrastructure:Nightly_Builds]].
118
119
All you need to do is to do
120
121
<pre>
122
$ sudo apt-get install simtrace2
123
</pre>
124
125
126
h3. Building from source
127
128
this assumes you are a software developer familiar with building software from source using GNU autotools.  If you're not, please use the binary packages (see above).
129
130
h4. Preconditions
131
132 22 jbruckner
[[libosmocore:]], libpcsclite and libusb.
133 13 tsaitgaist
134 22 jbruckner
to install those packages:
135 13 tsaitgaist
<pre>
136 1 tsaitgaist
sudo apt-get install libusb-1.0-0-dev libosmocore-dev libpcsclite-dev
137 13 tsaitgaist
</code></pre>
138 1 tsaitgaist
139 33 laforge
h4. Compiling it
140 13 tsaitgaist
141
<pre>
142 33 laforge
git clone https://git.osmocom.org/simtrace2.git
143 13 tsaitgaist
cd simtrace2/host/
144 28 roh
autoreconf -fi
145
./configure
146 13 tsaitgaist
make
147
</pre>
148
149
h3. Accessing it
150
151
Add udev rules so to be able to use SIMtrace 2 devices and access the device as non-root user:
152
<pre>
153
# add current user to plugdev group (user needs to re-login for this change to take effect)
154
sudo adduser $USERNAME plugdev
155
# grant access permission to SIMtrace 2 for plugdev group
156 29 roh
sudo wget -O /etc/udev/rules.d/99-simtrace2.rules https://git.osmocom.org/simtrace2/plain/host/contrib/99-simtrace2.rules
157 13 tsaitgaist
# reload udev rules
158
sudo udevadm control --reload-rules
159
sudo udevadm trigger
160
</pre>
161
162
h3. Applications
163
164
h4. simtrace2-list
165
166
@simtrace2-list@ allows to list all SIMtrace 2 compatible devices:
167
<pre>
168
./simtrace2-list
169
USB matches: 1
170
	1d50:60e3 Addr=4, Path=2-2.3, Cfg=1, Intf=0, Alt=0: 255/1/0 (SIMtrace Sniffer)
171
</pre>
172
173
This is useful when you have multiple devices (such as with the [[Wiki#sysmoQMOD]]) and have to specific with device to use by the other applications.
174
175
h4. simtrace2-sniff
176
177
This will use the [[Wiki#trace|trace]] firmware and retrieve the sniffed phone-SIM communication.
178
The activity will be shown on the consol output:
179
<pre>
180
./simtrace2-sniff 
181
simtrace2-sniff - Phone-SIM card communication sniffer 
182
(C) 2010-2017 by Harald Welte <laforge@gnumonks.org>
183
(C) 2018 by Kevin Redon <kredon@sysmocom.de>
184
185
Using USB device 1d50:60e3 Addr=4, Path=2-2.3, Cfg=1, Intf=0, Alt=0: 255/1/0 (SIMtrace Sniffer)
186
Entering main loop
187
Card state change: reset hold
188
Card state change: reset release
189
ATR: 3b 9f 96 80 1f c7 80 31 a0 73 be 21 13 67 43 20 07 18 00 00 01 a5 
190
PPS: ff 10 96 79 
191
PPS: ff 10 96 79 
192
Fi/Di switched to 512/32
193
TPDU: a0 a4 00 00 02 3f 00 9f 22 
194
TPDU: a0 a4 00 00 02 7f 20 9f 22 
195
TPDU: a0 a4 00 00 02 6f 46 9f 0f 
196
TPDU: a0 b0 00 00 11 81 43 43 43 20 45 76 65 6e 74 ff ff ff ff ff ff ff 90 00 
197
Card state change: reset hold
198
</pre>
199
200
The TPDU will also be sent the GSMTAP frames to UDP/IPv4 localhost:4729.
201 1 tsaitgaist
This also allows to analyze the communication in wireshark using the GSM SIM dissector.
202 21 laforge
!{width:50%}wireshark-sim.png!
203 1 tsaitgaist
204 21 laforge
{{include(cellular-infrastructure:MacroBinaryPackages)}}
205 31 Anonymous
{{include(cellular-infrastructure:MacroCommercialSupport)}}
Add picture from clipboard (Maximum size: 48.8 MB)