Для правильного вопроса надо знать половину ответа
$(this).val($(this).val().substr(0, maxLength));
Уберите эту строку. Вы полностью переписываете значение поля, разные браузеры могут вести себя при этом по разному. Кроме того, уже задан атрибут maxlength и такое дополнительное ограничение смысла не имеет.
Кстати, кроме keyup надо обрабатывать ещё paste и cut.
Для правильного вопроса надо знать половину ответа
Открываете документацию, ищете описание api. Если его нету - открываете web-интерфейс устройства в браузере, нажимаете F12, вкладка "Сеть". Нажимаете кнопку, смотрите какой запрос уходит на устройство. Ждёте обновления цифр, смотрите, каким запросом это было сделано и в каком виде ответ пришёл. Если в запросе используются куки, смотрите где и какими запросами они ставились.
Для правильного вопроса надо знать половину ответа
А в чём разница, перехватить открытый пароль или его хэш? Всё равно можно то же самое послать серверу снова.
Если уж хочется поизвращаться - для каждого входа на сервере генерите пару ключей RSA, пересылаете публичный клиенту, он шифрует пароль этим ключом, сервер расшифровывает его приватным ключом. При следующем входе генерируется новая пара и т.д. Правда всё равно остаётся уязвимость MitM, но от неё вообще мало что спасает.