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

2021-04-14 12:42:27 浏览数 (1)




代码语言:javascript复制
https://libimobiledevice.org/

libimobile设备

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

特征

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

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

一些关键功能是:

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

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

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

... 以及更多。

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

安装/入门

Debian / Ubuntu Linux

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

代码语言:javascript复制
sudo apt-get install 
	建立基本的
	检查安装
	git 
	autoconf 
	自动制作
	libtool-bin 
	libplist-dev 
	libusbmuxd-dev 
	libssl-dev 
	usbmuxd

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

代码语言:javascript复制
sudo apt-get install 
	氧
	赛顿

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

代码语言:javascript复制
git clone https://github.com/libimobiledevice/libimobiledevice.git
 cd libimobiledevice

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

代码语言:javascript复制
./autogen.sh
使
须藤使安装

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

代码语言:javascript复制
./autogen.sh --prefix = / opt / local-启用调试
使
须藤使安装

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

代码语言:javascript复制
./autogen.sh --disable-openssl

用法

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

实用工具

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

代码语言:javascript复制
列出连接的设备或给定设备的打印设备名称

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

代码语言:javascript复制
ideviceinfo-帮助
man ideviceinfo

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

代码语言:javascript复制
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==&devicetype=Windows 10 x64&version=62090529&lang=zh_CN&exportkey=AbrYy5wcoXZe/cqpsvT+lYQ=&pass_ticket=3qgKnQb+VJtk9/f9N6hbBDBa9WDk2L0Z9PNfjSdGxHw2DWt/THhNnQ9BKmHw0s2X

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

代码语言:javascript复制
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复制
树莓派 (raspberry pi) 一枚

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

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

代码语言:javascript复制
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复制
https://libimobiledevice.org/

自己看吧

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

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

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

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

输入命令:

代码语言:javascript复制
 idevicebackup2 backup ./bak

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

运行过程如下图所示:

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

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

输入命令:

代码语言:javascript复制
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平台的.我有了苹果手机,或者谁给我借一个,我折腾下~

0 人点赞