Arvutiteaduse instituut
  1. Esileht
  2. Programmeerimine lastele ja noortele
EN
Logi sisse

Programmeerimine lastele ja noortele

  • PEALEHT
  • TUNNIKAVAD
  • HUVILAAGRID

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/

  • Arvutiteaduse instituut
  • Loodus- ja täppisteaduste valdkond
  • Tartu Ülikool
Tehniliste probleemide või küsimuste korral kirjuta:

Kursuse sisu ja korralduslike küsimustega pöörduge kursuse korraldajate poole.
Õppematerjalide varalised autoriõigused kuuluvad Tartu Ülikoolile. Õppematerjalide kasutamine on lubatud autoriõiguse seaduses ettenähtud teose vaba kasutamise eesmärkidel ja tingimustel. Õppematerjalide kasutamisel on kasutaja kohustatud viitama õppematerjalide autorile.
Õppematerjalide kasutamine muudel eesmärkidel on lubatud ainult Tartu Ülikooli eelneval kirjalikul nõusolekul.
Courses’i keskkonna kasutustingimused