原文地址::https://blog.csdn.net/fengzei886/article/details/53380009
相关文章
1、ubuntu上管理iphone----https://blog.csdn.net/andy205214/article/details/7238000
2、ubuntu挂载iphone失败显示未处理的锁定错误----https://blog.csdn.net/xuaba/article/details/83114185
3、Linux下管理挂载IOS设备——libimobiledevice----https://blog.csdn.net/wnma3mz/article/details/79178838
4、如何解决iPhone在Ubuntu中的挂载问题 ----https://www.sohu.com/a/63965237_391130
5、iFuse – Mount your Iphone/Ipod Touch on Ubuntu in 3 easy steps----https://pedanticdevs.com/2009/09/ifuse-mount-your-iphoneipod-touch-in.html
6、iOS开发的另类神器:libimobiledevice开源包【类似android adb 方便获取iOS设备信息】----https://www.cnblogs.com/xiyuan2016/p/7736973.html
准备环境:
Linux: Ubuntu 16.04 LTS on VirtualBox
iPhone6: iOS10.0.2
第三方安装包:libimobiledevice
说明:
一般情况下如果连接iPhone到linux,Windows机器上,如果没有安装iTunes或者其他第三方软件,则只能识别照片,其他文件都是无法读取的,除非越狱后也是可以的。
libimobiledevice是一款基于GPL2.0开源协议的跨平台访问iOS设备的协议库,它是独立的软件库,没有苹果公司授权,也不需要依靠其它苹果授权的第三方软件和对设备越狱,可以帮助解决iPhone,iPod,iPad,Apple TV连接到其它非Mac OS设备,也允许其他软件访问这些设备的文件系统,管理安装的应用程序,以及获取其他的权限。但是这里并不是所有的权限,苹果考虑到其系统的安全性,有些功能还是被禁止访问的。
编译时linux系统需要提前安装的依赖:
make, autoheader,automake,autoconf, libtool, pkg-config, gcc
libimobiledevice中其他库文件介绍:
- libplist:
是以以二进制或者XML处理苹果属性列表文件的小的可移植的C语言库
- libusbmuxd:
通过usbmuxd后台程序提供的socket和iOS设备多路复用连接的客户端库。
- usbmuxd:
和iOS设备多路连接的socket守护进程,usbmuxd全称是“USB multiplexing daemon“,该进程通过USB和iOS设备复用连接。iTunes和iPhone通信使用的也是usbmux协议,所有和iOS设备通过USB通信都是需要usbmux, 当iOS设备通过USB插入时,usbmuxd作为中间媒介连接到设备,像TCP那样复用连接到设备的sockets,可以并行创建多个TCP 端口。
- ifuse:
实现访问iOS系统内容的fuse系统
官网:
http://www.libimobiledevice.org
https://github.com/libimobiledevice
安装:
可以到github上面下载源码
或者安装git, 使用git命令操作
配置git时,如果使用的是代理,需要设置http.proxy:
$git config --global http.proxy http://<username>:<password>@<proxy>:<port>
$git config --global user.name <your_github_username>
$git config --global user.email <your_github_emailaddress>
1
2
3
为便于管理,建立新文件夹用于对libimobiledevice的安装:
$mkdir libimobiledevice
$cd libimobiledevice
1
2
克隆源码包到本地:
$git clone https://github.com/libimobiledevice/libplist.git
$git clone https://github.com/libimobiledevice/usbmuxd.git
$git clone https://github.com/libimobiledevice/libusbmuxd.git
$git clone https://github.com/libimobiledevice/ideviceinstaller.git
$git clone https://github.com/libimobiledevice/ifuse.git
$git clone https://github.com/libimobiledevice/libirecovery.git
$git clone https://github.com/libimobiledevice/libideviceactivation.git
1
2
3
4
5
6
7
注意以下包的安装顺序,因为包和包之间有前后依赖关系,可能因为系统安装包的不同,需要安装的插件会不同,如果已经安装了相应的插件,则不许用重新安装,这里测试的是新安装的Ubuntu16.04 LTS
libplist 1.13.0:
$cd plist
$vim README
$sudo apt-get install make automake autoconf libtool pkg-config
$sudo apt-get install python-dev
$./autogen.sh
$sudo make
$sudo make install
libusbmuxd 1.1.0:
$cd libusbmuxd
$vim README
$./autogen.sh
$sudo make
$sudo make install
libimobiledevice 1.2.1:
$cd ../libimobiledevice/
$vim README
$sudo apt-get install libssl-dev
$./autogen.sh
$sudo make && make install
usbmuxd 1.1.1:
$cd ../usbmuxd
$vim README
$sudo apt-get intall libusb-1.0-0-dev
$./autogen.sh
$sudo make
$sudo make install
ifuse 1.1.3:
$cd ../ifuse/
$vim README
$sudo apt-get install libfuse-dev
$./autogen.sh
$sudo make && make install
设置lockdown权限,iOS7以上的系统通过lockdown管理和iOS设备之间的派对(通过idevicepair命令):
$sudo chmod 0777 -R /var/lib/lockdown/
1
建立新的挂载目录,并且设置正确的用户属性和权限,不然挂载时会出现没有权限,或者操作类型不支持等各种问题,导致失败。
$sudo mkdir -p /media/iphone
$sudo chown $USER:$USER /media/iphone -R
$sudo chmod 0777 /media/iphone
1
2
3
验证:
通过USB连接手机和Ubuntu,手机端弹出是否信任对话框时,选择 信任
所有请求手机端有应答的操作都必须保持手机处于解锁状态
派对手机:
$idevicepair pair
ERROR: Could not validate with device 94062c249078ef7931bf08ee83a2ba730bc7e352 because a passcode is set. Please enter the passcode on the device and retry.
$idevicepair pair
SUCCESS: Paired with device 94062c249078ef7931bf08ee83a2ba730bc7e352
1
2
3
4
挂载iPhone:
$ifuse /media/iphone
1
无任何错误信息,说明挂载成功。
使用结束后,记得通过下面命令解除挂载:
$fusermount -u /media/iphone
1
我尝试在Ubuntu14.04虚拟机中挂载时,始终会包错误:lock down error code -21, 始终解决不了,包括尝试在新建的系统中安装,官网提了issue,也没有回复。
https://github.com/libimobiledevice/libimobiledevice/issues/188
派对成功后,使用命令读取手机信息:
这里读取的信息非常全面,包括IMEI,手机硬件电路信息,手机颜色代码,手机号码,基带,时区等等,都是一些很重要的信息!
这里我删除了部分隐私信息
$ideviceinfo
ActivationState: Activated
ActivationStateAcknowledged: true
BasebandActivationTicketVersion: V2
BasebandCertId: 3840149528
BasebandChipID: 8343777
BasebandKeyHashInformation:
AKeyStatus: 2
SKeyHash: u+/tcCwvaQ+1Y9t40I4yegCEmB28mALlaROhaIVGBWo=
SKeyStatus: 0
BasebandMasterKeyHash:
BasebandRegionSKU:
BasebandSerialNumber: Cn4jog==
BasebandStatus: BBInfoAvailable
BasebandVersion: 5.24.00
BluetoothAddress:
BoardId: 6
BrickState: false
BuildVersion: 14A456
CPUArchitecture: arm64
CarrierBundleInfoArray[1]:
0:
CFBundleIdentifier: com.apple.CMCC_cn
CFBundleVersion: 25.1
IntegratedCircuitCardIdentity: 898600910915f1011209
InternationalMobileSubscriberIdentity: 460006144159788
MCC: 460
MNC: 00
SIMGID1: /w==
SIMGID2: /w==
CertID: 3840149528
ChipID: 28672
ChipSerialNo: Cn4jog==
DeviceClass: iPhone
DeviceColor: #e1e4e3
DeviceName: iPhone
DieID:
EthernetAddress:
FirmwareVersion: iBoot-3406.1.79
FusingStatus: 3
HardwareModel: N61AP
HardwarePlatform: t7000
HostAttached: true
IntegratedCircuitCardIdentity:
InternationalMobileEquipmentIdentity:
InternationalMobileSubscriberIdentity:
MLBSerialNumber: F3Y50620ZR1F98FE
MobileEquipmentIdentifier:
MobileSubscriberCountryCode: 460
MobileSubscriberNetworkCode: 00
ModelNumber: MG492
NonVolatileRAM:
auto-boot: dHJ1ZQ==
backlight-level: MTQ2OQ==
boot-args:
com.apple.System.tz0-size: MHhDMDAwMDA=
PartitionType:
PasswordProtected: true
PhoneNumber:
PkHash:
ProductName: iPhone OS
ProductType: iPhone7,2
ProductVersion: 10.0.2
ProductionSOC: true
ProtocolVersion: 2
ProximitySensorCalibration:
RegionInfo: CH/A
SBLockdownEverRegisteredKey: true
SIMGID1: /w==
SIMGID2: /w==
SIMStatus: kCTSIMSupportSIMStatusReady
SIMTrayStatus: kCTSIMSupportSIMTrayInsertedWithSIM
SerialNumber: F1DP6UKCG5MQ
SoftwareBehavior: QQEAAAAAAAAAAAAAAAAAAA==
SoftwareBundleVersion:
SupportedDeviceFamilies[1]:
0: 1
TelephonyCapability: true
TimeIntervalSince1970: 1480061624.803156
TimeZone: Asia/Shanghai
TimeZoneOffsetFromUTC: 28800.000000
TrustedHostAttached: true
UniqueChipID: 8554561647182886
UniqueDeviceID: 94062c249078ef7931bf08ee83a2ba730bc7e352
UseRaptorCerts: true
Uses24HourClock: false
WiFiAddress:
kCTPostponementInfoPRIVersion: 0.1.175
kCTPostponementInfoPRLName: 0
kCTPostponementInfoServiceProvisioningState: true
kCTPostponementStatus: kCTPostponementStatusActivated
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
查看iPhone中的文件:
打开Ubuntu文件管理:
读取音频文件:
可以正常播放iPhone应用程序博客里的音频文件:
读取视频文件:
可以正常播放iPhone应用程序博客里的音频文件:
不知道其他第三方app可不可以也实现这样通信。测试中出了podcasts没有其他app识别出来,可能是没有实现通信的协议,需要进一步研究。如果第三方app也能成功实现通信,那将可以在很多基于Linux系统的设备中使用。不过商业项目最好还是申请MFi账号,通过苹果认证,以防出现其他法律风险。
————————————————
版权声明:本文为CSDN博主「Brandon_Ho」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/fengzei886/article/details/53380009