iOS蓝牙、usb、文件分享行为调研

一:蓝牙开关状态调研

1.可以获取到附近蓝牙设备的信息,获取不到连接状态和历史连接列表

2.可以获取到当前音频输出是否是蓝牙输出

详情如下:

1.可以获取到附近蓝牙设备的信息,获取不到连接状态和历史连接列表

获取蓝牙设备信息参考:

博客蓝牙4.0**BLE **:https://www.jianshu.com/p/b62081c427a4

demo:https://github.com/CherishJoyBy/Bluetooth4.0Demo

博客传统蓝牙:https://www.jianshu.com/p/3b404bd672a8

demo: https://github.com/xuzhengquan/BlueToothDemo/

其他:https://www.jianshu.com/p/0879319f5c47

2.可以获取到当前音频输出是否是蓝牙输出 -代码如下:

AVAudioSessionRouteDescription *currentRount = [AVAudioSession sharedInstance].currentRoute;

AVAudioSessionPortDescription *outputPortDesc = currentRount.outputs[0];

**if**([outputPortDesc.portType isEqualToString:@"BluetoothA2DPOutput"]){

    NSLog(@"当前输出的线路是蓝牙输出,并且已连接");

    **return** **YES**;

}**else**{

    NSLog(@"当前是spearKer输出");

    **return** **NO**;

}

二: Airdrop分享信息调研

1.系统文件分享可以hook并获取到分享文件的路径

2.微信的分享可以hook到分享行为,获取不到文件

详情如下:

1.系统文件分享可以hook并获取到分享文件的路径

通过hook UIViewController_presentViewController方法,如果当前vc是[UIActivityViewController class],获取到当前vc的activityItemValues,便利这个values对象数组,获取到分享的文件路径或内容

2.微信的分享可以hook到分享行为,获取不到文件

通过hook UIApplication_openUR方法,如果当前使用的是微信分享协议:@"sendreq/?wechat_app_bundleId”,则说明正在使用微信分享,获取不到具体分享内容

三:usb调研

1.可以通过电量是否是充电状态获取设备是否连线—有误判不准确

2.获取不到usb连接行为。目前可以通过mac和iphone通过usb协议传输数据但是需要两端同时支持,暂时无法仅从iphone获取到当前是否连接

参考项目:libimobiledevice, DarkLightning ,peertalk,github上有源码

博客: http://www.zhaoxiaodan.com/ios/ituns与iphone的通信协议usbmuxd解析.html

https://iosre.com/t/usbmuxd-idevice-usb/1482

https://stackoverflow.com/questions/6161318/how-to-determine-whether-ios-device-is-connected-to-desktop-computer-and-itunes

libimobiledevice使用 https://www.jianshu.com/p/a282fbcafaad

详情如下:

Mac端应用通过 PTUSBDeviceDidAttachNotification: 4170,这个通知获取当前USB连接的设备,然后和设备发起网络请求

这个过程,iPhone先开启的服务,相当于server,例如iPhone的app中起一个端口2345服务

Mac通过usb接口去访问iPhone设备指定端口的服务发送数据包,例如访问http://127.0.0.1:2345

通知信息如下:

NSConcreteNotification 0x600000c90000 {name = PTUSBDeviceDidAttachNotification; object = <PTUSBHub: 0x600000010180>; userInfo = {

DeviceID = 4170;

MessageType = Attached;

Properties =     {

    ConnectionSpeed = 480000000;

    ConnectionType = USB;

    DeviceID = 4170;

    LocationID = 336592896;

    ProductID = 4776;

    SerialNumber = "00008020-001459EC3E32002E";

    UDID = "00008020-001459EC3E32002E";

    USBSerialNumber = 00008020001459EC3E32002E;

};

}}

四:关于外设:

需要定义外设协议才能追踪行为,需要定制化分析

https://blog.csdn.net/qq_34047841/article/details/72822480

demo: EADemo

EADemo( https://developer.apple.com/library/content/samplecode/EADemo/Introduction/Intro.html )

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 这里我们具体说明一下中心模式的应用场景。主设备(手机去扫描连接外设,发现外设服务和属性,操作服务和属性的应用。一般...
    丶逝水流年阅读 2,413评论 3 4
  • 为了表示我对简书『饱醉豚』事件的不满,简书不再更新,后续有文章只更新 个人博客和 掘金 欢迎移步 个人博客或者 掘...
    eagleyz阅读 7,410评论 0 4
  • 为了表示我对简书『饱醉豚』事件的不满,简书不再更新,后续有文章只更新 个人博客和 掘金 欢迎移步 个人博客或者 掘...
    eagleyz阅读 1,542评论 0 3
  • 本文介绍了蓝牙的概念以及具体的使用步骤. 一.蓝牙概念 蓝牙2.0为传统蓝牙,传统蓝牙也称为经典蓝牙.蓝牙4.0因...
    Kris_A阅读 1,130评论 0 53
  • 久违的晴天,家长会。 家长大会开好到教室时,离放学已经没多少时间了。班主任说已经安排了三个家长分享经验。 放学铃声...
    飘雪儿5阅读 7,886评论 16 22

友情链接更多精彩内容