AVR USB определяет ОС

Я программирую запоминающее устройство USB с помощью набора библиотек Atmel AVR, используя только хост-HID-драйверы. Я хотел бы иметь какое-то конкретное поведение, основанное на том, подключено ли устройство к машине с Windows или к машине с Linux (скажем, на базе Debian). Я искал API и не нашел ничего, что имело бы такую ​​​​возможность.

Есть ли какая-то особая функция, позволяющая определить подключенную ОС? Или есть определенный набор действий, который я могу ввести, чтобы хотя бы вывести подключенную ОС?


person KDEx    schedule 01.07.2015    source источник
comment
Вы разрабатываете свои собственные драйверы на стороне хоста или полагаетесь на системные стандартные (например, HID)? С вашим собственным драйвером вы можете включить информацию об ОС в протокол, но в общем случае нет возможности угадать ОС хоста. Но, конечно, об этом можно теоретизировать (например, ix.cs.uoregon.edu /~батлер/pubs/sadfe11.pdf)   -  person Archie    schedule 01.07.2015
comment
@Archie Используя HID, спасибо за помощь в разъяснении. Этот ресурс может быть очень полезным - изучаю его сейчас   -  person KDEx    schedule 01.07.2015


Ответы (1)


В соответствии со спецификацией USB не существует стандартного способа получить тип хост-системы.

И обычно вы не хотите, чтобы ваше устройство реагировало на ОС. Обычно вы хотите, чтобы ваше устройство соответствовало спецификации, чтобы любое устройство с правильной реализацией USB могло подключаться к нему.

В противном случае пришлось бы рассматривать так много разных ОС. например десятки разновидностей Linux.

Тем не менее, некоторые исследователи безопасности представили (или они нашли такие вещи в дикой природе?) сценарии атак с устройствами badusb, которые обнаруживают хост-ОС по некоторым временным и протокольным уникальностям, чтобы инициировать слабо сфокусированные атаки.

Так что можете поискать в этом направлении.

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

person vlad_tepesch    schedule 03.07.2015