USB 트래픽을 덤프하는 방법?


9

USB 게임 패드가 있는데이 주변 장치가 실제로 내 PC / 커널로 보내는 신호와 명령을보고 검사하고 싶습니다. 어떻게해야합니까?

나는 그런 것을 가정하고 있었다.

cat /dev/bus/usb/006/003

충분했지만 분명히이 명령은 즉시 리턴하고 읽을 수없는 인코딩 된 chars를 인쇄합니다.

그런 USB 장치를 "디버그"하는 방법이 있습니까?

답변:


11

Wireshark를 사용하여 USB 트래픽을 캡처 할 수 있습니다.
그것의 위키에서 :

Linux에서 USB 트래픽을 덤프하려면 usbmonLinux 2.6.11 부터 존재 하는 모듈 이 필요합니다 . 해당 모듈에 대한 정보 /usr/src/linux/Documentation/usb/usbmon.txt는 Linux 소스 트리에서 사용할 수 있습니다 . 사용중인 배포판과 해당 배포판의 버전에 따라 해당 모듈이 커널에 내장되어 있거나로드 가능한 모듈 일 수 있습니다. 로드 가능한 모듈 인 경우 사용중인 배포판 및 해당 배포 버전에 따라로드되거나로드되지 않을 수 있습니다. 로드 가능한 모듈이고로드되지 않은 경우 명령을 사용하여로드해야합니다.

modprobe usbmon

루트로 실행해야합니다.

1.0 이전의 libpcap 릴리스에는 USB 지원이 포함되어 있지 않으므로 최소한 libpcap 1.0.0 이 필요합니다 .

2.6.21 이전 커널 버전의 경우 사용 가능한 유일한 USB 트래픽 캡처 메커니즘은 각 원시 USB 블록에 대해 캡처 된 총 데이터 양을 약 30 바이트로 제한하는 텍스트 기반 메커니즘입니다. 커널을 패치하지 않고이를 변경할 수있는 방법이 없습니다. debugfs가 아직 마운트되지 않은 경우 /sys/kernel/debug다음 명령을 루트로 실행하여 마운트되었는지 확인하십시오.

mount -t debugfs / /sys/kernel/debug

커널 버전 2.6.21 이상 에는 크기 제한이없는 USB 패킷 추적을위한 이진 프로토콜이 있습니다. 해당 커널 버전의 경우 libpcap 1.0.x USB 지원은 사용 가능한 경우 libpcap이 사용할 USB 트래픽에 대한 메모리 매핑 메커니즘을 사용하지만 올바르게 처리하지 못하므로 libpcap 1.1.0 이상 이 필요 합니다. libpcap은 항상 사용할 수 없습니다.

에서는 libpcap의 1.0.x는, USB에서 캡처 장치는 이름 usbn 있고, 여기서 n은 버스의 수이다. libpcap 1.1.0 이상 에서는 이름이 usbmonn입니다.

Wireshark 1.2.x 이상이 필요합니다 .


2

이것이 내가 찾은 첫 번째 결과이기 때문에 업데이트 중입니다. 데비안 스트레치에서 찾은 가장 좋은 방법은 다음과 같습니다.

# usbhid-dump --entity = all

모든 USB 장치에서 들어오는 데이터를 덤프합니다. 간식처럼 내 키보드를 집어 들었고 스트림의 모든 opcode를 읽을 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.