FreeCalypso > hg > fc-sim-sniff
view doc/Sniffing-workflow @ 45:b0524d1dc6ef
simtrace3-sniff-dec: implement command decoding
author | Mychaela Falconia <falcon@freecalypso.org> |
---|---|
date | Thu, 31 Aug 2023 09:32:48 +0000 |
parents | 432d756a21f1 |
children | 1068f9fd41d5 |
line wrap: on
line source
Workflow for SIM sniffing with SIMtrace3 ======================================== To sniff ME-to-SIM communication with SIMtrace3, follow this workflow: * Assemble the hardware as described in the Sniffing-hw-setup article, and program the serial flash chip on the Icestick board with our sniffer FPGA image. You will need to use iceprog utility from IceStorm suite for the latter part. * Make sure that the ME is still able to talk to the SIM going through the additional plumbing. Only the parts up to sim-fpc-pasv matter here: the mv-sniffer adapter and the Icestick board can be disconnected and unpowered, yet the ME should still see the SIM inserted into the socket on the sim-fpc-pasv board. * When you are ready to start sniffing, complete all hw connections per the desired hw setup you are following and plug the Icestick board into your PC or laptop. With our sniffer FPGA image, the initial LED pattern should be: with the Icestick oriented horizontally, upper and lower red LEDs on, left and right red LEDs off, center green LED off. * Run simtrace3-sniff-rx as follows: simtrace3-sniff-rx /dev/ttyUSBx logfile The /dev/ttyUSBx device needs to be the one corresponding to FT2232H Channel B on the Icestick board, and you need to specify the name of the log file to be written. * Power on the phone, or otherwise cause the ME to bring up its SIM interface. Once the ME applies power to its SIM interface and raises its RST output, the green LED should light on the Icestick, and you should see an stdout message from simtrace3-sniff-rx that reads "SIM RST is high". * When you power off the phone or cause the modem to shut down its SIM interface with AT+CFUN=0, the green LED will go out and simtrace3-sniff-rx will print "SIM RST is low" on stdout. You can kill the process now, or you can kill it earlier once you've captured enough - but you do need to start each sniffing session from the beginning. When you run simtrace3-sniff-rx with a logfile argument as recommended above, there will be very little output on stdout - just SIM RST transition messages indicating start and end of SIM interface sessions - while all other output gets written to the log file. The main output of simtrace3-sniff-rx - written to the log file if specified or to stdout otherwise - is very low-level and very voluminuous. Each line corresponds to just one character in the ISO 7816-3 sense passing across the SIM interface, and is logged as the raw 16-bit value received from the FPGA, as described in the Sniffer-FPGA-design document. This low-level logging format makes it possible to troubleshoot phone-to-SIM compatibility problems at the lowest level: microsecond timestamps allow you to see how long the SIM takes to respond with each byte, and you can see all procedure bytes below the level of APDU exchanges. Did the card ask for data transfer in one swoop or one byte at a time? Did it use any stalling bytes, and how many? All of these lowest-level details might matter when trying to solve the mystery of why vintage phone model ABC seemingly-inexplicably refuses to work with SIM card model XYZ! There will also be a higher-level decoding program, tentatively named simtrace3-sniff-dec. This program will read log files written by simtrace3-sniff-rx and decode them into slightly-higher-level elements as in ATR, PPS exchanges, command headers, data transfers and status bytes.