이 포트에 연결된 "모든"을 덤프하기 위해 "USB 주소"(ergo usb 3-1)만 사용하여 "모든" 장치에서 데이터를 검색하려면 어떻게 해야 합니까?
다른 설명자의 반대
"아님" "아님" /dev/etc...타사 소프트웨어를 찾는 것이 아니라 일반 LINUX만 찾고 있습니다.짧은명령줄 답변
답변1
대부분의 USB 장치는 이런 방식으로 작동하지 않습니다.
아주 소수의 USB 장치 유형(주로 마우스, 키보드, 조이스틱과 같은 입력 장치)만이 특별한 요구 사항 없이 USB 버스에서 데이터를 보낼 수 있습니다. 대부분의 USB 장치는 먼저 USB 장치에 적절한 요청을 보내지 않으면 데이터를 출력하지 않습니다.
그렇다면 문제가 있습니다USB 엔드포인트. 각 USB 장치에는 여러 개의 끝점이 있을 수 있습니다. 이를 TCP 포트 번호처럼 생각할 수 있습니다. 특정 데이터 흐름에는 항상 "제어" 끝점과 기타 끝점이 있습니다. 일부 끝점은 입력 전용이고 다른 끝점은 출력 전용입니다. USB 장치에서 의미 있는 데이터를 얻으려면 연결하려는 장치의 끝점을 식별할 수 있는 방법이 필요합니다.
또는 원시 USB 패킷 스트림 덤프에 관한 질문인 경우 일반적으로 Linux USB 드라이버 계층 뒤에 숨겨져 있습니다. 원시 패킷 스트림에 액세스하려면 debugfs
파일 시스템을 마운트하고 로드해야 합니다 .커널 usbmon
모듈. 이제 cat /sys/kernel/debug/usb/usbmon/0u
시스템의 모든 USB 트래픽 덤프를 가져오거나 0 대신 다른 버스 번호를 사용하여 특정 USB 버스에 대한 트래픽만 가져오는 등의 작업을 수행할 수 있습니다 . 이 모듈은 또한 /dev/usbmon*
고급 USB 트래픽 분석 루틴을 위한 기능 도 제공합니다 .
보다 유용한 USB 트래픽 덤프를 얻으려면 다음을 수행하십시오.Wireshark를 사용하여 USB 트래픽을 캡처합니다.Wireshark는 다양한 USB 프로토콜 요소를 자동으로 식별하고 서로 다른 USB 끝점 사이의 데이터 흐름을 분리하므로 USB 패킷 헤더와 실제 페이로드 데이터를 서로 분리할 수 있습니다. 데이터를 실제로 이해하려면 USB 장치 유형에 대한 적절한 표준 문서와 특정 장치에 대한 기술 문서가 여전히 필요하지만 Wireshark를 사용하면 프로세스가 훨씬 쉬워집니다.
답변2
짧은 답변:
lsusb
지정된 장치를 통해 연결된 항목을 직접 표시하는 더 긴 답변의 예:
sudo grep -ir "usb" /var|grep -i 'usb 3-1'|tail -n25
tail -n50
또는 추가 정보가 필요한 경우 대신 또는 를 사용하여 less
이 출력에 대한 추가 정보를 확인하세요 tail
.
답변3
"모든 장치"라고 말할 때 실제로는 USB 플래시 드라이브와 같은 "모든 블록 장치"를 의미한다고 생각합니다(결국 키보드 또는 팬에서 데이터를 덤프한다는 것은 무엇을 의미합니까?).
상당히 현대적인 udev를 실행하고 있다면, /dev/disk/by-path
내 워크스테이션의 특정 포트에 연결된 USB 플래시 드라이브는 항상 다음과 같이 읽혀야 합니다 /dev/disk/by-path/pci-0000:00:1a.7-usb-0:2:1.0-scsi-0:0:0:0
.
컴퓨터에 무엇이 있는지 알아내는 가장 쉬운 방법은 컴퓨터에 무언가를 연결하고 표시되는 내용을 확인하는 것입니다 /dev/disk/by-path
.