Filtros USB no Wireshark: como achar o dispositivo certo com USBPcap, usbmon e Bus Scope
Como filtrar capturas USB por dispositivo, endpoint, tipo de transferência, pacote de setup, interface e temporização quando USBPcap ou usbmon capturam tráfego demais.
Capturas USB podem virar um mar de dados em segundos. Uma máquina pode ter, ao mesmo tempo, teclado, mouse, webcam, adaptador Bluetooth, dispositivo de armazenamento, adaptador serial, chave de segurança e hub interno ativos. Quando alguém busca por "Wireshark USB filter", "USBPcap filter device", "usbmon filter endpoint" ou "how to find my USB device in capture", o problema é quase sempre o mesmo: "a captura tem tráfego demais e estrutura de menos." O Bus Scope foi feito para tornar a inspeção USB mais direta, mas entender o problema de filtragem ainda ajuda. A captura pode vir do USBPcap no Windows, do usbmon no Linux ou de outra fonte, e o caminho é identificar o dispositivo e depois estreitar o trace por endereço, endpoint, tipo de transferência e requisição de controle.
Comece pela enumeração
A forma mais fácil de identificar um dispositivo USB é capturar desde a conexão. A enumeração traz descritores que nomeiam o dispositivo, o vendor ID, o product ID, as configurações, as interfaces, os endpoints e detalhes específicos de classe.
Procure por:
- Vendor ID
- Product ID
- device descriptor
- configuration descriptor
- interface descriptors
- endpoint descriptors
- string descriptors
SET_ADDRESSSET_CONFIGURATION
Se você começa a captura depois do dispositivo já estar rodando, talvez só veja tráfego de endpoint sem o contexto de descritor. Isso dificulta a filtragem porque só o número de endpoint não basta.
O endereço do dispositivo pode mudar
Os endereços de dispositivo USB são atribuídos pelo host durante a enumeração. Se o dispositivo se desconecta e reconecta, o endereço pode mudar. Um filtro que funcionou na primeira conexão pode deixar passar a segunda.
Isso importa na depuração de loops de reset. Se um dispositivo reenumera várias vezes, você pode precisar rastrear vários endereços em uma única captura. Os descritores de produto e vendor revelam que esses endereços pertencem ao mesmo dispositivo físico.
O Bus Scope ajuda a manter essa relação visível em vez de obrigar você a costurar mentalmente as mudanças de endereço.
Filtre por endpoint
Depois da configuração, a maior parte do tráfego de dados usa endpoints. Endpoint zero é o de controle. Os outros podem ser bulk, interrupt ou isochronous.
Significados comuns de endpoint:
0x00: control OUT no endpoint zero0x80: control IN no endpoint zero0x81: endpoint 1 IN0x01: endpoint 1 OUT0x82: endpoint 2 IN0x02: endpoint 2 OUT
O bit de direção importa. 0x81 e 0x01 não são a mesma direção de endpoint. Um adaptador serial, por exemplo, pode usar um bulk OUT para dados do host para o dispositivo e um bulk IN para dados do dispositivo para o host.
Filtros por endpoint são úteis depois que você já sabe qual endpoint carrega o tráfego que te interessa.
Filtre por tipo de transferência
Problemas diferentes de USB vivem em tipos de transferência diferentes:
- Control transfers: descritores, configuração, requisições de classe, comandos vendor.
- Bulk transfers: armazenamento, dados seriais, dados vendor, muitos dispositivos de captura.
- Interrupt transfers: entrada HID, notificações de status, relatórios de baixa latência.
- Isochronous transfers: áudio, vídeo, streaming sensível a tempo.
Se um dispositivo USB serial abre, mas não envia dados, inspecione as control transfers de line coding e control line state, depois os bulk endpoints em busca de payload. Se uma webcam inicia, mas o vídeo sai corrompido, inspecione as isochronous transfers e os alternate settings. Se um dispositivo HID se comporta mal, inspecione as interrupt transfers e os descritores de relatório.
Filtrar por tipo de transferência reduz o ruído e mantém a classe relevante de evidência.
Filtre por pacote de setup
Control transfers incluem pacotes de setup. Eles são extremamente úteis porque identificam a direção, o tipo, o recipient, o request code, o value, o index e o length da requisição.
Exemplos importantes:
GET_DESCRIPTORSET_ADDRESSSET_CONFIGURATIONSET_INTERFACECLEAR_FEATURE- HID
GET_REPORT - HID
SET_REPORT - CDC
SET_LINE_CODING - CDC
SET_CONTROL_LINE_STATE - comandos vendor-specific
Quando um dispositivo falha no setup, o pacote de setup geralmente mostra qual requisição disparou o problema.
Seleção de captura USBPcap no Windows
No Windows, o USBPcap captura a partir de host controllers USB. Se a máquina tem vários controllers, escolher o errado pode gerar uma captura sem nenhum tráfego do dispositivo alvo.
Um fluxo prático:
- Desconecte o dispositivo alvo.
- Inicie a captura no controller provável.
- Conecte o dispositivo.
- Procure os descritores de enumeração.
- Se nada aparecer, tente outro controller.
- Quando o dispositivo for encontrado, mantenha a captura por perto como referência.
O valor do Bus Scope está em tornar esse fluxo menos opaco: o alvo é a conversa USB do dispositivo, não uma lista enorme de pacotes.
Captura com usbmon no Linux
No Linux, o usbmon expõe o tráfego dos barramentos USB. O número do barramento importa. Um dispositivo listado como Bus 003 Device 012 pertence ao barramento 3 naquele momento. Depois de reconectar, o número do dispositivo pode mudar.
A captura mais útil começa antes da conexão, porque a enumeração revela a identidade do dispositivo. Se permissão bloquear a captura, resolva isso primeiro; caso contrário, você só verá a falha na camada de aplicação e nunca terá a evidência USB.
Erros comuns de filtragem
Evite estes erros:
- Filtrar só depois da falha, perdendo a enumeração.
- Assumir que o endereço do dispositivo é estável entre reconexões.
- Confundir a direção do endpoint.
- Ignorar o tráfego de controle do endpoint zero.
- Olhar só para pacotes de payload e perder requisições de classe.
- Tratar toda requisição vendor-specific como ruído.
- Filtrar resets e erros cedo demais.
- Ignorar o contexto de hub e porta.
Um filtro limpo só é útil se preservar a falha.
O que manter em uma captura de investigação
Para um relatório que você pode compartilhar com firmware, driver ou QA, mantenha:
- A enumeração inicial.
- Os descritores do dispositivo alvo.
- A configuração e a interface selecionadas pelo host.
- As requisições de classe ou vendor-specific antes da falha.
- O tráfego de endpoint envolvido na falha.
- O evento de reset, stall, timeout ou desconexão.
- Contexto de temporização suficiente para mostrar se a falha é imediata, relacionada a idle ou a carga.
Essa evidência é mais forte do que um screenshot de "device not recognized".
Diagnóstico final
Filtragem em USB não é só esconder ruído. É preservar a sequência de pacotes que explica a falha. Comece pela enumeração, identifique o dispositivo, acompanhe as mudanças de endereço, estreite por endpoint e tipo de transferência, e mantenha as control requests visíveis.
O Bus Scope foi feito para apoiar esse fluxo: encontrar rápido a conversa USB real e depois inspecionar a evidência no nível do barramento que explica por que o dispositivo funciona, trava, reseta ou desaparece.
<!-- bus-scope-localized-transaction-foundation-v1:start -->Teste do contrato USB para “Filtros USB no Wireshark: como achar o dispositivo certo com USBPcap, usbmon e Bus Scope”
A resposta direta é que STALL, timeout ou reset não explica sozinho a causa. Primeiro prove que o provider vê o device correto; depois leia o contrato do transfer: tipo, direção, recipient, wValue, wIndex, comprimento declarado e real, status e estado anterior e posterior. Ligue a conclusão à primeira transação diferente do caso bom.
| Limite | Comparação | Decisão |
|---|---|---|
| Plataforma | provider, permissão, Root Hub ou usbmon/XHC20 | Os records são da conexão correta? |
| Setup | bmRequestType, bRequest, wValue, wIndex, wLength | O host enviou o pedido esperado? |
| Data | direção, comprimento e bytes retidos | O payload cumpre o contrato? |
| Status | ACK, STALL, timeout ou cancellation | Onde a transação termina? |
| Estado | configuration, interface, alternate setting, halt | O device estava pronto? |
Comece antes de reset e enumeration e preserve descriptors, SET_CONFIGURATION, SET_INTERFACE e o command anterior à falha. Filtro estreito pode esconder o control transfer decisivo. Execute uma ação USB por teste e altere apenas firmware, driver, porta, cabo, comando ou timing.
Como escrever resposta citável?
Informe request, campos setup, resposta e contexto anterior; depois proponha teste com uma variável. Bytes não retidos não provam packet loss. Proximidade entre command e reset mostra correlação, não causa sem repetição ou mudança de estado.
Mantenha VID/PID, firmware, speed, topologia, provider, filtro e trigger. Compare fases USB semânticas, não frame numbers entre usbmon e USBPcap. Registre início, fim, versão, OS, conexão e checksum. Consulte o troubleshooting Bus Scope.
Os owners Semrush continuam separados: free USB analyzer na página do produto, best USB protocol analyzer na comparação e USB descriptor viewer no guia descriptor. Não invente volume ou KD.
<!-- bus-scope-localized-transaction-foundation-v1:end --><!-- multilingual-blog-closeout:start -->Resposta direta e limite de aceitação
A resposta curta para “Filtros USB no Wireshark: como achar o dispositivo certo com USBPcap, usbmon e Bus Scope” é: Como filtrar capturas USB por dispositivo, endpoint, tipo de transferência, pacote de setup, interface e temporização quando USBPcap ou usbmon capturam tráfego demais. Trate essa frase como um resultado a verificar, não como promessa para qualquer entrada, dispositivo, projeto ou ambiente. Um resultado completo registra estado inicial, ação exata, saída visível e condição que comprova a conclusão da tarefa no Bus Scope.
Procedimento orientado por evidências
Comece com um caso pequeno e repetível antes de alterar um projeto completo. Registre versão do aplicativo, sistema operacional, identidade da entrada ou dispositivo, configurações relevantes e resultado esperado. Execute uma ação deliberada, preserve a primeira transição inesperada e compare com um caso conhecido quando possível. Alterar vários controles ao mesmo tempo esconde qual condição criou ou corrigiu o problema.
Ponto de controle 1: Filtros USB no Wireshark: como achar o dispositivo certo com USBPcap, usbmon e Bus Scope
Quando “Filtros USB no Wireshark: como achar o dispositivo certo com USBPcap, usbmon e Bus Scope” for ambíguo, compare um caso bom e outro falho sob condições equivalentes. Marque a primeira diferença significativa, não todos os sintomas posteriores. Esse limite costuma produzir uma solicitação de suporte mais clara e um experimento mais seguro.
Ponto de controle 2: Como filtrar capturas USB por dispositivo, endpoint, tipo de transferência, pacote de setu
Verifique “Como filtrar capturas USB por dispositivo, endpoint, tipo de transferência, pacote de setup, interface e temporização quando USBPcap ou usbmon captura” com a menor entrada representativa. Mantenha configurações não relacionadas, repita a mesma ação e confira o resultado após reabrir ou reconectar. Uma captura isolada é mais fraca que um registro com entrada, configuração, ação, saída e horário.
Ponto de controle 3: Comece pela enumeração
Quando “Comece pela enumeração” for ambíguo, compare um caso bom e outro falho sob condições equivalentes. Marque a primeira diferença significativa, não todos os sintomas posteriores. Esse limite costuma produzir uma solicitação de suporte mais clara e um experimento mais seguro.
Ponto de controle 4: O endereço do dispositivo pode mudar
Verifique “O endereço do dispositivo pode mudar” com a menor entrada representativa. Mantenha configurações não relacionadas, repita a mesma ação e confira o resultado após reabrir ou reconectar. Uma captura isolada é mais fraca que um registro com entrada, configuração, ação, saída e horário.
Ponto de controle 5: Filtre por endpoint
Quando “Filtre por endpoint” for ambíguo, compare um caso bom e outro falho sob condições equivalentes. Marque a primeira diferença significativa, não todos os sintomas posteriores. Esse limite costuma produzir uma solicitação de suporte mais clara e um experimento mais seguro.
Ponto de controle 6: Filtre por tipo de transferência
Verifique “Filtre por tipo de transferência” com a menor entrada representativa. Mantenha configurações não relacionadas, repita a mesma ação e confira o resultado após reabrir ou reconectar. Uma captura isolada é mais fraca que um registro com entrada, configuração, ação, saída e horário.
Ponto de controle 7: Filtre por pacote de setup
Quando “Filtre por pacote de setup” for ambíguo, compare um caso bom e outro falho sob condições equivalentes. Marque a primeira diferença significativa, não todos os sintomas posteriores. Esse limite costuma produzir uma solicitação de suporte mais clara e um experimento mais seguro.
Ponto de controle 8: Seleção de captura USBPcap no Windows
Verifique “Seleção de captura USBPcap no Windows” com a menor entrada representativa. Mantenha configurações não relacionadas, repita a mesma ação e confira o resultado após reabrir ou reconectar. Uma captura isolada é mais fraca que um registro com entrada, configuração, ação, saída e horário.
Ponto de controle 9: Captura com usbmon no Linux
Quando “Captura com usbmon no Linux” for ambíguo, compare um caso bom e outro falho sob condições equivalentes. Marque a primeira diferença significativa, não todos os sintomas posteriores. Esse limite costuma produzir uma solicitação de suporte mais clara e um experimento mais seguro.
Ponto de controle 10: Erros comuns de filtragem
Verifique “Erros comuns de filtragem” com a menor entrada representativa. Mantenha configurações não relacionadas, repita a mesma ação e confira o resultado após reabrir ou reconectar. Uma captura isolada é mais fraca que um registro com entrada, configuração, ação, saída e horário.
Matriz de aceitação
| Ponto | Evidência a manter | Condição de aprovação |
|---|---|---|
| Filtros USB no Wireshark: como achar o dispositivo certo com USBPcap, usbmon e Bus Scope | Estado inicial, uma ação e estado resultante | Outra pessoa reproduz o resultado declarado |
| Como filtrar capturas USB por dispositivo, endpoint, tipo de transferência, pacote de setup, interface e temporização qu | Estado inicial, uma ação e estado resultante | Outra pessoa reproduz o resultado declarado |
| Comece pela enumeração | Estado inicial, uma ação e estado resultante | Outra pessoa reproduz o resultado declarado |
| O endereço do dispositivo pode mudar | Estado inicial, uma ação e estado resultante | Outra pessoa reproduz o resultado declarado |
| Filtre por endpoint | Estado inicial, uma ação e estado resultante | Outra pessoa reproduz o resultado declarado |
| Filtre por tipo de transferência | Estado inicial, uma ação e estado resultante | Outra pessoa reproduz o resultado declarado |
Isolamento, recuperação e entrega
Pare no primeiro limite que falhar. Preserve fonte, projeto, sessão ou captura, duplique antes de edição destrutiva e altere uma variável por experimento. Repetir um fluxo amplo depois de várias mudanças pode gerar outro resultado sem explicar o motivo.
Separe ausência de evidência de evidência de ausência. Uma tela vazia pode indicar entrada, escopo, filtro, permissão, dispositivo, intervalo ou estado incorreto. Verifique aquisição ou importação antes de interpretar decoder, editor, relatório ou exportação.
Antes da entrega, reabra o artefato e examine início, ponto de decisão e final. Registre versão, plataforma, configuração, expectativa, observação e reprodução mínima. Remova ou oculte dados sensíveis e confirme a autorização do destinatário.
Perguntas e respostas
Qual é a maneira confiável mais rápida de começar?
Use o menor caso representativo, escreva o resultado esperado e altere uma variável. Confirme o caminho básico antes de adicionar filtros, efeitos, edições, automação ou uma fonte maior.
Quais evidências devem ser salvas?
Mantenha identidade da entrada, versão, plataforma, configurações, ação exata, primeira transição inesperada e saída final. Feche e reabra projeto, sessão, relatório ou exportação antes de tratá-lo como durável.
Quando o procedimento deve ser repetido?
Repita após mudanças relevantes no aplicativo, sistema, driver, firmware, modelo, fonte ou fluxo. Preserve o caso aceito anterior como referência sem alterações.
Quando a tarefa está pronta para entrega?
Quando outra pessoa autorizada identifica a entrada, repete a ação, vê o mesmo resultado, entende os limites restantes e abre o artefato sem depender de estado local não documentado.
Guias relacionados
Estas páginas no mesmo idioma cobrem etapas próximas sem alterar o proprietário canônico deste assunto:
<!-- multilingual-blog-closeout:end -->