美文网首页
2021-03-09

2021-03-09

作者: 迷雾前行 | 来源:发表于2021-03-09 10:50 被阅读0次

使用libimobiledevice + ifuse提取iOS沙盒文件

简介

libimobiledevice:一个开源包,可以让Linux支持连接iPhone/iPod Touch等iOS设备。

Git仓库:https://github.com/libimobiledevice/libimobiledevice.git

ifuse: 也是一个开源包,可以用来访问iDevice的工具

Git仓库:https://github.com/libimobiledevice/ifuse.git

我们可以利用libimobiledevice与ifuse进行shell封装,辅助实现自动化的测试过程。

这里我们用来提取iOS设备上APP沙盒中的日志文件

快速直接安装libmobiledevice的方法

MacOS上安装libimobiledevice

brew update

brew install libimobiledevice

#libimobiledevice中并不包含ipa的安装命令,所以还需要安装

brew install ideviceinstaller

Ubuntu下安装libimobiledevice

sudo add-apt-repository ppa:pmcenery/ppa

sudo apt-get update

apt-getinstall libimobiledevice-utils

sudo apt-getinstall ideviceinstaller

常用功能

1. 获取设备已安装app的bundleID

ideviceinstaller -l

演示:

Jackeys-MacBook-Pro:/ jackey$ ideviceinstaller -l

Total: 13 apps

com.zhouxi.xiaoailiteios - 小米同学20com.apple.test.WebDriverAgentRunner-Runner - WebDriverAgentRunner-Runner1com.apple.store.Jolly - Apple Store5.0.0.0302com.apple.clips - 可立拍4141.1.91com.apple.mobilegarageband - 库乐队4878.17com.apple.Keynote - Keynote 讲演5625com.apple.Numbers - Numbers 表格5625com.apple.Pages - Pages 文稿5625com.apple.iMovie - iMovie3709.9.72com.apple.itunesu - iTunes U2360com.sogou.sogouinput - 搜狗输入法148198com.tencent.xin - 微信6.7.4.44com.ss.iphone.ugc.AwemeInhouse - 抖音短视频内测43006Jackeys-MacBook-Pro:/ jackey$

2. 安装ipa包,卸载应用

//命令安装一个ipa文件到手机上,如果是企业签名的,非越狱机器也可以直接安装了。ideviceinstaller -i xxx.ipa//命令卸载应用,需要知道此应用的bundleIDideviceinstaller -U [bundleID]

卸载演示:

Jackeys-MacBook-Pro:/ jackey$ ideviceinstaller -U com.zhouxi.xiaoailiteios

Uninstalling 'com.zhouxi.xiaoailiteios'- RemovingApplication (50%)

- GeneratingApplicationMap (90%)

- Complete

Jackeys-MacBook-Pro:/ jackey$

安装演示:

Jackeys-MacBook-Pro:Code jackey$ ideviceinstaller -i QQ音乐\8.9.7.ipa

Copying 'QQ音乐 8.9.7.ipa' to device... DONE.

Installing 'com.tencent.QQMusic'- CreatingStagingDirectory (5%)

- ExtractingPackage (15%)

- InspectingPackage (20%)

- TakingInstallLock (20%)

- PreflightingApplication (30%)

- VerifyingApplication (40%)

- CreatingContainer (50%)

- InstallingApplication (60%)

- PostflightingApplication (70%)

- SandboxingApplication (80%)

- GeneratingApplicationMap (90%)

- Complete

Jackeys-MacBook-Pro:Code jackey$

这里补充一个: ipa我们可以通过itunes来进行下载, 下载完后可以在iTunnes偏好设置中看到存放目录

如果连接了多部手机需要分别安装时,请使用UDID指定:ideviceinstaller -u udid -i *.ipa

3. 查看系统日志

idevicesyslog

4. 查看当前已连接的设备的UUID

idevice_id --list

5. 截图

idevicescreenshot

6. 查看设备信息

ideviceinfo

7. 获取设备时间

idevicedate

8. 设置代理

iproxy

 usage: iproxy LOCAL_TCP_PORT DEVICE_TCP_PORT [UDID]

9. 获取设备名称

idevicename

10. 查看和操作设备的描述文件

ideviceprovision list

11. 挂载DeveloperDiskImage,用于调试(这个在我的机器上面不能用, 应该是缺少什么东西了)

ideviceimagemounter

12. 调试程序

idevicedebug

如果在运行上面指令出现以下错误:

"Could not connect to lockdownd. Exiting."

使用以下方式重新安装

brew uninstall ideviceinstaller

brew uninstall libimobiledevice

brew install --HEAD libimobiledevice

brew link --overwrite libimobiledevice

brew install --HEADideviceinstaller

brew link

--overwrite ideviceinstaller

重新安装过程中如果出现以下错误:

A recent change to libimobiledevice bumped the constraint on libusbmuxd to >= version1.1.0. The current usbmuxd homebrew packageisversion1.0.10.

As a result, homebrew --HEAD installs of libimobiledevice no longer build without a --HEAD install of usbmuxd.

使用以下指令升级usbmuxd:

brew update

brew uninstall --ignore-dependencies usbmuxd

brew install --HEAD usbmuxd

brew link --overwrite usbmuxd

升级后接着安装libimobiledevice

挂载文件系统工具:ifuse

安装方式:

brew cask install osxfuse

brew install ifuse

或者通过官网安装 osxfuse

https://osxfuse.github.io

然后使用上面指令安装ifuse

1. 安装好后使用ifuse -h会打印详细使用说明

Usage: ifuse MOUNTPOINT [OPTIONS]

Mount directories of an iOS device locally using fuse.

  -o opt,[opt...]    mount options

  -u, --udid UDID    mount specific device by its40-digit device UDID

  -h, --help        print usage information

  -V, --version        print version

  -d, --debug        enable libimobiledevice communication debugging

  --documents APPID    mount'Documents' folder of app identified by APPID

  --container APPID    mount sandbox root of an app identified by APPID

  --root        mount root file system (jailbroken device required)

Example:

  $ ifuse /media/iPhone --root

  This mounts the root filesystem of the first attached device on

  thiscomputerinthe directory /media/iPhone.

Jackeys-MacBook-Pro:Code jackey$

2. 挂在媒体文件目录:

//注意,此处的挂载点必须要真实存在,需要预先创建好目录,否则挂载失败ifuse [挂载点]

演示: 

1sudo mkdir /myapp

Jackeys-MacBook-Pro:/ jackey$ sudo ifuse myapp/Password:

Jackeys-MacBook-Pro:/ jackey$

卸载挂载点

fusermount -u [挂载点]

这个指令在我的电脑上不行, 我改用的sudo umount /myapp

3. 挂载某个应用的documents目录

ifuse --documents [要挂载的应用的bundleID] [挂载点]//注意,iOS 8.3之后要求应用的UIFileSharingEnabled权限要开启,否则可能没有权限访问,会有如下的错误提示ERROR: InstallationLookupFailed

The App 'com.wsgh.test'iseither not present on the device, or the'UIFileSharingEnabled'keyisnotsetinits Info.plist. Starting with iOS8.3thiskeyismandatory to allow access to an app's Documents folder.

演示:

Jackeys-MacBook-Pro:/ jackey$ sudo ifuse --documents com.zhouxi.xiaoailiteios /myapp

Password:

ERROR: InstallationLookupFailed

Jackeys-MacBook-Pro:/ jackey$

报这个错是因为我们app没有开启文件共享,需要在app的info.plist添加一下字段

我们再试试

Jackeys-MacBook-Pro:/ jackey$ sudo ifuse --documents com.zhouxi.xiaoailiteios /myapp

Password:

mount_osxfuse: mount point /myappisitself on a OSXFUSE volume

这里报错的原因是我们不能把文件挂在到根目录, 我们先删除之前的挂载

重新挂在到Document目录下我们自己的文件夹中

ifuse --documents com.zhouxi.xiaoailiteios /Users/jackey/Documents/Xiaomi/myapp

OK, 这次没有出错, 打开Finder进入所在目录发现myapp文件夹没有了, 但增加了一个OSXFUSE Volume的目录

打开里面就是我们的Documents目录

使用umount可卸载

umount /Users/jackey/Documents/Xiaomi/myapp

4. 挂在某应用的整个沙盒目录

ifuse --container [要挂载的应用的bundleID] [挂载点]

演示:

ifuse --container com.zhouxi.xiaoailiteios /Users/jackey/Documents/Xiaomi/myapp/xiaoailite

打开finder可以看到整个沙盒目录都挂在上来了

如果需要自动提取沙盒日志,这里我们可以写脚本使用挂在的目录去获取里面的内容

Jackeys-MacBook-Pro:xiaoailite jackey$ pwd/Users/jackey/Documents/Xiaomi/myapp/xiaoailite

Jackeys-MacBook-Pro:xiaoailite jackey$ ls

Documents    Library        SystemData    tmp

Jackeys-MacBook-Pro:xiaoailite jackey$

相关文章

  • 前端面试每日 3+1 —— 第693天

    今天的知识点 (2021-03-09) —— 第693天 (我也要出题[http://www.h-camel.co...

  • 周二 2021-03-09 22:50 - 07:00 雨 08

    周二 2021-03-09 22:50 - 07:00 雨 08h47m 记录闪现的灵感(inspirations...

  • bitshares比特股数据20210309

    2021-03-09比特股BTS大额转账的记录 时间转出转入BTS数量23:10:03binance-bts-1b...

  • 女神节听老师答疑收获

    中原焦点团队网初20中20,坚持分享415天, 2021-03-09 1在咨询中,要想无为,首先要训练有...

  • 你只管盛开

    2021-03-09精进第49天 | 没有记录就没有发生 2021年的事业梦想个人目标描述:达成MDRT业绩目标。...

  • 《吸金广告》2 制造稀缺 2021-03-09

    # 《吸金广告》2 制造稀缺 2021-03-09 > 好的标题应包括四个特点:1.利己心;2.新闻;3.好奇...

  • 2021-03-09 有关学习力

    【2021-03-09日精进 第293天】表现:9分 回看了永澄老师的学习力提升的构想,从建立学习力系统入手,让...

  • 大叔比我大三岁

    2021-03-09 “还是谢谢我大叔,云陪我了这么长时间。像个老熟人一样。" (还记得之前说的爱上的那个陌生人的...

  • 2021-03-09便利贴的日子

    2021-03-09便利贴的日子 1、感谢你对我的信任,愿意分享你这段特殊时光的特殊心情,特别情绪。不管你什么时候...

  • 5张面孔

    我怎么如此幸运-99挑战赛3-戴红霞(2021-03-09) 我怎么如此幸运-5张面孔 1.我怎么如此幸运意想不到...

网友评论

      本文标题:2021-03-09

      本文链接:https://www.haomeiwen.com/subject/kybvqltx.html