UlfZibis
Anmeldungsdatum: 13. Juli 2011
Beiträge: 3162
Wohnort: Köln
|
Hallo, ich habe hier einen Dia-Scanner Braun MultiMag SlideScan 6000. Wenn ich den anschließe und dann einschalte, macht der erst mal eine ca. 3-Minütige Selbst-Kalibrierung. Während dieser Zeit wird er auch erkannt, siehe farbmanagment-colord-sane-schaltet-usb-port-ab Nun vermute ich, dass der Prozess colord-sane einen Befehl an den Scanner schickt, den er nicht versteht, und der dann die Kommunikation ganz abbricht. So würde mich interessieren, wie man diese USB-Kommunikation protokollieren kann, um auf ein evtl. ungünstiges Verhalten von colord-sane mittels Bug-Report hinweisen zu können. Also möglichst genau herausfinden, wo und wodurch die Kommunikation abgebrochen wird.
Moderiert von sebix: Thema in einen passenden Forenbereich verschoben. Bitte beachte die als wichtig markierten Themen („Welche Themen gehören hier her und welche nicht?“) in jedem Forenbereich. Danke.
|
shiro
Supporter
Anmeldungsdatum: 20. Juli 2020
Beiträge: 1241
|
... wie man diese USB-Kommunikation protokollieren kann, ...
Ja, das kann man auch mit "wireshark" machen (siehe hier). Ich verwende zu diesem Zweck allerdings "usbhid-dump". Das ist im Paket "usbutils" vorhanden und normalerweise bereits installiert.
|
UlfZibis
(Themenstarter)
Anmeldungsdatum: 13. Juli 2011
Beiträge: 3162
Wohnort: Köln
|
shiro schrieb: Ich verwende zu diesem Zweck allerdings "usbhid-dump". Das ist im Paket "usbutils" vorhanden und normalerweise bereits installiert.
Danke für den Hinweis. Aber bei mir kommt da nix. was mache ich da falsch? $ lsusb
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 002: ID 8087:8008 Intel Corp. Integrated Rate Matching Hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 002: ID 8087:8000 Intel Corp. Integrated Rate Matching Hub
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 003 Device 003: ID 8087:07dc Intel Corp. Bluetooth wireless interface
Bus 003 Device 004: ID 04ca:7035 Lite-On Technology Corp. Integrated Camera
Bus 003 Device 012: ID 046d:c05a Logitech, Inc. M90/M100 Optical Mouse
Bus 003 Device 021: ID 05e3:0142 Genesys Logic, Inc. Multiple Slides Scanner-3600
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
ich@W541:~$ usbhid-dump -m 05e3:0142
No matching HID interfaces
ich@W541:~$ usbhid-dump -m 05e3:0142
No matching HID interfaces
ich@W541:~$ usbhid-dump -m 05e3:0142
No matching HID interfaces Und mit -a 3:21 kommt die gleiche Meldung.
|
shiro
Supporter
Anmeldungsdatum: 20. Juli 2020
Beiträge: 1241
|
Aber bei mir kommt da nix. was mache ich da falsch?
Hmm, was auch immer bei dir "nix" meint. Eventuell hast du ja kein "HID" Device am USB Port. Aus diesem Grund hatte ich ja auch auf "wireshark" verwiesen. Gehe bitte mal Schritt für Schritt diese Anleitung durch. Dabei ist das Laden von "modprobe usbmon" sehr sinnvoll. Wenn du dann "wireshark" eventuell "sudo wireshark" startest, solltest du auch die "usbmon3" Quelle auswählen können. Da du bei "3:21" Kommunikation erwartest, solltest du unter "Source/Destination" Pakete von/zu 3.21.x feststellen können. Schau dir diese mal an. Hilfreich ist es, wenn dies nicht dein erster Kontakt mit "wireshark" ist.
|
UlfZibis
(Themenstarter)
Anmeldungsdatum: 13. Juli 2011
Beiträge: 3162
Wohnort: Köln
|
shiro schrieb: Hmm, was auch immer bei dir "nix" meint. Eventuell hast du ja kein "HID" Device am USB Port.
Verstehe, ja gut möglich, dass der Scanner nicht als HID zählt. Danke für den Hinweis.
Gehe bitte mal Schritt für Schritt diese Anleitung durch.
Ja dann werde ich mich da mal ran machen. Hilfreich ist es, wenn dies nicht dein erster Kontakt mit "wireshark" ist.
Leider schon.
|
shiro
Supporter
Anmeldungsdatum: 20. Juli 2020
Beiträge: 1241
|
Leider schon.
Oha. Dann heißt es Lernkurve hochfahren. Leider liegt die erste Nutzung von "wireshark" bei mir schon recht lange zurück, weshalb ich nicht nicht mehr weis, auf welche Probleme ich im Anfang gestoßen bin. Ich kann mich aber daran erinnern, dass man vor einem USB-Sniffing erst mal per "sudo modprobe usbmon" nach einem ReBoot machen musste und die Zugehörigkeit zur Gruppe "wireshark" allein nicht ausgereicht hat. Soweit ich mich erinnern kann, musste das zu sniffende Bus-Device auch erst mal für das Lesen freigeben. Wenn man bei "lsusb" z.B. das zu sniffende Gerät auf "Bus 001" gesehen hat, wäre ein "sudo chmod +rx /dev/usbmon1" sinnvoll. Eventuell muss man beim "Aufzeichnen ... mit diesem Filter" auch die USB Schnittstellen anhaken, damit sie einem zur Auswahl angezeigt werden.
|
UlfZibis
(Themenstarter)
Anmeldungsdatum: 13. Juli 2011
Beiträge: 3162
Wohnort: Köln
|
shiro schrieb: Oha. Dann heißt es Lernkurve hochfahren.
Herzlichen Dank für Deine weiteren Hinweise. Im Moment hänge ich noch an der Stelle, die Gruppe wireshark dem user hinzuzufügen, denn auch nach Installation von wireshark existiert diese noch nicht.
|
shiro
Supporter
Anmeldungsdatum: 20. Juli 2020
Beiträge: 1241
|
Im Moment hänge ich noch an der Stelle, die Gruppe wireshark dem user hinzuzufügen, denn auch nach Installation von wireshark existiert diese noch nicht.
Ja, kommt mir bekannt vor. Hast du schon ein
sudo dpkg-reconfigure wireshark-common
sudo usermod -a -G wireshark $USER
# bzw
sudo adduser $USER wireshark
gemacht? Bei "dpkg-reconfigure" solltest du die Frage "Sollen außer dem Superuser noch andere Benutzer Pakete mitschreiben können?" mit "Ja" beantworten. Wenn du darin ein Sicherheitsrisiko siehst, kannst du ja nach dem Sniffing den Befehl noch mal aufrufen und mit "Nein" beantworten.
|
UlfZibis
(Themenstarter)
Anmeldungsdatum: 13. Juli 2011
Beiträge: 3162
Wohnort: Köln
|
shiro schrieb: Gehe bitte mal Schritt für Schritt diese Anleitung durch.
Ich habe jetzt alles darin abgearbeitet, und auch die Gruppe wireshark gefunden und dem Benutzer hinzugefügt. Nun habe ich WireShark geöffnet und stehe nun im Wald. Also ich finde nicht die Stelle, wo ich das Sniffen von usbmon3 auswählen und starten kann. Ich sehe da nur "Netzwerk-Kram".
$ groups $USER
ich : ich adm dialout cdrom sudo dip plugdev lpadmin sambashare wireshark
$ lsmod | grep usbmon
usbmon 45056 0
$ ls -l /dev/usbmon3
crw------- 1 root root 235, 3 Nov 14 17:44 /dev/usbmon3
$ lsusb -v -d 05e3:0142
Bus 003 Device 024: ID 05e3:0142 Genesys Logic, Inc. Multiple Slides Scanner-3600
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 2.00
bDeviceClass 255 Vendor Specific Class
bDeviceSubClass 255 Vendor Specific Subclass
bDeviceProtocol 255 Vendor Specific Protocol
bMaxPacketSize0 64
idVendor 0x05e3 Genesys Logic, Inc.
idProduct 0x0142 Multiple Slides Scanner-3600
bcdDevice 3.02
iManufacturer 0
iProduct 0
iSerial 0
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 0x0027
bNumInterfaces 1
bConfigurationValue 1
iConfiguration 0
bmAttributes 0xc0
Self Powered
MaxPower 10mA
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 3
bInterfaceClass 255 Vendor Specific Class
bInterfaceSubClass 255 Vendor Specific Subclass
bInterfaceProtocol 255 Vendor Specific Protocol
iInterface 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x81 EP 1 IN
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0200 1x 512 bytes
bInterval 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x02 EP 2 OUT
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0200 1x 512 bytes
bInterval 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x83 EP 3 IN
bmAttributes 3
Transfer Type Interrupt
Synch Type None
Usage Type Data
wMaxPacketSize 0x0001 1x 1 bytes
bInterval 8
cannot read device status, Resource temporarily unavailable (11) Die letzte markierte Zeile deutet wohl genau das Problem an, welches ich untersuchen will.
|
UlfZibis
(Themenstarter)
Anmeldungsdatum: 13. Juli 2011
Beiträge: 3162
Wohnort: Köln
|
- Bilder
|
shiro
Supporter
Anmeldungsdatum: 20. Juli 2020
Beiträge: 1241
|
Ich sehe da nur "Netzwerk-Kram".
Ich habe mal zwei ScreenShots von mir beigefügt. Nach drücken der Schaltfläche "Alle Schnittstellen anzeigen" habe ich alle (auch USB) angehakt. Wenn nach einem Doppelklick auf "usbmon3" bei dir die Meldung 'You do not have permission to capture on devide "usbmon3".' kommt, solltest du den oben beschriebenen "sudo chmod +rx /dev/usbmon3" Befehl ausführen und "wireshark" erneut starten.
$ ls -l /dev/usbmon3
crw------- 1 root root 235, 3 Nov 14 19:21 /dev/usbmon3
$ sudo chmod +rx /dev/usbmon3
[sudo] Passwort für shiro:
$ $ ls -l /dev/usbmon3
crwxr-xr-x 1 root root 235, 3 Nov 14 19:21 /dev/usbmon3
$
- Bilder
|
UlfZibis
(Themenstarter)
Anmeldungsdatum: 13. Juli 2011
Beiträge: 3162
Wohnort: Köln
|
shiro schrieb: Ich habe mal zwei ScreenShots von mir beigefügt. Nach drücken der Schaltfläche "Alle Schnittstellen anzeigen" habe ich alle (auch USB) angehakt.
Wenn ich da drauf klicke, kann ich nur "Externer Mitschnitt" und "Versteckte Schnittstellen anzeigen" anhaken. Dennoch sehe ich nur den gezeigten Teil der Schnittstellen, also die mit Icon, nix mit USB dabei zum anhaken. Wenn ich "Externer Mitschnitt" deaktiviere, bekomme ich auf gelbem Hintergrund angezeigt, dass mir die Berechtigungen fehlen.
Wenn nach einem Doppelklick auf "usbmon3" bei dir die Meldung 'You do not have permission to capture on devide "usbmon3".' kommt, solltest du den oben beschriebenen "sudo chmod +rx /dev/usbmon3" Befehl ausführen und "wireshark" erneut starten.
Auch das hilft nicht. ☹
|
shiro
Supporter
Anmeldungsdatum: 20. Juli 2020
Beiträge: 1241
|
Welche Version von "wireshark" verwendest du? Ich habe:
$ wireshark -v
Wireshark 4.2.2 (Git v4.2.2 packaged as 4.2.2-1.1build3).
Copyright 1998-2024 Gerald Combs <gerald@wireshark.org> and contributors.
Licensed under the terms of the GNU General Public License (version 2 or later).
This is free software; see the file named COPYING in the distribution. There is
NO WARRANTY; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
Compiled (64-bit) using GCC 13.2.0, with GLib 2.80.0, with Qt 6.4.2, with
libpcap, with POSIX capabilities (Linux), with libnl 3, with zlib 1.3, with
PCRE2, with Lua 5.2.4, with GnuTLS 3.8.3 and PKCS #11 support, with Gcrypt
1.10.3, with Kerberos (MIT), with MaxMind, with nghttp2 1.59.0, with nghttp3
0.8.0, with brotli, with LZ4, with Zstandard, with Snappy, with libxml2 2.9.14,
with libsmi 0.4.8, with QtMultimedia, without automatic updates, with Minizip,
with binary plugins.
Running on Linux 6.8.0-48-generic, with Intel(R) Core(TM) i5-2520M CPU @ 2.50GHz
(with SSE4.2), with 7822 MB of physical memory, with GLib 2.80.0, with Qt 6.4.2,
with libpcap 1.10.4 (with TPACKET_V3), with zlib 1.3, with PCRE2 10.42
2022-12-11, with c-ares 1.27.0, with GnuTLS 3.8.3, with Gcrypt 1.10.3, with
nghttp2 1.59.0, with nghttp3 0.8.0, with brotli 1.1.0, with LZ4 1.9.4, with
Zstandard 1.5.5, with libsmi 0.4.8, with LC_TYPE=de_DE.UTF-8, binary plugins
supported.
$
|
UlfZibis
(Themenstarter)
Anmeldungsdatum: 13. Juli 2011
Beiträge: 3162
Wohnort: Köln
|
Jetzt klappt's. Ich hatte vergessen, dass adduser ... ja ein erneutes Einloggen braucht, um wirksam zu werden. Und sudo chmod +rx /dev/usbmon3 war auch nötig. Jetzt sehe ich also den Verkehr am USB Bus 3, allerdings von allen Devices, die da dran hängen, z.B. meiner Maus. Kannst Du mir noch einen Hinweis geben, wie ich das Device n bzw. mit der ID 05e3:0142 rausfiltere? Version ist: 4.2.2 (Git v4.2.2 packaged as 4.2.2-1.1build3)
|
shiro
Supporter
Anmeldungsdatum: 20. Juli 2020
Beiträge: 1241
|
Kannst Du mir noch einen Hinweis geben, wie ich das Device n bzw. mit der ID 05e3:0142 rausfiltere?
Du solltest über Bus- und Device-Adresse filtern. Hierzu schaust du dir an, unter welcher Adresse die ID bei "lsusb" angezeigt wird.
Bus 003 Device 021: ID 05e3:0142 Genesys Logic, Inc. Multiple Slides Scanner-3600
Hier lohnt es sich nach "3.21.*" zu filtern. Da du die Kommunikation in beiden Richtungen sehen willst, sollte die Adresse für Source und Destination verwendet werden. Man kann dabei den gesamten String, einen Teilstring oder RegEx Definitionen verwenden. Beim Filtern der Pakete kann man den Filter bereits beim Sniffen definieren oder den gesnifften Inhalt (z.B. nach Lesen der gespeicherten Daten) nachträglich filtern. Wie man das macht, hängt vom Fokus der Auswertung ab. Ich bevorzuge den kompletten Bus aufzunehmen und nachträglich zu filtern. Grund ist, dass die Device-Adressen durchaus wechseln können (z.B. bekommt eine wechselbare SD Karte im Smartphone eine dynamische Unterdevide-Adresse usw). Wenn man nach dem Sniffen die Daten als ".pcapng" oder ".pcap" gesichert hat, kann man diese Daten später auswerten und in der "Filterzeile" entsprechende Queries eintragen. Bei dem obigen Beispiel wäre der Filter beispielsweise
(usb.src[0:4] == "3.21") || (usb.dst[0:4] == "3.21")
Wenn die Filter-Zeile einen grünen Hintergrund hat, ist er syntaktisch valide und kann mit dem Pfeil (rechts) hinter dem "X" aktiviert werden. Man bekommt dann auch die Kommunikation der Device-Sub-Adressen mit. Statt obiger Query kann man auch einfacher '(usb.addr[0:4] =="3.21")' schreiben, weil "addr" die "src" und "dst" beschreibt. Die Filter sind sehr mächtig. Spiele ein wenig mit ihnen, um zu sehen, wie sie funktionieren. Das alles hier zu beschreiben, würde den Rahmen sprengen.
|