
Um sniffer e interpretador de mDNS.
Autores: Sebastian Garcia ([email protected], @eldracote), Veronica Valeros ([email protected], @verovaleros)
O Sapito é um sniffer e interpretador de DNS multicast (mDNS) escrito em Python. O Sapito captura pacotes de um pcap ou interface e interpreta os resultados. Isso significa que o Sapito é capaz de entender as perguntas e respostas mDNS, dando sentido às mensagens. Ele também pode identificar certos dispositivos, como encontrar computadores MacOS e vários tipos de iPads. A saída com código de cores ajuda a destacar informações importantes.
Se você encontrar um bug, por favor reporte-o junto com a saída da ferramenta para [email protected]. Se você tiver o pcap com os pacotes problemáticos, seria extremamente útil enviá-lo junto com o relatório do bug.

O Sapito tem uma imagem Docker pública com a versão mais recente no DockerHub, que funciona bem em sistemas Linux (MacOS ainda não suportado).
Para executar o Sapito:
docker run --rm --network host --name sapito -it stratosphereips/sapito:latest python3 sapito.py -i <interface>
Este é um anúncio Bonjour para o serviço de rede que permite o AirPlay de conteúdo de vídeo. Ou seja, isso permite que dispositivos iOS descubram a Apple TV como um "display remoto" no qual podem exibir vídeo.
Este é um dos serviços de rede que faz o Apple TV Remote funcionar - ou seja, o app ou o recurso integrado da Central de Controle para controlar remotamente dispositivos Apple TV a partir de iPhones e iPads. Este serviço é anunciado na rede via Bonjour para garantir que dispositivos iOS possam descobrir a AppleTV.
Este serviço aparentemente não é documentado pela Apple, mas parece estar envolvido em fazer o sistema AirPlay 2 funcionar.
Este serviço de rede é chamado de Remote Audio Output Protocol (Protocolo de Saída de Áudio Remoto). Ele essencialmente indica que a AppleTV funciona como um receptor de áudio AirPlay. Este anúncio Bonjour permite que dispositivos iOS descubram a Apple TV como um "alto-falante" para o qual você pode enviar áudio.
Este é um Sleep Proxy Bonjour. A ideia é que a AppleTV possa responder a várias consultas de rede para outros dispositivos que estão atualmente em modo de baixo consumo de energia para reduzir o uso de energia. Por exemplo, poderia ser um Mac oferecendo uma biblioteca iTunes compartilhada ou uma impressora compartilhada. A AppleTV pode então responder a solicitações de rede para esses servidores enquanto o Mac está em modo de suspensão - por exemplo, permitindo que o usuário liste as impressoras compartilhadas disponíveis na rede. No entanto, quando o usuário escolhe imprimir algo, a AppleTV acorda o Mac e transfere a solicitação para ele.
Este é um serviço de rede relacionado ao HomeKit, o sistema da Apple para comunicar e controlar dispositivos na casa. Pense em lâmpadas controláveis, persianas, campainhas, o que for. A AppleTV funciona como um proxy nesse cenário, de modo que o usuário possa controlar dispositivos remotamente (ou seja, enquanto não está em casa), mesmo que os dispositivos sejam apenas Bluetooth e estejam fora do alcance. Observe que dispositivos HomeKit comuns na rede anunciam como _hap._tcp.
Este é outro dos serviços de rede que faz o Apple TV Remote funcionar. Este serviço diz respeito à autenticação de dispositivos. Ou seja, se você quiser, por exemplo, reproduzir um vídeo do Youtube na Apple TV, a Apple TV pode exigir que o dispositivo seja autenticado antes de permitir isso. Na prática, as autenticações funcionam com a Apple TV exibindo um código PIN na TV que o usuário digita no dispositivo iOS. Este código PIN é transferido usando o serviço anunciado como "touch-able" para autenticar o dispositivo.
Por causa da supressão de Known-Answer (resposta conhecida)1:
Known-Answer Suppression (Supressão de Resposta Conhecida)
Quando um consultador Multicast DNS envia uma consulta para a qual já
conhece algumas respostas, ele preenche a Seção de Respostas da mensagem
de consulta DNS com essas respostas.
Geralmente, isso se aplica apenas a registros Compartilhados, não a
registros Únicos, pois se um consultador Multicast DNS já tem pelo menos
um registro Único em seu cache, então ele não deve esperar mais respostas
diferentes para esta pergunta, já que o(s) registro(s) Único(s) que ele já
possui compõem a resposta completa, então não há razão para enviar a
consulta. Em contraste, ter alguns registros Compartilhados em seu cache
não implica necessariamente que um consultador Multicast DNS não receberá
mais respostas para esta consulta, e é nesse caso que é benéfico usar a
lista Known-Answer para suprimir o envio repetido de respostas redundantes
que o consultador já conhece.
'RFC 6762: Multicast DNS'. https://www.rfc-editor.org/rfc/rfc6762#section-7.1 (acessado em 01 de outubro de 2022). ↩