USB trafiği nasıl dökülür?


9

Bir USB gamepadim var ve bu çevre birimlerinin aslında PC / çekirdeğime gönderdiği sinyalleri ve komutları görmek ve incelemek istiyorum: bunu nasıl yapabilirim?

Şöyle bir şey olduğunu varsayıyordum

cat /dev/bus/usb/006/003

Yeterliydi, ama görünüşe göre bu komut hemen geri dönüyor ve bazı okunamayan kodlanmış grafikler yazdırıyor.

Böyle bir USB cihazında "hata ayıklamanın" bir yolu var mı?

Yanıtlar:


11

Wireshark ile USB trafiği yakalayabilirsiniz.
Bu wiki'den :

Linux'ta USB trafiğini boşaltmak için usbmonLinux 2.6.11'den beri var olan modüle ihtiyacınız var . Bu modüle /usr/src/linux/Documentation/usb/usbmon.txtilişkin bilgiler Linux kaynak ağacında bulunur. Kullandığınız dağıtıma ve bu dağıtımın sürümüne bağlı olarak, bu modül çekirdeğe yerleştirilebilir veya yüklenebilir bir modül olabilir; yüklenebilir bir modülse, kullandığınız dağıtıma ve bu dağıtımın sürümüne bağlı olarak, sizin için yüklenebilir veya yüklenmeyebilir. Yüklenebilir bir modülse ve yüklenmemişse, komutla yüklemeniz gerekir

modprobe usbmon

kök olarak çalıştırılmalıdır.

libpcap ihtiyacınız olacak böylece öncesinde 1.0 bültenleri, USB desteği içermez yapmak en azından libpcap 1.0.0 .

2.6.21'den önceki çekirdeğin sürümleri için kullanılabilir olan tek USB trafik yakalama mekanizması, her ham USB bloğu için yakalanan toplam veri miktarını yaklaşık 30 bayta sınırlayan metin tabanlı bir mekanizmadır. Çekirdeği yamalamadan bunu değiştirmenin bir yolu yoktur. Eğer debugf'ler zaten bağlı değilse /sys/kernel/debug, aşağıdaki komutu root olarak vererek buraya monte edildiğinden emin olun:

mount -t debugfs / /sys/kernel/debug

2.6.21 ve sonraki çekirdek sürümleri için, bu boyut sınırlaması olmayan USB paketlerini izlemek için ikili bir protokol vardır. Bu çekirdek sürümü için, libpcap 1.1.0 veya daha yenisine ihtiyacınız olacaktır , çünkü libpcap 1.0.x USB desteği, libpcap'in kullanacağı USB trafiği için bellek eşlemeli mekanizmayı kullanır, ancak doğru şekilde işlemez; kullanılabilir değil, bu yüzden libpcap her zaman kullanacaktır.

Gelen libpcap 1.0.x, USB yakalamak için cihazlar adı usbn var, burada n otobüsün sayısıdır. Gelen libpcap 1.1.0 ve üstü, bunların isim usbmonn var.

Ayrıca bir Wireshark 1.2.x veya daha yenisine ihtiyacınız olacaktır .


2

Güncelleniyor, çünkü bu baktığımda bulduğum ilk sonuçtu. Debian Stretch'te bulduğum en iyi yöntem şöyledir:

# usbhid-dump --entity = tümü

Bu, tüm USB cihazlarından gelen verileri dökecektir. Klavyemi bir muamele gibi aldım ve akıştaki her opcode'u okuyabilirim.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.