Digispark Kullanarak Konfigüre Edilebilir Random Parola Üretici Yapımı – Bölüm 1

Arkadaşlar Merhaba ,

Şuradaki yazımda digispark kartının klavye ve mouse olarak kullanılabileceğinden bahsetmiştim sizlere ve mouse’u random hareket ettirerek ekran koruyucunun devreye girmesini engelleyebileceğimiz donanımı nasıl tasarlayacağımızı anlatmaya çalışmıştım.. Bu yazımda ise yine aynı kartı klavye olarak nasıl kullanacağımızı ve random parolalar üretmek için bir cihazı nasıl tasarlayacağımızı anlatmaya çalışacağım.

Password Generator Hardware

Ne istiyorum ?

Bilgisayarımın usb portuna takılı kalacak , kendi algoritması ile değiştirilebilen uzunluklarda şifre üretebilecek , şifrelerin büyükharf,küçükharf,rakam ve bazı özel karakterleri içerebildiği , klavyemden özel bir tuş kombinasyonu ile tetikleyebildiğim bir donanım.

Nasıl tasarladım ?

Klavyemin capslock tuşunu çok yoğun olarak kullanmadığım için caps-lock tuşuna 2 defa basılması durumunda digispark donanımımı harekete geçirmeyi uygun gördüm.

Sistem 8 haneli bir şifre üretmek için , önce 0 ile 4 arasında random bir rakam üretiyor. Üretmiş olduğu bu rakam

0 için özel karakter

1 için küçük harf

2 için rakam

3 için büyük harf 

olarak karar verme amacı ile kullanılıyor. Böylece şifrenin içinde bulunacak karakter türleri ve sayıları de randomize edilmiş oluyor.

Sonrasında üreteceği karakter türü belirlenince , cihaz içerisinde tanımlı karakter setinden yine random olarak bir karakter seçiliyor ve parolanın birinci karakteri olarak kullanılıyor. Bu işlem uygun parola uzunluğuna ulaşana kadar devam ediyor.

Parola oluşturulduktan sonra ise ekranda bulunan bir notepad , metin kutusu , parola kutusu gibi bir yere klavye basışı gibi gönderiliyor.

Parola oluşturma algoritmasını oldukça basit tuttum. Zira amacım kırılmaz bir parola oluşturmak değil , basit bir donanım ile hızlıca randomize kodlar oluşturmaktı. Algoritmanın devamında Sezar Şifrelemesi , Tersine Çevirme , Parçalayıp Tekrar Birleştirme gibi ekstra yöntemler eklenebilir ya da oluşturulan şifrenin uzunluğu arttırılabilir.

Sorunlar

Digispark’ın resmi kütüphaneleri klavye üzerinde yer alan capslock , numlock , scroll lock gibi tuşların statelerinin donanım tarafından okunmasına müsaade etmiyor. Bu yüzden öncelikle bu konuya çözüm üretmem gerekiyordu. Çok şükür ki bu konu üzerinde çok fazla çalışmama gerek kalmadı hackaday.io forumlarında danjovic isimli bir geliştirici kütüphanelerde gerekli düzenlemeleri yapmış ve kullanıma sunmuştu. Bu durumda lokal bilgisayarımda ilgili dosyaları danjovic’in kodu ile değiştirerek eklemiş olduğu fonksiyonları kullanmaya başlayabilirdim.

Etkilenen dosyalar ,

hidkeys.h -> Bu dosya resmi kütüphanede bulunmadığı için oluşturmamız gerekiyor.

Etkilenen dosyaların Windows üzerindeki yolu aşağıdaki şekilde

Etkilenen dosyaların içeriklerini de aşağıdaki kod blokları içerisinde görebilirsiniz. Böylece sizi github’da dosyalar arası sörf yapmak zorunda bırakmamış olacağım.

DigiKeyboard.h

usbconfig.h

hidkeys.h

Dosyalarda değişiklikleri gerçekleştirdikten sonra digispark kartımız üzerinde bulunan led yardımı ile capslock/numlock/scroll lock durumlarını gösteren aşağıdaki gibi bir örnek kod yükleyelim.

Burada dikkat edilmesi gereken husus hangi tuşu takip etmek istiyorsak CAPS_LOCK yerinde onun bulunması gerektiği.

Kullanılabilecek sabitler digikeyboard.h dosyasında görülebilir.

Gerekli düzenlemeleri yaptık ve buraya kadar konuyu netleştirdiysek Arduino üzerindeki kodu yazma aşamasına geçiş yapabiliriz.

Arduino kullanan arkadaşlarımızın bilirler kodumuzu bir loop bloğu arasına yazarız ve kartta elektrik olduğu müddetçe bu loop bloğu çalışmaya devam eder. Bu durumda capslock’un basılı bırakılması halinde donanım sürekli capslock’un basılı olduğunu düşünerek parola üretmeye devam edecek. Kodumuzu tasarlarken bu detaya dikkat etmemiz çok önemli.

 

Yüklememiz gereken kod bloğu ,

Aşağıdaki animasyonda parola üretme sürecini ve sağ alttaki bildirimlerden de capslock statusunu görebilirsiniz.

You may also like...

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

nine × one =