как посмотреть подключенные usb устройства linux
Как посмотреть USB устройства Linux
При подключении USB флешки или любого другого USB устройства к компьютеру создается набор файлов, с помощью которых вы можете получить к ним доступ. Когда вы работаете в файловом менеджере все достаточно просто, но как только дело доходит до консоли все становится намного труднее.
Каждому новичку важно уметь идентифицировать подключенные устройства, будь то usb флешки, SD карты или жесткие диски чтобы не записать что-либо не туда или не отформатировать не тот диск. В этой статье мы рассмотрим несколько способов как посмотреть usb устройства Linux, подключенные к компьютеру.
Список подключенных устройств Linux
В операционной системе Linux используется особенная философия управления. Все объекты, в том числе и устройства считаются файлами. При подключении какого-либо устройства к системе для него создается файл в каталоге /dev/.
Обычно, после того, как вы подключили любую USB флешку или другой накопитель к системе с установленным окружением рабочего стола, устройство автоматически монтируется в папку /media/имя_пользователя/метка_устройства/, а затем вы можете получить доступ к файлам из устройства в этой папке. Тем не менее, бывают ситуации, когда вам нужно вручную монтировать USB и тогда такой вариант не поможет.
Файлы всех устройств находятся в каталоге /dev/. Здесь вы можете найти файлы sda, hda, которые представляют из себя жесткий диск, а также файлы sda1 или hda1, которые позволяют получить доступ к разделам диска. Мы уже подробно рассматривали это все в статье работа с устройствами Linux. Вы можете посмотреть список всех устройств в каталоге /dev/ с помощью команды:
Теперь осталось понять какие из этих файлов устройств принадлежат USB устройствам и каким устройствам именно.
Как посмотреть USB устройства Linux
Чтобы узнать более подробную информацию о каждом устройстве, подключенном к вашей системе и посмотреть список устройств linux, можно использовать команду df. Она используется для просмотра свободного места на диске:
По общему размеру и занятому пространству вы можете определить какое из устройств является вашей флешкой, но этот способ посмотреть устройства linux не очень удобен и работает он только с уже смонтированной флешкой, есть еще несколько, дающих более точную информацию.
Есть еще один способ, это утилита fdisk. Она позволяет посмотреть таблицу разделов на всех блочных устройствах, подключенных к компьютеру. Но утилиту нужно выполнять от имени суперпользователя:
Также, узнать о подключенном USB устройстве можно посмотрев очередь сообщений ядра dmesg. Здесь хранится информация обо всех операциях, которые происходят в ядре. В том числе здесь будет отображено имя флешки, только что подключенной к компьютеру. Для просмотра сообщений ядра выполните:
Чтобы посмотреть какие из sd устройств относятся к USB используйте такую команду:
Попытаться идентифицировать свою флешку в системе через терминал можно с помощью утилиты blkid. Она выводит UUID идентификаторы всех подключенных устройств, а также файловую систему:
Выводы
В этой статье мы рассмотрели как посмотреть usb устройства linux, а также как узнать имя своей usb флешки в системе. Вы можете использовать любую из команд, которая вам понравилась, или же сразу несколько. Но теперь вы знаете как точно определить имя файла своей флешки.
Как использовать Linux для поиска названий устройств на вашем компьютере
Изучив, как монтировать устройства с помощью Linux, вы можете захотеть увидеть список подключенных устройств. Это руководство покажет вам, как составить список устройств, дисков, PCI-устройств и USB-устройств на вашем компьютере. Чтобы узнать, какие диски доступны, вам будет кратко показано, как показать подключенные устройства и как показать все диски.
Используйте команду Mount
Самый простой синтаксис, который вы можете использовать, выглядит следующим образом:
Вывод вышеупомянутой команды довольно многословен и будет примерно таким:
Информации так много, что ее не так просто прочитать.
Жесткие диски обычно начинаются с/dev/sda или/dev/sdb, поэтому вы можете использовать команду grep, чтобы уменьшить вывод следующим образом:
Результаты на этот раз покажут что-то вроде этого:
Это не перечисляет ваши диски, но это перечисляет ваши смонтированные разделы. В нем не перечислены разделы, которые еще не смонтированы.
Устройство/dev/sda обычно обозначает жесткий диск 1, и если у вас есть второй жесткий диск, он будет подключен к/dev/sdb. Если у вас есть SSD, то он, вероятно, будет сопоставлен с/dev/sda, а жесткий диск – с/dev/sdb.
Как вы можете видеть на скриншоте. этот компьютер имеет один диск/dev/sda с двумя установленными разделами. Раздел/dev/sda4 имеет файловую систему ext4, и именно там установлена Ubuntu./Dev/sda1 – это раздел EFI, используемый в первую очередь для загрузки системы.
Этот компьютер настроен на двойную загрузку с Windows 10. Чтобы увидеть разделы Windows, нам нужно их смонтировать.
Используйте lsblk для просмотра списка блочных устройств
Mount подходит для вывода списка подключенных устройств, но он не показывает все имеющиеся у вас устройства, а вывод очень подробный, что затрудняет чтение.
Лучший способ вывести список дисков в Linux – использовать lsblk следующим образом:
Информация отображается в виде дерева со следующей информацией:
Дисплей выглядит примерно так:
Информация гораздо легче читается. Вы можете видеть, что у нас есть один диск с именем sda, который имеет 931 гигабайт. SDA разделен на 5 разделов – 2 или которые смонтированы, а третий разделен на своп.
Существует также привод под названием sr0, который является встроенным приводом DVD.
Как составить список устройств PCI
Одна вещь, которую действительно стоит узнать о Linux, это то, что если вы хотите что-то перечислить, то обычно есть команда, которая начинается с букв «ls».
Вы уже видели, что «lsblk» перечисляет блочные устройства и может использоваться для демонстрации расположения дисков.
Вы также должны знать, что команда ls используется для получения списка каталогов.
Позже вы будете использовать команду lsusb для вывода списка USB-дисков на компьютере.
Вы также можете перечислить устройства с помощью команды lsdev, но вам нужно убедиться, что procinfo установлена, чтобы использовать эту команду.
Чтобы вывести список устройств PCI, используйте команду lspci следующим образом:
Вывод вышеупомянутой команды снова очень многословен, означая, что вы, вероятно, получите больше информации, чем ожидали.
Вот краткий снимок из нашего списка:
В списке перечислены все – от контроллеров VGA до контроллеров USB, звука, Bluetooth, беспроводных сетей и Ethernet.
По иронии судьбы стандартный список lspci считается базовым, и если вам нужна более подробная информация о каждом устройстве, вы можете выполнить следующую команду:
Информация для каждого устройства выглядит примерно так:
Вы можете получить еще более подробный вывод, используя следующую команду:
Если этого недостаточно, попробуйте следующее:
И если этого недостаточно … Нет, мы только шутим. Это останавливается там.
Наиболее полезным аспектом lspci, помимо перечисления устройств, является драйвер ядра, который используется для этого устройства. Если устройство не работает, возможно, стоит выяснить, есть ли лучший драйвер для устройства.
Список USB-устройств, подключенных к компьютеру
Чтобы вывести список USB-устройств, доступных для вашего компьютера, используйте следующую команду:
Результат будет примерно таким:
Если вы вставите в компьютер USB-устройство, например внешний жесткий диск, а затем запустите команду lsusb, вы увидите, что устройство появится в списке.
Резюме
Подводя итог, можно сказать, что лучший способ перечислить что-либо в Linux – запомнить следующие команды ls:
HackWare.ru
Этичный хакинг и тестирование на проникновение, информационная безопасность
Как узнать, какие USB устройства подключались к Linux
Как узнать о том, что посторонние копировали файлы с компьютера
Устройства с USB разъёмом являются самыми распространёнными — ими могут быть накопители информации (флэшки, внешние диски), клавиатуры, мыши, телефоны, принтеры, звуковые платы и наушники и даже специальным образом запрограммированные устройства для, например, обхода ввода пароля для разблокировки экрана и так далее.
В любом случае несанкционированное подключение любого устройства означает, что у вашего компьютера есть ещё и «другая жизнь», о которой вы не знаете. Вполне возможно, что это означает несанкционированный доступ для копирования ваших личных файлов.
Ошибка «Wrong timestamp format found in «/var/log/syslog»»
Ситуация следующая: usbrip в своей работе использует файлы /var/log/syslog* или /var/log/messages*. После недавних обновлений usbrip, эта программа может работать только с подробным форматом времени, который нужно специально настроить для syslog.
Получается что нужно удалить старые журналы и анализировать можно только данные с момента настройки syslog, а информация за последние пару месяцев пропадёт.
Ещё один минус такого подхода — невозможно проанализировать файлы с других компьютеров, где предварительно не сделана эта настройка.
По идее, проблему можно исправить установив версию, которая работала с форматом даты по умолчанию:
Но это не решает проблему анализа журнала syslog на дистрибутивах, где syslog не установлен. Конечно, вариант со старой версией мне не очень нравится. Поэтому я написал команды, которые конвертируют дату из старого формата в новый. То есть можно не менять формат файлов syslog, можно использовать журналы syslog с других компьютеров и самая последняя версия usbrip будет успешно с ними работать!
Но начнём, всё-таки, с установки usbrip.
Как установить usbrip
Обратите внимание, что usbrip можно установить несколькими способами и вам НЕ нужно устанавливать программу каждым из них — выберите какой-то один.
Установка в Kali Linux
Самый простой вариант установки:
Но при таком варианте некоторые возможности программы будут недоступны. Чтобы получить usbrip со всеми функциями установку нужно выполнить следующим образом:
Если хотите, вы можете настроить формат даты в syslog специально для usbrip. Дата станет более детальной (например, там появится год). В случае выполнения этой настройки, вы сможете напрямую работать с файлами журналов /var/log/syslog* или /var/log/messages* в usbrip без необходимости их конвертации. Как это сделать рассказано в разделе «Структура системных логов».
Установка в BlackArch
В BlackArch и ArchLinux syslog вообще отсутствует по умолчанию, поэтому менять формат даты негде. Но это не будет проблемой — мы также сможем узнать, когда и какие USB подключались к нашей системе.
Как посмотреть историю подключения USB в Linux
Итак, если вы изменили формат даты для syslog, то достаточно запустить программу следующим образом:
Программа сама найдёт файлы журналов и, если всё в порядке (файлы журналов найдены, в них верный формат даты и имеются события с USB устройствами), то выведет:
Она спрашивает, хотим ли мы вывести данные в стандартный вывод (на экран) или же сохранить их в файл JSON. Если вы хотите вывести данные на экран, то достаточно нажать ENTER, поскольку первый вариант выбран по умолчанию.
Будет выведена примерно следующая таблица:
Поля в ней означают следующее:
Как конвертировать дату в файле syslog для usbrip
Более подробный формат даты отличается от используемого по умолчанию тем, что в нём указан год и миллисекунды. Думаю, год вы и так примерно знаете (тем более, что, например, в моей системе данные журнала хранятся только за последние 2-3 месяца, хотя я их не удалял). Что касается миллисекунд, то это вообще вряд ли кому-то нужно.
По этой причине можно без проблем конвертировать файл в формат, который будет поддерживать usbrip.
В следующей команде я конвертирую файл /var/log/syslog и сохраняю новый результат в usb2.0.txt — при желании, измените эти данные в команде:
Будет создан файл usb2.0.txt, который сможет открыть usbrip.
Как использовать usbrip в Arch Linux, BlackArch и их производных
Как уже было сказано, в этих системах отсутствует syslog, её функции поглощены программой journalctl. Именно по этой причине нет смысла устанавливать и запускать syslog (хотя, естественно, это возможно). Достаточно конвертировать вывод программы journalctl.
Новый вариант конвертации:
Сохраняем вывод программы journalctl в файл usb.txt:
А далее мы конвертируем файл в понятный для usbrip формат (то есть в syslog):
Это новый вариант конвертации, подсказанный пользователем. Он очень быстрый и даже для больших файлов занимает считанные секунды.
Обратите внимание, что данные считываются из файла usb.txt и сохраняются в файл usb2.0.txt — при желании, отредактируйте эти значения под свои.
Старый вариант конвертации (не используйте его)
Есть ещё один вариант с использованием утилиты date. Этот вариант довольно медленный:
Программа journalctl выводит названия месяцев на русском (если у вас установлена русская локаль). Такой формат (на русском) не понимает ни usbrip, ни утилита date. Поэтому начать нужно с установки английской локали следующей командой:
Не надо беспокоиться, что у вас всё станет на английском — изменения действуют только для того окна терминала, в котором вы выполнили команду. И после перезагрузки ОС переключение локали не сохранится.
Теперь мы сохраняем вывод программы journalctl в файл usb.txt:
А далее мы конвертируем файл в понятный для usbrip формат (то есть в syslog):
Файл размером 147 мегабайт (1.233.656 строк) на моей системе обрабатывался очень долго — 1-2 часа, правда центральный процессор практически не был загружен. То есть если у вас большой файл, то запаситесь терпением.
Как в usbrip проверить файл с другой системы
В usbrip можно указать файл из которого нужно брать данные для анализа, для этого используется опция -f, например, я хочу найти события подключения и отключения к USB интерфейсу в файле usb2.0.txt:
Если вы взяли файл для анализа с другой системы, где не настроен поддерживаемый формат даты, то вам нужно предварительно конвертировать этот файл как показано чуть выше.
Ниже самый конец данных из journalctl на моей домашней системе:
Как узнать тип USB устройства и его производителя
Предположим, меня заинтересовала следующее устройство:
С помощью usbrip я могу выполнить поиск по базе данных по VID и PID.
Начнём с загрузки базы данных:
С помощью опции —vid выполняется поиск по идентификатору вендора, с помощью опции —pid выполняется поиск по идентификатору продукта. При этом при каждом запуске поиска, usbrip будет обновлять/загружать базу данных которая и так уже имеется в системе — это занимает лишнее время, поэтому укажем флаг —offline, чтобы при поиске использовалась локальная база данных:
Опции —vid и —pid необязательно использовать одновременно — можно выполнять поиск по любой из них.
Настройка выводимых данных
Использование опции -q приведёт к подавлению вывода банера, информационных сообщений, также программа не будет спрашивать, как вывести данные (консоль или JSON). Данные можно показать не в виде таблицы, а в виде списка — для этого опция -l. Наконец, с помощью опции -n можно ограничить вывод только определённым числом последних записей. Пример использования все этих опций:
Вывод информации только по съёмным устройствам, по определённому USB устройству или за конкретные дни
Программа usbrip поддерживает следующие виды фильтров:
1. Показ только сменных устройств. На самом деле, со 100% уверенностью трудно сказать, какие устройства являются отключаемыми. Но можно поступить хитро — если это устройство уже БЫЛО отключено, значит, оно легко отключаемое! Это очевидно. Легко отключаемые устройства, например, сменные дисковые накопители и флэшки представляют наибольший интерес в случае несанкционированного доступа.
Для применения этого фильтра используется опция -e:
2. Фильтрация по полям таблицы, опции: —user, —vid, —pid, —product, —manufact, —serial, —port
То есть можно комбинировать несколько опций для фильтрации данных. Либо можно использовать опции по одной. Название опций говорит само за себя, если же вам что-то непонятно, то смотрите подробную справку по ним на странице: https://kali.tools/?p=4873. После опции можно указать несколько значений через пробел.
3. Сортировка по дате. Для этого используется опция -d:
Обратите внимание, что при указании двух дней не создаются диапазоны! То есть если вы указали два дня, то будут взяты данные только для этих двух дней!
Показ только определённой информации
В предыдущем примере использовалась опция -c, после которой перечислены столбцы conn vid pid disconn serial — это приводит к тому, что будет выведена только информация по этим столбцам.
Название всех столбцов (нужно указывать их без кавычек через пробел): «conn«, «user«, «vid«, «pid«, «prod«, «manufact«, «serial«, «port«, «disconn«.
Создание списка доверенных устройств
Если вы (как и я) анализируете реальный журнал домашнего компьютера, то вы уже заметили, что данных очень много и разобраться с ними «на глаз» проблематично. Поэтому если кто-то месяц назад подключал к компьютеру флешку (или подключит в будущем), то об этом довольно трудно узнать.
В такой ситуации может помочь список доверенных устройств. Концепция довольно проста: создаётся список ваших устройств, которым вы доверяете. Затем сравнивается журнал с этим списком — если там есть информация об устройствах, которые отсутствуют в списке доверенных, то будет выведена соответствующая информация.
Составить список доверенных устройств можно командой usbrip events gen_auth несколькими способами. Рассмотрим обязательные опции.
Во-первых, нужно указать файл, куда будет сохранён этот список, в моём случае путь до файла
/auth.json. Затем нужно указать атрибуты для включения в список авторизованных устройств, это делается опцией -a после которой через пробел без кавычек можно указать одно или более полей: «vid«, «pid«, «prod«, «manufact«, «serial«.
Далее нужно указать устройства, которые мы хотим добавить. Можно использовать рассмотренные выше фильтры. К примеру, я добавлю устройства по их VID, для этого я указываю опцию —vid и после неё через пробел перечисляю все идентификаторы производителей, которые я хочу добавить.
В результате получается команда:
В качестве фильтра можно использовать дату — то есть вы можете проверить, в какие дни подключались только доверенные устройства и перечислить эти дни:
Выявление подключения чужих USB устройств к компьютеру в Linux
Для проверки используется команда usbrip events violations, после которой достаточно указать файл со списком доверенных устройств:
Пример вывода в моём случае:
Освежить память помогла команда:
На той коробке тоже так и написано, «SuperSpeed».
Второе устройство, которое 2307 Boot ROM и Phison меня озадачило чуть сильнее. Это оказались не USB наушники и даже не тачпад ноута. Это оказалась моя же флешка, на который был создан раздел EFI для обновления БИОСа на моём ноутбуке. Возможно, она распозналась таким необычным образом из-за того, что компьютер был загружен вместе с ней или ещё по каким-то причинам. Мораль: не надо спешить высаживаться на измену если получены неожиданные результаты.
И вторая мораль: VID и PID могут меняться при некоторых условиях или система может видеть их иначе, опять же, при некоторых условиях. Серийный номер USB устройств также может быть подменён, по крайней мере для некоторых устройств.
Сохранение результатов в файл
Если при обработке файла выбрать вторую опцию:
То программа предложит ввести путь до файла (или принять значение по умолчанию) — полученные данные будут сохранены в формате JSON.
Также можно перенаправить вывод программы в файл (не забудьте опцию -q для отключения запроса пользователю):
Ещё у программы есть специальная команда storage, которая позволяет сохранять результаты. В первую очередь storage удобна для работы с Cron, но можно запускать её и вручную.
Команда usbrip storage позволяет сохранять/обновлять/просматривать информацию об истории и нарушениях USB устройств. Подробности смотрите в справке https://kali.tools/?p=4873
Информация будет заархивирована. На архив можно установить пароль.
Пример добавления службы в Cron вы найдёте в файле /usr/usbrip/cron/usbrip.cron. Информацию о настройке Cron вы найдёте в этой статье.
Анализ только последних записей
Если вы анализируете журналы с других компьютеров и вам для этого приходится их конвертировать, то вы можете ограничиться только последними строками. Например, чтобы создать файл, в который будут скопирована только последняя 1000 строк из исходного файла, вы может использовать команду вида:
Если вы конвертируете данные из journalctl, то вы также можете установить дату, после которой вы хотите получить данные.
Всегда нужно начинать с переключения локали (иначе полученный файл будет непонятен программам):
Если я хочу получить информацию о событиях после определённой даты, то нужно использовать опцию -S, после которой нужно указать дату в формате ГГГГ-ММ-ДД, например:
Далее используем уже знакомую команду для конвертации в формат syslog:
И запускаем usbrip с опцией -f, указав подготовленный файл:
Заключение
Итак, мне программа usbrip показалась очень интересной — она выжимает всё, что возможно из системных журналов по событиям, связанным с USB интерфейсом (если, к примеру, у какого-то USB устройства не указан серийный номер, значит и система его тоже не знает). А с учётом возможности конвертировать файлы, это делает её очень универсальной.
Как посмотреть подключенные usb устройства linux
Команда lsusb позволяет задействовать одноименную утилиту, предназначенную для вывода информации о USB-шинах и подключенных к ним устройствах. Каждое из устройств имеет пару 16-битных идентификаторов: идентификатор производителя (Vendor ID) и идентификатор устройства (Device ID), которые следует использовать для идентификации устройств и поиска драйверов в случае их отсутствия в ядре ОС, а также несколько дополнительных идентификаторов, устанавливаемых производителем. В составе дистрибутивов Linux имеется файл базы данных устройств, содержащий названия устройств с известными идентификаторами. Данная команда крайне полезна для идентификации и диагностики устройств компьютера. Она выводит результаты в формате списка, который может фильтроваться с помощью утилиты grep.
Базовый синтаксис команды выглядит следующим образом:
Утилита может вызываться как без параметров, так и с ними. Наиболее полезными параметрами являются параметр -t, предназначенный для вывода информации в древовидном формате, параметр -v для вывода подробной информации об устройствах, а также параметры -s и -d для вывода информации об устройствах на заданных шинах и с заданными идентификаторами соответственно.
Примеры использования
Вывод списка USB-устройств
Для вывода списка USB-устройств достаточно использовать утилиту без каких-либо параметров. Прав суперпользователя для выполнения команды не требуется.
$ lsusb
Bus 002 Device 005: ID 12d1:1436 Huawei Technologies Co., Ltd. Broadband stick
Bus 002 Device 003: ID 148f:7601 Ralink Technology, Corp. MT7601U Wireless Adapter
Bus 002 Device 002: ID 214b:7250 USB2.0 HUB
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 008 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 007 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 004 Device 002: ID 0000:3821 SiliconWin mouse
Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Bus 003 Device 002: ID 04f3:0103 Elan Microelectronics Corp. ActiveJet K-2024 Multimedia Keyboard
Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
Вывод имеет строго регламентированную структуру. По сути, параметры устройств разделены пробелами. Возьмем последнюю строку в качестве примера:
Несложно убедиться, что все строки имеют схожий формат. При этом в списке отражена информация как об обычных USB-устройствах (таких, как клавиатуры и мыши), так и о специализированных устройствах (таких, как хабы).
Вывод подробной информации о USB-устройствах
Для того, чтобы вывести подробную информацию о USB-устройствах, следует использовать комбинацию параметр -v:
Данный вывод является крайне обширным и содержит огромное количество параметров конфигурации USB-устройств. Он может использоваться для диагностики и идентификации устройств, причем в случае исполнения команды от лица суперпользователя, информации будет еще больше (обратите внимание на предупреждение в начале вывода).
Вывод информации о заданных USB-шинах и устройствах
Для того, чтобы вывести информацию о заданной USB-шине и устройствах на ней достаточно использовать параметр -s и передать утилите идентификатор интересующей шины:
Или шины и устройства:
При использовании лишь идентификатора шины следует использовать двоеточие в конце идентификатора.
Что касается информации об устройствах, то совместно с параметром -d может использоваться как идентификатор производителя:
Так и идентификатор устройства:
Не стоит забывать о двоеточии, которое указывает на используемый идентификатор: идентификатор производителя должен иметь двоеточие в конце, идентификатор устройства — в начале.