使用libimobiledevice&ifuse提取iOS沙盒文件
时间:2022-07-23
本文章向大家介绍使用libimobiledevice&ifuse提取iOS沙盒文件,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
使用libimobiledevice&ifuse提取iOS沙盒文件
一、libimobiledevice简介及使用方法
1.1 简介
libimobiledevice
又称libiphone
,是一个开源包,可以让Linux
支持连接iPhone/iPod Touch
等iOS
设备。由于苹果官方并不支持Linux
系统,但是Linux
上的高手绝对不能忍受因为要连接iOS
设备就换用操作系统这个事儿。因此就有人逆向出iOS
设备与Windows/Mac Host
接口的通讯协议,最终成就了横跨三大桌面平台的非官方版本USB
接口library
。经常用Linux
系统的人一定对libimobiledevice
不陌生,但是许多Windows
和Mac
用户也许就不知道了。事实上,它同iTools
一样,都是可以替代iTunes
,进行iOS
设备管理的工具。因为源码是开放的,可以自行编译,所以对很多开发者而言可以说更为实用。
github
官方地址:https://github.com/libimobiledevice/libimobiledevice
1.2 安装
仅演示mac
下的安装方法,其它平台请自行google
。在MacOS
下安装可以使用brew
,具体过程如下:
sudo brew update
sudo brew install libimobiledevice
sudo brew install ideviceinstaller
1.3 常用功能
查看当前所连接的设备
idevice_id -l # 显示当前所连接的设备[udid],包括 usb、WiFi 连接
instruments -s devices # 列出设备包括模拟器、真机及 mac 电脑本身
安装应用 xxx.ipa为应用在本地的路径。
ideviceinstaller -u [udid] -i [xxx.ipa] # 给指定连接的设备安装应用
卸载应用 bundleId为应用的包名。
ideviceinstaller -u [udid] -U [bundleId] # 给指定连接的设备卸载应用
查看设备已安装的应用
ideviceinstaller -u [udid] -l # 指定设备,查看安装的第三方应用
ideviceinstaller -u [udid] -l -o list_user # 指定设备,查看安装的第三方应用
ideviceinstaller -u [udid] -l -o list_system # 指定设备,查看安装的系统应用
ideviceinstaller -u [udid] -l -o list_all # 指定设备,查看安装的系统应用和第三方应用
获取设备信息
ideviceinfo -u [udid] # 指定设备,获取设备信息
ideviceinfo -u [udid] -k DeviceName # 指定设备,获取设备名称:iPhone6s
idevicename -u [udid] # 指定设备,获取设备名称:iPhone6s
ideviceinfo -u [udid] -k ProductVersion # 指定设备,获取设备版本:10.3.1
ideviceinfo -u [udid] -k ProductType # 指定设备,获取设备类型:iPhone8,1
ideviceinfo -u [udid] -k ProductName # 指定设备,获取设备系统名称:iPhone OS
二、挂载文件系统工具ifuse使用简介
ifuse
是一个依赖libimobiledevice
库的工具,所以必须首先安装libimobiledevice
。 安装方式:
brew cask install osxfuse
brew install ifuse
安装好后使用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 its 40-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
this computer in the directory /media/iPhone.
挂载媒体文件目录:
注意,此处的挂载点必须要真实存在,需要预先创建好目录,否则挂载失败
ifuse [挂载点]
卸载挂载点
fusermount -u [挂载点]
挂载某个应用的documents
目录
ifuse --documents [要挂载的应用的bundleID] [挂载点]
//注意,iOS 8.3之后要求应用的UIFileSharingEnabled权限要开启,否则可能没有权限访问,会有如下的错误提示
ERROR: InstallationLookupFailed
The App 'com.wsgh.test' is either not present on the device, or the 'UIFileSharingEnabled' key is not set in its Info.plist. Starting with iOS 8.3 this key is mandatory to allow access to an app's Documents folder.
挂载某应用的整个沙盒目录
ifuse --container [要挂载的应用的bundleID] [挂载点]
- 斯坦福吴恩达团队公布最大医学影像数据集
- Rokid祝明铭:大腿我们不抱,人机交互产品形态未定 | 变局者
- 腾讯AI让二子,柯洁还是输了
- AI创业者的“英雄联盟”,腾讯AI加速器二期项目招募开启
- PyTorch发布一周年:盘点社区和工程大事件,后来者居上态势已显?
- 2018年AI如何发展?普华永道做出了8点预测 | 报告下载
- 不正之风!机器学习论文里都有哪四大投机取巧的写作手法?
- 前端写一个月的原生 Android 是怎样一种体验?
- 给人挖矿还不自知 电脑已变黑客肉鸡
- 反序列化漏洞屡被黑客利用,危害巨大,代码怎样写才安全?
- Mifa 主题微信编辑器
- Mifa GitHub Pages 主题
- Mifa Design:一个服务于 Markdown 的设计体系
- 未来机器人大脑将获取互联网知识自我学习
- java教程
- Java快速入门
- Java 开发环境配置
- Java基本语法
- Java 对象和类
- Java 基本数据类型
- Java 变量类型
- Java 修饰符
- Java 运算符
- Java 循环结构
- Java 分支结构
- Java Number类
- Java Character类
- Java String类
- Java StringBuffer和StringBuilder类
- Java 数组
- Java 日期时间
- Java 正则表达式
- Java 方法
- Java 流(Stream)、文件(File)和IO
- Java 异常处理
- Java 继承
- Java 重写(Override)与重载(Overload)
- Java 多态
- Java 抽象类
- Java 封装
- Java 接口
- Java 包(package)
- Java 数据结构
- Java 集合框架
- Java 泛型
- Java 序列化
- Java 网络编程
- Java 发送邮件
- Java 多线程编程
- Java Applet基础
- Java 文档注释
- deepin安装golang
- PyQt5 技术篇-调用输入对话框(QInputDialog)获取用户输入内容。
- Python+selenium 自动化-通过窗口名切换窗口,如何获取当前窗口的title窗口名
- deepin 任务栏消失问题
- PyQt5 技术篇-调用消息对话框(QMessageBox)进行简单提示!
- composer改源
- Android内存管理(四)Linux的内存管理机制
- JavaScript 技术篇-js通过xpath获取dom节点,js校验xpath唯一性。
- Python 错误使用tuple问题:TypeError: 'tuple' object does not support item assignment. 原因及解决办法
- E-BERT,电商领域语言模型优化实践
- PyQt5 技术篇-透明窗口设置方法,窗口透明度的设置
- 为hexo增加gitalk评论系统
- Python 技巧篇-用print打印输出但不换行方法
- gitalk 自动初始化
- 给hexo申请证书并设置https