Normalmente, é possível descobrir, de maneira geral, quais aplicativos de portas (relativamente "bem-comportadas") usam para se comunicar, de modo que não precisamos necessariamente saber com antecedência quais portas WeChat especificamente usa. Provavelmente podemos descobrir isso por nós mesmos e, no processo, ter uma maneira de resolver o problema geralmente.
A maioria dos aplicativos que têm alguma forma de monitoramento persistente (como tendem a usar os aplicativos de mensagens instantâneas) precisará se conectar a algum tipo de servidor central ou hub de mensagens inicialmente. Se você conseguir bloquear isso, o aplicativo não poderá se conectar e você alcançou seu objetivo. Outros tipos de aplicativos que se comunicam pela Internet têm a mesma necessidade, mas se for apenas uma conexão muito rápida ou mesmo datagrama, pode ser difícil capturá-la, exigindo outras técnicas para identificar os detalhes (por exemplo, monitoramento de rede ou log de firewall).
Isso funciona melhor para o TCP, mas certamente não deve ser impossível generalizar para o UDP.
O primeiro passo seria obter dois dumps do conjunto de conexões abertas: uma vez sem o WeChat conectado e uma vez com o. Comparando-os, devemos ser capazes de identificar quais portas são usadas pelo aplicativo em que estamos interessados. Essa lista de conexões pode ser obtida através do utilitário netstat
. A sintaxe exata varia, mas no Linux (o Windows é semelhante, mas provavelmente não é idêntico), você começa com algo como netstat -an -A inet
, que fornece basicamente uma lista de tudo relacionado ao IPv4 sem fazer pesquisas de nome de host. Pegue dois e compare-os. No Linux, você pode fazer isso em um único comando com um pouco de mágica de shell:
$ diff -u0 <(netstat -an -A inet) <(sleep 10; netstat -an -A inet)
O que isto faz é executar os dois comandos dados e mostrar a diferença entre suas saídas (as saídas são tomadas como as entradas respectivas para a ferramenta diff
; o -u0
basicamente diz que não imprime nenhum contexto, porque o contexto não fornece informações úteis no nosso caso). No nosso caso, os comandos são idênticos, exceto que o segundo chama sleep 10
para dar um atraso de dez segundos. Você ajustaria o tempo de atraso para ter tempo de dizer ao WeChat para se conectar; note que um atraso maior dará mais falsos positivos no resultado do diff.
A saída informará o endereço IP e o número da porta de origem e destino para qualquer coisa em que o status tenha mudado durante o período sleep
. Novamente, observe que a implementação do netstat no Windows pode ser um pouco diferente em detalhes, mas permite que você faça essencialmente a mesma coisa. (Você provavelmente precisará pegar uma ferramenta diff de algum outro lugar, no entanto. WinMerge é bastante competente, livre e de código aberto, embora certamente haja existem outros por aí, tanto gratuitos quanto pagos.)
Isso deve apontar você para quais portas o WeChat usa para se comunicar com seus servidores centrais. Faça uma pesquisa reversa de nome nos endereços IP se não tiver certeza sobre o que eles são. Observe que alguns aplicativos têm mecanismos de fallback (por exemplo, eles primeiro tentam se comunicar através de um protocolo de transporte proprietário, mas se isso falhar, eles retornam para HTTP ou HTTPS), caso em que apenas bloquear as portas padrão usadas não seja o suficiente, mas se for esse o caso, você precisaria procurar outras formas de bloqueio de qualquer maneira.