我用scapy构建了一个脚本,以在monitornig wi-fi界面中捕获探测请求。
我成功捕获了请求以及其中包含的一些SSID。但是手机中存储的大多数网络都不会广播。
并没有一个明确的模式说明为什么会发生这种情况。有些电话根本不播放ssid。

我正在尝试解释此行为背后的原因,但没有找到任何解释,除了应该广播隐藏网络以使电话连接到它们之外,但事实并非如此,并且大多数广播的是可见的。

iPhone的另一种行为是,iPhone似乎只广播它们所连接的网络,而没有其他任何广播。 (无网络->没有SSID)。

我尝试过将接口(interface)放置在各种 channel 中,结果在广播的网络上会有所不同,但是设备中保存的绝大多数接口(interface)仍不会广播。

这背后有原因吗?还是一种强制设备将其全部广播的方法?

最佳答案

您似乎假设电话将永久地对每个已知网络进行探测请求。

情况并非如此-不仅是电话,而是一般而言。引用Wi-Fi联盟[*]:



因此,这完全取决于应用程序/操作系统,如果

  • 电话STA进行主动扫描,发送探测请求,
  • 或坐在那里听信标(或什么也不做)。

  • 在我的内存中-几年来我一直没有使用/查看Android代码,因此可能有所更改-Android不会进行主动扫描,因此不会将探测请求发送到已知的SSID,除非您处于Wi-Fi网络设置屏幕。它只会听信标。

    这背后有一些Wi-Fi 802.11设计原理:
  • STA应该是可移动的。毕竟,如果您不打算从
    有时,使用Wi-Fi并没有太多意义(营销除外)
    或懒惰,当然智能手机对此有所改变),您可能会
    好连线。
  • ...如果您正在移动,可以认为您正在运行
    电池,
  • 因此,您想节省电池生命周期:因此,您宁愿做被动的
    扫描监听信标,而不是主动扫描发送探针
    请求,因为这会消耗更少的电量。

  • 当您是STA时,这种节能替代功能的想法在802.11设计中的所有其他地方都被传播了,隐藏在地毯下。

    因此,如果它1/只是监听信标/2主动为每个已知的AP发送探查请求3/发送广播探查请求,并且是否以连续的方式这样做,则完全取决于STA的OS堆栈/应用程序,或定期或根据其是否处于已知状态(例如,屏幕打开,用户进入Wi-Fi网络设置屏幕)。

    现在可能还有其他一些考虑因素,例如某些区域性法规要求您首先听信标来决定是否可以使用某些 channel 。但是要点在上面。

    *:

    http://www.wi-fi.org/knowledge-center/faq/what-are-passive-and-active-scanning

    编辑:

    在编程方面:

    1/您似乎遇到的是一个IOP(互操作性)问题,因为您希望STA出现有关扫描主动与被动以及所涉及的探测请求的特定行为,而这在现实世界中并非如此。根据您的应用程序最终的主要目标,这可能是设计中的缺陷-或只是很小的麻烦。您可能想限制自己使用某些特定设备的品牌,或者尝试涵盖所有情况,这会增加开发成本。

    2/...或者您只是对自己的观察感到惊讶,并寻求解释。在这种令人惊讶的结果的情况下,不用说:直接去wireshark检查您的程序观察结果(如果您的程序是一个数据包嗅探器)或行为(如果您的程序是一个客户端/服务器/层XYZ协议(protocol)实现)。

    关于主动扫描与被动扫描以及节能的802.11策略:

    摘自Matthew S. Gast(“IEEE 802.11工作组成员,并担任802.11 Task Group M的主席。”作为Wi-Fi Alliance无线网络管理主席的“802.11无线网络:权威指南,第二版”)营销任务组,他领导着有关节能,性能优化以及定位和定时服务的认证要求的调查”(来自出版商的简历)。我强烈推荐这本书。

    p。 171:



    p。 172:



    同样,它有点老(2003年),但是这些家伙知道他们关于网络的知识。关于扫描策略:

    摘自思科“802.11无线局域网基础知识”,第5章“移动性”。

    第153页



    页面154“确定漫游位置”:



    第155页上的其他有趣的内容,“抢占式AP发现”。

    关于request - 捕获Wi-Fi探针wequest时,手机不会发送所有存储的ssid,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36264440/

    10-12 16:25