lolPassButton или изучаем Digispark ATtiny85

6980

Приветствую вас уважаемые радиолюбители.

Сегодня я поведаю вам историю о том, как одна бредовая идея может привести к исследованию целого перечня замечательных вещей.

Эта история началась в аэропорту, когда в очередной раз меня попросили включить ноутбук. Но в этот раз все было по особенному. Досмоторщики потребовали показать рабочий стол. Мне скрывать особо не чего, но я все же спросил зачем. Оветили сухо и с раздражением — такие правила. На самом деле, мне просто не хотелось вводить пароль прилюдно. Но пришлось прикрывая курткой наощупь вводить заветные циферки. Мне повезло и с третьей попытки я вошел в систему. Иии на этом все — меня пропустили.

Именно тогда у меня и появилась идея сделать устройство в виде гномика (флэшки) которое бы по нажатию кнопки вводило бы мой пароль. Тогда мне это казалось хорошей идей. Об очевидных минусах у меня даже мыслей не было. Я чувствовал себя инноватором и чуть ли не гением. На тот момент я знал о существовании Digispark на базе микроконтроллера ATtiny85. Мне всегда казалось что эти платы имеют слишком маленький функционал за свои деньги. Уж лучше купить Arduino. Как-же я заблуждался.

Ладно, давайте я буду стараться быть последовательным в своем повествовании. Пара платок Digispark были куплены в местном магазине.

Микроконтроллер ATtiny85 вполне функционален, в чем можно убедиться в ходе изучения следующих его характеристик и возможностей:

  • для программного кода предусмотрено 8 КБ памяти;

  • для исполняемого кода зарезервировано 512Б;

  • наличие 6 цифровых пинов;

  • два выхода PWM и 4 АDC;

  • частота от 1 до 20 МГц.

На плате Digispark есть линейный стабилизатор напряжения, который позволяет питать плату напряжением вплоть до 35V. Есть один светодиод и хитрая схема которая позволяет прошивать микроконтроллер без программатора, просто подключив его в USB порт компьютера. USB 3.0 и выше, не поддерживается.

Прошивка была «написана» примерно за пять минут на базе примера из библиотеки. Единственное что вызвало трудности — это непосредственно сама прошивка. Сначала я искал Digispark в библиотеках вместо менеджера плат. А вторая не очевидная для меня особенность — то что сначала нужно нажимать кнопку прошивки в Arduino IDE, а потом вставлять плату в USB.

#include "DigiKeyboard.h"

const int vccPin = 2;  
const int buttonPin = 0;     
const int ledPin =  1;  
int buttonState = 0; 

void setup() {
pinMode(vccPin, OUTPUT);
pinMode(ledPin, OUTPUT);
pinMode(buttonPin, INPUT);

digitalWrite(vccPin,LOW);
}


void loop() {
  buttonState = digitalRead(buttonPin);
  if (buttonState == HIGH) {
    DigiKeyboard.delay(500);
    DigiKeyboard.sendKeyStroke(0);
    DigiKeyboard.print("your_password");
    digitalWrite(ledPin, HIGH);
    delay(3000);   
  } else {
    digitalWrite(ledPin, LOW);
    delay(1000);   
  }
 
}

В кратце о настройке компьютера для прошивки. Прежде всего у вас должна быть установлена Arduino IDE. Если нет идем по адресу arduino.cc, скачиваем последнюю версию и устанавливаем на свой компьютер.

Далее Идем на GitHub и скачиваем актуальную версию драйвера, архив с названием Digistump.Drivers.zip , после чего извлекаем содержимое архива в отдельную папку и запускаем Install Drivers.exe.

https://github.com/digistump/DigistumpArduino/releases

Заключительным этапом настройки будет установка специального плагина отDigistump.

Для установки плагина переходим в Файл Настройки и вписываем в поле “Дополнительные ссылки для менеджера плат” следующую строку: http://digistump.com/package_digistump_index.json, после чего нажимаем кнопку “применить”. Произойдет установка плагина, который позволит нам установить плату в систему.

Затем необходимо перейти в Меню Инструменты Выбор платы Менеджер плат, после чего пройти по простой цепочке: Type – Contributed (по-русски пункт называется “внесены”) – ищем там Digistump AVR Boards и инсталлируем.

После завершения установки в менеджере плат стоит выбрать плату Digispark (Default — 16,5mhz), которую советуют для начинающих схемотехников.

При работе с ATtiny85 20 SU нет необходимости подключать микроконтроллер к компьютеру до загрузки прошивки. Важно дождаться приглашения к подключению платы от среды Anduino, после чего приступать к работе, не забывая о существовании таймаута в 60 сек.

Я назвал свое устройство lolPassButton. Моя прошивка лежит по ссылке в описании.

Подходящий корпус я нашел на сайте thingiverse.com. Пришлось его немного доработать — выдавить область для кнопки. Напечатал его на 3D принтере TEVO michelangelo.

Сборка устройства сводится в припаивании кнопки к выводам P0 и P2 и размещении всего этого в корпусе. Готовое устройство можно подключить к любому компьютеру с любой операционной системой и по нажатию кнопки будет введен ваш пароль, который вы задали при прошивке.

Отдельно стоит поговорить о крайней небезопасности этого устройства. Теперь любой кто завладеет этой флешкой сможет узнать ваш пароль. Достаточно вставить ее в компьютер, открыть любой текстовый редактор и, нажав кнопку увидеть ваш пароль.

Конечно я бы не стал делать видео только лишь ради этого странног девайса. Пока искал корпус нашел много альтернативных и очень интересных применений для этой маленькой и простенькой платки. Расскажу о парочке из них. Думаю вас это заинтересует.

1. В оригинале называется Digispark usb volume knob SR в простонародие — цифровой регулятор громкости для компьютера. Т.к. наш Digispark умет притворяться HID устройством (мышкой, клавиаткрой и т. д.) то просто подключив энкодер мы получим оригинальный и полезный девайс.

Подключение:

  • P0 - DT

  • P1 - SW

  • P2 – CLK

  • 5V -

  • GND – GND

Для прошивки вам понадобится скачать и установить в Arduino IDE библиотеку

https://github.com/adafruit/Adafruit-Trinket-USB

и загрузить в микроконтроллер скетч из примера TrinketHidComboPlus.

Корпус я взял по ссылке (https://www.thingiverse.com/thing:2781044) и как обчно распечатал на 3D принтере. Сборка устройства тоже достаточно простая: подпаиваем 5 провдками энкодер к Digispark. Ах да, еще понадобится USB провод. Я взял от сломанной мышки и припаял его прямо на USB разъем нашей чудо платки.

2. Я открыл для себя так называемые BADUSB. Это такая флешка, которая взламывет компьютер жертвы при вставлении в USB порт или работать в качестве жучка. К сожалению встроенной памяти в нашем Digispark очень мало и хакерские возможности его сильно ограничены. Я нашел множество разновидносте подобных устройств на Aliexpress. Некоторые имеют на борту Wi-Fi модуль или слот для карты памяти, а иногда и то и друге. Объединяет их одно: более мощный микроконтроллер ATMEGA32U4 , который существенно расширяет возможности этих девайсов. Я заказал некоторые из них, чтобы сделать сравинтельный обзор в одном из будущих видосов.

Выводы по нашему сегодняшнему экспонату. За свои деньги интересная штуковина, которое позволит вам создать уникальный инструмент управления компьютером. На более серьезные задчи у него маловато ресурсов.