• Начинающий хакер, спасибо что зашёл к нам! Для полного удобства рекомендуем Вам сразу же зарегистрироваться. Помните, необходимо придумать сложный пароль к своему логину, в котором будут присутствовать цифры, а так же символы. После регистрации вы сможете пользоваться чатом. Так же не забудьте активировать аккаунт через письмо, высланное вам на почту ! Администрация заботится о каждом из Вас...
  • Для просмотра разделов из категории Private Informations & Programms необходимо купить

[Асгард — С первых рук] Самодельный апаратный менеджер паролей

Статус
В этой теме нельзя размещать новые ответы.

T0pDro4eR

Топовый

T0pDro4eR

Топовый
Регистрация
11 Фев 2018
Сообщения
404
Реакции
255
Репутация
0
Баллы
3
Доброго всем времени суток!
В данной статье мы самостоятельно сделаем свой собственный аппаратный менеджер паролей на платформе Arduino и в среде разработке Borland Delphi 7.

Внимание! В данной статье будет рассмотрен простой пример. Никаких хитрых и умных алгоритмов коммуникации рассматривать не будем. Это пример, основа, для тех кто желает что-то все таки сделать на ардуино. Возможно в следующих статьях мы переделаем эту игрушку в боевой вариант.

Что это собственно такое, аппаратный менеджер паролей?
Arduino IDE

Для начала, собственно, разберем схему работы.

*Да, не очень то понятно...

Теперь прокомментирую эту убогую схему.
  • Для записи паролей на хранение мы будем просто отсылать их в открытом(!) виде через COM порт.
  • Для получения пароля мы будем отсылать в открытом(!) виде ID записи нужного нам пароля. Arduino получит ID, опросит EEPROM, найдет нужную нам запись и через заюзанную нами библиотеку Keyboard.h сэмулирует нажатие клавиш на клавиатуре, тем самым введя нужный нам пароль.
Обращаю ваше внимание, такая реализация никак не защищена от перехвата кейлоггерами или мониторинга передачи данных через COM. Что тут говорить, мы можем просто отправить в тот же ком порт ид записи и получить пароль.
) Я это к тому, что эти моменты очень важны и для нормального менеджера такая реализация недопустима.


Приступим к написанию кода. Я начну с прошивки, буду выкладывать по куску кода и комментировать.
[C++] APM - Pastebin.com


На очереди у нас написание Delphi кода и собственно создание какого-то интерфейса для работы со всем этим.
Тут рассказывать особо нечего, рассмотрим только основные моменты.
Кидаем на форум компонент ListBox для последующего удобного выбора аккаунта, компонент ComPort, кнопку и поле для поиска. У меня получилось как-то так:

На картинке видно наглядную карту ячеек памяти. Первые 4 я выделил для хранения адреса следующей свободной ячейки (переменная currentNum). Начиная с 5-ой ячейки мы видим начало записи кодов символов. В качестве символа окончания строки (терминатор строки) я выбрал использовать единицу. Таким образом, для поиска нужного нам пароля по ИД нам фактически придется пройтись и посчитать количество единиц, а затем получить нужную строку. Ниже будет приведен код такой реализации.

Запись в следующую EEPROM ячейку. (с обновлением значения currentNum дикий говнокод, как говориться "my eyes are bleeding". Не советую так никогда делать
)
Код:
// Writing EEPROM string
if (command.length() + currentNum < 1020)
{
for (int i = 0; i < command.length(); i++) {
EEPROM[currentNum + i] = int(command);
}
EEPROM[command.length() + currentNum] = 1; // String terminator

currentNum = currentNum + command.length()+1;
if (currentNum > 255)
{
if (currentNum > 510) {
if (currentNum > 765) {
EEPROM[0] = 255;
EEPROM[1] = 255;
EEPROM[2] = 255;
EEPROM[3] = currentNum - 765;
} else {
EEPROM[0] = 255;
EEPROM[1] = 255;
EEPROM[2] = currentNum - 510;
}
} else {
EEPROM[0] = 255;
EEPROM[1] = currentNum - 255;
}
} else {
EEPROM[0] = currentNum;
}
Serial.println(1);
} else {
Serial.println(0);
}
Получение пароля по его ID в памяти:
Код:
String getById(int index)
{
String result = "";
int tmpID = 0;
for (int i = 4; i < currentNum; i++)
{
if (tmpID == index)
{
result.concat((char)EEPROM);
if (EEPROM == 1) break;
}
else
{
if (EEPROM == 1) tmpID++;
}
}
return result;
}
* Как я уже говорил, здесь мы подсчитываем количество терминаторов строки и таким образом получаем адрес начала нужного нам пароля...

По большому счету с прошивкой у нас все. Вот полный код:

На очереди у нас написание Delphi кода и собственно создание какого-то интерфейса для работы со всем этим.
Тут рассказывать особо нечего, рассмотрим только основные моменты.
Кидаем на форум компонент ListBox для последующего удобного выбора аккаунта, компонент ComPort, кнопку и поле для поиска. У меня получилось как-то так:


Форма добавления аккаунта:



Обработчик кнопки "Добавить аккаунт":
v0.0.1.rar (663.56KB) - SendSpace.com

Внимание. Я использовал дополнительные компоненты CoolTrayIcon, AlphaSkins, ComPort. Они нужны для открытия проекта.

Всем спасибо за внимание и трату своего времени для чтения этого бреда
 
Статус
В этой теме нельзя размещать новые ответы.
Сверху Снизу