微信使用哪些端口传输数据?

微信使用哪些端口传输数据?

我想在我的 Netgear 路由器上屏蔽消息服务微信。有人知道微信用于通信的 TCP/UDP 端口吗?

微信是腾讯开发的一款中文消息应用程序。我在谷歌上搜索了一下,但找不到列出微信端口的网站。

答案1

通常可以以一般的方式找出应用程序(相对“表现良好”)使用哪些端口进行通信,因此我们不一定需要提前知道哪些端口微信用途。我们很可能自己找到答案,并在此过程中找到解决问题的方法一般来说。

大多数具有某种形式的持续监控功能的应用程序(即时通讯应用程序往往如此)最初都需要连接到某种中央服务器或消息中心。如果您能够阻止这一点,应用程序就无法连接,这样您就实现了目标。通过互联网进行通信的其他类型的应用程序也有同样的需求,但如果它只是一个非常短暂的突发连接,甚至是数据报传输,那么它可能很难捕捉到,需要其他技术来识别详细信息(例如,网络监控或防火墙日志记录)。

这对 TCP 来说最有效,但肯定可以推广到 UDP。

第一步是对打开的连接集进行两次转储:一次没有连接微信,一次连接微信。通过比较它们,我们应该能够确定我们感兴趣的应用程序使用了哪些端口。可以通过实用程序获取此类连接列表netstat。确切的语法各不相同,但在 Linux 上(Windows 类似但可能不完全相同),您可以从类似以下内容开始,netstat -an -A inet它为您提供与 IPv4 相关的所有内容的列表,而无需进行主机名查找。拿两个并进行比较。在 Linux 上,您可以使用一些 shell 魔法在单个命令中完成此操作:

$ diff -u0 <(netstat -an -A inet) <(sleep 10; netstat -an -A inet)

这样做的目的是执行给出的两个命令,并显示它们输出之间的差异(输出被视为工具的相应输入diff-u0基本上说不打印任何上下文,因为上下文在我们的例子中没有提供有用的信息)。在我们的例子中,命令是相同的,只是第二个命令首先调用sleep 10以给出十秒的延迟。您可以调整延迟时间,以便有时间告诉微信连接;请注意,更长的延迟将在 diff 输出中产生更多的误报。

输出将告诉您在该sleep期间状态发生变化的任何内容的源和目标 IP 地址以及端口号。再次注意,Windows 的 netstat 实现在细节上可能略有不同,但它允许您执行基本相同的操作。(不过,您可能需要从其他地方获取 diff 工具。合并是相当称职、免费和开源的,尽管肯定还有其他的,既有免费的也有付费的。

那应该指引你微信使用哪些端口与其中央服务器通信。如果您不确定 IP 地址是什么,请对它们进行反向名称查找。请注意,某些应用程序具有回退机制(例如,它们首先尝试通过专有传输协议进行通信,但如果失败,它们将返回到 HTTP 或 HTTPS),在这种情况下,仅阻止使用的默认端口是不够的,但如果是这种情况,您无论如何都需要研究其他形式的阻止。

相关内容