Как установить Wireshark на Linux и захватить USB-трафик?

Я столкнулся с многочисленными проблемами при установке Wireshark и захватом USB-трафика, особенно из-за пользовательских прав.

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

Ответ 1

Протестировано на Ubuntu 14.04, но, вероятно, работает на других дистрибутивах, поскольку ни один из шагов не относится к Ubuntu.

При первом ознакомлении с руководством выполните все шаги 1 → 7.

При перезагрузке компьютера необходимо повторить шаги 6 и 7, чтобы увидеть интерфейсы USB в Wireshark.

  1. Установите Wireshark и libpcap:

    sudo apt-get install wireshark libpcap0.8

  2. Для Debian, Ubuntu и других производных Debian перейдите к шагу 3.

    Для других систем на основе Linux или других методов установки см. Wireshark Wiki, затем перейдите к шагу 6.

  3. Переконфигурируйте wireshark, чтобы не-суперпользователи могли отслеживать пакеты:

    sudo dpkg-reconfigure wireshark-common

    Выберите <Yes> в приглашении

  4. Добавьте свое имя пользователя в группу пользователей "wireshark":

    sudo usermod -a -G wireshark <your_username>

    Вы можете убедиться, что все сделано правильно, отобразив группы, в которые входит ваше имя пользователя:

    groups <your_username>

    Если нет, вы можете добавить группу "wireshark" вручную:

    groupadd wireshark

    А затем добавьте ваше имя пользователя в группу (см. выше)

  5. Важно. Выйдите из сеанса и снова войдите в систему.

  6. Этот шаг зависит от версии ядра, установленной на вашем компьютере. Чтобы узнать версию вашего ядра, введите:

    uname -r

    Для версий ядра до 2.6.21, если debugfs еще не смонтирован в /sys/kernel/debug, убедитесь, что он смонтирован там, введя следующую команду:

    sudo mount -t debugfs / /sys/kernel/debug

    Для ядра версии 2.6.21 и новее загрузите загружаемый модуль usbmon в ядро:

    sudo modprobe usbmon

    См. Wireshark Wiki для получения дополнительной информации об этой дифференциации.

  7. Если интерфейсы usbmon не отображаются в Wireshark, найдите интерфейсы, используя dumpcap (инструмент командной строки Wireshark):

    sudo dumpcap -D

    Вы должны увидеть интерфейсы usbmon *. Теперь отобразите разрешения интерфейсов usbmon:

    ls -l /dev/usbmon*

    Если файлы usbmon * имеют 'crw-------', то это нормально, что Wireshark не может их прочитать, потому что он не запускается от имени root. Не запускайте wireshark в режиме root, это может привести к повреждению файлов. Вместо этого вы можете дать ему права обычного пользователя:

    sudo setfacl -m u:$USER:r /dev/usbmon*

Теперь интерфейсы usbmon должны появиться в Wireshark.

Веселись!


Источники:

https://wiki.wireshark.org/CaptureSetup/USB#Linux

https://wiki.wireshark.org/CaptureSetup/CapturePrivileges#Most_UNIXes

https://unix.stackexchange.com/info/55722/wireshark-couldnt-run-usr-sbin-dumpcap-in-child-process

http://anonscm.debian.org/viewvc/collab-maint/ext-maint/wireshark/trunk/debian/README.Debian?view=markup