USB 장치를 에뮬레이션 할 수있는 커널 용 모듈 인 USB Raw Gadget

USB 원시 가제트

이미 가끔 여기 블로그에서 우리는 Andrey Konovalov가 한 일에 대해 이야기했습니다. (Google 개발자) Linux 커널의 USB 드라이버 및 Wifi 장치의 오류를 적시에 감지하는 작업에서 Linux에서.

이제 그는 현재 작업 중입니다. 그가 명명 한 Linux 커널 용 새 모듈 개발 "USB 원시 가젯" 사용자 공간에서 USB 장치를 에뮬레이션 할 수있는 유틸리티로 설명합니다.

그 외에 메인 Linux 커널에이 모듈을 포함 할 응용 프로그램을 고려 중이라고 언급합니다. Google Raw Gadget은 이미 Google에서 syzkaller 툴킷으로 USB 커널 스택의 퍼지 테스트를 단순화하는 데 사용되고 있습니다.

처음에는 퍼징을 위해 USB 장치를 에뮬레이트하기 위해 GadgetFS (더미 HCD / UDC 모듈과 함께)를 사용하고 있었지만 사용자 지정 작성된 인터페이스로 전환되었습니다.

다른 인터페이스를 구현 한 인센티브는 사용자 공간을 위해 USB Gadget 레이어에 직접적이고 다소 원시적 인 액세스를 제공하는 것이 었습니다. 여기서 각 USB 요청은 응답을 위해 사용자 공간으로 전달됩니다.

USB Raw Gadget 정보

모듈은 새 인터페이스 추가를 처리합니다. 프로그래밍 커널 하위 시스템에 "USB Gadget"이라고하며 GadgetFS의 대안으로 개발 중입니다.

새로운 API의 생성은 직접적이고 낮은 수준의 액세스가 필요하기 때문입니다. 가능한 모든 USB 요청을 처리 할 수 ​​있도록 사용자 공간에서 가젯 USB 하위 시스템으로 전송합니다 (GadgetFS는 일부 요청을 사용자 공간으로 전송하지 않고 자체적으로 처리합니다).

USB Raw Gadget은 / dev / raw-gadget 장치를 통해 제어됩니다. GadgetFS의 / dev / gadget와 유사하지만, 상호 작용에는 의사 FS 대신 ioctl () 기반 인터페이스가 사용됩니다.

사용자 공간의 프로세스에서 모든 USB 요청을 직접 처리하는 것 외에도 새 인터페이스는 USB 요청에 대한 응답으로 모든 데이터를 반환 할 수있는 기능도 있습니다 (GadgetFS는 USB 설명 자의 정확성을 확인하고 특정 응답을 필터링하여 방해하는 USB 스택 삭제 테스트 중 오류 감지).

USB Raw Gadget을 사용하면 특정 UDC 장치를 선택할 수도 있습니다. (USB 장치 드라이버) 및 연결할 드라이버, GadgetFS는 사용 가능한 첫 번째 UDC 장치에 연결됩니다.

다른 UDC의 경우 예측 가능한 엔드 포인트 이름은 단일 장치 내에서 다른 유형의 개별 통신 채널에 매핑됩니다.

마지막으로 자세한 내용을 알고 싶다면 USB Raw Gadget에서 변경된 사항에 대한 세부 정보와 로그를 확인할 수 있습니다. 다음 링크에서.

Linux에서 Raw Gadget USB 모듈을 설치하는 방법은 무엇입니까?

시스템에서이 모듈을 테스트하는 데 관심이있는 사용자는 여기에 자세히 설명 된 지침에 따라 수행 할 수 있습니다.

더미 HCD / UDC 용 (커널 내에서 서로 연결된 가상 USB 장치 및 호스트 컨트롤러를 구성하는 모듈). 터미널을 열어야하며 그 안에 다음 명령을 입력합니다.

svn checkout https://github.com/xairy/raw-gadget/trunk/dummy_hcd

이를 통해 터미널에서 다음 명령을 실행하여 컴파일 할 모듈이있는 폴더를 얻을 수 있습니다.

cd dummy_hcd

make

그리고 다음과 함께 설치를 진행합니다.

./insmod.sh

모듈을 업데이트하려면 다음을 사용합니다.

./update.sh

지금 커널 모듈을 설치하려는 분들을 위해. 터미널에서 다음 명령을 실행하여 필요한 파일을 얻습니다.

svn checkout https://github.com/xairy/raw-gadget/trunk/raw_gadget

이를 통해 터미널에서 다음 명령을 실행하여 컴파일 할 모듈이있는 폴더를 얻을 수 있습니다.

cd dummy_hcd

make

그리고 다음과 함께 설치를 진행합니다.

./insmod.sh

모듈을 업데이트하려면 다음을 사용합니다.

./update.sh

작업을 확인할 수 있습니다. 다음 링크. 


코멘트를 남겨주세요

귀하의 이메일 주소는 공개되지 않습니다. 필수 필드가 표시되어 있습니다 *

*

*

  1. 데이터 책임자: AB Internet Networks 2008 SL
  2. 데이터의 목적 : 스팸 제어, 댓글 관리.
  3. 합법성 : 귀하의 동의
  4. 데이터 전달 : 법적 의무에 의한 경우를 제외하고 데이터는 제 XNUMX 자에게 전달되지 않습니다.
  5. 데이터 저장소 : Occentus Networks (EU)에서 호스팅하는 데이터베이스
  6. 권리 : 귀하는 언제든지 귀하의 정보를 제한, 복구 및 삭제할 수 있습니다.