V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
gaowenhao
V2EX  ›  Android

android 蓝牙连接硬件的密码校验过程

  •  
  •   gaowenhao · 2018-07-03 10:26:15 +08:00 · 8771 次点击
    这是一个创建于 2340 天前的主题,其中的信息可能已经有所发展或是发生改变。
    你好各位过路大神。

    我现在手头有个安卓手机,有个硬件,这个硬件有一个配套的 app 也安装在了这个安卓机上。

    现在公司有需求,想要看这个安卓机和硬件通讯(双方通过蓝牙通讯)发送的包啥样的,我冥想起了 3 年前 android 开发经验,和找了一些资料连接自己写个 app 连接他这个硬件,成功了!

    但是硬件不发送包过来,想要让硬件往我开发的这个 app 里发送包过来,必须开启一下这个硬件配套的 app,不过问题终于算是解决了,我获取到了那个包长啥样。

    然而现在公司又有需求了,想要不开那个配套 app 去连接这个硬件,于是我又找了一大堆资料,得知(自己猜测)是因为手机和硬件连接之间有一个密码校验的过程,而这个过程是硬件和配套 app 之间约定好的“协议”,搜了很多相关的资料,提这个密码验证的很少,不确定猜想的对不对。

    我想请问各路大神,我这个猜错对不对?如果对,那么有没有可能不使用那个配套 app 去连接这个硬件?
    4 条回复    2018-07-09 11:15:03 +08:00
    gaowenhao
        1
    gaowenhao  
    OP
       2018-07-03 10:34:27 +08:00
    我连接的方法大体如下:
    BluetoothAdapter adapter = BluetoothAdapter.getDefaultAdapter();
    BluetoothDevice device = adapter.getRemoteDevice("硬件的 mac 地址");
    device.connectGatt(MainActivity.this, false, bluetoothGattCallbackOne); //这里传入 callback 函数,


    在 callback 中获取所有的 Service 中的 Characteristic,然后对这些 characteristic 进行 setCharacteristicNotification
    这样 硬件那边有消息后,就会回掉这个回掉方法中的 onCharacteristicChanged。

    但是必须开启一下配套的 app 才能在收到硬件打过来的数据,希望有此方面经验的大神能指点一二。
    gaowenhao
        2
    gaowenhao  
    OP
       2018-07-04 19:13:11 +08:00
    希望有经验的大佬看到后能给点指点。
    chunchun1028
        3
    chunchun1028  
       2018-07-05 09:31:22 +08:00
    看过蓝牙协议,但做没有做过安卓蓝牙开发。

    感觉应该先要确定配套 app 打开后干了什么,你既然已经能拿到双方交互的报文,分析这个应该没问题。
    如果确定了是加密流程,再去分析协议也不迟。具体加密流程可以去找蓝牙官方协议的 Host 卷的安全管理协议那章
    gaowenhao
        4
    gaowenhao  
    OP
       2018-07-09 11:15:03 +08:00
    诸位,这个问题我理清了。
    这个密码校验确实存在,硬件貌似管他叫始能,说白了就是 android 这边写一个密码给硬件硬件通过这个密码鉴别是不是自己人,确实过是自己人后才给发送数据,就是这样希望能帮到后来的人。

    另外,感谢 chunchun1028 的回复。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1839 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 20ms · UTC 16:31 · PVG 00:31 · LAX 08:31 · JFK 11:31
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.