KDE PIM/KItinerary/Trenitalia Barcode
- always 67 bytes
- exactly for one passenger/leg
- does not seem to contain signatures, checksums or compression, based on minimal bit pattern changes on adjacent tickets
- a lot less null bytes when PNR/seat reservation are present (ie. highspeed train tickets?)
- there is a unique, globally sequential ticket number, 2017 in the 600M range, 2019 in the 1B range, which suggests 32bit might be a bit short for this
|0:0 - 4:7||0x20 0x14 0xC2 0x08 0x10||header?||fixed value in all samples|
|5:0 - 7:7||date?||varies between samples|
|8:0 - 13:4||null|
|13:5 - 14:3||100 xxxx||0000 for Italian stations codes (UIC 83.....), 0111 for international destination?|
|14:4 - 17:3||24 bit uint||UIC station code of departure||only for Italian destinations apparently|
|17:4 - 18:2||100 xxxx||see above|
|18:3 - 21:2||24 bit uint||UIC station code of arrival||see above|
|21:3 - 22:1||unknown||22:1 seems 0 in all samples, the rest varies|
|22:2 - 24:1||16 bit uint||train number||could be as little as 14 bits too, no train number > 16k has been observed|
|24:3 - 29:7||null|
|30:0 - 31:1||null if no PNR present, content unknown|
|31:2 - 32:0||7 bit uint||seat number||seat row for trains with an airplane-like numbering scheme|
|32:1 - 32:2||unknown|
|32:3 - 32:6||4 bit uint||seat column as hex number||0 for trains without an airplane-like numbering scheme|
|32:7 - 38:7||null if no PNR present, content unknown|
|40:0 - 50:7||null if no PNR present, unknown content otherwise|
|51:0 - 57:7||0x0B 0x65 0x23 0x18 0x40 0xE6 0xC0||fixed in all samples?|
|58:0 - 58:3||null||might be part of the ticket number?|
|58:4 - 62:3||32 bit uint||ticket number|
|63:4 - 65:7||null|
|66:0 - 66:7||varies between samples, same as 6:4 - 7:3?|
- there is one sample where the departure and arrival UIC station codes are equal, contrary to what's in the corresponding PDF
- for international destinations the station code does not actually seem to be a valid UIC station code, but there is only one sample to back this up so far
- It seems plausible that the coach number is also encoded given the seat number is, 30:0 - 31:1 would seem like the obvious range. In the sample data this does not seem the case with any obvious encoding.
- Is the train type derived from the train number, or is that also encoded? 21:3 -22:1 would seem to be the obvious range for that, but so far no correlation to current samples found.
- Is the class encoded somewhere?
- Date/time encoding is still a mystery.
- Is the PNR encoded? 40-50 seems like a plausible range for that.
- What is the "CP Code" in the PDF, and is that encoded somewhere?
This page was last edited on 24 October 2019, at 17:27. Content is available under Creative Commons License SA 4.0 unless otherwise noted.