首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >libimobiledevice是一个跨平台软件库,用于讨论与iOS设备交互的协议

libimobiledevice是一个跨平台软件库,用于讨论与iOS设备交互的协议

作者头像
云深无际
发布于 2021-04-14 04:42:27
发布于 2021-04-14 04:42:27
3.3K00
代码可运行
举报
文章被收录于专栏:云深之无迹云深之无迹
运行总次数:0
代码可运行



代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
https://libimobiledevice.org/

libimobile设备

使用本机协议与iOS设备上的服务进行通信的库。

特征

libimobiledevice是一个跨平台软件库,用于讨论与iOS设备交互的协议。

与其他项目不同,它不依赖使用任何现有的专有库,也不需要越狱。

一些关键功能是:

  • 接口:为设备服务实现许多高级接口
  • 实现:面向对象的体系结构和服务抽象层
  • 跨平台:在Linux,macOS,WindowsAndroid平台上测试
  • 实用程序:为设备服务提供各种命令行实用程序
  • SSL:允许在OpenSSL或GnuTLS之间进行选择以处理SSL通信
  • 网络:支持与启用“ WiFi同步”的设备的网络连接
  • Python:为Python提供基于Cython的绑定

许多设备服务协议的已实现接口允许应用程序:

  • 访问设备的文件系统
  • 访问文件共享应用程序的文档
  • 检索有关设备的信息并修改各种设置
  • 以与iTunes兼容的本机方式备份和还原设备
  • 管理设备上的应用程序图标划分
  • 安装,删除,列出和基本管理应用程序
  • 使用官方服务人员激活设备
  • 管理联系人,日历,便笺和书签
  • 检索并删除崩溃报告
  • 检索各种诊断信息
  • 建立调试连接以进行应用调试
  • 挂载文件系统映像
  • 转发设备通知
  • 管理设备配置
  • 从设备屏幕获取屏幕截图(需要安装的开发人员图像)
  • 模拟设备的更改地理位置(需要安装的开发人员映像)
  • 中继设备的系统日志
  • 公开用于WebKit远程调试的连接

... 以及更多。

该库自2007年8月开始开发,目标是将对这些设备的支持引入Linux桌面。

安装/入门

Debian / Ubuntu Linux

首先安装所有必需的依赖项并构建工具:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo apt-get install \
	建立基本的
	检查安装
	git \
	autoconf \
	自动制作
	libtool-bin \
	libplist-dev \
	libusbmuxd-dev \
	libssl-dev \
	usbmuxd

如果要选择构建文档或Python绑定,请使用:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sudo apt-get install \
	氧
	赛顿

然后克隆实际的项目存储库:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
git clone https://github.com/libimobiledevice/libimobiledevice.git
 cd libimobiledevice

现在您可以构建并安装它:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
./autogen.sh
使
须藤使安装

如果您需要将自定义前缀或其他选项传递给./configure 您,则可以将它们直接传递为./autogen.sh

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
./autogen.sh --prefix = / opt / local-启用调试
使
须藤使安装

默认情况下,将使用OpenSSL。如果您喜欢GnuTLS,请使用以下命令进行配置 --disable-openssl

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
./autogen.sh --disable-openssl

用法

尚无有关在应用程序中使用库的文档。目前,“黑客方式”是查看所包含实用程序的实现。

实用工具

该库在工具目录中捆绑了以下命令行实用程序:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
列出连接的设备或给定设备的打印设备名称

请查阅每个实用程序的用法信息或手册页,以获取可用命令行选项和用法示例的文档,例如:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ideviceinfo-帮助
man ideviceinfo

我为什么要写这个东西,因为这个库我看见它已经很多年了~17年吧

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
https://mp.weixin.qq.com/s?__biz=MjM5NjA0NjgyMA==&mid=201734961&idx=1&sn=ef3016943b7bfda33fd6b6c5cdb9d022&chksm=2f1da9ba186a20acc28a4816cf8757fe0ed82f46abe1f98bfbabe8c54de2e76165b2f74a5034&mpshare=1&scene=1&srcid=070867PF5JJ3yH7vApDg7G9k&sharer_sharetime=1594192782488&sharer_shareid=61e49cc5cd57285cbf0459fbab36b1f5&key=a1183f4560d3e24ee90824ae2dbf3f7dc2e18061dafad836abbf040b7dfe1637909deb4ff4ba0bab916cb792155cc42f2a863807590d123150d54191ca328deca967bbf6e1f7a590ddb4edbf0924c36c&ascene=1&uin=MjYzMjA4NjEyNA%3D%3D&devicetype=Windows+10+x64&version=62090529&lang=zh_CN&exportkey=AbrYy5wcoXZe%2FcqpsvT%2BlYQ%3D&pass_ticket=3qgKnQb%2BVJtk9%2Ff9N6hbBDBa9WDk2L0Z9PNfjSdGxHw2DWt%2FTHhNnQ9BKmHw0s2X

在freebuf上面看到一个用树莓派改装成渗透机器

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
https://www.freebuf.com/news/topnews/53260.html

我的天!14年的文章了,算是老文了...

这里我贴过来,加个原创.为了加标签.有问题,我删除

模拟iTunes协议,告诉iPhone我需要给你备份数据,那么按照它的接受协议把数据copy到存储单元不就ok了。至于它怎么去打包那些数据,根据它打包的方式解包不就还原所有数据了。

我们先看下下图:

图是网上找来的, 其中黄色部分为四个usb里面的触点, 其中1,4 从图中可以看到是正负极(虽然只有+,-号),2,3 是 “D+ 和D-” 是什么呢?其实就是data+ 和 data- 数据信号的输入和输出。其实从这张图上也能猜到为什么正常充电宝不会提示,而插到陌生电脑上会提示。因为在陌生电脑上面data+和data-上面产生了数据信号,所以导致iPhone会进行询问是否应该信任此设备以进行数据交互,下面看看如何快速实现。

所需材料:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
树莓派 (raspberry pi) 一枚

其实树莓派就是一个ARM平台上面可以跑跑Linux, 大家最关心的应该都是在ARM平台上面的Linux怎么模拟数据让iPhone把备份数据给存储到树莓派上面的存储器。由开源实现

libimobiledevice , 这就是我们今天的主角,看看它介绍(官方介绍):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
libimobiledevice is a cross-platform software library that talks the protocols to support iPhone®, iPod Touch®, iPad® and Apple TV® devices. Unlike other projects, it does not depend on using any existing proprietary libraries and does not require jailbreaking. It allows other software to easily access the device's filesystem, retrieve information about the device and it's internals, backup/restore the device, manage SpringBoard® icons, manage installed applications, retrieve addressbook/calendars/notes and bookmarks and (using libgpod) synchronize music and video to the device. The library is in development since August 2007 with the goal to bring support for these devices to the Linux Desktop.

上面啰嗦了那么多E文其实就是说它不依赖于第三方库,跨平台的实现了iPhone,iPod Touch, Ipad等苹果设备的通讯协议。

在树莓派上面怎么编译可以看这里所需依赖

https://github.com/libimobiledevice/libimobiledevice

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
https://libimobiledevice.org/

自己看吧

编译后有它的动态库,可以根据它的文档自己实现想要的功能,不过对于仅仅只是需要“窃取”隐私数据,其实自带的tools目录中的工具就已经够用了,在看编译完后的工具都长什么样(图片演示均为笔记本上面的libimobile):

可以看到编译后tools目录自带的这些小工具,比较显眼的几个:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
idevice_id                  获取已连接设备ID, idevice_id -l
idevicebackup               ios较低版本用来备份数据的工具
idevicebackup2              ios新版本备份数据工具
idevicesscreenshot          从名字就能看出来是屏幕截图
idevicesyslog               实时显示log信息的,跟adb logcat 一样
ideviceinfo                 设备信息
....                        其他的看名字基本就知道大概了

好了,我们直接上主角吧,idevicesbackup2。在当前目录建立文件夹bak,当然你愿意放在那里都行只是用来存储备份数据的。usb连接电脑和手机(不是说好的充电宝么,好吧...没啥差吧^_^)

输入命令:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
 idevicebackup2 backup ./bak

如果没有配置环境变量就给idevicebackup2 指定当前目录./

运行过程如下图所示:

运行结束后在bak目录下会生成一个由字符串组成的目录,打开我们可以看到一堆不太能够容易理解的文件,其实这些就是备份经过处理的数据,如图所示:

那么拿到这些数据有毛用... 别捉急,既然能拿到肯定有办法解包还原数据

输入命令:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ideivcesbackup2  unpack ./bak

命令执行完后我们就可以看到bak目录下多了一个_unpack_目录,看看里面有些什么吧。

由于层级太多只显示了3级目录,不过我们先找找数字公司演示的照片是在什么地方存储的可以在var/mobile/Media/DCIM 目录中看到这里存储的都是个人相机拍的照片和视频(没拍摄过所以里面木偶有显示~)如下图:

仅仅只能拿到相片么? 其实细心的读者肯定都看到了Keychains 就应该知道这玩意是啥了。好了再看看能获取到其他信息不?比如safari或者其他APP的本地遗留数据,例如cookie 、 聊天记录?看看var/mobile/library下面的sms和cookie信息:

我不会告诉你 var/mobile/Applications 全部是应用的备份文档信息里面包含的账户密码,聊天信息等。

官网我几年前去看过一次,又土又旧,我丢现在一看,真的.啧啧,豪华无比的官网啊.果然面子工程好棒的~

我没有苹果手机,所以测试不了各种功能.关于树莓派部署业绩美哟写

因为win的不亲民性.


win平台现在用不了,但是肯定是会出现,win平台的.我有了苹果手机,或者谁给我借一个,我折腾下~

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-07-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 云深之无迹 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Jmeter系列(32)- 详解 CSV 数据文件设置
了解一哈什么是 CSV 文件 为了实现简单的数据存储,是一个纯文本的文件 最通用的一种文件格式,它可以非常容易地被导入各种PC表格及数据库中 CSV 文件可以用记事本、excel打开;用记事本打开的话
小菠萝测试笔记
2020/06/29
3.1K0
Jmeter系列(32)- 详解 CSV 数据文件设置
性能测试工具Jmeter参数化方法
Jmeter配置元件功能相对比较强大,不仅可以进行参数化,存储服务的响应信息参数化,还可以进行初始化配置JDBC,配置与数据库的链接等。
漫谈测试
2025/01/08
2670
性能测试工具Jmeter参数化方法
高级性能测试系列《17. DDT数据驱动性能测试:csv数据文件设置。 》
性能测试,因为要使用多用户并发,请求的时间也要几分钟到几十分钟,所以总请求量,可能会很大。
清菡
2022/06/21
7730
高级性能测试系列《17. DDT数据驱动性能测试:csv数据文件设置。 》
Jmeter(八) - 从入门到精通 - JMeter配置元件(详解教程)
JMeter配置元件可以用来初始化默认值和变量,读取文件数据,设置公共请求参数,赋予变量值等,以便后续采样器使用。将在其作用域的初始化阶段处理。配置元件(Config Element)提供对静态数据配置的支持,可以为取样器设置默认值和变量。
北京-宏哥
2020/06/11
4.5K0
Jmeter(八) - 从入门到精通 - JMeter配置元件(详解教程)
jmeter的性能指标_jmeter性能测试指标分析
大家好,我是架构君,一个会写代码吟诗的架构师。今天说一说jmeter的性能指标_jmeter性能测试指标分析,希望能够帮助大家进步!!!
Java架构师必看
2022/07/12
1.7K0
jmeter的性能指标_jmeter性能测试指标分析
【性能测试】Jmeter详细操作-小白使用手册(2)
本篇文章主要介绍Jmeter中如何使用 JSON断言、同步定时器、事务控制器、CSV数据文件设置、HTTP Cookie管理器
三三是该溜子
2025/03/11
3230
【性能测试】Jmeter详细操作-小白使用手册(2)
【JMeter-3】JMeter参数化4种实现方式
什么是参数化?从字面上去理解的话,就是事先准备好数据(广义上来说,可以是具体的数据值,也可以是数据生成规则),而非在脚本中写死,脚本执行时从准备好的数据中取值。
云深i不知处
2020/09/16
4.4K0
玩转Jmeter进行性能测试
时逢6.18钉钉应用大促,为避免高负载下钉钉微应用的稳定性问题,遂赶工赶时完成钉钉方要求的稳定性压测,以此为楔,深探Jmeter,事后总结,是以成文。不愿窃为私有,分享给诸位QA同学,以期遇坑绕之,少些弯路。
晴空SunnySky
2023/09/26
3.3K0
【性能工具】Jmeter之参数化详解
选中需要添加变量控件的父节点,右键——>添加——>配置元件——>用户自定义的变量,截图如下:
Luga Lee
2022/03/25
1.5K0
【性能工具】Jmeter之参数化详解
06-性能测试之JMeter参数化
参数化是自动化测试脚本的一种常用技巧。简单来说,参数化的一般用法就是将脚本中的某些输入使用参数来代替,在脚本运行时指定参数的取值范围和规则,这样,脚本在运行的时候就可以根据需要选取不同的参数值作为输入。这种方式在自动化中称为数据驱动测试(Data Driven Test),参数的取值范围被称为数据池(Data Pool)。
测试邦
2019/09/04
9110
06-性能测试之JMeter参数化
JMeter四种参数化方式
JMeter参数化是指把固定的数据动态化,这样更贴合实际的模拟用户请求,比如模拟多个不同账号。JMeter一共有四种参数化方式,分别是:
dongfanger
2021/06/01
1.8K0
JMeter四种参数化方式
jmeter压测学习7-登录参数化(CSV 数据文件设置)
我们在压测登录接口的时候,如果只用一个账号去设置并发压测,这样的结果很显然是不合理的,一个用户并发无法模拟真实的情况。 如果要压测登录接口,肯定得准备几百,甚至上千的账号去登录,测试的结果才具有可参考性。
上海-悠悠
2019/12/05
1.3K0
jmeter使用个人总结(很细很全)
Apache JMeter 是 Apache 组织开发的基于 Java 的压力测试工具。用于对软件做压力测试,它最初被设计用于 Web 应用测试,但后来扩展到其他测试领域。 它可以用于测试静态和动态资源,例如静态文件、Java 小服务程序、CGI 脚本、Java 对象、数据库、FTP 服务器, 等等。JMeter 可以用于对服务器、网络或对象模拟巨大的负载,来自不同压力类别下测试它们的强度和分析整体性能。另外,JMeter 能够对应用程序做功能/回归测试,通过创建带有断言的脚本来验证你的程序返回了你期望的结果。为了最大限度的灵活性,JMeter 允许使用正则表达式创建断言。
魔都虫师
2020/05/21
5.5K1
jmeter使用个人总结(很细很全)
如何正确使用JMeter性能测试?紧扣面试实际要求
前段时间专门挑了一段时间在准备面试。经过两次面试后,有一些比较深刻的认识。对于企业要求来说,除了对专业理论知识考究之外,对测试工具这块也是看重的。
憨憨默默成神
2021/10/12
1.7K0
如何正确使用JMeter性能测试?紧扣面试实际要求
JMeter参数化4种实现方式「建议收藏」
什么是参数化?从字面上去理解的话,就是事先准备好数据(广义上来说,可以是具体的数据值,也可以是数据生成规则),而非在脚本中写死,脚本执行时从准备好的数据中取值。
全栈程序员站长
2022/09/07
1.2K0
JMeter参数化4种实现方式「建议收藏」
Jmeter性能测试 -2 熟悉Jmeter使用
做性能测试之前要对Jmeter有一定的了解,本文通过案例,帮大家快速上手Jmeter。如果你已经在用,那么可以忽略。
孟船长
2022/02/23
2.2K0
Jmeter性能测试 -2 熟悉Jmeter使用
Jmeter(三十四) - 从入门到精通进阶篇 - 参数化(详解教程)
前边三十多篇文章主要介绍的是Jmeter的一些操作和基础知识,算是一些初级入门的知识点,从这一篇开始我们就来学习Jmeter比较高级的操作和深入的知识点了。今天这一篇主要是讲参数化,其实前边或多或少的介绍过类似的知识点,知识没有系统的讲解,由于这个在实际工作中用到比较多而且经常用到,所以宏哥今天将其单独作为一个主题来系统的讲解。
北京-宏哥
2021/01/07
2.7K0
性能工具之Jmeter小白入门系列之四
青,取之于蓝,而青于蓝;冰,水为之,而寒于水。木直中绳,輮以为轮,其曲中规。虽有槁暴,不复挺者,輮使之然也。故木受绳则直,金就砺则利,君子博学而日参省乎己,则知明而行无过矣。
高楼Zee
2020/06/02
2.6K0
性能工具之Jmeter小白入门系列之四
Jmeter 参数化的多种方式
其中,参数含义如下: Filename:引用文件地址,可以填相对路径或绝对路径。相对路径的根节点是Jmeter的启动目录,如果测试执行是分发到多台远程负载机上的,使用相对路径能够避免因Jmeter安装路径不同导致的参数化文件无法取到的问题。另外,也可以利用Jmeter的变量来参数化参数文件的路径,使用${paraUrl},同时在元件【User Defined Variables】中设置文件路径。 File encoding:读取参数文件时的编码格式,建议填写UTF-8,避免打开乱码情况。 Variable Names(comma-delimited):即HTTP请求中希望随请求变化的变量名称。如果有多个变量,需使用符号隔开,该符号应与引用文件中变量之间的符号一致。若该处填写的变量名称多余引用文件中的参数列数,则多余的参数将无法取到值。 Ignore first line(only used if Variable Names is not empty):忽略首行,当引用文件中首行设置了变量名时,该项设为 true,此时每次请求读取文件时会自动忽略首行,直接读取第二行的数据。 Delimiter(use '\t' for tab):即用来分隔引用文件中的分隔符,如果引用文件中使用tab分隔,此处填写'\t'。
用户5521279
2019/07/10
1.6K0
Jmeter 参数化的多种方式
11-其他协议
使用./ 或.\开始。建议使用.\。因为这个是linux下的写法,并且在windows下也可以正常使用
zx钟
2021/04/29
8500
11-其他协议
推荐阅读
相关推荐
Jmeter系列(32)- 详解 CSV 数据文件设置
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验