Connexion Wifi SNCF par l'API

Si vous prenez le train de temps en temps vous aurez noté qu'un accès internet via Wifi vous est proposé.
https://www.oui.sncf/tgv/services/internet-a-bord
Authentification simple via un portail plutôt bien fait (des infos sur le voyage, un peu de contenu editorial sur sa destination, ...) on rentre son nom, son ID de billet (des fois sont No de train) et hop, un accès tout à fait digne (2Mo en moyenne) avec un petit compteur de données téléchargées pour limiter les eventuels ogres qui lanceraient un aspirateur de films en HD :) Une authentification via son compte SNCF est aussi possible.
sncf speedtest
Pour ceux qui prennent le train régulièrement et souhaitent éviter d'afficher le portail à chaque fois, il suffit de se connecter directement à l'API d'authentification, en lançant une seule ligne de commande :

curl -sSf -H 'Content-Type: application/json' -d'{"reference": "IDBILLET", "name": "VOTRENOM"}' "https://wifi.sncf/router/api/connection/activate" 

Remplaçez VOTRENOM et IDBILLET par votre nom, la reference de votre billet et si tout se passe bien, réponse :

{
    "profileId": "123456-fccc0-abcd-a8c4-98765432",
    "fairUseClass": "4",
    "fairUseDescription": "BRONZE",
    "trainNumber": "6699",
    "departureDate": "2018-12-12",
    "identifier": "REF_ERROR",
    "resetInterval": 3600,
    "status": {
        "grant": true,
        "ip": "10.50.7.123",
        "active": true,
        "mac": "dd:pp:66:99:qq:bb",
        "status_code": 200,
        "status_description": "identifier has existing grant",
        "service_class": 4,
        "granted_bandwidth": 100000,
        "remaining_data": 76800,
        "consumed_data": 0,
        "next_reset": 1549524492497
    }
}

Rarement, si la connexion se refuse à vous il faudra ajouter votre 'trainNumber'. Edit : j'ai l'impression que n’importe quel No de train à 4 chiffres fait l'affaire
Notez dans la réponse quelques infos intéressantes comme "granted_bandwidth" et "remaining_data" qui vous indique la quantité d'échange de données qu'il vous reste.

Pour connaître l'état de votre connexion pendant le voyage :

curl https://wifi.sncf/router/api/connection/status

réponse :

{
  "grant": true,
  "ip": "10.50.7.123",
  "active": true,
  "mac": "dd:pp:66:99:qq:bb",
  "status_code": 200,
  "status_description": "ip has active grant",
  "service_class": 4,
  "granted_bandwidth": 100000,
  "remaining_data": 63525,
  "consumed_data": 13274,
  "next_reset": 1500164662946,
  "profileId": "123456-fccc0-abcd-a8c4-98765432"
}

Tips : si votre compteur est tombé déseperement bas et que votre 'bandwidth' a été réduite (vous l'aurez cherché :P), il semblerait qu'initialiser une nouvelle connexion en changeant d'adresse MAC remette les compteurs à O... ;)

PS : pour un affichage digne de JSON dans un terminal, l'outil JQ est un indispensable.

Edit : même si vous n'êtes pas assis dans votre train, un code IDBILLET est utilisable et valide dans d'autres trains pendant 48H environs

Tags : hack,  api,  sncf

← Next postPrevious post →