如何在python中找到未设置为可见的蓝牙设备?

时间:2013-05-28 14:29:15

标签: python bluetooth hidden device

我试图在python中创建一个算法来检测我的手机是否在该区域。我用它来找到我的设备:

bluetooth.discover_devices()

但如果我将手机上的蓝牙设置为“可见”,它只会检测到我的手机。

当手机设置为隐藏时,是否有检测手机的功能或命令?

我对python很新,所以非常欢迎任何形式的帮助!

提前致谢!

2 个答案:

答案 0 :(得分:0)

您可以尝试连接手机。如果它在附近,连接将成功。设备无法被发现时可以连接。您必须已经知道手机的设备地址(通过手机可见时发现)才能启动连接。

答案 1 :(得分:0)

不确定是否仍然需要解决方案(我认为这是正确的,只是没有成功)。一本名为“Violent Python”的书在第5章给出了解决方案,但我没有成功实现它。据说你只需要将设备wifi适配器的MAC地址增加1来计算蓝牙MAC。

def retBtAddr(addr):
    btAddr=str(hex(int(addr.replace(':', ''), 16) + 1))[2:]
    btAddr=btAddr[0:2]+":"+btAddr[2:4]+":"+btAddr[4:6]+":"+\
    btAddr[6:8]+":"+btAddr[8:10]+":"+btAddr[10:12]
    return btAddr

然后类似以下内容(其中OUI是BT MAC的前24个字节)

def checkBluetooth(btAddr):
    btName = lookup_name(btAddr)
    if btName:
        print '[+] Detected Bluetooth Device: ' + btName
    else:
        print '[-] Failed to Detect Bluetooth Device.'

def wifiPrint(pkt):
    iPhone_OUI = 'd0:23:db'
    if pkt.haslayer(Dot11):
        wifiMAC = pkt.getlayer(Dot11).addr2
        if wifiMAC != None and iPhone_OUI == wifiMAC[:8]:
            print '[*] Detected iPhone MAC: ' + wifiMAC
            btAddr = retBtAddr(wifiMAC)
            print '[+] Testing Bluetooth MAC: ' + btAddr
            checkBluetooth(btAddr)