Einleitung

calc.pw ist ein Hardwareprojekt, das zwischen dem eigenen Computer und der Tastatur gesteckt wird. Im Passwortmodus ermöglicht es, einfach und komfortabel beliebig viele Passwörter zu generieren. Hierzu verwendet es ein Masterpasswort, das beim Starten des Gerätes über die normale Computertastatur eingegeben werden muss. Benötigt man nun ein Passwort, wechselt man über eine Tastatenkombination in den Passwortmodus und gibt eine beliebige Information ein. Diese Information kann anwendungsabhängig sein (z.B. "twitter", "e-mail", "banking"). Anhand des Masterpassworts und der Information wird dann ein Passwort generiert und wie eine normale Tastureingabe an den Computer übertragen. Bei Eingabe der gleichen Information erhalten Sie wieder das gleiche Passwort. So entfällt das mühefolge Einprägen von Passworten. Und dadurch, dass calc.pw in Form von Hardware realisiert ist, kann ein Virus oder Trojaner auf dem Computer die Daten, die für die Passwortberechnung verwendet werden, nicht mitlesen.

Sicherheitsexperten raten inzwischen dazu, für jeden verwendeten Dienst ein eigenes Passwort zu verwenden. Hintergrund ist, dass Dienste gehackt werden können. Gelangt der Angreifer dabei an die Passwörter dieses Dienstes, hat dieser die Möglichkeit, die gefunden Passwörter auch bei anderen Diensten auszuprobieren. Bei Verwendung eines Passwortes für alle Dienste bedeutet der Verlust dieses Passwortes die Kontrolle über sämtliche genutzte Dienste.

Um dies zu umgehen, wurden im Laufe der Zeit verschiedene Methoden entwickelt, um Passworte zu erzeugen. Eine häufig verwendete Methode ist es, ein Hauptpasswort zu bestimmen und dieses um dienstabhängige Merkmale zu ergänzen. Angenommen, das Hauptpasswort sei "St@rk3sP4ssw0rt" und man benötigt ein Passwort für sein Online-Banking, dann wäre ein mögliches Passwort "St@rk3sP4ssw0rt_banking". Es gibt hier verschiedene Methoden, um zum dienstabhängigen Teil zu gelangen. Alle diese Methoden haben jedoch gemein, dass man gefährdet ist, sobald eines der Passworte bekannt wird, da die Möglichkeit besteht, das Hauptpasswort zu ermitteln und neue Dienstpassworte abzuleiten.

Eine andere Methode ist heutzutage, völlig zufällige Passwörter zu generieren und diese zu verwenden. Sie haben jedoch den großen Nachteil, dass sie nicht einprägsam sind, zumal die Zahl der benötigten Passworte mit jedem verwendeten Dienst steigt. Aus diesem Grund entstanden Passwortdatenbanken, die einem das Einprägen der Passworte ersparen. Diese setzen nur ein Masterpasswort für die Datenbank voraus und bieten anschließend Zugriff auf alle darin gespeicherten Passworte. Doch auch diese Methode hat ein Problem: Kommt die Datenbank abhanden, sind sämtliche Passworte verloren. Zudem muss die Passwortdatenbank überall verfügbar sein, was zu abstrusen Konzepten führt - zum Beispiel das Speichern sämtlicher Passwörter in der Cloud. Hier hat der amerikanische Betreiber Dropbox Zugriff auf die Passwortdatenbank und damit potentiell auch der CIA, die NSA und andere Organisationen.

Abschließend gibt es noch eine eher lustige Präsentation eines Passwort-Schemas bei XKCD. Dort wird empfohlen, einfach mehrere normale Worte aneinander zu fügen. Dies wäre - nach Ansicht des Comics - ausreichend sicher. Leider gibt es hier ein großes Problem. Viele Loginformulare setzen eine maximale Passwortlänge voraus. Ein Schema wie das dort gezeigte würde also - je nach maximaler Passwortlänge - zu sehr schwachen Passworten führen. Zudem gilt auch hier: Im Alltag ist es nicht nur notwendig, ein Passwort zu erzeugen, sondern meist hat man dutzende verschiedene Accounts, die ein Passwort benötigen. Auch hier müsste man sich also eine Zuordnung der Wortkombinationen zu den einzelnen Diensten einprägen.

calc.pw geht hier einen völlig anderen Weg. Es verwendet ein Masterpasswort und eine dienstabhängige Information, aus denen mit Hilfe kryptografischer Mittel (SHA-1 und Arc4) ein Dienstpasswort erzeugt wird. Dieses Dienstpasswort ist nicht zurückrechenbar. Aus dem Dienstpasswort kann also weder das Masterpasswort noch die dienstabhängige Information ermittelt werden. Sollte also eines der Dienstpassworte bei einem Angriff abhanden kommen, brauchen Sie nur dieses durch ein neues zu ersetzen. Alle anderen Passworte sind weiterhin sicher.

Funktionsweise

calc.pw ist äußerst einfach zu verwenden. Anstatt die USB-Tastatur direkt mit dem Computer zu verbinden, wird die USB-Tastatur mit calc.pw verbunden. Anschließend wird calc.pw an den Computer angeschlossen. Während des Bootens zeigt calc.pw eine Reihe an Informationen über sich an.

Bootvorgang A Bootvorgang B Bootvorgang C
(Bootvorgang)

Nach dem Booten fragt calc.pw über das LCD nach dem Masterpasswort. Dieses ist später nötig, um die eigentlichen Dienstpasswörter zu berechnen. Die hier getätigten Eingaben werden nicht angezeigt, sondern lediglich mit Sternchen maskiert. Der Pfeil an der rechten Seite gibt Aufschluss darüber, ob gerade ein Zeichen dem Passwort hinzugefügt wurde oder ob eines per Backspace gelöscht wurde. Während dieses Modus leuchtet ausschließlich die rote LED.

Passworteingabe A Passworteingabe B Passworteingabe C
(Passworteingabe)

Nach bestätigen der Eingabe mit der Entertaste fragt calc.pw über das LCD erneut nach dem Masterpasswort. Dies soll sicherstellen, dass bei der Passworteingabe kein Fehler unterlaufen ist. Erst, wenn beide Passwörter identisch eingegeben wurden, wechselt calc.pw in den eigentlichen Bedienmodus. Wird das Passwort falsch eingegeben, beginnt man wieder bei der Ersteingabe des Passworts. Im Passwort-Wiederholen-Modus leuchtet sowohl die rote als auch die gelbe LED.

Passwortwiederholung A Passwortwiederholung B Passwortwiederholung C
(Passwortwiederholung)

Stimmten beide Passworte überein, so wechselt calc.pw in den eigentlichen Bedienmodus. Im sogenannten Passthrough-Modus leitet calc.pw die Tastenanschläge 1:1 an den Computer weiter. In diesem Modus leuchtet ausschließlich die grüne LED. Durch drücken der Tastenkombination STRG+ESC gelangt man in den Modus zur Passwortgenerierung. In diesem fragt calc.pw per LCD nach der Information mit deren Hilfe das Dienstpasswort generiert werden soll. Bei der Eingabe der Information gibt es ein paar Zusatzfeatures. Diese sind im Kapitel "Information" näher beschrieben. In diesem Modus leuchtet die rote, die gelbe und die grüne LED auf.

Passthrough-Modus Informationseingabe A Informationseingabe B Informationseingabe C
(Passthrough-Modus & Informationseingabe)

Um nun mit Hilfe der eingegebenen Information das Passwort berechnen zu lassen, existieren zwei Möglichkeiten. Die eine Möglichkeit ist, wieder die Tastenkombination STRG+ESC zu drücken. Die andere Möglichkeit ist, die Entertaste zu betätigen. Der Unterschied ist, dass bei Verwendung von STRG+ESC nur das Passwort generiert wird, während bei der Betätigung der Entertaste zusätzlich ein Zeilenumbruch mitgeschickt wird. Dies ist zum Beispiel bei Loginformularen sinnvoll, da diese so gleich abgeschickt werden und kein erneuter Tastendruck notwendig ist. Während der Berechnung des Passwortes leuchtet die rote und die gelbe LED. Nach der Berechnung des Passwortes wechselt calc.pw wieder automatisch in den Passthrough-Modus.

Passwortberechnung
(Passwortberechnung)

Darüber hinaus besitzt calc.pw einen Reset-Button. Wird dieser länger gedrückt, führt das Gerät eine Reinitialisierung durch, bei der unter anderem das Masterpasswort im Speicher überschrieben wird. Dies ist dafür gedacht, falls Sie das Gerät aus den Augen lassen müssen. So ist sichergestellt, dass keine fremde Person Passwörter mit ihrem Masterpasswort erstellen kann, wenn Sie nicht in der Nähe sind.

Youtube Video

Information

Es gibt Gründe, weshalb eine einzige Form der Passworterzeugung nicht ausreichend ist. Zum Beispiel fordern verschiedene Passwortformulare unterschiedliche Passwortlängen. Die einen fordern, dass Sonderzeichen enthalten sind, die anderen verbieten Sonderzeichen. Auch gibt es Fälle, in denen zumindest eine Zahl und ein Buchstabe enthalten sein muss. Um diese Menge an Anforderungen abzudecken, bietet calc.pw drei Passwortfeatures an, die bei der Erzeugung von Passworten verwendet werden können.

Passwortlänge:
calc.pw bietet die Möglichkeit, die Länge des zu generierenden Passwortes zu bestimmen. Standardmäßig sind generierte Passworte 8 Zeichen lang. Um die Länge des Passwortes zu bestimmen, muss hinter die dienstabhängige Information ein Fragezeichen ("?") angefügt werden, gefolgt von der gewünschten Länge. Das Minimum beträgt 3 Zeichen, das Maximum beträgt aus Speichergründen 50 Zeichen.

Beispiele:

twitter?10
OnlineBanking?50
ultrakurz?3

Sonderzeichen:
Einige Loginformulare fordern, dass in einem Passwort ein Sonderzeichen vorhanden sein muss. Welche Sonderzeichen zulässig sind, ist zudem von Formular zu Formular unterschiedlich. Aus diesem Grund ist das Sonderzeichen-Feature sehr variabel gehalten. Um Sonderzeichen im Passwort zu erhalten, muss hinter die dienstabhängige Information ein Ausrufezeichen ("!") angefügt werden, gefolgt von den Sonderzeichen, die vorkommen dürfen. Von diesen Sonderzeichen wird bei der Passwortgenerierung genau eines gewählt und in das Passwort eingefügt.

Beispiele:

twitter!+-*/
OnlineBanking!+-*/!?#@&%$=
ultrakurz!!?

Alphanumerik:
Es existieren Loginformulare, die vorschreiben, dass ein Passwort mindestens eine Zahl und einen Buchstaben enthalten muss. Um sicherzustellen, dass dies der Fall ist, beherrscht calc.pw einen Algorithmus, der generierte Passwörter auf dieses Kriterium hin prüft und automatisch ein neues Passwort generiert, falls die Anforderungen nicht erfüllt werden. Um die Alphanumerik-Prüfung zu aktivieren, muss vor die dienstabhängige Information eine Raute ("#") angefügt werden. Die Raute symbolisiert ein Sudoku-Feld, in dem typischerweise die Zahlen von 1 bis 9 eingetragen werden.

Beispiele:

#twitter
#OnlineBanking
#ultrakurz

Natürlich lassen sich auch alle drei Features kombinieren. Damit ist es möglich, die Länge des Passworts zu definieren, die Alphanumerik-Prüfung zu aktivieren und gleichzeitig Sonderzeichen zu fordern. Hierbei gibt es jedoch eins zu beachten: Sollten Länge und Sonderzeichen gleichzeitig gewünscht werden, so muss immer zuerst die Länge definiert werden. Der Grund hierfür ist relativ simpel: Sobald das Ausrufezeichen an die Information angefügt wird, gelten alle Zeichen danach automatisch als Sonderzeichen. Dies würde auch auf die Zeichen zutreffen, die eigentlich für die Definition der Passwortlänge gedacht waren.

FALSCH: twitter!+-/?10
RICHTIG: twitter?10!+-
/

Beispiele:

#twitter?10!+-*/
#OnlineBanking?50!+-*/!?#@&%$=
#ultrakurz?3!!?

Passwortgenerierung

Die Passwortgenerierung basiert auf mehreren kryptographischen Primitiven, die miteinander kombiniert die eigentliche Ausgabe erzeugen. Bitte beachten Sie die Reihenfolge der Parameter. Im Anschluss wird in Form von Pseudocode der Ablauf der Passwortgenerierung dargestellt.

Primitiven:

arc4(input, password) - Verschlüsselung mit Arc4-drop1024
alphanum(input) - Sonderzeichen entfernen
base64(input) - Base64-Encodierung
check(input) - Prüfen auf Zahlen und Buchstaben
concat(left, right) - Strings aneinanderfügen
hash(input) - Hashing mit SHA-1
hmac(input, password) - HMAC auf Basis von SHA-1
strip(input, length) - Länge des Inputs kürzen

Bei der Generierung werden folgende Annahmen getroffen: Die eingegebene Information wurde in ihre Einzelteile getrennt. checkAlphaNum enthält die Information, ob auf Alphanumerik geprüft werden soll. info[] enthält die dienstabhängige Information, pass[] enthält das Masterpasswort, outLength enthält die geforderte Passwortlänge und specials[] enthält die Liste der geforderten Sonderzeichen. Die Sonderzeichen in specials[] sind anhand ihrer Position nach ISO-8859-1 sortiert und nicht von Dubletten bereinigt.

Ablauf:

function generatePass(info[], pass[], checkAlphaNum, outLength, specials[]) {
  if (checkAlphaNum) {
    index = 0;
    do {
      temp = concat(index, info);

      result = singlePass(temp, pass, outLength, specials);
      if (check(result)) {
        break;
      } else {
        result = "";
        index++;
      }
    } while (index < 255);
  } else {
    result = singlePass(info, pass, outLength, specials);
  }

  return result;
}

function singlePass(information[], password[], len, specialChars[]) {
  hmacPassword = hmac(information, password);
  hmacInformation = "";

  tempInput = hash(hmacPassword);
  tempOutput = hmac(tempInput, information);
  hmacInformation = concat(hmacInformation, tempOutput);

  tempInput = tempOutput;
  tempOutput = hmac(tempInput, information);
  hmacInformation = concat(hmacInformation, tempOutput);

  tempInput = tempOutput;
  tempOutput = hmac(tempInput, information);
  hmacInformation = concat(hmacInformation, tempOutput);

  result = arc4(hmacInformation, hmacPassword);
  result = base64(result);
  result = alphanum(result);
  result = strip(result, len);

  specialCharIndex = 0;
  specialCharPos = 0;
  for (index = 0; index < length(hmacPassword); index++) {
    if (index < length(hmacPassword) / 2) {
      specialCharIndex ^= hmacPassword[index];
    } else {
      specialCharPos ^= hmacPassword[index];
    }
  }
  specialCharIndex = (specialCharIndex % length(specialChars));
  specialCharPos = (specialCharPos % (len - 2)) + 1;

  result[specialCharPos] = specialChars[specialCharIndex];

  return result;
}

Aufbau

calc.pw ist mit Hilfe eines sogenannten Mikrocontrollers umgesetzt worden. Bei der verwendeten Plattform Arduino handelt es sich um Open Source Hardware. Sämtliche Quellen inklusive der API und der Hardwarespezifikation sind online verfügbar. Der Vorteil bei der Verwendung dieser Plattform war zum einen die weite Verbreitung, die umfangreiche Dokumentation, verfügbare Zusatzhardware und die einfache Beschaffung innerhalb Deutschlands.

Das Projekt ist in mehreren Etappen entstanden. In der ersten Etappe (Revision A) wurde lediglich die Programmlogik implementiert. Diese Revision lässt sich daher mit jedem handelsüblichen Arduino umsetzen. Die Kommunikation mit dem Gerät erfolgt dabei über dessen serielle Schnittstelle. Über diese werden das Masterpasswort und die Information an das Gerät übertragen und das generierte Passwort vom Gerät empfangen.

In der zweiten Etappe (Revision B) wurde die Kommunikation zwischen Computer und Arduino geändert. Statt über eine serielle Schnellstelle werden Eingaben nun über eine angeschlossene USB-Tastatur erledigt. Um dies zu ermöglichen, wurde das USB-Host-Shield von Circuits@Home eingesetzt. Diese Shield-Variante ist stark zu bevorzugen, da für diese die ursprüngliche Library geschrieben wird. Weiterhin wird auch die Ausgabe von calc.pw an den Computer nun über eine Tastaturemulation vorgenommen. Hierfür ist der Einsatz des Arduino Leonardo notwendig, das über eine entsprechende Funktion verfügt.

Abschließend wurde in der dritten Etappe (Revision C) neben der einfachen Statusausgabe per LED eine umfangreiche Nutzerkommunikation per LCD eingeführt. Diese sorgt für eine starke Vereinfachung der Handhabung, da dem Gerätedisplay zu entnehmen ist, in welchem Modus sich calc.pw im Moment befindet. In diesem Schema konnte das USB-Shield-Shield leider nicht dargestellt werden:

Aufbauschema
(Aufbauschema)

Folgende Komponenten sind für den Bau von calc.pw notwendig:

1x Arduino Leonardo
1x Liquid Crystal Display
1x Light-Emitting Diode (gelb)
1x Light-Emitting Diode (grün)
1x Light-Emitting Diode (rot)
1x Potentiometer (10k Ohm)
1x Pushbutton
4x Resistor (220 Ohm)
1x USB-Host-Shield

Das Arduino Leonardo ist der Kern der Hardware, da auf ihm die eigentliche Programmlogik ausgeführt wird. Dessen Funktion der Tastaturemulation dient der Ausgabe in Richtung des Computers. Das USB-Host-Shield dient der Anbindung der USB-Tastatur an das Arduino-Board zur Verwendung als Eingabegerät. Der Pushbutton dient als Reset-Button, mit dem der Status von calc.pw überschrieben wird. Die LEDs dienen als vereinfachte Statusanzeige. Das LCD dient als umfangreichere Statusdarstellung. Das Potentiometer wird verwendet, um den Kontrast des LCDs einzustellen und die Resistoren werden für die Status-LEDs und die LED des Displays verwendet.

Sollte sich calc.pw merkwürdig verhalten, könnte dies daran liegen, dass Ihre Tastatur zu viel Strom benötigt. Sollte dies der Fall sein, verbinden Sie calc.pw mit einer Steckdose. Der USB-Anschluss eines Computers bietet nur 500mA.

Programmierung

calc.pw wurde mit großer Rücksicht auf eine einfache Portierbarkeit entwickelt. Die Backend-Library "cryptuino" lässt sich sowohl für die Arduino-Plattform als auch für andere Little-Endian-Plattformen wie x86- und x64-Systeme kompilieren. Big-Endian-Unterstützung wurde vorbereitet, kann jedoch mangels einer Testplattform nicht abschließend implementiert werden.

Die Kernfunktionalität von calc.pw inklusive der Algorithmen zur Passwortgenerierung wurden in der Library "cryptuino" gekapselt. Diese enthält einen eigenen Speichermanager, eine Crypto-Suite bestehend aus SHA-1 und Arc4, sowie ein Kompatibilitätslayer für PROGMEM.

Dank dieser Plattformunabhängigkeit existiert neben den Hardware-Revisionen A bis C auch eine Software-Revision 1, die sowohl unter Windows als auch unter unixoiden Systemen kompilierbar ist und bei gleicher Masterpasswort- und Informationseingabe die gleiche Passwortausgabe erzeugt.

Revision 1 unter macOS Revision 1 unter Windows
(Revision 1 unter macOS und Windows)

Für die Anbindung der USB-Tastatur wurde die USB-Host-Shield-Library von Circuits@Home verwendet. Dessen Behandlung der Steuertasten wurde um ein Event erweitert. Aufgrund eines Problems mit dem HID-Keyboard-Emulator des Arduino Leonardo musste eine Anpassung des Arduino-Cores vorgenommen werden. Diese ermöglicht es, die Tastatureingaben ohne weitere Verarbeitung an den Computer weiterzugeben.

Darüber hinaus wurde ein Mechanismus implementiert, mit dem es möglich ist, calc.pw mit verschiedenen Tastaturlayouts zu betreiben. Hierzu wird der 1kb große EEPROM des Arduino-Boards verwendet. In diesen wird eine Layoutdatei geschrieben, die bei Eingaben über die Tastatur als Übersetzung zwischen den Scancodes der Tastatur und den Zeichen der ISO 8859-1 dient.

Tastaturlayouts

An drei Stellen innerhalb der Programmausführung muss calc.pw eine Umkodierung von der Encodierung, die Tastaturen verwenden, in ISO 8859-1 und umgekehrt vornehmen. Hierfür wird eine Lookup-Tabelle benötigt. Da dem Arduino nicht genug Speicher zur Verfügung steht, um solche Tabelle für alle möglichen Tastaturen vorzuhalten (neben der QWERTZ-Tastatur aus Deutschland, gibt es eine QWERTY-Tastatur aus den USA, eine QWERTY-Tastatur aus Großbitannien und unzählige weitere), gibt es die Möglichkeit, ein Tastaturlayout in den EEPROM von calc.pw zu flashen. Das Tastaturlayout, das geflasht werden kann, hat eine vorgegebene Struktur. Diese soll anhand eines Beispieles gezeigt werden.

Beispiel:

63616C632E7077 00080002 01 000000

Ein Tastaturlayout wird grundsätzlich in großgeschriebener Hexadezimalschreibweise angegeben. Das Beispiel besteht aus mehreren Elementen. Das Tastaturlayout beginnt mit einem Header. Dieser hat den Inhalt "calc.pw" in ISO 8859-1 Codierung ("63616C632E7077"). Anschließend folgt eine Adler-32 Prüfsumme ("00080002"). Diese erstreckt sich über alle folgenden Daten. Als nächstes folgt ein Längenfeld ("01"), das angibt, wieviele Tastenkombinationen das Tastaturlayout beinhaltet. Anschließend folgenden die eigentlichen Tastenkombinationen ("000000"). Die ersten zwei Ziffern geben den Scancode entsprechend der USB HID Usage Table für Tastaturen an. Die folgenden zwei Ziffern geben den Modifikator an. Die letzten zwei Ziffern geben die ISO 8859-1 Repräsentation des Zeichens an.

Folgende Werte sind für den Modifikator möglich:

00 - es darf keine Steuertaste gedrückt sein
01 - es muss AltGr (alternativ Strg+Alt) gedrückt sein
02 - es muss Shift gedrückt sein
40 - NumLock muss aktiv sein (für das Numpad)
80 - die gedrückte Steuertaste ist egal (Space, Enter, Tab, Backspace)

Da das gezeigte Beispiel keine Funktion hat und nur als strukturelles Beispiel dient, ist im nächsten Bild das Tastaturlayout für die deutsche QWERTZ-Tastatur abgebildet. Dieses besteht ebenfalls aus dem Header ("63616C632E7077"), der Prüfsumme ("00EB00D7"), dem Längenfeld ("81"), gefolgt von den eigentlichen Tastenkombinationen ("040061 040241...").

QWERTZ-Layout
(QWERTZ-Layout)

Beim Hochfahren und beim Reset von calc.pw wird geprüft, ob ein ordentliches Tastaturlayout auf die Hardware geflasht worden ist. Falls ja, wird mit dem normalen Nutzungsablauf fortgefahren. Falls nein, wird eine entsprechende Fehlermeldung ausgegeben. Dies kann zum Beispiel dann der Fall sein, wenn calc.pw das erste Mal gestartet wurde oder wenn beim letzten Flashen etwas schief gelaufen ist. Dies ist jedoch kein Grund zur Besorgnis, da die Behebung relativ einfach ist.

Fehlermeldung bei fehlendem Layout
(Fehlermeldung bei fehlendem Layout)

Um ein neues Tastaturlayout auf calc.pw zu flashen, muss dieses zuerst in den Flash-Modus versetzt werden. Hierzu muss der Reset-Button gedrückt und gehalten werden, bis die rote und grüne LED gleichzeitig aufleuchten. Darüber hinaus gibt das Display einen Hinweis darauf, dass das Gerät in den Flash-Modus gewechselt ist. In diesem Flash-Modus öffnet calc.pw eine serielle Schnittstelle mit einer Geschwindigkeit von 9600 Baud, über die das neue Tastaturlayout übertragen werden muss.

Flashvorgang A Flashvorgang B Flashvorgang C Flashvorgang D
(Flashvorgang)

Über die serielle Schnittstelle gibt calc.pw zudem Auskunft über den Fortschritt des Flashvorgangs. Nach dem Flashen (egal ob erfolgreich oder nicht) führt das Gerät einen Reset durch. Sollte der Flashvorgang erfolgreich gewesen sein, kann nun mit der Verwendung des Gerätes begonnen werden. Sollte der Flashvorgang fehlgeschlagen sein, wird empfohlen, das Gerät kurz vom Netz zu trennen, bevor ein erneuter Flashversuch gestartet wird.

Flashvorgang abgeschlossen
(Flashvorgang abgeschlossen)

Youtube Video

Downloads

Die Arduino-IDE und die für Windows benötigten Arduino-Treiber findet man auf Arduino.cc. Zum Kompilieren der Software-Revision 1 kann man zum Beispiel Netbeans von Netbeans.org oder Code::Blocks von CodeBlocks.org verwenden. Die Library für das USB-Host-Shield von Circuits@Home erhält man auf GitHub.com. Und wie man Arduino-Libraries wie z.b. "cryptuino" verwendet, erfährt man hier.

cryptuino v0.4.0 (cryptuino_0.4.0.zip)
Revision 1 v0.4.0 (rev1_0.4.0.zip)
Revision A v0.4.0 (reva_0.4.0.zip)
Revision B v0.6.0 (revb_0.6.0.zip)
Revision C v0.6.0 (revc_0.6.0.zip)

QWERTY UK Tastaturlayout (qwerty_uk.txt)
QWERTY US Tastaturlayout (qwerty_us.txt)
QWERTZ DE Tastaturlayout (qwertz_de.txt)

Revision 1 (Windows Binary) (rev1_0.4.0_windows.zip)
Revision 1 (macOS Binary) (rev1_0.4.0_macosx.zip)
Revision 1 (macOS Binary mit Ncurses) (rev1_0.4.0_macosx.zip)

Adler-32 Prüfsummenberechnung (adler32.zip)

Alle hier veröffentlichten Quelltexte stehen unter der GPLv3-Lizenz. Sollten Sie eine andere Lizenz benötigen, zögern Sie nicht, den Entwickler dieses Projektes zu kontaktieren.

Kontakt





Datenschutzerklärung
Für die korrekte Funktionsweise dieses Kontaktformulars müssen die von Ihnen eingegebenen personenbezogenen Daten an den Betreiber dieser Webseite übermittelt werden. Durch Verwendung des Kontaktformulars stimmen Sie der Übermittlung und Speicherung der von Ihnen eingegebenen personenbezogenen Daten zu. Die Daten werden verwendet, um auf Ihre Kontaktanfrage reagieren zu können.

Der Versand ist fehlgeschlagen!
Der Versand war erfolgreich!

Pflichtfelder sind mit * markiert.