DIGISPARK ehk programmeeritav Arduinoga sarnane USB seade
DIGISPARK on Väike ja odav kuid võimekas Arduinoga ühilduv arendusplaat
Programmeerimiskeskkond: Arduino IDE (C-keel), vajab eraldi seadistust
Vaba tarkvara ja vaba riistvara (kogu tarkvara, skeemid jne on avalikud)
Protsessor: Attiny85 (16,5 MHz, 8 bit, 8 KB flash, low power)
Sisend-väljund: 6 digitaalset I/O viiku
4 Analoog sisendit
Tööpinge: 5V
Väline toide: 7-35V
Mõõtmed: 1,8 x 2,6 cm
Plussid: Väike, odav, töötab usb seadmena (hiir, klaviatuur), enamik arduino sensoritest ja riistvarast on ühildatav
Puudused: vajab eraldi laiendusplaate
Hind: 2 EUR (Hiina kloon)
DigiSpark kasutamine:
DigiSpark on Arduino derivaat ja selle kasutamine on veidi erinev klassikalise Arduino-ga võrreldes. Esimese asjana nagu ka Arduinoga tuleb arvutisse paigaldada Arduino IDE, mille saab alla laadida http://www.arduino.cc lehelt. Erinevalt tavalisest Arduino/Genuino-st tuleb lisaks paigaldamisele ka enne DigiSpark kasutamist Arduino IDE-le lisada DigiSparki tugi. Vastava juhendi leiab lehelt. http://digistump.com/wiki/digispark/tutorials/connecting
Pärast edukat DigiSpark installeerimist saate seda testida järgmise koodiga. Pööra tähelepanu asjaolule et erinevalt tavalisest Arduinost tuleb DigiSPark ühendada alles pärast programm nupu vajutamist 60s jooksul. Antud nõue tuleneb asjaolust et seadme ühendamisel arvutiga (toitega) on seade algselt programmeerimise resiimis ja pärast 5s möödumist tuntakse see ära kui USB seade.
// the setup routine runs once when you press reset:
void setup() {
// initialize the digital pin as an output.
pinMode(0, OUTPUT); //LED on Model B
pinMode(1, OUTPUT); //LED on Model A
}
// the loop routine runs over and over again forever:
void loop() {
digitalWrite(0, HIGH); // turn the LED on (HIGH is the voltage level)
digitalWrite(1, HIGH);
delay(1000); // wait for a second
digitalWrite(0, LOW); // turn the LED off by making the voltage LOW
digitalWrite(1, LOW);
delay(1000); // wait for a second
}
Väga lõbus harjutus on seadistada DigiSpark käituma klaviatuuri või hiirena. Vastavalt
File → Examples → DigisparkKeyboard → Keyboard File → Examples → DigisparkMouse → Mouse
Kui nüüd seade ühendada arvuti taha siis hakkab 5 sekundi pärast kas hiir liikuma või tekib ekraanile tekst nagu keegi oleks klaviatuuril klahve vajutanud.
DigiSpark klaviatuuriga saab mitmeid põnevaid klahvikombinatsioone pahaaimamatu kasutaja arvutisse saata:
#include "DigiKeyboard.h"
#define KEY_UP_ARROW 0x52
#define KEY_DOWN_ARROW 0x51
#define KEY_LEFT_ARROW 0x50
#define KEY_RIGHT_ARROW 0x4F
#define KEY_PRINT_SCR 70
#define KEY_TAB 43
void setup() {
randomSeed(analogRead(0)); //generate better random
}
void loop() {
DigiKeyboard.update();
DigiKeyboard.sendKeyStroke(0); //this is generally not necessary but with some older systems it seems to prevent missing the first character after a delay
switch (random(10)) {
case 0: // Minimize all windows
DigiKeyboard.sendKeyStroke(KEY_M, MOD_GUI_LEFT);
break;
case 1: // Lock screen
DigiKeyboard.sendKeyStroke(KEY_L, MOD_GUI_LEFT);
break;
case 2: // Minimize current window
DigiKeyboard.sendKeyStroke(KEY_DOWN_ARROW, MOD_GUI_LEFT);
break;
case 3: // Flip screen
DigiKeyboard.sendKeyStroke(KEY_DOWN_ARROW, MOD_CONTROL_LEFT + MOD_ALT_LEFT);
break;
case 4: // Print Error Message
DigiKeyboard.sendKeyStroke(KEY_R, MOD_GUI_LEFT);
delay(200);
DigiKeyboard.print("msg ");
DigiKeyboard.sendKeyStroke(85);
DigiKeyboard.println("Tere, sinu arvutis on viirus, lahti saamiseks kanna raha 00120020304945093");
break;
case 5:// Print Error Message
DigiKeyboard.sendKeyStroke(KEY_R, MOD_GUI_LEFT);
delay(200);
DigiKeyboard.print("msg ");
DigiKeyboard.sendKeyStroke(85);
DigiKeyboard.println(" APRILL, sind on just trollitud!");
break;
case 6: // Invert Windows Colors
DigiKeyboard.sendKeyStroke(KEY_PRINT_SCR, MOD_SHIFT_LEFT + MOD_ALT_LEFT);
break;
case 7: // Open web page
DigiKeyboard.sendKeyStroke(KEY_R, MOD_GUI_LEFT);
delay(200);
DigiKeyboard.println("chrome www.cs.ut.ee");
break;
case 8: // Open web page
DigiKeyboard.sendKeyStroke(KEY_R, MOD_GUI_LEFT);
delay(200);
DigiKeyboard.println("chrome");
delay(1000);
DigiKeyboard.println("programmeerimine.ut.ee");
break;
case 9: // Change active window
DigiKeyboard.sendKeyPress(KEY_TAB, MOD_ALT_LEFT);
DigiKeyboard.delay(1000);
DigiKeyboard.sendKeyStroke(KEY_TAB, MOD_ALT_LEFT);
break;
default:
break;
}
delay(10000);
}
Kuidas tekitada endale tagauks Linux masinasse sisse saamiseks...
https://nox-sec.de/2017/02/08/reverse-shell-digispark-instead-of-rubber-ducky/