Desbloqueando o recurso oculto do ThinkPad: emulação de dispositivo USB
- Foi descoberto como transformar um notebook ThinkPad X1 Carbon de 6ª geração em um dispositivo USB programável.
- Ao ativar o controlador xDCI, torna-se possível emular dispositivos USB arbitrários, como teclado, unidade de armazenamento etc.
- É possível usar RawGadget e syzkaller para fazer fuzzing de hosts USB ou executar o Facedancer.
- Tudo isso pode ser feito sem hardware externo.
Introdução
- Raw Gadget é um módulo do kernel Linux para emular dispositivos USB altamente personalizáveis.
- Para emular um dispositivo USB, é necessário um componente especial de hardware chamado USB Device Controller (UDC).
- Em geral, PCs não têm UDC, e ele costuma vir embutido em computadores de placa única, como o Raspberry Pi.
Investigação
- Ao investigar o código do kernel Linux relacionado ao controlador xHCI, foi descoberto que dispositivos xHCI oferecem suporte à troca de função.
- Por meio de buscas online, foram encontradas discussões sobre a troca de função em dispositivos xHCI.
- O ACPI foi verificado para confirmar se o xDCI estava ativado no ACPI.
Ativando o xDCI
- Não foi encontrada nenhuma configuração relacionada ao xDCI nas opções da BIOS.
- Ao inspecionar diretamente a imagem da BIOS, foi descoberto que as configurações relacionadas ao xDCI estavam ocultas.
Usando o xDCI
- O xDCI foi ativado pela configuração
Advanced da BIOS.
- Foi confirmado que o dispositivo xDCI aparecia no
lspci.
Resumo
- Foi descoberto como ativar a funcionalidade oculta de controlador de dispositivo USB no notebook ThinkPad X1 Carbon de 6ª geração.
- Com isso, o notebook passou a poder emular vários tipos de dispositivos USB.
Considerações finais
- A ativação do xDCI permitiu explorar novas possibilidades de uso para o notebook.
Opinião do GN⁺
- Este artigo abre uma nova frente para hacking de hardware e customização ao mostrar como ativar um recurso oculto de notebooks ThinkPad para emular dispositivos USB.
- Como tarefas que antes exigiam hardware separado agora podem ser feitas com apenas um notebook, isso pode ser de grande ajuda para desenvolvedores e pesquisadores.
- O texto propõe um desafio interessante para pessoas com curiosidade técnica e ajuda a explorar como aproveitar ao máximo o potencial de dispositivos já existentes.
1 comentários
Comentários do Hacker News
g_mass_storagepara expor o armazenamento a um host USB. Porém, a largura de banda acaba sendo o principal obstáculo, já que o ganho de velocidade oferecido ao sistema não é tão grande.