usbmon에는 여러 노드가 있습니다

usbmon에는 여러 노드가 있습니다

usbmon에 폴더의 단일 버스 /sys/kernel/debug/usb/usbmon/에 대해 여러 노드(예: 2s, 2u, 2t) 가 있는 이유는 무엇입니까?

내 장치로 USB 트래픽을 스니핑하려고 하면 일부 USB 프레임이 손실된 것 같습니다. (내 애플리케이션은 U2F-HiD를 사용하여 장치와 통신하며 일부 패킷은 128바이트보다 깁니다.)

모든 트래픽을 스니핑하여 사용 가능한 형식으로 구문 분석하는 올바른 방법은 무엇입니까? (모든 튜토리얼이 매우 도움이 될 것입니다.) 지금은 cat파일로 리디렉션을 사용합니다.

답변1

Documentation/usb/usbmon.txt커널 소스 코드 에서 :

현재 두 가지 형식, 즉 원시 또는 "1t" 형식과 "1u" 형식이 지원됩니다. "1t" 형식은 커널 2.6.21에서 더 이상 사용되지 않습니다. "1u" 형식은 ISO 프레임 설명자, 간격 등과 같은 일부 필드를 추가합니다. 약간 더 긴 라인을 생성하지만 그 외에는 "1t" 형식의 완벽한 상위 집합입니다.

그런 다음 이러한 필드의 의미를 설명합니다. 등의 노드는 1s일부 상태(예: nreaders= 독자 수 = usbmon 이벤트 소비자)를 제공하지만 자세한 내용을 모르고 사용한 적이 없습니다.

wireshark당신은 또는 같은 것을 사용할 수 있습니다가상 분석기트래픽을 더욱 쉽게 분석하세요. 캡처 tcpdump및 사후 분석을 통해서도 가능합니다 .wireshark

sudo tcpdump -i usbmon1 -w usbmon.pcap &

편집하다

usbmon.pcaptcpdump 또는 다른 수단을 통해 얻은 다른 pcap 파일처럼 이 파일을 wireshark에 로드 할 수 있습니다 .

IIRC, usbhid-dumpHID 읽기 및 덤프설명자 커널에서 획득(따라서 메시지 교환을 통해 정보를 얻을 수 없음), 일부 커널 API 변경 사항이 있거나 HID에 액세스하려면 USB 장치의 바인딩을 해제해야 하지만 세부 정보를 잊어버렸습니다.

원시 또는 커널 확인 마운트를 통해 HID 설명자에 직접 액세스할 수 있습니다.debugfs

mount -t debugfs none /sys/kernel/debug

그런 다음 시청하세요 /sys/kernel/debug/hid/<dev>/rdesc. hid-rd원시 HID 설명자를 구문 분석할 수도 있습니다.

HID를 찾고 계시다면보고서, 적절한 hidraw장비를 사용하십시오.

관련 정보