Billets de train

Date: 2016-01-03

Tags: billets info reverse_engineering soft

En voyant une vidéo parlant des données présentes sur les divers codes barres des billets d’avion, j’ai regardé si les billets de train que j’avais en stock étaient pareil.

J’ai trouvé 4 types de billets avec des codes-barres différents :

Billet cartonné

“Billet classique”, commandé puis retiré a un guichet/borne, avec un code PDF-417 imprimé à gauche Billet SNCF cartonné

A|B|CC|DDDDDD|EEEEEEEEE|F|G|HH|0000000000|II|JJ|KK|L|MMM|NNN|OOO|
PPPPP|QQQQQ|RRRRRR|SSSS|TTT|UUU|VVV|W|XXXX|YY|
    |     |      |    |   |   |   |*|    |  |

Le premier segment (de M à V) peut être complété par un second segment suivant la même syntaxe si le voyage a des correspondances. En cas d’absence, il y a 29 espaces, la classe est notée ’*’, puis 6 espaces.

A|B|CC|DDDDDD|EEEEEEEEE|F|G|HH|0000000000|II|JJ|KK|L|MMM|NNN|OOO|
PPPPP|QQQQQ|RRRRRR|SSSS|TTT|UUU|VVV|W|XXXX|YY|
    |     |      |    |   |   |   |*|    |  |

e|E|DV|RUZNxx|58361xxxx|1|1|11|0000000000|  |01|00|3|165|166|226|
FRLPD|CHGVA|96506 |    |166|   |   |2|LJ25|B |
    |     |      |    |   |   |   |*|    |  |

Ici on a un un billet au format “e” pour le numéro de dossier RUZNxx, un numéro de billet 58361xxxx, le billet est valide, et il n’y a qu’un seul billet pour ce voyage. Le billet n’est pas lié à une carte de réduction, il est pour un adulte sans enfant, est vallable pour l’année 2013, a été acheté le 14.06 et est vallable du 15.06 au 14.08. Le premier segment est au départ de Lyon Part-Dieu (France, LPD) et à destination de Genève-Cornavin (Suisse, GVA), pour le train 96506, le code est illisible, le train circule le 15.06, n’a pas de place/voiture réservée, est en 2nde classe, pour un tarif “illico Jeunes -25%” et n’est pas échangeable après le départ.

Dans tous les cas, ces billets ne posent aucun risques une fois le voyage effectué dans sa totalité (par contre il est possible de l’annuler ou de le reproduire si il n’a pas encore été utilisé).

E-Billet TGV/IC

Les E-billets sont fournis par des agences de voyages (Voyages-SNCF, Capitaine-train, E-billet-SNCF) et ont un code Aztec pour ceux imprimés soi-même ou un code PDF-417 pour ceux imprimés sur les bornes de la SNCF. Dans les deux cas ils utilisent la même organisation.

A|B|CC|DDDDDD|EEEEEEEEE|F|G|HH|II/JJ/KKKK|
LLLLL|MMMMM|NNNNN|OO/PP|
QQQQQQQQQQQQQQQQQQQ|RRRRRRRRRRRRRRRRRRR|SSSSSSSSSSSSSSSSSSS|T|UU|VVVVV|
LLLLL|MMMMM|NNNNN|
E-Billet SNCF cartonné
i|1|CV|RIKNxx|248713xxx|1|2|11|01/01/1990|
FRCMF|FRPAZ|05706|13/05|
0029009166230xxxxxx|BOxxxxxx          |XAVIER             |2| 2|PR112|
FRPMO|FRDLY|16757|

Ici on a un billet au format “i”, imprimé sur une borne SNCF, le billet est une “Confirmation de voyage” pour le dossier RIKNxx, un numéro de billet 248713xxx, le billet est valide, et il n’y a qu’un seul billet pour ce voyage. Le billet est au départ de Chambéry-Challes-les-eaux (France, CMF), à destination de Paris-Austerlitz (France, PAZ), avec le train 05706 le 13/05. Le numéro d’identifiant du trajet est 0029009166230xxxxxx, porté par “Xavier Bo”, voyageant en seconde classe avec un tarif “preum’s” La seconde partie du trajet est au départ de Paris Montparnasse (France, PMO) vers La-Ferté-Bernard (France, DLY), avec le train 16757.

A|B|CC|DDDDDD|EEEEEEEEE|F|G|HH|II/JJ/KKKK|
LLLLL|MMMMM|NNNNN|OO/PP|
QQQQQQQQQQQQQQQQQQQ|RRRRRRRRRRRRRRRRRRR|SSSSSSSSSSSSSSSSSSS|T|UU|VVVVV|
LLLLL|MMMMM|NNNNN|

i|0|CV|QZWKx|482593xxx|1|2|11|01/01/1990|
CHGVA|FRLPD|09744|19/12|
00290290169300xxxxxx|BOxxxxxx         |XAVIER             |2|  |    0|00000

Ici on a un billet au format “i”, imprimé par ses propres moyens, le billet est une “Confirmation de voyage” pour le dossier QZWKxx, un numéro de billet 482593xxx, le billet est valide, et il n’y a qu’un seul billet pour ce voyage. Le billet est au départ de Genève-Cornavin (Suisse, GVA), à destination de Lyon Part-Dieu (France, LPD), avec le train 09744 le 19/12. Le numéro d’identifiant du trajet est 00290290169300xxxxxx, porté par “Xavier Bo”, voyageant en seconde classe. Par contre les informations de tarif sont vides et le voyage n’a pas de correspondance (champs remplis par des espaces ou des ‘0’).

Le ticket à plutôt l’air de servir à identifier le voyageur (I, J, K, Q, R) et à porter un numéro d’identifiant (Q) qui doit pointer dans une base de donnée mieux remplie (et non-modifiable). Certains paramètres (O, P, T, V) ont l’air d’être présent en cas de base de donnée injoignable ou pas à jour pour au moins vérifier sommairement que personne ne tente de frauder.

E-Billet TER imprimé

Le billet a été commandé sur le site web des TER-Rhône-Alpes et a un code Aztec assez grand. Le début contient des données encodées, puis la chaîne :

T00T100xx|0000738xx|FRLYL|FRHCZ|
S|28122015|2|NG02|INTERNET BILLET IL|BOUxxxxx XAVIER |01011990|ADULTE| |01| 00|28122015|28122015|000000000000|28122015|1313|0000000200

En interprêtant sommairement, on remarque plusieurs chaînes contenant la date du 28.12.2015 (date de commande, début et fin de validité du ticket). La chaîne 1313 correspond à l’heure de la commande du billet, “NG02” semble être un tarif, et plusieurs champs peuvent correspondre à la classe. Les champs FRLYL et FRHCZ sont au format des autres billets et indiquent les gares de départ et d’arrivée (France, Lyon Gorge-de-Loup et Fleurieux-sur-l’Arbresle).

Par contre je n’ai qu’un seul ticket de ce type pour l’instant, je pourrais compléter quand j’aurais comparé avec des tickets du même type pour des trajets.

Internet-Ticket ÖBB imprimé

Les tickets à imprimer soi-même sont les seuls à comporter un code-barres unique. Par contre le codage a l’air similaire et compatible avec celui utilisé par la DB (Allemagne) et les SBB (Suisse).

Pour l’instant le code comporte une en-tête dépendant du type de ticket/carte, du transporteur et de la longueur du message. Le reste est encodé en binaire mais semble décodable.

Références

Electronics Électronique puissance semiconducteur semiconductors power Hardware CPE INSA Xavier Bourgeois

Xavier