2011-10-05 5 views
3

USB 장치로 작업하는 것과 관련하여 this question을 읽은 후 USB 장치 유형을 구분하기 위해 운영 체제에서 어떤 방법을 사용하고 있는지 궁금해합니다.USB 장치 유형을 구분하는 방법은 무엇입니까?

예를 들어, USB 마우스를 꽂을 수 있고 컴퓨터는 "그냥 마우스"라는 것을 알고 있습니다. 1GB USB 드라이브를 연결하면 1GB의 이동식 저장 공간 만 "그냥"알 수 있습니다.

어떤 종류의 코드가 장치에서 어떤 종류인지 '알리는'데 사용됩니까? 또는 운영 체제가 장치를 폴링하고 표준화 된 응답을 받고 있습니까?

키보드를 키보드처럼 인식하도록 장치를 프로그래밍하는 방법은 무엇입니까?

답변

2

USB를 통해 작동하는 장치를 구축하기 위해, 당신은 거의 확실하게 특정 질문에 관해서 http://www.usb.org/developers/docs/

에서 사용할 수있는 USB 사양을 읽어해야합니다, 다양한 표준 USB 변수와 관련된 GET 방법이 있습니다. 이들은 장치의 펌웨어에 저장되며 요청시 제공됩니다. 예 : GET_DESCRIPTOR, GET_STATUS 등은 기기로 보낼 수있는 요청 유형입니다.

USB에는 프로토콜 자체가 구현되어있어 대부분의 장치 제조업체가 일부 제 3 자에게 USB 컨트롤러 칩을 구매합니다.

뭔가 해킹에 관심이 있다면 몇 가지 패킷을 보낼 수있는 사양으로 충분하다고 생각합니다.

제가 생각할 수있는 유일한 다른 옵션은 프로젝트에 적합하지 않을 수 있습니다. 실제 키보드를 와이어 탭하고 모든 복잡한 주소 확인 및 장치 식별 등의 작업을 키보드에서 마치기 만하면 데이터를 전선에 언제든지 푸시 할 수 있습니다.

이것은 고등학교 때 비밀번호 스니핑을 위해 키보드 블랙 박스를 만들 때 이전에 관리했던 것입니다. 블랙 박스에 저장된 키 누름은 마치 키보드 인 것처럼 전선 위에 부딪 혔습니다. 일단 몇 개의 암호를 저장하고 그것을 가져온 후에 키보드에 플러그를 꽂은 다음 키 누르기를 출력하도록 설정하기 전에 키보드를 분리해야합니다 (편리한 gedit 창이 열린 상태에서 : P) 그렇지 않으면 키보드가 중단됩니다 자체 데이터로 전송.

+1

링크 및 정보 주셔서 감사합니다. 암호 스니핑 비밀은 나에게 안전합니다. – Widor

0

장치 관리자에서 장치 속성을 열고 세부 정보 탭을 선택하십시오. 다양한 값은 정보를 제공합니다 (또는 장치 및 해당 드라이버의 정보로 생성됩니다).

+1

나는 OP가 코드에서이를 수행하는 방법을 알고 싶어한다고 생각합니다. –

+0

@JimMischel 네, 이상적입니다. 중간 집은 ** 세부 탭의 값을 읽는 중 **에서 배우게됩니다. 예 : 내 마우스에는 _Manufacturer_ 필드에 대해 '_Microsoft_'가 있습니다 - 여기서 제공되는 것은 마우스의 하드웨어에 저장되어 있습니까? 어떻게 읽을 수 있습니까?/내 장치에서 어떻게 설정합니까? – Widor

1

유형 (또는 오히려 장치 클래스)은 장치의 장치 및 인터페이스 설명자에서 장치 클래스를 읽음으로써 결정됩니다. 자세한 내용은 this segment about USB device descriptorsUSB in a Nutshell에서 읽어보세요. (관심이 있다면 모든 것을 읽는 것도 좋습니다)

+0

Wowee, 나는 나중에 생각하기 위해 북마크 할 것입니다 ... – Widor

관련 문제