Differences

This shows you the differences between two versions of the page.

Link to this comparison view

pm:prj2022:cstan:id_project [2022/05/30 19:12]
mihai_vlad.ionita [Software Design]
pm:prj2022:cstan:id_project [2022/05/30 19:21] (current)
mihai_vlad.ionita [Bibliografie/Resurse]
Line 34: Line 34:
 <note tip> <note tip>
 Biblioteca inclusa pe partea de software a fost cea MFRC522 de pe github (https://​github.com/​mdxs/​MFRC522). Biblioteca inclusa pe partea de software a fost cea MFRC522 de pe github (https://​github.com/​mdxs/​MFRC522).
- 
-/* 
- * Copy the RFID card data into variables and then  
- * scan the second empty card to copy all the data 
- * ---------------------------------------------------------------------------- 
- * Example sketch/​program which will try the most used default keys listed in  
- * https://​code.google.com/​p/​mfcuk/​wiki/​MifareClassicDefaultKeys to dump the 
- * block 0 of a MIFARE RFID card using a RFID-RC522 reader. 
- ​* ​ 
- * Typical pin layout used: 
- * ----------------------------------------------------------------------------------------- 
- ​* ​            ​MFRC522 ​     Arduino ​      ​Arduino ​  ​Arduino ​   Arduino ​         Arduino 
- ​* ​            ​Reader/​PCD ​  ​Uno/​101 ​      ​Mega ​     Nano v3    Leonardo/​Micro ​  Pro Micro 
- * Signal ​     Pin          Pin           ​Pin ​      ​Pin ​       Pin              Pin 
- * ----------------------------------------------------------------------------------------- 
- * RST/​Reset ​  ​RST ​         9             ​5 ​        ​D9 ​        ​RESET/​ICSP-5 ​    RST 
- * SPI SS      SDA(SS) ​     10            53        D10        10               10 
- * SPI MOSI    MOSI         11 / ICSP-4 ​  ​51 ​       D11        ICSP-4 ​          16 
- * SPI MISO    MISO         12 / ICSP-1 ​  ​50 ​       D12        ICSP-1 ​          14 
- * SPI SCK     ​SCK ​         13 / ICSP-3 ​  ​52 ​       D13        ICSP-3 ​          15 
- * 
- * More pin layouts for other boards can be found here: https://​github.com/​miguelbalboa/​rfid#​pin-layout 
- * 
- */ 
  
 #include <​SPI.h>​ #include <​SPI.h>​
 #include <​MFRC522.h>​ #include <​MFRC522.h>​
  
-#define RST_PIN ​        ​9 ​          // Configurable,​ see typical pin layout above +#define RST_PIN ​        ​9 ​           
-#define SS_PIN ​         10          ​// Configurable,​ see typical pin layout above+#define SS_PIN ​         10          ​
  
-MFRC522 mfrc522(SS_PIN,​ RST_PIN); ​  // Create MFRC522 instance.+MFRC522 mfrc522(SS_PIN,​ RST_PIN); ​  
  
 byte buffer[18]; byte buffer[18];
Line 74: Line 50:
 MFRC522::​MIFARE_Key key; MFRC522::​MIFARE_Key key;
  
-// Number of known default keys (hard-coded) +
-// NOTE: Synchronize the NR_KNOWN_KEYS define with the defaultKeys[] array+
 #define NR_KNOWN_KEYS ​  8 #define NR_KNOWN_KEYS ​  8
-// Known keys, see: https://​code.google.com/​p/​mfcuk/​wiki/​MifareClassicDefaultKeys+
 byte knownKeys[NR_KNOWN_KEYS][MFRC522::​MF_KEY_SIZE] =  { byte knownKeys[NR_KNOWN_KEYS][MFRC522::​MF_KEY_SIZE] =  {
     {0xff, 0xff, 0xff, 0xff, 0xff, 0xff}, // FF FF FF FF FF FF = factory default     {0xff, 0xff, 0xff, 0xff, 0xff, 0xff}, // FF FF FF FF FF FF = factory default
Line 90: Line 65:
  
 char choice; char choice;
-/* +
- * Initialize. +
- */+
 void setup() { void setup() {
-    Serial.begin(9600); ​        // Initialize serial communications with the PC +    Serial.begin(9600); ​        
-    while (!Serial); ​           ​// Do nothing if no serial port is opened (added for Arduinos based on ATMEGA32U4) +    while (!Serial); ​            
-    SPI.begin(); ​               ​// Init SPI bus +    SPI.begin(); ​                
-    mfrc522.PCD_Init(); ​        // Init MFRC522 card+    mfrc522.PCD_Init(); ​        
     Serial.println(F("​Try the most used default keys to print block 0 to 63 of a MIFARE PICC."​));​     Serial.println(F("​Try the most used default keys to print block 0 to 63 of a MIFARE PICC."​));​
     Serial.println("​1.Read card \n2.Write to card \n3.Copy the data."​);​     Serial.println("​1.Read card \n2.Write to card \n3.Copy the data."​);​
Line 108: Line 81:
  
  
- //Via seriele monitor de bytes uitlezen in hexadecimaal+ 
    
 void dump_byte_array(byte *buffer, byte bufferSize) { void dump_byte_array(byte *buffer, byte bufferSize) {
Line 116: Line 89:
     }     }
 } }
-//Via seriele monitor de bytes uitlezen in ASCI+
  
 void dump_byte_array1(byte *buffer, byte bufferSize) { void dump_byte_array1(byte *buffer, byte bufferSize) {
Line 125: Line 98:
 } }
  
-/* +
- * Try using the PICC (the tag/card) with the given key to access block 0 to 63. +
- * On success, it will show the key details, and dump the block data on Serial. +
- * +
- * @return true when the given key worked, false otherwise. +
- */ +
- +
 bool try_key(MFRC522::​MIFARE_Key *key) bool try_key(MFRC522::​MIFARE_Key *key)
 { {
Line 138: Line 105:
     for(byte block = 0; block < 64; block++){     for(byte block = 0; block < 64; block++){
       ​       ​
-    // Serial.println(F("​Authenticating using key A..."​));​ 
     status = mfrc522.PCD_Authenticate(MFRC522::​PICC_CMD_MF_AUTH_KEY_A,​ block, key, &​(mfrc522.uid));​     status = mfrc522.PCD_Authenticate(MFRC522::​PICC_CMD_MF_AUTH_KEY_A,​ block, key, &​(mfrc522.uid));​
     if (status != MFRC522::​STATUS_OK) {     if (status != MFRC522::​STATUS_OK) {
Line 146: Line 112:
     }     }
  
-    // Read block+  ​
     byte byteCount = sizeof(buffer);​     byte byteCount = sizeof(buffer);​
     status = mfrc522.MIFARE_Read(block,​ buffer, &​byteCount);​     status = mfrc522.MIFARE_Read(block,​ buffer, &​byteCount);​
Line 154: Line 120:
     }     }
     else {     else {
-        // Successful read+       
         result = true;         result = true;
         Serial.print(F("​Success with key:"​));​         Serial.print(F("​Success with key:"​));​
Line 160: Line 126:
         Serial.println();​         Serial.println();​
         ​         ​
-        ​// Dump block data+        ​
         Serial.print(F("​Block ")); Serial.print(block);​ Serial.print(F(":"​));​         Serial.print(F("​Block ")); Serial.print(block);​ Serial.print(F(":"​));​
-        dump_byte_array1(buffer,​ 16); //omzetten van hex naar ASCI+        dump_byte_array1(buffer,​ 16);
         Serial.println();​         Serial.println();​
         ​         ​
-        for (int p = 0; p < 16; p++) //De 16 bits uit de block uitlezen+        for (int p = 0; p < 16; p++) 
         {         {
           waarde [block][p] = buffer[p];           waarde [block][p] = buffer[p];
Line 178: Line 144:
     Serial.println("​1.Read card \n2.Write to card \n3.Copy the data."​);​     Serial.println("​1.Read card \n2.Write to card \n3.Copy the data."​);​
  
-    mfrc522.PICC_HaltA(); ​      // Halt PICC +    mfrc522.PICC_HaltA(); ​       
-    mfrc522.PCD_StopCrypto1();  ​// Stop encryption on PCD+    mfrc522.PCD_StopCrypto1();  ​
     return result;     return result;
     ​     ​
Line 185: Line 151:
 } }
  
-/* +
- * Main loop. +
- */+
 void loop() { void loop() {
   start();   start();
Line 214: Line 178:
 } }
  
-void keuze2(){ ​//Test waardes in blokken+void keuze2(){ ​
   ​   ​
   for(block = 4; block <= 62; block++){   for(block = 4; block <= 62; block++){
Line 237: Line 201:
 } }
  
-void keuze3(){ ​//Copy the data in the new card+void keuze3(){ ​
 Serial.println("​Insert new card..."​);​ Serial.println("​Insert new card..."​);​
-  // Look for new cards+ 
     if ( ! mfrc522.PICC_IsNewCardPresent())     if ( ! mfrc522.PICC_IsNewCardPresent())
         return;         return;
  
-    // Select one of the cards+   
     if ( ! mfrc522.PICC_ReadCardSerial())     if ( ! mfrc522.PICC_ReadCardSerial())
         return;         return;
  
-    // Show some details of the PICC (that is: the tag/card) 
     Serial.print(F("​Card UID:"​));​     Serial.print(F("​Card UID:"​));​
     dump_byte_array(mfrc522.uid.uidByte,​ mfrc522.uid.size);​     dump_byte_array(mfrc522.uid.uidByte,​ mfrc522.uid.size);​
Line 255: Line 218:
     Serial.println(mfrc522.PICC_GetTypeName(piccType));​     Serial.println(mfrc522.PICC_GetTypeName(piccType));​
     ​     ​
-    // Try the known default keys +
-    /​*MFRC522::​MIFARE_Key key; +
-    for (byte k = 0; k < NR_KNOWN_KEYS;​ k++) { +
-        // Copy the known key into the MIFARE_Key structure +
-        for (byte i = 0; i < MFRC522::​MF_KEY_SIZE;​ i++) { +
-            key.keyByte[i] = knownKeys[k][i];​ +
-        } +
-    }*/+
     for (byte i = 0; i < 6; i++) {     for (byte i = 0; i < 6; i++) {
         key.keyByte[i] = 0xFF;         key.keyByte[i] = 0xFF;
     }     }
  
-  for(int i = 4; i <= 62; i++){ //De blocken 4 tot 62 kopieren, behalve al deze onderstaande blocken (omdat deze de authenticatie blokken zijn)+  for(int i = 4; i <= 62; i++){ 
     if(i == 7 || i == 11 || i == 15 || i == 19 || i == 23 || i == 27 || i == 31 || i == 35 || i == 39 || i == 43 || i == 47 || i == 51 || i == 55 || i == 59){     if(i == 7 || i == 11 || i == 15 || i == 19 || i == 23 || i == 27 || i == 31 || i == 35 || i == 39 || i == 43 || i == 47 || i == 51 || i == 55 || i == 59){
       i++;       i++;
Line 273: Line 229:
     block = i;     block = i;
     ​     ​
-      // Authenticate using key A+     
     Serial.println(F("​Authenticating using key A..."​));​     Serial.println(F("​Authenticating using key A..."​));​
     status = (MFRC522::​StatusCode) mfrc522.PCD_Authenticate(MFRC522::​PICC_CMD_MF_AUTH_KEY_A,​ block, &key, &​(mfrc522.uid));​     status = (MFRC522::​StatusCode) mfrc522.PCD_Authenticate(MFRC522::​PICC_CMD_MF_AUTH_KEY_A,​ block, &key, &​(mfrc522.uid));​
Line 282: Line 238:
     }     }
     ​     ​
-    // Authenticate using key B 
     Serial.println(F("​Authenticating again using key B..."​));​     Serial.println(F("​Authenticating again using key B..."​));​
     status = (MFRC522::​StatusCode) mfrc522.PCD_Authenticate(MFRC522::​PICC_CMD_MF_AUTH_KEY_B,​ block, &key, &​(mfrc522.uid));​     status = (MFRC522::​StatusCode) mfrc522.PCD_Authenticate(MFRC522::​PICC_CMD_MF_AUTH_KEY_B,​ block, &key, &​(mfrc522.uid));​
Line 291: Line 246:
     }     }
     ​     ​
-    // Write data to the block+ 
     Serial.print(F("​Writing data into block "​)); ​     Serial.print(F("​Writing data into block "​)); ​
     Serial.print(block);​     Serial.print(block);​
Line 309: Line 264:
            
   }   }
-  mfrc522.PICC_HaltA(); ​      // Halt PICC +  mfrc522.PICC_HaltA(); ​       
-  mfrc522.PCD_StopCrypto1(); ​ // Stop encryption on PCD+  mfrc522.PCD_StopCrypto1(); ​
   ​   ​
   Serial.println("​1.Read card \n2.Write to card \n3.Copy the data."​);​   Serial.println("​1.Read card \n2.Write to card \n3.Copy the data."​);​
Line 316: Line 271:
 } }
  
-void keuze1(){ ​//Read card+void keuze1(){ ​
   Serial.println("​Insert card..."​);​   Serial.println("​Insert card..."​);​
-  ​// Look for new cards+  ​
     if ( ! mfrc522.PICC_IsNewCardPresent())     if ( ! mfrc522.PICC_IsNewCardPresent())
         return;         return;
  
-    ​// Select one of the cards+    ​
     if ( ! mfrc522.PICC_ReadCardSerial())     if ( ! mfrc522.PICC_ReadCardSerial())
         return;         return;
  
-    // Show some details of the PICC (that is: the tag/card)+
     Serial.print(F("​Card UID:"​));​     Serial.print(F("​Card UID:"​));​
     dump_byte_array(mfrc522.uid.uidByte,​ mfrc522.uid.size);​     dump_byte_array(mfrc522.uid.uidByte,​ mfrc522.uid.size);​
Line 334: Line 289:
     Serial.println(mfrc522.PICC_GetTypeName(piccType));​     Serial.println(mfrc522.PICC_GetTypeName(piccType));​
     ​     ​
-    ​// Try the known default keys+    ​
     MFRC522::​MIFARE_Key key;     MFRC522::​MIFARE_Key key;
     for (byte k = 0; k < NR_KNOWN_KEYS;​ k++) {     for (byte k = 0; k < NR_KNOWN_KEYS;​ k++) {
-        ​// Copy the known key into the MIFARE_Key structure+        ​
         for (byte i = 0; i < MFRC522::​MF_KEY_SIZE;​ i++) {         for (byte i = 0; i < MFRC522::​MF_KEY_SIZE;​ i++) {
             key.keyByte[i] = knownKeys[k][i];​             key.keyByte[i] = knownKeys[k][i];​
         }         }
-        // Try the key+       
         if (try_key(&​key)) {         if (try_key(&​key)) {
-            // Found and reported on the key and block, +           
-            // no need to try other keys for this PICC+
             break;             break;
         }         }
     }     }
 } }
 +
  
  
Line 424: Line 379:
  
 <note tip> <note tip>
-Care au fost rezultatele obţinute în urma realizării ​proiectului ​vostru. +In urma realizarii ​proiectului ​am reusit sa clonez cu usurinta cartele care functioneaza pe baza frecventelor radio</​note>​
-</​note>​+
  
 ===== Concluzii ===== ===== Concluzii =====
 +A fost un proiect foarte fun si usor de realizat care are o aplicabilitate in domeniul securitatii cibernetice
  
-===== Download ===== 
- 
-<note warning> 
-O arhivă (sau mai multe dacă este cazul) cu fişierele obţinute în urma realizării proiectului:​ surse, scheme, etc. Un fişier README, un ChangeLog, un script de compilare şi copiere automată pe uC crează întotdeauna o impresie bună ;-). 
- 
-Fişierele se încarcă pe wiki folosind facilitatea **Add Images or other files**. Namespace-ul în care se încarcă fişierele este de tipul **:​pm:​prj20??:​c?​** sau **:​pm:​prj20??:​c?:​nume_student** (dacă este cazul). **Exemplu:​** Dumitru Alin, 331CC -> **:​pm:​prj2009:​cc:​dumitru_alin**. 
-</​note>​ 
  
 ===== Jurnal ===== ===== Jurnal =====
Line 446: Line 394:
  
 <​note>​ <​note>​
-Listă cu documente, datasheet-uri,​ resurse Internet folosite, eventual grupate pe **Resurse Software** şi **Resurse Hardware**. +https://​www.youtube.com/watch?​v=VXx6l3vgBno&​t=653s
-</note> +
 <​html><​a class="​media mediafile mf_pdf"​ href="?​do=export_pdf">​Export to PDF</​a></​html>​ <​html><​a class="​media mediafile mf_pdf"​ href="?​do=export_pdf">​Export to PDF</​a></​html>​
pm/prj2022/cstan/id_project.1653927141.txt.gz · Last modified: 2022/05/30 19:12 by mihai_vlad.ionita
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0