iOS越狱开发 - OpenSSH连接手机

Open Secure Shell(OpenSSH)是一个安全的登录系统,可以用来替代telnet、rlogin、rcp等。简单的讲,ssh 是一个通过网络登录进入另一台计算机的程序。openSSH 是其中的一种软件。我们可以利用电脑通过 OpenSSH 软件,远程登录到我们的手机。

一、通过openSSH连接(登录)手机(wifi连接)

$ssh 用户名@用户服务器地址
//注:这里的服务器指手机(下同)

iOS 下有两个用户

  • root(最高权限)用户 $HOME:/var/root iPhone:~ root#
  • 还有一个 mobile(普通)用户 $HOME: /var/mobile iPhone:~ mobile$
    mobile 不能操作系统级别的文件

删除SSH服务器对应的公钥

$ssh-keygen -R 服务器IP地址

修改ssh登录密码

  • passwd 输入两次新密码

关闭openSSH连接

$exit

SSH

SSH是一种网络协议.用于计算机之间的加密登录!
openSSH 是其中的一种软件.

SSH通讯过程

image.png

中间人攻击(Man-in-the-MiddleAttack,简称“MITM攻击”)

如果登录同一个服务器(IP),它的公钥(哈希值)发生了变化,它就不会让你登录了,它会判断有中间人攻击。本地一个IP:端口只能保存一个公钥。

预防中间人攻击最有效的方法就是验证【公钥是不是服务器的】!!
如果是公开的 SSH 服务器,一般会将公钥的哈希值【公布在网站上】!!

我们在终端第一次连接 SSH 服务器时,会提示:

The authenticity of host '101.2.79.32 (101.2.79.32)' can't be established.
RSA key fingerprint is SHA256:yMLGAtdE6S87XaMHtvFy41t1fH+QeBgchSTOmennwMQ.
Are you sure you want to continue connecting (yes/no)? 

上面 yMLGAtdE6S87XaMHtvFy41t1fH+QeBgchSTOmennwMQ 就是服务器发给客户端的公钥(哈希值)。这个公钥会保存在本地。保存在:

$cd ~/.ssh/known_hosts
$ls

101.2.79.32 ssh-rsa AAAAB3MzaC1yc2EAAAADAQABAAABAQDAIDd6dG0LIL87woLOWGPiuO3cpBsxsH9VfTA7ETRf7X7Y9gf5Np5Qe02J7HworrX7nNH0Kq32ExRrQGUmdrP0iz0IAbfL7t8MxQb0fSj1uqnX0ZgY8E+EHkHXyyaR9bl0FQlf2G62BuaC+0ZceDtk7EkvXJdiA5dpt3gnlbsYYDWN4xGJItHlGI/Ni1e5bzLQgt4KTEPTl40EDr3Mc0VmXJyzCLpFu8/KzcLaftVkMZoZlrheH+iKlAIE3b7t2DECA/rJKc3SrVJ9kjjJ3LlQ+KQtUZF2utKHJtVke7iM+ZrVwwfnoBp2D1xPMbFClBlg6MMiQk+B1ylDmwqLSpmT

我们再看一下服务器的公钥,服务器的是保存在手机里面的。ssh 登录服务器,查看服务器公钥:

$ssh root@101.2.79.32
iPhone:~ root# cd /etc/ssh/
iPhone:/ect/ssh/ root# cat ssh_host_rsa_key.pub

ssh-rsa AAAAB3MzaC1yc2EAAAADAQABAAABAQDAIDd6dG0LIL87woLOWGPiuO3cpBsxsH9VfTA7ETRf7X7Y9gf5Np5Qe02J7HworrX7nNH0Kq32ExRrQGUmdrP0iz0IAbfL7t8MxQb0fSj1uqnX0ZgY8E+EHkHXyyaR9bl0FQlf2G62BuaC+0ZceDtk7EkvXJdiA5dpt3gnlbsYYDWN4xGJItHlGI/Ni1e5bzLQgt4KTEPTl40EDr3Mc0VmXJyzCLpFu8/KzcLaftVkMZoZlrheH+iKlAIE3b7t2DECA/rJKc3SrVJ9kjjJ3LlQ+KQtUZF2utKHJtVke7iM+ZrVwwfnoBp2D1xPMbFClBlg6MMiQk+B1ylDmwqLSpmT

第一次登录 ssh 服务器时,服务器会将自己的公钥发给客户端,客户端会把公钥保存在本地。并用人工方式比对一下客户端的公钥是否与服务器的公钥一致!等下次再登录时,会自动认证!

SSH使用公钥登录

除了使用密码登录,也可以免密码登录!免密码登录是不存大中间人攻击问题的,因为它是在登录成功之后才允许做的事情!
所谓的<q style="box-sizing: border-box;">公钥登录</q>,原理:
1.Mac 电脑将自己的公钥发给远程的手机
2.手机随机的生成一段字符串,发给Mac电脑
3.Mac 利用私钥加密字符串!
4.手机利用公钥解密字符串!
如果还要输入密码的话,设置文件的权限! chmod 755

在终端输入如下命令,生成 rsa 的公私钥:

$ssh-keygen

一路回车就可以,然后在

$cd ~/.ssh

目录底下可以看到生成的私钥id_rsa和公钥id_rsa.pub,直接在该目录下拷 贝公钥到服务器,用命令

$ssh-copy-id root@101.2.79.32

接着我们再次登录服务器

$ssh root@101.2.79.32

我们会欣喜的发现可以直接登录了,不需要再输入密码了。
登录服务器后,我们可以看一下 .ssh 目录底下

iPhone:~ root# cd ~/.ssh/
iPhone:~/.ssh root# ls

会发现有一个authorized_keys文件。
我们用cat命令查看一下这个文件,再退出进入

$cd ~/.ssh

查看一下id_rsa.pub文件,会发现两者的公钥信息是一样的。

二、通过USB连接手机

SSH 的默认端口是 22
usbmuxd 在 iOS 和 Mac 上都是自带的!

除了上述 wifi 形式连接手机,我们还可以使用 usb 形式连接手机。与wifi 连接相比,usb连接的特点是:快且稳定。对于拷贝文件等需要稳定性的操作,可以使用 usb 连接。使用 usb 连接,我们需要做一个端口的映射。让我们本机电脑的一个端口映射到 22 端口上去。

主要分两步

  • 通过 python 去监听端口
  • 通过 ssh 去连接本机的服务器

详细过程

在终端执行命令

$python tcprelay.py -t 22:1122
//1122是随便写的一个本地没有占用的端口

此时本地的 1122 端口就会一直被监听,只要访问本地的 1122 端口,就会将数据发送到 ssh 连接的 22 端口上。这个时候,我们只需要执行命令

ssh -p 1122 root@127.0.0.1
//注:这里 127.0.0.1 也可以改为 localhost

就会映射到 usb 连接的手机上。

注意:这里 1122 端口是本机的,22 端口是 ssh 的

通过Shell脚本简化步骤

上面两步都是一些没有营养的步骤,我们可以通过 Shell 脚本简化。

  • python-client文件夹拷贝到/Users/xipengfei/XPFShell/目录下,然后新建一个 shell 脚本 usbConnect.sh,编写代码python /Users/xipengfei/XPFShell/python-client/tcprelay.py -t 22:1122保存并退出。
  • 新建一个 shell 脚本 usbLogin.sh,编写代码ssh -p 1122 root@127.0.0.1保存并退出。

这下,我们只需要在一个终端执行命令sh usbConnect.sh监听端口,在另一个终端执行命令sh usbLogin.sh连接服务器。

注:这里需要注意中间人攻击,同一个服务器(IP),不同的公钥就会出现中间人攻击

拷贝文件

把文件 123.txt 拷贝到服务器(手机)用户目录下,有两种方式:

  • wifi 拷贝
    可以在任意目录下执行
    scp 123.txt root@101.2.79.32:~/
  • usb 拷贝
    先映射、监听服务器端口sh usbConnect.sh,再执行
    scp -P 1122 123.txt root@127.0.0.1:~/
    //注:这里 127.0.0.1 也可以改为 localhost

应用瘦身

现在大多数应用都支持到 armv7s,有的甚至支持到 armv7(比如微信)。指令集可能会 armv7、armv7s、arm64,这样 mach-o 文件会比较大,导致 ipa 包很大。对于 iPhone5S 及以下的手机来说,只需要 arm64 指令集就够了,这个时候就有必要给应用瘦身。

  • 通过USB连接手机,保证应用传输的时候快且稳定。
  • 使用如下命令给应用瘦身
    $ lipo mach-o文件 -thin armv64 -output macho_armv64
  • 解压应用 ipa 包,把包内容里的 mach-o 文件替换为瘦身后的 mach-o 文件,注意名字改回原来的名字
  • 使用如下命令打包 ipa 包
    zip -ry xxx.ipa Payload
    注:Payload 为要打包的文件夹
  • 用 Xcode 的 Devices 安装瘦身后的应用

安装成功后,你会发现应用比瘦身之前少了将近一半的大小。对于非越狱手机需要做重签名的操作。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,684评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,143评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,214评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,788评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,796评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,665评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,027评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,679评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,346评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,664评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,766评论 1 331
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,412评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,015评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,974评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,203评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,073评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,501评论 2 343