воскресенье, 4 июля 2021 г.

KeyKeeper - хранитель паролей для истинного параноика!


Почему именно наше устройство обеспечит сохранность Ваших паролей?

01 / Пароль от ваших данных не знает даже хранитель
Логины и пароли хранятся в устройстве в защищённом виде, при этом даже хранитель не знает правильный мастер-пароль от Ваших данных. Можно ввести любой мастер-пароль и хранитель выведет вам хранящиеся пароли, но расшифрованные неправильно, фактически они представляют случайный набор символов. При внешней угрозе вводите любой мастер-пароль, никто сможет понять, что он неправильный. Злоумышленник также не сможет получить его, взломав флеш-память устройства

02 / Максимальная надёжность от всех видов атак
Мы позаботились о сохранности Ваших паролей, защитив их многоуровневым шифрованием, с использованием нескольких алгоритмов, включая AES. Все данные не только хранятся, но и передаются, обрабатываются в защищённом виде. При необходимости Вы сможете экспортировать пароли в открытом виде в обычный текстовый файл для резервирования в стороннем криптоконтейнере

03 / Универсальность
KeyKeeper работает с популярными операционными системами Windows и Linux. Поддерживаются специальные режимы для ssh-сессий, linux-терминала, учитываются особенности популярных браузеров, таких как Chrome, Opera, Firefох. C точки зрения компьютера KeyKeeper - обычная USB-клавиатура, поэтому можно входить даже в BIOS/UEFI

04 / Хранитель похож на флешку, но вовсе ей не является
С виду хранитель похож на обычную USB-флешку, поэтому злоумышленник вряд ли распознает, что это защищённый хранитель паролей. KeyKeeper не определяется операционной системой как носитель информации, поэтому вирусы направленные на поражение носителей информации не способны поразить хранителя. Они не понимают что в "клавиатуре" могут храниться данные

05 / Практически вечный храниетель информации
Память KeyKeeper рассчитана на 3 млн циклов записи. Это значительно больше чем на любых USB-флешках, в них предусмотрено обычно от 10 до 100 тысяч циклов записи. Хранитель крайне устойчив к перебоям в питании, поэтому можно смело выдергивать его из порта в любой момент и не беспокоиться что пароли могут быть повреждены

06 / Встроенная защита от кейлоггеров
При вводе паролей на формы ввода используются специальные режимы перемешивания (быстрые хаотичные перемещения курсора, удаление и повторный ввод других символов). В итоге Ваш пароль будет введен верно, но кейлоггер не сообразит, что было введено

07 / Удобный менеджер паролей
Специальная утилита обеспечивает возможность добавления, редактирования базы паролей на устройстве, резервного копирования в открытом и защищенном форматах, изменения настроек ввода под разные типы аккаунтов. Есть специальные настройки для пользователей ноутбуков, на клавиатуре которых могут быть не все клавиши






понедельник, 6 июля 2020 г.

NeyroGamer 2

Всем привет, с вами Платон из команды "Карандаш и Самоделкин". Лето идёт полным ходом и наша команда не сидит без дела. Сегодня я готов представить вам продолжение проекта NeyroGamer, в котором я создам нейронную сеть, которая будет учиться  играть в видео игры.

Я всё глубже изучаю нейронные сети, и зачастую пишу код без использования библиотек с готовыми методами и инструментами для создания алгоритмов машинного обучения. Это связанно с желанием узнать, что находится «под капотом» у таких библиотек как Keras и TensorFlow. Однако алгоритм обратного распространения ошибки кажется мне несколько сложным, поэтому в NeyroGamer нейросети выступают в качестве особей генетического алгоритма. В сегодняшнем проекте я написал нейронную сеть с краткосрочной памятью с нуля, используя лишь стандартные библиотеки и NumPy.

В качестве игры, в которую будет учится играть мой алгоритм, снова выступит Nigel Mansell's World Championship Racing с платформы Sega Genesis. Так как я использую генетический алгоритм, использование эмулятора консоли и ретро игра дает мне следующие преимущества:

  •     Загрузка состояния с контрольной точки. Каждая особь начинает гонку со старта. 
  •     Простая графика для разбора OpenCV

В первой части проекта, я опирался на несколько моментов дороги, взятых OpenCV на разной высоте кадра. Такой подход казался мне более верным, в нем нейронной сети подавались предобработанные моментами данные. После многих поколений эволюции такой подход позволял обучать нейронную сеть, но процесс был очень долгий и после достижения N-ого уровня мастерства алгоритм переставал учится, «упираясь в потолок», так как не учитывал многие нюансы трассы - столбы, мосты, положение соперников друг относительно друга.

Во второй части проекта я пошел другим путем. На вход нейронным сетям особей теперь подается изображение нижний части экрана (машина и дорога без показаний приборов, спидометра, коробки передач и миникарты) в виде уменьшенного полноцветного битмапа. После нескольких экспериментов было выбрано разрешение 64х16. При увеличении количества точек сильно растёт количество нейронов, что приводит к медленной работе алгоритма. На картинке с меньшим количеством точек не хватает данных.

 
32х8

64х16

Такой метод оказался намного лучше и обучение пошло значительно быстрее. Правда из-за того, что нейронная сеть очень сильно выросла (3000+ входов), пришлось заняться оптимизацией. Весь алгоритм обучения я переписал на NumPy. Самое «медленное» место в старом алгоритме оказалось в методе «предсказания»(использования) нейронной сети из-за «бега» циклом по 2м матрицам. После оптимизации этого места FPS вырос в 100 раз, с 6 до 600. Вместе с переработкой всего кода и его оптимизацией, была дополнена модель нейронной сети. Была добавлена краткосрочная память, то есть теперь я использую LSTM-сеть . 

С помощью моментов  на кадре выделяется данные о скорости (вырезается полоса с показаниями передачи и по ней берётся красный момент). Эти данные показывают текущую скорость — показатель по которому сортировались нейронные сети.

  

Каждая из особей «загружается» с контрольной точки (на старте гонки) и тестируется в периоде N-ого времени. В каждый «тик» особи прибавляется количество очков в зависимости от её скорости. Таким образом переходить в следующее поколение будут самые быстрые особи. После тестирование всех особей происходит сортировка и скрещивание, после чего новое поколение особей заново тестируется. После каждых 5 поколений все особи сохраняются в файл, что бы обучение можно было продолжить позже.


Вначале своего обучения, алгоритм ведёт себя крайне случайно. Однако после первых 2-3х поколений особи случайно нажавшие на газ начинают вести за собой остальных. Тут начинается 2й этап обучения - «Зажимай, авось получится!». Нейронные сети научившись давить на газ начинают зажимать случайные кнопки. Кто-то едет прямо, а кто-то постоянно улетает в правое ограждение. Получается довольно смешно. Далее алгоритм находит «середину» и обучается уже более сложным вещам - держатся по центру дороги, правильно входить в поворот, обгонять своих противников.

Автор - Платон, 14 лет ("Карандаш и Самоделкин")

вторник, 12 мая 2020 г.

Нейронная сеть учится играть в Lunar Lander

Lunar Lander — аркадная игра, выпущенная Atari, Inc. в 1979 году. Цель игры — управлять посадочным лунным модулем, чтобы произвести мягкую посадку на поверхность Луны. На посадочный модуль действует гравитация и инерция, кроме того количество топлива в нем ограничено. Управление производится 4 кнопками: наклоны посадочного модуля влево/вправо, управление тягой двигателя +/-.


Задача, решаемая в рамках данного проекта - разработать самообучающуюся нейронную сеть, способную посадить на поверхность Луны посадочный модуль, выбрав при этом для этого пригодную для посадки площадку. Для управления посадочным модулем нейронная сеть должна "нажимать" кнопки на виртуальной клавиатуре, так как это делал бы реальный игрок.



Для ускорения обучения нейронной сети используется генетический алгоритм, в каждом поколении запускается 10 ее копий. Нейронная сеть имеет 2 скрытых слоя. Проект разрабатывается на Python, никакие дополнительные нейросетевые фреймворки/модули не используются. Автор - Тихон, 13 лет ("Карандаш и Самоделкин")
Исходный код



воскресенье, 10 мая 2020 г.

Звездолеты 3D

Продолжение игры про звездолеты, теперь в 3D. Управление с помощью наэкранных кнопок. В демо 1 уровень, есть звуковые эффекты и музыка.



Язык C#, среда разработки - Unity.
Автор - Тихон, 13 лет ("Карандаш и Самоделкин")
Исходный код здесь

суббота, 9 мая 2020 г.

Звездолеты

Игра про звездолеты. Несколько уровней, разные типы врагов и оружия. Подбираемые боеприпасы и "аптечки". Управление движением - на гироскопе/акселерометре телефона, выстрелы разным типом оружия - тапы в разных зонах экрана. Есть звуковые эффекты и миникарта. Написана без использования готовых библиотек и конструкторов.


Язык Java, среда разработки - Android Studio.
Автор - Тихон, 13 лет ("Карандаш и Самоделкин")
Исходный код здесь



Самое популярное