Lecture RFID RC522

Bonjour,

Je réalise une alarme avec un lecteur RC522 qui servira de moyen de mise En/Hors service de la centrale. Je voudrais savoir si le lecteur RC522 garde en mémoire le code du dernier badge qui est passé devant ou bien s'il faut impérativement être en lecture ( instruction RFID.readCardSerial() ) au moment du passage du badge? S'il est possible de lire à posteriori la mémoire interne où se trouve ce code, avec quelle instruction le faire S.V.P ?

Je vous en remercie par avance.

vous êtes au courant que la crypto (CRYPTO1) utilisée dans les MIFARE Classic (ISO 14443 Type A ) est craquée depuis 10 ans?

Le lecteur ne garde rien en mémoire, c'est votre Arduino qui apporte de l'intelligence au système, en passant en mode lecture votre lecteur RC522 rayonne de l'énergie qui sert à induire un courant par une bobine intégrée à la carte qui alimente la puce RFID qui peut ainsi envoyer ses données au lecteur, qui va les transmettre ensuite à votre arduino

de mémoire il y a un buffer FIFO qui gère 64 octets en émission et réception (donc pas assez pour les centaines d'octets de données souvent utilisés dans les cartes) et pour y accéder il faudrait sans doute aller taper au niveau bas, je ne crois pas que la libraire expose ce genre de fonction

--> Des exemples un peu plus haut niveau dans la librairie rfid de miguel balboa

Bonsoir

Merci pour ces infos.

vous êtes au courant que la crypto (CRYPTO1) utilisée dans les MIFARE Classic (ISO 14443 Type A ) est craquée depuis 10 ans?

Non et merci de me le dire. Est ce à dire que le lecteur de badge ne peut ( doit ) plus servir pour désactiver une alarme domestique ?

En faisant quelques recherches sur le net, j'ai trouvé des infos sur la façon de lire et de recopier des badges mais rien sur un générateur de code à placer devant un lecteur pour "ouvrir" un accès. Est ce que ça éxiste ou bien le problème de sécurité ne concerne que les badges ?

Existe t-il un système plus fiable à connecter sur un arduino et qui peut alors remplacer le lecteur rc522 ?

A+

Bricolo: Bonsoir

Merci pour ces infos. Non et merci de me le dire. Est ce à dire que le lecteur de badge ne peut ( doit ) plus servir pour désactiver une alarme domestique ?

En faisant quelques recherches sur le net, j'ai trouvé des infos sur la façon de lire et de recopier des badges mais rien sur un générateur de code à placer devant un lecteur pour "ouvrir" un accès. Est ce que ça éxiste ou bien le problème de sécurité ne concerne que les badges ?

Existe t-il un système plus fiable à connecter sur un arduino et qui peut alors remplacer le lecteur rc522 ?

A+

Bonsoir

Tu peux dans de la mifare classic enregistrer/relire des infos dans différents secteurs protégés par la techno crypto1 et comme exposé par JML , cette techno est "crackée" ça signifie essentiellement qu'il est possible de faire un clone parfait d'une mifare dont tu disposerais à un instant T. Mais ça n'en fera pas un "sésame universel ", c'est à l'application de savoir quoi faire des infos "récupérées" apres lecture

Bricolo:
Bonjour,

Je réalise une alarme avec un lecteur RC522 qui servira de moyen de mise En/Hors service de la centrale.
Je voudrais savoir si le lecteur RC522 garde en mémoire le code du dernier badge qui est passé devant ou bien s’il faut impérativement être en lecture ( instruction RFID.readCardSerial() ) au moment du passage du badge?
S’il est possible de lire à posteriori la mémoire interne où se trouve ce code, avec quelle instruction le faire S.V.P ?

Je vous en remercie par avance.

Bonsoir,
Le code n’est pas gardé en mémoire, c’est à toi de le récupérer et de le traiter. Tu peu par exemple avoir un tableau dans ton code ou sont inscrit les badges autorisés. Perso, je me suis fait une base de donnée sur SD dans laquelle sont inscrit les badges.

//##########################################################################
//#                             Lecture RFID                               #
//##########################################################################

/*
Branchements sur Nano:

SDA   pin 10 Blanc
SCK   pin 13 Vert
MOSI  pin 11 Jaune
MISO  pin 12 Orange
---
GND   GND    Noir
RESET pin  9 Bleu
VCC   3.3v   Rouge

*/

//##########################################################################
//                               Library
//##########################################################################

#include <SPI.h>
#include <RFID.h>

//##########################################################################
//                              Variables
//##########################################################################

int j;                   //indice de ligne du tableau 'Badge'

int UID[5]={};

RFID monModuleRFID(10,9);   //SDA,RST

//##########################################################################
//                           Base de données
//##########################################################################

int Badge[3][5]={
  {198, 82,107,144,185}, //Bleu 0
  { 90,263, 83,104, 16}, //Noir 1
  {161,110,152,68,254}, //Noir 2
  };

//##########################################################################
//                                Setup
//##########################################################################

    void setup()
    {
      Serial.begin(9600);
      SPI.begin();
      monModuleRFID.init();  

     Serial.println("Demarage");
    }

//##########################################################################
//                               Loop
//##########################################################################

    void loop()
    {
        LectureRFID ();
    }

//##########################################################################
//                             Fonction
//##########################################################################

int LectureRFID ()
{
if (monModuleRFID.isCard()) {  
              if (monModuleRFID.readCardSerial()) {        
                Serial.print("L'UID est: ");
                
                for(int i=0;i<=4;i++)
                {
                  UID[i]=monModuleRFID.serNum[i];
                  Serial.print(UID[i],DEC);
                  Serial.print(".");
                }
                Serial.println("");
              
              for(int j=0;j<=2;j++)
                {
              if (UID[0] == Badge[j][0]
               && UID[1] == Badge[j][1]
               && UID[2] == Badge[j][2]
               && UID[3] == Badge[j][3]
               && UID[4] == Badge[j][4])
              {
                  Serial.println ("ok");
                  break;
              }
              else
              {
                  Serial.println ("Not ok");
              }          
              monModuleRFID.halt();
              }
        }
        delay(1);    
    }
  
}

Bonjour Merci pour les infos. Il n'est donc pas nécessaire de psychoter sur une tentative d'éffraction dans le système avec un équipement digne de mission impossible. Il suffit simplement d'éviter de laisser trainer les badges ... c'est pas pire que les cartes bancaires avec paiement sans contact finalement .

Je vais donc faire comme tout le mond een espérant simplement que le soft ira suffisament vite pour faire une lecture au bon moment. Pour être certain de la prise en compte du passage du badge, je vais mettre un Bip sonore sur le buzzer, il suffisait d'y penser. Merci.

Je vais donc faire comme tout le monde en espérant simplement que le soft ira suffisament vite pour faire une lecture au bon moment.

Pour ce faire, les cartes Mifare ont une sortie IRQ, c'est une interruption qui permet de dire à l'arduino qu'une carte a été présenté et qu'il faut lire les données.

Bonne bidouille.