使用命令行对ios设备截屏

使用命令行对ios设备截屏

1.前言

这几天在玩手机上的一个德州扑克游戏,发现玩个游戏是真心累人啊,要一直点屏幕,主要是这个游戏不用动脑子,不用动脑子的游戏对我来说那就更是玩的痛苦。于是在想有没有办法可以让我用程序来玩移动设备上的棋牌游戏。想过之后,感觉可以用技术来解决这问题

2.技术实现思路

咱想用程序来玩手机上的棋牌游戏,那第一步是要知道当前游戏的运行状态。打算通过每秒截取一次手机屏幕图像来获取当前别人下多大注,我有什么手牌,桌面上都发了什么牌,是否到我下注等等问题。

得到屏幕截图,再通过机器学习训练一个识别图中信息的神经网络来获取信息内容,因为手机游戏中发给玩家的牌,桌面上的牌,我的手牌什么的,每一次都是在屏上一个固定的位置,这里只要把截取的图片中内容的一小部分取出来让神经网络单独训练就可以了。

得到当前牌面和筹码下注情况,再结合自已的下注程序来和其他玩家娱乐。

因为德州扑克只使用了52张牌,并且游戏的玩法可以使用程序进行大量模拟生成,这样的条件对于使用机器学习来训练一个玩德州扑克网络也是非常轻松简单的。最后我们可以通过和其他真实玩家互动以达到咱们程序员玩游戏的优越感。

最后,如果这个东西实现了,还可以把这种设备使用在所有棋牌游戏上,或者把这种设备出售给其他棋牌游戏玩家,让所有人都玩的开心。

1.第一步,获取屏幕内容

第一步,安装工具

对于ios设备截图来获取屏幕内容最好的命令行工具,那自然当属libimobiledevice库了
安装方法:

方法一,常规安装方法
  1. 安装HomeBrew
    ruby -e “$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)”

参考:http://brew.sh/

  1. 终端执行如下命令
    2.1 brew install libimobiledevice
    2.2 brew install Caskroom/cask/osxfuse
    2.3 brew install ifuse
    2.4 brew install ideviceinstaller
方法二,编译安装

可能有人会问为什么要用编译安装,因为苹果设备对对安全要求比较高,一般不明来路的第三方应用系统都会有运行限制,而自已编译安装的程序不会有限制。
libimobiledevice代码地址:
https://github.com/libimobiledevice/libimobiledevice

编译安装方法:
从github上下载代码我就不说了,这个是基本功,如果不会的话就在网上搜怎么git代码吧。我用的是GitHub Desktop下载的代码,也可以用git命令,看个人爱好了

下载到代码后,cd到项目目录,先生成makefile文件

./autogen.sh 
#也可以运行下边的命令
./configure

当运行之后可能会发现报一个OpenSLL库的错误,网上找说原因是 High Sierra 把 SSL 库从 OpenSSL 0.9.8zh 切换到 LibreSSL。而通过homebrew安装的OpenSSL是keg-only的,并禁止通过brew link openssl添加软链接。解决办法是安装另两个库,然后使用–disable-openssl来生成makefile,另外ios 11好像还会报一个错,不过网上给了一个加–enable-debug-code参数的生成方法,总的方法像下边这样

brew install gnutls
brew install libgcrypt
./autogen.sh --disable-openssl --enable-debug-code
make
make install

好了,到这里程序就安装好了。运行之后又发现一个

ERROR: Could not connect to lockdownd, error code -2

的错误,这里应该是没有读取lockdownd目录的权限,使用下边命令给读取权限

sudo chmod 777 /var/db/lockdown

到这里我的idevice系统工具可以用了,

第二步,使用工具截图

将iphone连到电脑上,打开终端

idevicescreenshot imageName.png

使用上边的命令就可以给ios设备截屏了

3.后续工作

有了命令行版的截屏工具,那就可以使用python脚本来调了这个命令行截屏了。有了图像数据,接下来就是识别图片中的信息

还有一个比较大的问题就是我们要怎么操作手机上的游戏来下注。对到android手机还好。但ios是不支持扩展鼠标的,对于没有越狱的手机也不能通过电脑来控制。而我也不打算对手机越狱,我想大家应该也都不想,主要是因为苹果手机安全大家才用苹果手机,越狱后的苹果手机真心还不如安卓。

我想到一个不越狱的办法就是用机械手来点击手机屏幕。我可以很轻松的用程序操制机械手来操作手机屏的,而所谓的机械手,只要几个几快钱的舵机就能作出来。

后来有时间了再写,今天把屏幕截图的问题解决了,昨天的任务就完成了。

你可能感兴趣的:(ios学习)