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

如何在python中查找未设置为可见的蓝牙设备?,python,bluetooth,hidden,device,Python,Bluetooth,Hidden,Device,我试图用python制作一个算法来检测我的手机是否在这个区域。我正在使用此查找我的设备: bluetooth.discover_设备() 但只有当我将手机上的蓝牙设置为“可见”时,它才会检测到我的手机 当手机设置为隐藏时,是否有功能或命令检测手机 我是python新手,所以欢迎任何形式的帮助 提前谢谢 您可以尝试连接到手机。如果它在附近,连接就会成功。设备不可发现时可以连接。您必须已经知道手机的设备地址(当您的手机可见时通过发现)才能启动连接。不确定是否仍然需要解决方案(我认为这是正确的,只是没

我试图用python制作一个算法来检测我的手机是否在这个区域。我正在使用此查找我的设备:

bluetooth.discover_设备()

但只有当我将手机上的蓝牙设置为“可见”时,它才会检测到我的手机

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

我是python新手,所以欢迎任何形式的帮助


提前谢谢

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

不确定是否仍然需要解决方案(我认为这是正确的,只是没有成功)。在第5章中,一本名为《暴力Python》的书给出了解决方案,但我还没有成功地实现它。假设您只需将设备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个字节)


这听起来是一个很好的解决方案。但是我怎样才能那样连接它呢?尝试打开L2CAP套接字到设备,请参见pybluez示例中的
sock.connect((bt_addr,port))
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)