Projets

Strongbox 3000

C++
Arduino
Cryptage

Le projet vise à développer un coffre-fort innovant doté d’un système d’authentification avancé et adaptable, conçu pour garantir une sécurité optimale et prévenir tout détournement de matériel sensible.

Iridescent ripples of a bright blue and pink liquid

Code du projet :

String toString(double value);
int toInt(String text);
double toDouble(String text);
int chiffrer(int mDP, int e);
void choisir();
int cleAgent(String x);
void mA1();
void mA2();
void mA3();
void mA4();
void mA5();
int modexp(int a, int e, int n);
void niveausecurite1();
void niveausecurite2();
void niveausecurite3();
void niveausecurite4();
void niveausecurite5();

void setup() {
  Serial.begin(9600);
}

void loop() {
  int modele;
  int w;
  int niveau;

  Serial.println("veuillez entrer numéro carte");
  while (!Serial.available()) {}
  w = Serial.parseInt();
  int o[16] = {8, 7, 7, 6, 6, 6, 5, 4, 4, 4, 3, 3, 3, 2, 2, 1};
  modele = o[w - 1];
  int nivsecu[8] = {3, 1, 4, 2, 5, 3, 5, 2};
  niveau = nivsecu[modele - 1];

  if (niveau == 1) {
    niveausecurite1();
  }
  if (niveau == 2) {
    niveausecurite2();
  }
  if (niveau == 3) {
    niveausecurite3();
  }
  if (niveau == 4) {
    niveausecurite4();
  }
  if (niveau == 5) {
    niveausecurite5();
  }
}

int chiffrer(int mDP, int e) {
  int n, c;

  n = 43 * 67;
  c = modexp(mDP, e, n);

  return c;
}

void choisir() {
  int nombre;

  nombre = random(2881);
  Serial.println(nombre);
}

int cleAgent(String x) {
  int a, e;

  a = 0;
  e = 0;
  String agent[16] = {"A", "B", "C", "D", "E", "F", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q"};
  int s[16] = {601, 619, 631, 641, 647, 653, 661, 673, 691, 701, 733, 739, 751, 797, 809, 811};

  while (a != 16) {
    if (agent[a] == x) {
      e = s[a];
      a = a + 1;
    } else {
      a = a + 1;
    }
  }

  return e;
}

void mA1() {
  int r;

  Serial.println("Quelle Président de la république française est née en 1955 ?");
  Serial.println("1-Jacques Chirac");
  Serial.println("2-Nicolas Sarkozy");
  Serial.println("3-Emmanuel Macron");
  while (!Serial.available()) {}
  r = Serial.parseInt();

  if (r == 2) {
    Serial.println("Étape d'autentification réussie");
  } else {
    Serial.println("Faux");
  }

  Serial.println("Qui est le créateur de Microsoft ?");
  Serial.println("1-Mark Zuckerberg");
  Serial.println("2-Steve Jobs");
  Serial.println("3-Bill Gates");
  while (!Serial.available()) {}
  r = Serial.parseInt();

  if (r == 3) {
    Serial.println("Étape d'autentification réussie");
  } else {
    Serial.println("Faux");
  }

  Serial.println("Qui raconte les aventures de Sherlock Holmes ?");
  Serial.println("1-Docteur Watson");
  Serial.println("2-Professeur Moriarty");
  Serial.println("3-L'inspecteur Lestrade");
  while (!Serial.available()) {}
  r = Serial.parseInt();

  if (r == 1) {
    Serial.println("Étape d'autentification réussie");
  } else {
    Serial.println("Faux");
  }
}

void mA2() {
  int e, mDP, mp, c;
  String x;

  Serial.println("identifiez-vous:");
  while (!Serial.available()) {}
  x = Serial.readString();
  mDP = random(2881);
  e = cleAgent(x);
  c = chiffrer(mDP, e);
  Serial.println("Message à déchiffrer:" + String(c));
  while (!Serial.available()) {}
  mp = Serial.parseInt();

  if (mDP == mp) {
    Serial.println("Vous êtes authentifié! Bienvenue agent " + x);
  } else {
    Serial.println("Erreur d'authentification, le système de sécurité se déclenchera dans 5 secondes");
  }
}

void mA3() {
  int s3;
  bool sR;

  Serial.println("Veuillez présenter votre oeil (TRUE or FALSE)");
  while (!Serial.available()) {}
  sR = Serial.read() == 'T';

  if (sR) {
    Serial.println("Authentification réussies");
  } else {
    Serial.println("Erreur, l'accès au coffre se bloque 5 secondes");
  }
}

void mA4() {
  int s4;
  bool sC;

  Serial.println("Veuillez présenter votre oeil (TRUE or FALSE)");
  while (!Serial.available()) {}
  sC = Serial.read() == 'F';

  if (!sC) {
    Serial.println("Authentification réussies");
  } else {
    Serial.println("Erreur, l'accès au coffre se bloque 5 secondes");
  }
}

void mA5() {
  String x;
  int ncard;
  int i;

  i = 0;
  String agent[16] = {"A", "B", "C", "D", "E", "F", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q"};
  int cardid[16] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16};

  Serial.println("Veuillez entrer votre nom d'agent");
  while (!Serial.available()) {}
  x = Serial.readString();

  while (i != 16) {
    if (x == agent[i]) {
      Serial.println("Veuillez entrer votre CARD_ID");
      while (!Serial.available()) {}
      ncard = Serial.parseInt();

      if (ncard == cardid[i]) {
        Serial.println("Bienvenue agent " + x);
        i = i + 1;
      } else {
      }
    } else {
      i = i + 1;
    }
  }
}

int modexp(int a, int e, int n) {
  int r;

  if (e < 0) {
    Serial.println("unhandled case");
    exit(-1);
  }
  if (a == 0 || n == 1) {
    r = 0;
  } else {
    r = 1;
    while (e > 0) {
      r = r * (a % n) % n;
      e = e - 1;
    }
  }

  return r;
}
void niveausecurite1() {
  int r;

  Serial.println("Quelle Président de la république française est née en 1955 ?");
  Serial.println("1-Jacques Chirac");
  Serial.println("2-Nicolas Sarkozy");
  Serial.println("3-Emmanuel Macron");
  while (!Serial.available()) {}
  r = Serial.parseInt();
  if (r == 2) {
    Serial.println("Étape d'autentification réussie");
  } else {
    Serial.println("Faux");
  }

  Serial.println("Qui est le créateur de Microsoft ?");
  Serial.println("1-Mark Zuckerberg");
  Serial.println("2-Steve Jobs");
  Serial.println("3-Bill Gates");
  while (!Serial.available()) {}
  r = Serial.parseInt();
  if (r == 3) {
    Serial.println("Étape d'autentification réussie");
  } else {
    Serial.println("Faux");
  }

  Serial.println("Qui raconte les aventures de Sherlock Holmes ?");
  Serial.println("1-Docteur Watson");
  Serial.println("2-Professeur Moriarty");
  Serial.println("3-L'inspecteur Lestrade");
  while (!Serial.available()) {}
  r = Serial.parseInt();
  if (r == 1) {
    Serial.println("Étape d'autentification réussie");
    int s3;
    bool sR;

    Serial.println("Veuillez présenter votre oeil (TRUE or FALSE)");
    while (!Serial.available()) {}
    sR = Serial.read() == 'T';
    if (sR) {
      Serial.println("Authentification réussies");
    } else {
      Serial.println("Erreur, l'accès au coffre se bloque 5 secondes");
    }
  } else {
    Serial.println("Faux");
  }
}
void niveausecurite2() {
    int r;

    Serial.println("Quel président de la République française est né en 1955 ?");
    Serial.println("1-Jacques Chirac");
    Serial.println("2-Nicolas Sarkozy");
    Serial.println("3-Emmanuel Macron");
    while (!Serial.available()) {}
    r = Serial.parseInt();

    if (r == 2) {
        Serial.println("Étape d'authentification réussie");
    } else {
        Serial.println("Faux");
    }

    Serial.println("Qui est le créateur de Microsoft ?");
    Serial.println("1-Mark Zuckerberg");
    Serial.println("2-Steve Jobs");
    Serial.println("3-Bill Gates");
    while (!Serial.available()) {}
    r = Serial.parseInt();

    if (r == 3) {
        Serial.println("Étape d'authentification réussie");
    } else {
        Serial.println("Faux");
    }

    Serial.println("Qui raconte les aventures de Sherlock Holmes ?");
    Serial.println("1-Docteur Watson");
    Serial.println("2-Professeur Moriarty");
    Serial.println("3-L'inspecteur Lestrade");
    while (!Serial.available()) {}
    r = Serial.parseInt();

    if (r == 1) {
        Serial.println("Étape d'authentification réussie");

        bool sC;

        Serial.println("Veuillez présenter votre doigt (TRUE or FALSE)");
        while (!Serial.available()) {}
        sC = Serial.readStringUntil('\n') == "TRUE";

        if (sC == true) {
            Serial.println("Authentification réussie");
        } else {
            Serial.println("Erreur, l'accès au coffre se bloque 5 secondes");
        }
    } else {
        Serial.println("Faux");
    }
}

void niveausecurite3() {
    int e, mDP, mp, c;
    String x;

    Serial.println("Identifiez-vous:");
    while (!Serial.available()) {}
    x = Serial.readString();
    mDP = random(2881);
    e = cleAgent(x);
    c = chiffrer(mDP, e);

    Serial.println("Message à déchiffrer:" + String(c));
    while (!Serial.available()) {}
    mp = Serial.parseInt();

    if (mDP == mp) {
        Serial.println("Vous êtes authentifié! Bienvenue agent " + x);

        String z;
        int ncard;
        int i;

        i = 0;
        String agent[16];

        agent[0] = "A";
        agent[1] = "B";
        agent[2] = "C";
        agent[3] = "D";
        agent[4] = "E";
        agent[5] = "F";
        agent[6] = "H";
        agent[7] = "I";
        agent[8] = "J";
        agent[9] = "K";
        agent[10] = "L";
        agent[11] = "M";
        agent[12] = "N";
        agent[13] = "O";
        agent[14] = "P";
        agent[15] = "Q";
        int cardid[16];

        cardid[0] = 1;
        cardid[1] = 2;
        cardid[2] = 3;
        cardid[3] = 4;
        cardid[4] = 5;
        cardid[5] = 6;
        cardid[6] = 7;
        cardid[7] = 8;
        cardid[8] = 9;
        cardid[9] = 10;
        cardid[10] = 11;
        cardid[11] = 12;
        cardid[12] = 13;
        cardid[13] = 14;
        cardid[14] = 15;
        cardid[15] = 16;

        Serial.println("Veuillez entrer votre nom d'agent");
        while (!Serial.available()) {}
        z = Serial.readString();

        while (i != 16) {
            if (z == agent[i]) {
                Serial.println("Veuillez entrer votre CARD_ID");
                while (!Serial.available()) {}
                ncard = Serial.parseInt();
                if (ncard == cardid[i]) {
                    Serial.println("Bienvenue agent " + z);
                    i = i + 1;
                } else {
                    // Gérer le CARD_ID incorrect
                }
            } else {
                i = i + 1;
            }
        }
    } else {
        Serial.println("Erreur d'authentification, le système de sécurité se déclenchera dans 5 secondes");
    }
}

void niveausecurite4() {
    int e, mDP, mp, c;
    String x;

    Serial.println("Identifiez-vous:");
    while (!Serial.available()) {}
    x = Serial.readString();
    mDP = random(2881);
    e = cleAgent(x);
    c = chiffrer(mDP, e);

    Serial.println("Message à déchiffrer:" + String(c));
    while (!Serial.available()) {}
    mp = Serial.parseInt();

    if (mDP == mp) {
        Serial.println("Vous êtes authentifié! Bienvenue agent " + x);

        int s3;
        bool sR;

        Serial.println("Veuillez présenter votre oeil (TRUE or FALSE)");
        while (!Serial.available()) {}
        sR = Serial.readStringUntil('\n') == "TRUE";

        if (sR == true) {
            Serial.println("Authentification réussie");

            int s4;
            bool sC;

            Serial.println("Veuillez présenter votre oeil (TRUE or FALSE)");
            while (!Serial.available()) {}
            sC = Serial.readStringUntil('\n') == "TRUE";

            if (sC == false) {
                Serial.println("Authentification réussie");
            } else {
                Serial.println("Erreur, l'accès au coffre se bloque 5 secondes");
            }
        } else {
            Serial.println("Erreur, l'accès au coffre se bloque 5 secondes");
        }
    } else {
        Serial.println("Erreur d'authentification, le système de sécurité se déclenchera dans 5 secondes");
    }
}

void niveausecurite5() {
    int r;

    Serial.println("Quel président de la République française est né en 1955 ?");
    Serial.println("1-Jacques Chirac");
    Serial.println("2-Nicolas Sarkozy");
    Serial.println("3-Emmanuel Macron");
    while (!Serial.available()) {}
    r = Serial.parseInt();

    if (r == 2) {
        Serial.println("Étape d'authentification réussie");
    } else {
        Serial.println("Faux");
    }

    Serial.println("Qui est le créateur de Microsoft ?");
    Serial.println("1-Mark Zuckerberg");
    Serial.println("2-Steve Jobs");
    Serial.println("3-Bill Gates");
    while (!Serial.available()) {}
    r = Serial.parseInt();

    if (r == 3) {
        Serial.println("Étape d'authentification réussie");
    } else {
        Serial.println("Faux");
    }

    Serial.println("Qui raconte les aventures de Sherlock Holmes ?");
    Serial.println("1-Docteur Watson");
    Serial.println("2-Professeur Moriarty");
    Serial.println("3-L'inspecteur Lestrade");
    while (!Serial.available()) {}
    r = Serial.parseInt();

    if (r == 1) {
        Serial.println("Étape d'authentification réussie");

        int e, mDP, mp, c;
        String x;

        Serial.println("Identifiez-vous:");
        while (!Serial.available()) {}
        x = Serial.readString();
        mDP = random(2881);
        e = cleAgent(x);
        c = chiffrer(mDP, e);

        Serial.println("Message à déchiffrer:" + String(c));
        while (!Serial.available()) {}
        mp = Serial.parseInt();

        if (mDP == mp) {
            Serial.println("Vous êtes authentifié! Bienvenue agent " + x);

            int s3;
            bool sR;

            Serial.println("Veuillez présenter votre oeil (TRUE or FALSE)");
            while (!Serial.available()) {}
            sR = Serial.readStringUntil('\n') == "TRUE";

            if (sR == true) {
                Serial.println("Authentification réussie");

                String z;
                int ncard;
                int verif;
                int i;

                i = 0;
                String agent[16];

                agent[0] = "A";
                agent[1] = "B";
                agent[2] = "C";
                agent[3] = "D";
                agent[4] = "E";
                agent[5] = "F";
                agent[6] = "H";
                agent[7] = "I";
                agent[8] = "J";
                agent[9] = "K";
                agent[10] = "L";
                agent[11] = "M";
                agent[12] = "N";
                agent[13] = "O";
                agent[14] = "P";
                agent[15] = "Q";
                int cardid[16];

                cardid[0] = 1;
                cardid[1] = 2;
                cardid[2] = 3;
                cardid[3] = 4;
                cardid[4] = 5;
                cardid[5] = 6;
                cardid[6] = 7;
                cardid[7] = 8;
                cardid[8] = 9;
                cardid[9] = 10;
                cardid[10] = 11;
                cardid[11] = 12;
                cardid[12] = 13;
                cardid[13] = 14;
                cardid[14] = 15;
                cardid[15] = 16;

                Serial.println("Veuillez entrer votre nom d'agent");
                while (!Serial.available()) {}
                z = Serial.readString();

                while (i != 16) {
                    if (z == agent[i]) {
                        Serial.println("Veuillez entrer votre CARD_ID");
                        while (!Serial.available()) {}
                        ncard = Serial.parseInt();
                        if (ncard == cardid[i]) {
                            Serial.println("Bienvenue agent " + z);
                            i = i + 1;
                        } else {
                            // Gérer le CARD_ID incorrect
                        }
                    } else {
                        i = i + 1;
                    }
                }
            } else {
                Serial.println("Erreur, l'accès au coffre se bloque 5 secondes");
            }
        } else {
            Serial.println("Erreur d'authentification, le système de sécurité se déclenchera dans 5 secondes");
        }
    } else {
        Serial.println("Faux");
    }
}

String toString(double value) {
    return String(value);
}

int toInt(String text) {
    return text.toInt();
}

double toDouble(String text) {
    return text.toDouble();
}