Whatsdog会检测您的受害者是否在线。他们在后台做什么?我们知道 Whatsapp 没有为此提供任何 API 或 SDK,那么任何人如何监控这种类型的敏感活动呢?
Whatsdog 之类的应用程序如何从 Whatsapp 检测用户在线状态?
它实际上是来自 whatsapp 的未记录 API,您可以通过 Websockets 进行通信以获取人们的在线状态。
本文将向您展示它是如何完成的,甚至提供一个 PoC 让它在您自己的浏览器中运行。所以这个 PoC 可以修改为 PC 应用程序或智能手机应用程序。
虽然 Whatsapp 或 Facebook Messenger 不提供在线状态的官方 API,但通常很容易使用它们的非官方即内部 API 来确定它。我不能代表 Whatsapp 说话,因为我不是用户,或者不太熟悉他们的内部 API,但我在 Messenger 中玩过这个。对于任何提供在线状态功能的应用程序来说,概念上的差异都可以忽略不计,因此我将使用 Facebook 的 Messenger 作为示例,因为我更熟悉它。
这是一篇(滑稽的)博客文章,解释了它是如何使用 Facebook 完成的。如果您不想阅读它并深入研究技术细节或阅读整个内容,我将在这里简要介绍它的工作原理。
在 Facebook Messenger 上,他们的名字旁边会显示一个小绿点,表示他们在线,对吧?像这样:
好吧,那个点的状态,或者更确切地说是指示它们状态的数据,是由一个未记录的或非官方的 API 获取的。也就是说,内部使用的 API 不打算供 Facebook 开发人员以外的任何人使用,因此没有任何承诺,如果您尝试使用它,它将一直中断。不过,这是题外话。关键是有一个定期发出的请求(即轮询),它为您提供朋友的在线状态。如果您随着时间的推移对其进行轮询,您将能够判断用户何时从离线 -> 在线转换,反之亦然。
第三方应用程序使用这些 API 并像官方应用程序一样轮询它们。然后,他们可以对这些数据做任何他们想做的事情。无论是记录它以绘制他们的使用模式,在他们在线时通知您,您都可以说出它的名字!
如果这个答案不能满足你的好奇心,我鼓励你阅读我上面链接的文章。它内容丰富、引人入胜、有趣,并且(!)有一个 github 存储库,可让您自己尝试。
正如 Nico 所说,他们正在使用 WhatsApp API。WhatsApp 客户端能够检查您的联系人是否在线 - 这意味着必须有某种方法可以做到这一点。
有人反编译代码或 MitM 他们自己的连接来读取应用程序正在做什么是很容易的。发布的 API 唯一增加的风险是您没有义务在更改或删除它之前通知其他方。
你永远不应该相信客户端设备的秘密!