[{{mminutes}}:{{sseconds}}] X
Пользователь приглашает вас присоединиться к открытой игре игре с друзьями .

Форум «Программное обеспечение» / Какой я хотел бы видеть альтернативу TS

MMMAAANNN Сообщение #1 30 ноября 2014 в 21:36
Супермен
36
Поскольку дело сдвинулось с мертвой точки и стали появляться альтернативы старому доброму инструменту Typing Statistics, который, безусловно, очень полезен, но застыл на месте и эволюционировать перестал, хочу изложить свое видение принципов, которым должен удовлетворять альтернативный инструмент.

1) Open source, чтобы был возможен свободный аудит.
2) Шифрование для защиты от подделки клавограмм.
3) Получение защитного шифра-ключа с сервера клавогонок во время заезда + сохранение клавограммы заезда на сервер непосредственно после окончания заезда.
4) Модульность - (консольный?) кейлоггер отдельно, статистический анализатор отдельно, GUI отдельно, чтобы каждый модуль занимался своим делом и над каждым могла работать своя команда разработчиков (если таковая соберется).
5) Возможно лучше создать новый формат клавограмм с учетом требований к динамическому получению ключей шифрования с сервера, но все же должна быть возможность экспорта в старый формат tsf.
6) Регистрация доступных определению особенностей набора - т. е. пришел ли символ непосредственно с клавиатуры или подставлен средствами автозамен типа AutoHotKey.
7) Статистический аппарат должен уметь рассчитывать все те показатели, которые показывает Typing Statistics.
8) По возможности - кроссплатформенность (модульность может облегчить задачу портирования под разные платформы).
Reset82 Сообщение #2 30 ноября 2014 в 21:59
Маньяк
42
3) Получение защитного шифра-ключа с сервера клавогонок во время заезда + сохранение клавограммы заезда на сервер непосредственно после окончания заезда.

Вот это классная идея, и никакого закрытого кода будет ненужно! Но это нужно чтобы разработчики клавогонок подсобили.

Кстати, есть идея, чтобы подкрашивались буквы, в которых критические зазоры, т.е. именно минимальные для ошибок, а не пересекающиеся просто так буквы, как такая мысль?
Последний раз отредактировано 30 ноября 2014 в 22:03 пользователем Reset82
ergozorax Сообщение #4 18 августа 2021 в 11:21
Кибергонщик
1
MMMAAANNN писал(а):
2) Шифрование для защиты от подделки клавограмм.


Можно пожалуйста поподробнее как ты видишь реализацию этого? Я в криптографии немного разбираюсь, и не вижу вообще никакого способа как клавограмму у open-source программы нельзя было бы подделать. Кто должен шифровать? Симметричным или асимметричным способом?

MMMAAANNN писал(а):
3) Получение защитного шифра-ключа с сервера клавогонок во время заезда + сохранение клавограммы заезда на сервер непосредственно после окончания заезда.


Если ты про это, то это не спасёт от подделок, я могу просто скомпилировать программу с другим кодом, чтобы она симулировала нужные нажатия и отправляла это сразу в клавограмму на сервер КГ.

Мне кажется избежать подделки клавограмм невозможно. Сейчас этим никто не занимается, потому что это не нужно. Единственное что остаётся — старая добрая квалификация.
MMMAAANNN Сообщение #5 26 января 2022 в 20:38
Супермен
36
MMMAAANNN писал(а):
2) Шифрование для защиты от подделки клавограмм.

Можно пожалуйста поподробнее как ты видишь реализацию этого? Я в криптографии немного разбираюсь, и не вижу вообще никакого способа как клавограмму у open-source программы нельзя было бы подделать. Кто должен шифровать? Симметричным или асимметричным способом?


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

То есть чтобы нельзя было взять клавограмму кибергонщика и чуть-чуть поправив задержки выдать за свою.
MMMAAANNN Сообщение #6 26 января 2022 в 20:46
Супермен
36
ergozorax писал(а):
3) Получение защитного шифра-ключа с сервера клавогонок во время заезда + сохранение клавограммы заезда на сервер непосредственно после окончания заезда.


Если ты про это, то это не спасёт от подделок, я могу просто скомпилировать программу с другим кодом, чтобы она симулировала нужные нажатия и отправляла это сразу в клавограмму на сервер КГ.

Мне кажется избежать подделки клавограмм невозможно. Сейчас этим никто не занимается, потому что это не нужно. Единственное что остаётся — старая добрая квалификация.


Например, сервер может передавать каждую секунду расшифровку только куска текста. Этот кусок текста будет появляться перед наборщиком. То есть наборщик заранее не знает весь текст, программе приходится его постоянно расшифровывать по мере набора.

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

Вероятно это тоже возможно будет подделать, но все же посложнее, чем просто скопировать текст и автоматически переслать его с нужными паузами между символами.
Последний раз отредактировано 26 января 2022 в 20:47 пользователем MMMAAANNN
Reset82 Сообщение #7 4 февраля 2022 в 21:36
Маньяк
42
Рекомендации выше, уже как я понял, TS не касаются и будет сложно реализовать это на этом сайте. Скорее всего это утопия.
Fenex Сообщение #9 18 мая 2022 в 10:01
Клавомеханик
49
MMMAAANNN писал(а):
Приватный ключ используется только при создании клавограммы и привязан к автору. Публичный ключ позволяет считать зашифрованную клавограмму, но изменить ее не зная приватного ключа не получится.

То есть чтобы нельзя было взять клавограмму кибергонщика и чуть-чуть поправив задержки выдать за свою.


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

Придерживаюсь такого же мнения, что и ergozorax: без закрытого кода цифровую подпись для определения легитимности клавограмм сделать не получится. Плюс к этому, как показывает практика, если кому-то очень-очень захочется, то даже закрытый код не является препятствием при наличии должных навыков.

Однако все эти рассуждения касаются небольшой части функционала ТСки, и в общем-то этот модуль можно вынести в отдельную shared библиотеку, а остальное вполне можно сделать opensource.

Общая архитектура может быть, например, такой:
скрытый текст…

скрытый текст…


На картинке (в нижней части) подгружаемая библиотека *.dll/*.so с торчащим наружу FFI. GUI приложения (верх укартинки) будут выступать в качестве клиентов, общаясь с библиотекой непосредственно через интерфейс FFI, либо через посредников в виде запущенного TCP/HTTP сервера. В последнем случае GUI можно будет сделать как обычное web-приложение (сайт).

Пояснения, касающиеся подгружаемой библиотеки. Должна реализовывать:

  • Логгер (под каждую платформу), перехватывающий все события нажатия клавиш клавиатуры;
  • Хранение всех событий нажатия клавиш. Каждому событию присваивает свой уникальный ID (скорее всего в качестве идентификатора можно применить метку времени самого события);
  • Обработку запросов, поступивших извне (через FFI), в том числе:
    • включать отключать логгер
    • загрузку и сохранение клавограмм
    • свой статус в трее (активен перехват или нет)
    • ограниченное радактирование сохранённых событий, в основном их удаление: частичное или полное (очистка)
    • ...


Отдельно хочу заострить внимание на обеспечение валидности клавограмм в момент сохранения. Обеспечить это можно только если не отдавать наружу зафиксированные события во избежание их изменения извне. То есть не получится возвращать указатель на запрашиваемые события клавиш, все данные придётся копировать в предоставляемый со стороны GUI буффер. Это маленькая, но важная деталь. На практике это означает чуть больше кода и в два раза больше объёма оперативы :)), но скорее всего это несущественно.
Итого, сохранять в файл будет сама библиотека. GUI-клиент передаёт два идентификатора событий (начало и конец клавограммы) и все события в этом промежутке будут отобраны, сериализованы в поток готовых байтов, а также добавлена цифровая подпись.

Между графикой (GUI) и библиотекой есть обширная задача по анализу сырых событий нажатий клавиш. Решение этой задачи можно вынести в отдельный модуль (анализатор), который будет рассчитывать статистику. Тут никаких секретов не требуется, так что он тоже может быть с открытым исходным кодом. И хотя может показаться, что это какая-то простая фигня, на деле это не так. Так как события перехватываются и хранятся сырыми (пусть даже приведённые из нативного представления в какое-то внутреннее кроссплатформнное), они разделяются на три вида: клавиша нажата (pressed), отпущена (released) и автоповтор (repeated). Из этих нативных событий надо определить и объединить два или более в один промежуток:

скрытый текст…


Затем промежутки объединить в блоки набора (это непрерывная печать в течение некоторого времени, ТС отделяет их символом ), внутри которых также корректно определить ошибки и исправления, в том числе с использованием Ctrl+Backspace и другими комбинациями. И наложения посчитать )

скрытый текст…
Последний раз отредактировано 18 мая 2022 в 11:24 модератором Fenex
_GRISHA_ Сообщение #10 19 мая 2022 в 13:23
Новичок
1
На сайте … статистика по скорости (мгновенная и средняя скорость на каждом участке текста) встроена прямо в заезд. И брутто
HelixOfTheEnd Сообщение #11 20 мая 2022 в 02:42
Организатор событий
1
_GRISHA_ писал(а):
статистика по скорости (мгновенная и средняя скорость на каждом участке текста) встроена прямо в заезд. И брутто

это, конечно, хорошо, но:
1) нельзя выделить кусок текста(и следовательно нельзя детально анализировать набор);
2) брутто показывается неправильное(и с ним часто косяки, иногда оно ниже нетто);
3) нет аритмии;
4) нет никакой информации по задержкам;
5) нет никакой информации по паузам(разве что скорость как ориентир);
6) мгновенная скорость - это вообще что-то странное и непонятно зачем добавленное, потому что показывает среднюю скорость за 15 символов(и следовательно проседает на ошибках); а пользовательское значение никак не выставить/выбрать кусок другой длины пост-фактум тоже нельзя;
к тому же, график можно подделать читами под реалистичный (было уже); никакой детекции набора программой на сайте нет.

графики - это хорошо, но заменой ТС они не являются. и в принципе сомневаюсь, что в сайт можно встроить рабочую ТСку без кучи данных в базе данных и в пользовательском интерфейсе.
Последний раз отредактировано 1 июня 2022 в 20:38 модератором Fenex

Чтобы писать в форуме, нужно зарегистрироваться.


Связаться
Выделить
Выделите фрагменты страницы, относящиеся к вашему сообщению
Скрыть сведения
Скрыть всю личную информацию
Отмена