USB Raw Gadget, um módulo para o Kernel que permite emular dispositivos USB

Gadget USB Raw

Já em algumas ocasiões aqui no blog falamos sobre o trabalho feito por Andrey Konovalov (um desenvolvedor do Google) no Linux, de seu trabalho na detecção oportuna de falhas nos drivers USB do kernel do Linux e também em dispositivos Wifi.

Agora ele está atualmente trabalhando em o desenvolvimento de um novo módulo para o kernel Linux que ele chamou de "USB Raw Gadget" que descreve como um utilitário que permite emular dispositivos USB no espaço do usuário.

Além disso menciona que uma aplicação está sendo considerada para a inclusão deste módulo no kernel principal do Linux. O Google Raw Gadget já está sendo usado pelo Google para simplificar o teste difuso da pilha do kernel USB com o kit de ferramentas syzkaller.

Inicialmente, eu estava usando GadgetFS (junto com o módulo Dummy HCD / UDC) para emular dispositivos USB para fuzzing, mas depois foi mudado para uma interface escrita personalizada.

O incentivo para implementar uma interface diferente era fornecer acesso direto e um tanto bruto à camada USB Gadget para espaço do usuário, onde cada solicitação USB é passada para o espaço do usuário para uma resposta.

Sobre o Gadget USB Raw

O módulo se encarrega de adicionar uma nova interface programação para o subsistema do kernel denominado "USB Gadget" e que está sendo desenvolvido como uma alternativa ao GadgetFS.

A criação de uma nova API se deve à necessidade de acesso direto e de baixo nível para o subsistema Gadget USB do espaço do usuário, permitindo que todas as solicitações USB possíveis sejam processadas (GadgetFS processa algumas solicitações por conta própria, sem transferi-las para o espaço do usuário).

O USB Raw Gadget é controlado através do dispositivo / dev / raw-gadget por analogia com / dev / gadget em GadgetFS, mas uma interface baseada em ioctl (), em vez de um pseudo-FS, é usada para a interação.

Além do processamento direto de todas as solicitações USB por um processo no espaço do usuário, a nova interface também tem a capacidade de retornar quaisquer dados em resposta a uma solicitação USB (GadgetFS verifica a exatidão dos descritores USB e filtra certas respostas, o que interfere com detecção de erro durante o teste de limpeza da pilha USB).

USB Raw Gadget também permite que você selecione um dispositivo UDC específico (Driver de dispositivo USB) e um driver para conectar, enquanto GadgetFS se conecta ao primeiro dispositivo UDC disponível.

Para diferentes UDCs, nomes de terminais previsíveis são mapeados para diferentes tipos de canais de comunicação separados em um único dispositivo.

Por fim, se quiser saber mais sobre o assunto, você pode conferir os detalhes, bem como o log das alterações feitas no USB Raw Gadget no link a seguir.

Como instalar o módulo Raw Gadget USB no Linux?

Para aqueles que estão interessados ​​em testar este módulo em seu sistema, eles podem fazê-lo seguindo as instruções detalhadas aqui.

Para Dummy HCD / UDC (um módulo que configura dispositivos USB virtuais e controladores de host que estão conectados uns aos outros dentro do kernel). Devemos abrir um terminal e nele vamos digitar o seguinte comando:

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

Com isso vamos obter a pasta com os módulos que vamos compilar executando o seguinte comando no terminal:

cd dummy_hcd

make

E continuamos a instalá-los com:

./insmod.sh

Se quisermos atualizar o módulo, o faremos com:

./update.sh

Agora para quem deseja instalar o módulo do kernel. Em um terminal vamos obter os arquivos necessários para isso executando o seguinte comando:

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

Com isso vamos obter a pasta com os módulos que vamos compilar executando o seguinte comando no terminal:

cd dummy_hcd

make

E continuamos a instalá-los com:

./insmod.sh

Se quisermos atualizar o módulo, o faremos com:

./update.sh

Você pode verificar o trabalho em o seguinte link. 


Deixe um comentário

Seu endereço de email não será publicado. Campos obrigatórios são marcados com *

*

*

  1. Responsável pelos dados: AB Internet Networks 2008 SL
  2. Finalidade dos dados: Controle de SPAM, gerenciamento de comentários.
  3. Legitimação: Seu consentimento
  4. Comunicação de dados: Os dados não serão comunicados a terceiros, exceto por obrigação legal.
  5. Armazenamento de dados: banco de dados hospedado pela Occentus Networks (UE)
  6. Direitos: A qualquer momento você pode limitar, recuperar e excluir suas informações.