Jak wykryć urządzenie USB?

41

Mam scenariusz, w którym oprogramowanie działa tylko po włożeniu urządzenia USB dostarczonego przez dostawcę oprogramowania do systemu operacyjnego Windows. Próbuję znaleźć zawartość zapisaną na urządzeniu USB. W systemie operacyjnym Windows ikona urządzenia USB nie jest wyświetlana w My_Computer. Pomyślałem, że mogę zobaczyć zawartość lub przynajmniej wykryć urządzenie USB w Ubuntu.

Również w Ubuntu dysk nie jest wykrywany. Próbowałem „sudo fdisk -l”, aby poznać system plików, ale nie jest to przydatne. Dysk w ogóle nie jest wykrywany.

Chciałem wiedzieć, jak działa oprogramowanie, gdy dysk USB jest włożony i nie będzie działać, gdy nie zostanie włożony. Czy mają jakieś pliki zapisane na urządzeniu USB? W każdym razie, jak możemy wykryć tego rodzaju urządzenie w Ubuntu?

Uczeń
źródło

Odpowiedzi:

47

Aby wykryć urządzenie USB, w terminalu możesz spróbować:

  • lsusb , przykład:

    $ lsusb
    Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
    Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
    Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
    Bus 004 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 001 Device 002: ID 046d:0809 Logitech, Inc. Webcam Pro 9000
    Bus 003 Device 002: ID 046d:c016 Logitech, Inc. Optical Wheel Mouse
    
  • czy to potężne narzędzie, lsinput,
    1-ci zainstalować go, a następnie spróbuj, to lista wszystkich urządzeń wejściowych w tym urządzeniu USB:

    sudo apt-get install input-utils
    lsinput
    

    przykład:

    $ lsinput
    /dev/input/event0
    ...
    
    /dev/input/event1
    ...
    
    /dev/input/event2
    ...
    
    /dev/input/event3
    bustype : BUS_USB
    vendor  : 0x46d
    product : 0xc016
    version : 272
    name    : "Logitech Optical USB Mouse"
    phys    : "usb-0000:00:1d.1-2/input0"
    uniq    : ""
    bits ev : EV_SYN EV_KEY EV_REL EV_MSC
    
  • udevadm , w tym wierszu poleceń musisz odłączyć urządzenie przed użyciem polecenia, a następnie podłączyć je, aby je zobaczyć:

    $ udevadm monitor --udev
    monitor will print the received events for:
    UDEV - the event which udev sends out after rule processing
    UDEV  [1915.787445] add      /devices/pci0000:00/0000:00:1d.3/usb5/5-2 (usb)
    UDEV  [1915.796226] add      /devices/pci0000:00/0000:00:1d.3/usb5/5-2/5-2:1.0 (usb)
    

Ale to może nie działać. W moim przypadku staram się, aby mój Leapfrog Tag działał na Ubuntu bez powodzenia .

Boris
źródło
2
Dzięki za wkład. Polecenia „lsusb” i „udevadm” wyświetlają moje urządzenie, chociaż polecenie „lsinput” nie dostarcza mi żadnych dodatkowych informacji.
Uczeń
4

Jeśli dane urządzenie jest kluczem zabezpieczającym oprogramowanie, może nie być urządzeniem pamięci masowej.

Prawdopodobnym alternatywnym urządzeniem do wdrożenia byłby kontroler Ethernet; oprogramowanie może komunikować się z urządzeniem za pośrednictwem karty sieciowej, która nie pojawi się jako dysk. Albo urządzenie może zaimplementować port szeregowy lub inne urządzenie, dla którego sterowniki są dołączone do systemu operacyjnego.

W każdym razie nie jest to odpowiednie forum, na które należy pytać o obchodzeniu ochrony przed kopiowaniem w oprogramowaniu Windows, nawet jeśli próbujesz to zrobić za pomocą Ubuntu.

Adrian
źródło
czy są jakieś sposoby, aby sprawdzić, czy jest to klucz do oprogramowania lub coś innego?
Uczeń
1
Jeśli jest to urządzenie, którego jedynym celem jest zapobieganie uruchomieniu oprogramowania bez jego obecności, jest to klucz zabezpieczający oprogramowanie.
Adrian
1
Wielkie dzięki za komentarz. To był dla mnie cenny wkład. Z twoją pomocą stwierdziłem, że jest to klucz do ochrony oprogramowania. Chciałem wiedzieć dużo o technologii, która jest w nim wykorzystywana i innych technicznych rzeczach. Czy znasz jakieś forum typu „askubuntu”? Przejrzałem też Google, by znaleźć mniej więcej to samo. Ale nie jestem przekonany.
Uczeń
2

To, co działa również dobrze, gdy twój komputer ma problemy ze zdarzeniami USB, uruchamia cronjob.

* * * * *    lsusb -v 2>&1 1>/dev/null

Wymusza to pełne skanowanie podłączonych urządzeń USB.
Co minutę sytuacja jest aktualizowana.

Kees S.
źródło
0

Jeśli chcesz wykryć ładowanie urządzenia USB - z doskonałą szczegółowością - oto (2) sposoby:

udevadm monitor: To pokaże ładowane urządzenie USB, gdy zobaczy je magistrala USB .

udevadmjest częścią domyślnego pakietu udev18.04 LTS; nie trzeba go instalować.

Wykonaj udevadm monitor PRZED włożeniem urządzenia USB.

Przykładowy wydruk ładujący dysk flash USB pokazano poniżej. Przejdź do ostatniej linii i możesz nawet zobaczyć, jakie urządzenie załadował jako ( sda1 ):

udevadm monitor
monitor will print the received events for:
UDEV - the event which udev sends out after rule processing
KERNEL - the kernel uevent

KERNEL[969.010067] add      /devices/pci0000:00/0000:00:14.0/usb1/1-1 (usb)
KERNEL[969.010367] add      /devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1:1.0 (usb)
KERNEL[969.018769] add      /devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1:1.0/host0 (scsi)
KERNEL[969.018849] add      /devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1:1.0/host0/scsi_host/host0 (scsi_host)
KERNEL[969.018934] bind     /devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1:1.0 (usb)
KERNEL[969.019049] bind     /devices/pci0000:00/0000:00:14.0/usb1/1-1 (usb)
UDEV  [969.024995] add      /devices/pci0000:00/0000:00:14.0/usb1/1-1 (usb)
UDEV  [969.031390] add      /devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1:1.0 (usb)
UDEV  [969.036362] add      /devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1:1.0/host0 (scsi)
UDEV  [969.041258] add      /devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1:1.0/host0/scsi_host/host0 (scsi_host)
UDEV  [969.046202] bind     /devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1:1.0 (usb)
UDEV  [969.051734] bind     /devices/pci0000:00/0000:00:14.0/usb1/1-1 (usb)
KERNEL[970.051706] add      /devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1:1.0/host0/target0:0:0 (scsi)
KERNEL[970.052068] add      /devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1:1.0/host0/target0:0:0/0:0:0:0 (scsi)
KERNEL[970.052215] add      /devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1:1.0/host0/target0:0:0/0:0:0:0/scsi_disk/0:0:0:0 (scsi_disk)
KERNEL[970.052435] bind     /devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1:1.0/host0/target0:0:0/0:0:0:0 (scsi)
KERNEL[970.052585] add      /devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1:1.0/host0/target0:0:0/0:0:0:0/scsi_device/0:0:0:0 (scsi_device)
KERNEL[970.052774] add      /devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1:1.0/host0/target0:0:0/0:0:0:0/scsi_generic/sg0 (scsi_generic)
KERNEL[970.052963] add      /devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1:1.0/host0/target0:0:0/0:0:0:0/bsg/0:0:0:0 (bsg)
UDEV  [970.060833] add      /devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1:1.0/host0/target0:0:0 (scsi)
KERNEL[970.061634] add      /devices/virtual/bdi/8:0 (bdi)
UDEV  [970.069006] add      /devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1:1.0/host0/target0:0:0/0:0:0:0 (scsi)
UDEV  [970.071467] add      /devices/virtual/bdi/8:0 (bdi)
UDEV  [970.075852] add      /devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1:1.0/host0/target0:0:0/0:0:0:0/scsi_disk/0:0:0:0 (scsi_disk)
KERNEL[970.079839] add      /devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1:1.0/host0/target0:0:0/0:0:0:0/block/sda (block)
KERNEL[970.079989] add      /devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1:1.0/host0/target0:0:0/0:0:0:0/block/sda/sda1 (block)
UDEV  [970.083556] bind     /devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1:1.0/host0/target0:0:0/0:0:0:0 (scsi)
UDEV  [970.091288] add      /devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1:1.0/host0/target0:0:0/0:0:0:0/scsi_device/0:0:0:0 (scsi_device)
UDEV  [970.091755] add      /devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1:1.0/host0/target0:0:0/0:0:0:0/scsi_generic/sg0 (scsi_generic)
UDEV  [970.106807] add      /devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1:1.0/host0/target0:0:0/0:0:0:0/bsg/0:0:0:0 (bsg)
UDEV  [970.339976] add      /devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1:1.0/host0/target0:0:0/0:0:0:0/block/sda (block)
UDEV  [970.519549] add      /devices/pci0000:00/0000:00:14.0/usb1/1-1/1-1:1.0/host0/target0:0:0/0:0:0:0/block/sda/sda1 (block)

.

dmesg (który drukuje bufor pierścieniowy jądra) zapewni również dokładny wgląd w ładowanie urządzenia USB.

Jednak dmesgw przeciwieństwie do udevadm monitorpokazuje, jak ładowanie zewnętrznego urządzenia USB z perspektywy jądra

Wyjście próbki z tego dmesgczasu z zewnętrznego napędu CD USB pokazano poniżej. „ 1-2 ” oznacza jego lokalizację na magistrali USB: pierwsza magistrala, drugi port. Gdybym podłączył napęd CD do drugiego portu, zgłosiłby „ 1-1 ”:

[   55.296482] usb 1-2: new high-speed USB device number 4 using xhci_hcd
[   55.453715] usb 1-2: New USB device found, idVendor=1c6b, idProduct=a222
[   55.453730] usb 1-2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[   55.453740] usb 1-2: Product: Mass Storage Device
[   55.453749] usb 1-2: Manufacturer: USB2.0 External
[   55.453758] usb 1-2: SerialNumber: 2010100500000000174
[   55.525860] usb-storage 1-2:1.0: USB Mass Storage device detected
[   55.527273] scsi host0: usb-storage 1-2:1.0
[   55.530031] usbcore: registered new interface driver usb-storage
[   55.545215] usbcore: registered new interface driver uas
[   56.553073] scsi 0:0:0:0: CD-ROM            slimtype  eTDU108   1     SL46 PQ: 0 ANSI: 0
F1Linux
źródło