如何在相同的Ad-Hoc模式下获取附近电话的RSSI和Mac地址?

时间:2011-07-13 07:08:30

标签: android linux wifi wireless

我已经将一些Android手机改为ad-hoc模式,让他们拥有相同的essid (通过在每部手机上使用命令:“iwconfig .. essid XXX”)。这样他们就可以了合并在一个ad-hoc网络中,可以在其中成功发送udp数据包。

接下来,我想在相同的ad-hoc网络中获取附近手机的RSSI和Mac地址。我尝试启动wpa_supplicant进程并通过扫描获取rssi(不是通过android系统,因此android API,如getRssi(), getScanResult()无法使用),但我只得到一个essid “XXX”代表这个adhoc网络(BSSID)和虚假Mac地址

然后我尝试修改命令“iwlist”在android上重新编译它,我得到了相同的结果......我不知道这个现象是由linux系统还是无线驱动程序决定..

然后我尝试捕捉手机的信标包,我得到正确的mac和rssi,但是信标接收器处于moniter模式而不是ad-hoc模式,因此无法将udp数据包发送到附近的手机..

那么我该如何才能在同一个Ad-Hoc网络中获取每部手机的RSSI和Mac地址呢?

非常感谢!!

1 个答案:

答案 0 :(得分:1)

我不确定我是否完全理解您的问题,但我认为您对WiFi有一点误解。

首先,RSSI代表"接收信号强度指示",这意味着来自接收机的信号强度。在您的情况下,一部电话能够知道另一部电话的RSSI的唯一方法是,是否有更高级别(即应用程序)层传送有关RSSI的数据。

例如:

  1. 电话A向电话B发送无线电消息XYZ。
  2. 电话B可以在-75dBm处听到来自电话A的消息XYZ。
  3. 然后,电话B可以向电话A发送一条消息,告诉电话A它正在-75dBm听到电话A.
  4. (电话A现在可以与电话B相同,使用从电话B收到的消息的RSSI)
  5. 其次,我并不完全了解ad-hoc网络如何处理BSSID等,但我相当确定你将面临与上述RSSI类似的问题。即ad-hoc模式可能选择使用哪个BSSID来建立WiFi网络。这不必是任何设备的MAC地址(例如,它可以是伪MAC)。如果您想将手机自己的MAC与另一部手机通信,则必须将其放在应用层的消息中,并将其发送到另一部手机上的接收应用程序。

    例如:

    1. 电话A查询自己的操作系统/网络接口并找到自己的MAC地址(注意:它可以找到多个!)
    2. 电话A将其放入应用程序消息(即您自己的UDP数据包)并将其发送到电话B.
    3. 电话B接收消息,解压缩消息并找出MAC电话A告诉它的内容。
    4. 简而言之,答案是:在应用层收集和分享信息,你不能嗤之以鼻/偷听"你从wifi堆栈中获取的信息。