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 = ; 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 )

你可能感兴趣的:(iOS蓝牙、usb、文件分享行为调研)