Ваш сканер не отправляет мусор. Это совершенно обычные отчеты о вводе для обычного USB HID-клавиатуры с обычным 8 -байтовым дескриптором отчета «загрузки».
Расшифровав их, видно, что ваш сканер не отправляет ключи для «S», «I» и т. д. напрямую. Скорее, это имитация ввода их с помощью и #x2387; Клавиша Alt . При этом он делает несколько довольно неверных предположений об операционной системе, любое из которых или все они могут легко оказаться ошибочными.
Например:
04 00 62 60 5b 00 00 00представляет собой одновременное нажатие клавиш с кодами использования USB HID
E2
, 62
, 60
и 5B
. E2
, 62
, 60
и 5B
— коды использования USB HID для и #x2387; Левый Alt , Ins/0 , ↑/8 и PgDn/3 . 00 00 00 00 00 00 00 00указывает, что все эти клавиши были отпущены.
Остальное действительно декодируется как «I», «P», «-», «4», «-» и «1», набранные таким образом, как и #. х2387; Alt плюс три десятичных числа. (Два последних входных отчета — это пресса и выпуск и #x2ba0; Возврат .)
Здесь вы можете увидеть несколько неверных предположений.
E6
(закодирован как 40
в первом байте входного отчета ), а не E2
. Действительно, ваша текущая операционная система, драйвер клавиатуры и раскладка клавиатуры могут вообще не поддерживать ввод символов с помощью таких кодов. (Например, эмулятор терминала ядра FreeBSD syscons
. Как, впрочем, и Microsoft Windows. Но набор инструментов nosh console-fb-realizer
, графические интерфейсы, такие как LXDE и XFCE4 , и кажется все доступные графические интерфейсы в Ubuntu ; не надо.)
В некоторых сканерах этот материал можно модифицировать, сканируя специальные «управляющие» штрих-коды. Здесь, наверное, так и произошло. Вы отсканировали «управляющий» штрих-код, который переключил сканер в рабочий режим, с которым не справляются ваша операционная система, драйвер клавиатуры и раскладка клавиатуры. В этом случае вам нужно обратиться к руководству вашего сканера и найти управляющий код, который отключает поведение.
Например :Для сканера NLS -серии HR32 это результат перевода сканера в режим «ALT+Клавиатура 2» или «ALT+Клавиатура режим 3», и вам потребуется переключиться обратно в «отключить ALT+Клавиатура» или «ALT+Клавиатура в режиме 1».
awk 'BEGIN{ OFS=FS=":" }
{
if (NR==FNR) {
pwd[$1]=$2
} else {
if ($2 ~ /^!/ && $1 in pwd) $2=pwd[$1]
print
}
}' shadowA shadowB
Когда первый файл shadowA
будет обработан (NR==FNR
), сохраните хэш пароля в массиве pwd
с именем пользователя в качестве индекса.
Когда второй файл shadowB
обрабатывается(else
)и второе поле начинается с!
(может быть !
или!!
)и имя пользователя присутствует в массиве паролей ($1 in pwd
), затем обновите значение второго поля. После этого выведите текущую строку shadowB
.