1 # Notes about the tracelog
6 - [Notes about the tracelog](#notes-about-the-tracelog)
7 - [Table of Contents](#table-of-contents)
8 - [Trace command](#trace-command)
13 - [Annotation](#annotation)
14 - [Tracelog format](#tracelog-format)
15 - [Trace and Wireshark](#trace-and-wireshark)
21 The `trace` command lists the data exchange by the proxmark3 and a tag or a reader in human readable form.
23 With `trace list` a table is shown which gives timing information, the src of the data bytes, the transmitted/received bytes itself, a check if the CRC was correct and some decoding of the command.
28 The Start and the End column lists timestamps when the transmission of the shown data started (time of first bit) and when it ended (end of last modulation).
30 The unit for this time information depends on the protocol in use:
32 * ISO14443A and Thinfilm: all times are in carrier periods (1/13.56MHz)
33 * For Legic timing information depends also on direction:
34 * Reader Mode: Timings are in ticks (1us == 1.5ticks)
35 * Tag Mode: Timings are in sub carrier periods (1/212 kHz == 4.7us)
36 * Hitag1 / Hitag2 / HitagS: Elementary Time Unit (ETU) is 8µs
37 * iCLASS, ISO15693, ISO18092 and FeliCa have no accurate timing information at the moment
38 * For others timing is not available
40 By specifying the option ```f``` (e.g. ```trace list -t 14a -f```) the frame delay times are shown. (So you don't have to do the math by your own).
45 If the data is marked as a response the source is shown as Tag. Otherwise it is marked as Reader (Rdr).
50 This column shows the raw bytes transmitted over the air. With option ```c``` CRC bytes are marked in square brackets.
55 Marks if the transmitted CRC matches with the calculated CRC.
60 Annotations provide a rough decoding of the transmitted data. For ISO14443A a more detailed decoding is available with Wireshark (s. next chapter)
65 The binary format for the dynamic tracelog is as following.
70 32 bits timestamp (little endian)
71 16 bits duration (little endian)
72 15 bits data length (little endian) (0x7FFF)
73 1 bit isResponse (0=reader to tag, 1=tag to reader)
74 data length Bytes data
75 x Bytes parity, where x == ceil(data length/8)
81 uint16_t data_len : 15;
84 // data_len bytes of data
85 // ceil(data_len/8) bytes of parity
86 } PACKED tracelog_hdr_t;
88 #define TRACELOG_HDR_LEN sizeof(tracelog_hdr_t)
89 #define TRACELOG_PARITY_LEN(x) (((x)->data_len - 1) / 8 + 1)
92 ## Trace and Wireshark
95 To get a more detailed explanation of the transmitted data for ISO14443A traces the output can be converted to a pcapng file to read it with [Wireshark](https://www.wireshark.org/).
99 * use `trace list -t 14a -x`
100 * copy the output (starting with the timestamp) into a textfile
101 * run `text2pcap -t "%S." -l 264 -n <input-text-file> <output-pcapng-file>`
102 * now open your pcapng file in Wireshark or read it with the CLI version `tshark`
106 with `trace list -t 14a`:
109 19072 | 29536 | Rdr |93 70 88 04 cf ff bc 7f bb | ok | SELECT_UID
112 the same data with `tshark -r foo.pcapng -V -x`:
115 Frame 5: 13 bytes on wire (104 bits), 13 bytes captured (104 bits) on interface 0
116 Interface id: 0 (unknown)
117 Interface name: unknown
118 Encapsulation type: ISO 14443 contactless smartcard standards (177)
119 Arrival Time: Aug 17, 2019 23:17:00.000002606 CEST
120 [Time shift for this packet: 0.000000000 seconds]
121 Epoch Time: 1566076620.000002606 seconds
122 [Time delta from previous captured frame: 0.000000840 seconds]
123 [Time delta from previous displayed frame: 0.000000840 seconds]
124 [Time since reference or first frame: 0.000001907 seconds]
126 Frame Length: 13 bytes (104 bits)
127 Capture Length: 13 bytes (104 bits)
128 [Frame is marked: False]
129 [Frame is ignored: False]
130 [Protocols in frame: iso14443]
134 Event: Data transfer PCD -> PICC (0xfe)
142 CRC: 0xbb7f [correct]
145 0000 00 fe 00 09 93 70 88 04 cf ff bc 7f bb .....p.......
148 If the Wireshark ISO14443a dissector is missing some commands or needs some other rework please [file a bug](https://bugs.wireshark.org/bugzilla/).