Arduinonuzu Şifreleyin – Şifreleme Nasıl Yapılır?

10
18564
arduinonuzu şifreleyin

Merhaba arkadaşlar. Bu dersimizde arduino kullanarak yaptığımız bir projeyi bilgisayardan şifre girerek nasıl başlatabileceğinizi anlatacağım.

Bunu bilgisayarınız açılırken girilen şifre gibi düşünebilirsiniz. Arduinonuz size bir şifre soracak eğer, şifre doğru ise çalışmaya başlayacaktır.

Şifre gönderimi serial monitör tarafından olacaktır. Herkesin en başta analog deger okumak için kullandiği ekranla biz bu sefer arduinoya değer göndereceğiz. Eğer gönderdiğimiz değer önceden belirlediğimiz değerle eşleşirse kod bizim asıl projemizin döngüsüne girecektir.

void setup() {
   pinMode(13, OUTPUT);
   digitalWrite(13, LOW);
   Serial.begin(9600);
   Serial.println("Merhaba!");
   delay(1000);
   Serial.println("Lutfen sifreyi giriniz");
 }

 void loop()  {
   start:
   const char pas = 'makerrobotistan';

     if (Serial.read() == pas) {
         Serial.println("giris yapildi");          
         delay(1000);
         digitalWrite(13, HIGH);
         goto start;
     }
   }

Kod kısacası serial giriş daha önce belirlenmiş değişkene eşit olursa if’in içine girip led yakar. Siz bunu kendi projenize uyarlarsanız if’in içine While(1) gibi bir döngü yazarak şifre girildiğinde programınızı başlatabilirsiniz.

Bu koda alternetif olarak arduinonun kendi password kütüphanesi vardır.

#include <Password.h>
Password password = Password( "1234" );
void setup(){
Serial.begin(9600);
password.append('1');//Parola tahminine 1 ekle
password.append('2');//Parola tahminine 2 ekle
password.append('3');//Parola tahminine 3 ekle
password.append('4');//Parola tahminine 4 ekle

Serial.println( password.evaluate()?"true":"false" ); //1234 == 1234 oldugu için true yazdirmali

password.reset(); //parolayı sifirlar

Serial.println( password.evaluate()?"true":"false" );  // 1234 != NULL oldugu için false yazar
password.set("qwerty"); //sifreyi qwerty yapar
Serial.println( password.is("qwerty")?"true":"false" ); //qwerty == qwerty oldugu için true yazdirmali


Serial.println( password.is("qwirty")?"true":"false" ); // qwerty != qwirty oldugu için false yazar
}

void loop(){/*asil kod*/}

 

Not: Şifre girilirken serial haberleşme kullanıldığı için arduinonuzun üstündeki rx tx pinlerini kullanırken dikkatli olmanız gerekir.

Ödev: “Sikuli Nedir” yazısını okuyarak, şifrelediğiniz arduinonun şifresini kırmaya çalışın. Kırdıktan sonra sikuli yazısının yorum atarsanız herkes birbirinin yöntemini inceler. Birkaç katılımdan sonra ben de kendiminkini atacağım.

10 YORUMLAR

  1. Rasim hocam eline saglık
    Microchip de program kilitleme nin yaptıgı işi mi yapıyor tam olarak.Bizim Yazdığımız kodun kopyalanıp başkalarının tarafından çoğaltılmasını engelleyebilirmiyiz

  2. const char pas = ‘makerrobotistan’;
    Burada gözden kaçan bir hata var.

    Örneğin char pas = ‘a’; dersek tamam ama karakter dizisini tek tırnak arasında yazamayız.
    const char * pas = “makerrobotistan” deseydik bu şekilde olabilirdi. C’de string tanımlaması bu şekildedir. Ya da dizi şeklinde tanımlayabilirsiniz.
    Ayrıca serialread fonksiyonu tek bir karakter okuyor bunun için Serial.readString fonksiyonunun kullanılması gerekir.
    Derlerken hata vermiyor fakat çalıştırınca son harf olan n değişkene yüklendiği için sadece “n” harfine göre işlem yapıyor.

CEVAP VER

Lütfen yorumunuzu giriniz!
Lütfen isminizi buraya giriniz