Tobias Scheible Cyber Security & IT-Forensik Dozent
DigiSpark - Mini Arduino

DigiSpark USB Development Board

DigiSpark ist ein Attiny85-basiertes Mikrocontroller-Entwicklungsboard ähnlich der Arduino-Linie, nur deutlich billiger, kleiner und direkt mit einem USB-Anschluss ausgestattet. Da der USB-Controller des DigiSpark auch als Tastatur fungieren kann, kann mit diesem Arduino kompatiblen Board das Bad-USB-Angriffszenario nachgestellt werden.

Samstag, 14. April 2018
4 Kommentare

01.10.2019
Ein neuer Artikel ist über den Digispark erschienen:
Digispark – günstiges BadUSB Device

Der DigiSpark kostet je nach Händler und je nachdem, wie viele Module abgenommen werden, zwischen 2 und 8 Euro. Erhältlich ist er bei vielen Online-Händlern – darunter auch Amazon und Ebay. Durch die kleine Größe besitzt er nur wenige Pins, allerdings können darüber erstaunlich viele verschiedene Schnittstellen (z.B. I2C, SPI, USI, PWM, ADV) abgebildet werden. Eine eigebaute LED zeigt den Status bei einer Stromverbindung an und eine zweite LED kann frei programmiert werden und dient zum Beispiel dazu, ein Feedback zu erhalten.

DigiSpark Anleitung

Mit der nachfolgenden Anleitung kann die Arduino IDE eingerichtet werden, um den DigiSpark zu programmieren.

1. Schritt: Download und Installation der Arduino IDE

Gehen Sie auf die offizielle Website und laden Sie dort die für das eingesetzte Betriebssystem passende Version herunter. In diesem Beispiel arbeite ich mit einem Windows-System und wähle daher die Version „Windows Installer for Windows XP and up“ aus. Auf der nächsten Seite kann der Download mit einem Klick auf den Link „Just Download“ gestartet werden.

Arduino IDE - DigiSpark
Download der Arduino IDE – Betriebssystem wählen
Installation Arduino IDE Download der Arduino IDE – Betriebssystem wählen
Installation Arduino IDE
Download der Arduino IDE – „JUST DOWNLOAD“ bestätigen
Arduino IDE - DigiSpark Download der Arduino IDE – „JUST DOWNLOAD“ bestätigen

2. Digistump Treiber installieren

Als Nächstes müssen Sie den USB-Treiber installieren, damit Ihr Rechner die Scripte auf Ihren Digispark übertragen kann. Den „gepackten“ Treiber können Sie bei GitHub herunterladen. Entpacken Sie die Datei und führen dann die Setup-Datei DPinst.exe (32Bit Windows) oder DPinst64.exe (64Bit Windows) aus. Daraufhin wird der Treiber „Sigistump LLC Anschlüsse“ installiert.

DigiSpark Windows Treiber
Installation des Treibers
DigiSpark Treiberinstallation Installation des Treibers

3. DigitSpark Board hinzufügen

Starten Sie anschließend die Arduinio IDE. Öffnen Sie dort im Menü „Datei“ den Dialog „Voreinstellungen“ und fügen Sie im Feld „Zusätzliche Boardverwalter-URLS:“ die URL http://digistump.com/package_digistump_index.json hinzu. Bestätigen Sie anschließend den Dialog mit einem Klick auf den Button „OK“. Gehen Sie nun in den nächsten Dialog in dem im Menü „Werkzeuge“ auf das Untermenü „Board: #“ und wählen Sie die Option „Boardverwalter…“. Geben Sie nun im Dialog „Boardverwalter“ in die Suchleiste den Suchbegriff „Digistump AVR Boards“ ein und klicken im gefundenen Eintrag auf „installieren“. Danach können Sie diesen Dialog wieder schließen. Gehen Sie nun wieder in das Menü „Werkzeuge“ und in das Untermenü „Board: #“. Wählen Sie dort nun die neu hinzugekommene Option „Digispark (Default – 16.5mhz)“ aus.

Arduino IDE Eisntellungen
Zusätzliche Boardverwalter-URLS
Zusätzliche Boardverwalter-URLS Zusätzliche Boardverwalter-URLS
Digistump AVR Boards Installation
Digistump AVR Boards Installation
Arduino IDE Eisntellungen Digistump AVR Boards Installation
DigiSpark auswählen
Digispark (Default – 16.5mhz)
Arduino IDE Eisntellungen Digispark (Default – 16.5mhz)

4. Deutsches Tastaturlayout

In der Standardkonfiguration nutzt der DigiSpark das englischsprachige Tastaturlayout. Dadurch kann es zu Problemen bei der Verwendung von Sonderzeichen kommen, da bei einer Programmierung mit einer deutschen Tastatur das englische Äquivalent der Zeichen verwendet wird. Auf GitHub gibt es einen Fork des DigiStump AddOns „DigistumpArduino – Germanized Keyboard Library“. Hier kann dann die Header-Datei „DigiKeyboardDe.h“ genutzt werden und im selben Ordner wie die „.ino“ Arduino-Datei abgelegt werden. Einzige Einschränkung sind die deutschen Umlaute.

DigiSpark Beispiele

Um Ihnen den ersten Einstieg zu erleichtern, habe ich hier drei Beispiele erstellt.

1. Blinkende LED

Im ersten Beispiel lassen wir die vorhandene LED blinken. Nachdem eine setup()-Funktion erstellt wurde, die die Anfangswerte initialisiert und setzt, führt die loop()-Funktion genau das aus, was ihr Name vermuten lässt, nämlich eine Endlosschleife. Um nun die LED blinken zu lassen, muss in der setup()-Funktion der Pin der LED als Ausgabe (Output) gesetzt werden. In der loop()-Funktion wird die Ausgabe auf HIGH gesetzt, also stromleitend. Nach einer Wartezeit von 500 Millisekunden wird mit dem delay-Befehl der Strom mit LOW wieder ausgeschaltet. Danach erfolgt wieder eine Pause von 500 Millisekunden, da ansonsten die LED gleich wieder angehen würde. Sie können ein bisschen mit den Werten experimentieren und die LED schneller oder langsamer blinken lassen.

void setup() {                
  pinMode(1, OUTPUT);
}

void loop() {
  digitalWrite(1, HIGH);
  delay(500);
  digitalWrite(1, LOW); 
  delay(500);
}

2. Hallo Welt Ausgabe mit Sonderzeichen

Als Nächstes erstellen wir eine Ausgabe mit einer virtualisierten Tastatur. Um die deutsche Tastaturausgabe zu nutzen, muss am Anfang die Header-Datei „DigiKeyboardDe.h“ eingebunden werden. Dadurch steht uns der Funktionsaufruf „DigiKeyboardDe.println“ zur Verfügung. Wird das nachfolgende Beispiel auf den DigiSpark geladen, gibt die virtuelle Tastatur alle 2 Sekunden den Text „Hello World XYZ !\“§$%&/()=? [] {}<>!” aus.

 #include "DigiKeyboardDe.h"
void setup() {
}
void loop() {
DigiKeyboardDe.println("Hello World XYZ !\"§$%&/()=? [] {}<>!");
DigiKeyboard.delay(2000);
}

3. Taschenrechner unter Windows öffnen

Im letzten Beispiel wollen wir den Taschenrechner mit dem Digispark starten. Da wir die Aktion nur einmal ausführen möchten, schreiben wir die Befehle in die setup()-Funktion. Die Grundlagen zum Ausführen von Programmen stellt der Ausführen-Dialog dar. Dieser kann mit der Tastenkombination Windowstaste und R-Taste aufgerufen werden. Um eine Tastenkombination mit dem DigiSpark auszuführen, wird der Befehl DigiKeyboardDe.sendKeyStroke() verwendet. Welche Tasten möglich sind, kann direkt in der Datei „DigiKeyboardDe.h“ nachgelesen werden.

#include "DigiKeyboardDe.h"
void setup() {
  DigiKeyboardDe.sendKeyStroke(0);
  DigiKeyboardDe.sendKeyStroke(KEY_R, MOD_GUI_LEFT); 
  DigiKeyboardDe.println("calc");
}
void loop() {
}

Weitere Beispiele sind direkt in der Arduino IDE verfügbar. Sie finden sie unter „Datei“ > „Beispiele“. Dort gibt es dann eine spezielle Kategorie mit allen Beispiel-Codes für den DigiSpark. Viel Spaß beim Experimentieren ?

Weitere Ressourcen

+ Offizielle Anleitung „Connecting and Programming Your Digispark“

+ Ix Artikel „IT-Sicherheit: Das Gefährdungspotenzial der Digispark-USB-Platine“

+ Digispark – die USB Rubber Ducky Alternative (Teil1)

+ Digispark – die USB Rubber Ducky Alternative (Teil2)

Über Tobias Scheible

Tobias Scheible

Hallo, mein Name ist Tobias Scheible. Ich bin begeisterter Informatiker und Sicherheitsforscher mit den Schwerpunkten Cyber Security und IT-Forensik. Mein Wissen teile ich gerne anhand von Fachartikeln hier in meinem Blog und in meinem Fachbuch. Als Referent halte ich Vorträge und Workshops für Verbände und Unternehmen u. a. auch offene Veranstaltungen für den VDI und die IHK.

Kommentare

Daidi am 27. August 2018 um 11:20 Uhr

Hey, das ist ja mal wirklich ne günstige Alternative.
Wollte mich da schon immer mal ein bisschen einarbeiten so als Hobby.
Mein erstes Projekt soll so ein „RetroPi“ sein, also damit man die alten Nintendo Spiele spielen kann 🙂

Grüße

U. Wolf am 28. Februar 2021 um 19:56 Uhr

Hallo,
ich habe so ein Teil. Der USB Treiber funktioniert nicht, bzw. ich kann ihn nicht installieren.
Ich habe Windows 10.
Haben Sie eine Lösung.
MfG
U. Wolf

Tobias am 5. März 2021 um 07:45 Uhr

Hallo,
ich habe es kürzlich unter Windows 10 mit diesen Treibern eingerichtet. Was gab es denn für eine Fehlermeldung?
Grüße Tobias
PS: Es gibt einen neuen Digispark Artikel.

Oleg am 12. Mai 2022 um 15:52 Uhr

Hallo,

ich möchte gerne wissen, ob und wie es geht, mit Digispark die BitLocker Recovery Key beim PC Start einzutragen.

DigiKeyboardDe.println getestet. Schreibt beim Start ins BitLocker Fenster nichts rain.

Erst geht einen Text zu schreiben / einfügen, wenn Windows gestartet ist.

LG, Oleg.

Schreibe einen Kommentar!

Hilfe zum Kommentieren und Hiweise

Um kommentieren zu können, geben sie bitte mindestens ihren Namen und ihre E-Mail-Adresse an. Bitte nutzen Sie die Kommentarfunktion nicht dazu, andere zu beleidigen oder Spam zu verbreiten. Trolle und Spammer sind hier unerwünscht! Unangemessene Kommentare, die zum Beispiel gegen geltendes Recht verstoßen, eine Gefährdung anderer Besucher darstellen oder keinen sinvollen Inhalt beinhalten, werden gelöscht oder angepasst.

Name: Ihr Name, der oberhalb des Kommentars steht, gerne auch Ihren echten Namen, das erleichtert die Kommunikation für alle. Sollte ein Spam-Keyword als Name verwendet werden, kann dieses entfernt oder korrigiert werden.

E-Mail: Ihre E-Mail Adresse dient zur Identifizierung weiterer Kommentare und damit ich direkt Kontakt aufnehmen kann. Die E-Mail Adresse wird natürlich nicht veröffentlicht und nicht weitergegeben.

Website: Hier können Sie ihren eigenen Blog bzw. ihre eigene Website eintragen, dadurch wird Ihr Name und Ihr Avatar-Bild verlinkt. Werden rein kommerzielle Angebote offensichtlich beworben, setze ich den Link auf nofollow und unangemessene werden einfach entfernt.

Erlaubte HTML-Tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <hr> <big> <small> <sub> <sup> <u>

Ihre E-Mailadresse wird nicht veröffentlicht. Mit dem Absenden anerkennen Sie die Datenschutzhinweis des Blogs.