使用libimobiledevice在linux上挂载iphone6

梁丘兴腾
2023-12-01

原文地址::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

 

 

 类似资料: