Просмотров-36
0

Как учесть переключение регистра при обработке событий от клавиатуры?

Обработка события переключения регистра лежит в основе программы

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

Программа определения параметров клавиатурного почерка при наличии переключения регистра также строится на основе обработки события(обработчика событий). Такие программы, создаваемые под операционную систему Windows, в настоящее время очень распространены. Далее рассматривается какие подводные камни при этом могут возникать.

Известно, что для переключения регистра используется клавиша Shift, для которой также появляются события KeyDown и KeyUp. Обработка события переключения регистра лежит в основе данной процедуры.

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

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

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

Обработка события  переключения регистра- неверный результат

Из рисунка видно, второе значение времени удержания клавиши и первое значение времени паузы между нажатиями сильно искажены. Это обусловлено тем, что второй элемент массива mTdn – соответствующий нажатию первой буквы — равен нулю. Тогда время удержания, вычисляемое по известной формуле будет равно(с учетом перевода в микросекунды) очень большим:


Tpr= mTup[1] — mTdn[1] =(43715,399844-0)Е6 = 4,372Е11

Аналогично для времени паузы между нажатиями клавиш.

Tps= mTdn[2] — mTup[1] =( 0-43715,399844)Е6 = -4,372Е11

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

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

Требуется обработка события переключения регистра

Для исключения искажений в измерениях можно перехватывать нажатие клавиши Shift и выходить из обработчика события. Это можно сделать дополнив код обработчика события следующим оператором if (Key=VK_SHIFT) then exit;

Проверим на практике. Снова выполним тот же эксперимент и зафиксируем результаты обработки событий нажатия и отпускания клавиш.

Обработка события переключения регистра - правильные вычисления

Как видно результаты получены вполне корректные. Пропал второй столбец, который относится к клавише Shift. Программа работает правильно. Обработка событий нажатия и отпускания клавиш происходит корректно. Таким образом, обработка события переключения регистра, устраняет проблему первоначальной программы  и тем самым повышает достоверность аутентификации по клавиатурному почерку.

Если увидели не точности, прошу прокомментировать.

Дистанционное обучение
Обучение программированию
Проектирование информационных систем
 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *