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/