iOS越獄開發(fā) - OpenSSH連接手機(jī)

Open Secure Shell(OpenSSH)是一個(gè)安全的登錄系統(tǒng)莺丑,可以用來替代telnet仆救、rlogin、rcp等抱冷。簡單的講崔列,ssh 是一個(gè)通過網(wǎng)絡(luò)登錄進(jìn)入另一臺(tái)計(jì)算機(jī)的程序梢褐。openSSH 是其中的一種軟件。我們可以利用電腦通過 OpenSSH 軟件赵讯,遠(yuǎn)程登錄到我們的手機(jī)盈咳。

一、通過openSSH連接(登錄)手機(jī)(wifi連接)

$ssh 用戶名@用戶服務(wù)器地址
//注:這里的服務(wù)器指手機(jī)(下同)

iOS 下有兩個(gè)用戶

  • root(最高權(quán)限)用戶 $HOME:/var/root iPhone:~ root#
  • 還有一個(gè) mobile(普通)用戶 $HOME: /var/mobile iPhone:~ mobile$
    mobile 不能操作系統(tǒng)級(jí)別的文件

刪除SSH服務(wù)器對(duì)應(yīng)的公鑰

$ssh-keygen -R 服務(wù)器IP地址

修改ssh登錄密碼

  • passwd 輸入兩次新密碼

關(guān)閉openSSH連接

$exit

SSH

SSH是一種網(wǎng)絡(luò)協(xié)議.用于計(jì)算機(jī)之間的加密登錄!
openSSH 是其中的一種軟件.

SSH通訊過程

image.png

中間人攻擊(Man-in-the-MiddleAttack边翼,簡稱“MITM攻擊”)

如果登錄同一個(gè)服務(wù)器(IP)鱼响,它的公鑰(哈希值)發(fā)生了變化,它就不會(huì)讓你登錄了组底,它會(huì)判斷有中間人攻擊丈积。本地一個(gè)IP:端口只能保存一個(gè)公鑰。

預(yù)防中間人攻擊最有效的方法就是驗(yàn)證【公鑰是不是服務(wù)器的】!!
如果是公開的 SSH 服務(wù)器债鸡,一般會(huì)將公鑰的哈希值【公布在網(wǎng)站上】!!

我們?cè)诮K端第一次連接 SSH 服務(wù)器時(shí)江滨,會(huì)提示:

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 就是服務(wù)器發(fā)給客戶端的公鑰(哈希值)。這個(gè)公鑰會(huì)保存在本地厌均。保存在:

$cd ~/.ssh/known_hosts
$ls

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

我們?cè)倏匆幌路?wù)器的公鑰唬滑,服務(wù)器的是保存在手機(jī)里面的。ssh 登錄服務(wù)器棺弊,查看服務(wù)器公鑰:

$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 服務(wù)器時(shí)晶密,服務(wù)器會(huì)將自己的公鑰發(fā)給客戶端,客戶端會(huì)把公鑰保存在本地模她。并用人工方式比對(duì)一下客戶端的公鑰是否與服務(wù)器的公鑰一致稻艰!等下次再登錄時(shí),會(huì)自動(dòng)認(rèn)證侈净!

SSH使用公鑰登錄

除了使用密碼登錄尊勿,也可以免密碼登錄归苍!免密碼登錄是不存大中間人攻擊問題的,因?yàn)樗窃诘卿洺晒χ蟛旁试S做的事情运怖!
所謂的<q style="box-sizing: border-box;">公鑰登錄</q>,原理:
1.Mac 電腦將自己的公鑰發(fā)給遠(yuǎn)程的手機(jī)
2.手機(jī)隨機(jī)的生成一段字符串拼弃,發(fā)給Mac電腦
3.Mac 利用私鑰加密字符串!
4.手機(jī)利用公鑰解密字符串!
如果還要輸入密碼的話,設(shè)置文件的權(quán)限! chmod 755

在終端輸入如下命令,生成 rsa 的公私鑰:

$ssh-keygen

一路回車就可以摇展,然后在

$cd ~/.ssh

目錄底下可以看到生成的私鑰id_rsa和公鑰id_rsa.pub吻氧,直接在該目錄下拷 貝公鑰到服務(wù)器,用命令

$ssh-copy-id root@101.2.79.32

接著我們?cè)俅蔚卿浄?wù)器

$ssh root@101.2.79.32

我們會(huì)欣喜的發(fā)現(xiàn)可以直接登錄了咏连,不需要再輸入密碼了盯孙。
登錄服務(wù)器后,我們可以看一下 .ssh 目錄底下

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

會(huì)發(fā)現(xiàn)有一個(gè)authorized_keys文件祟滴。
我們用cat命令查看一下這個(gè)文件振惰,再退出進(jìn)入

$cd ~/.ssh

查看一下id_rsa.pub文件,會(huì)發(fā)現(xiàn)兩者的公鑰信息是一樣的垄懂。

二骑晶、通過USB連接手機(jī)

SSH 的默認(rèn)端口是 22
usbmuxd 在 iOS 和 Mac 上都是自帶的!

除了上述 wifi 形式連接手機(jī),我們還可以使用 usb 形式連接手機(jī)草慧。與wifi 連接相比桶蛔,usb連接的特點(diǎn)是:快且穩(wěn)定。對(duì)于拷貝文件等需要穩(wěn)定性的操作漫谷,可以使用 usb 連接仔雷。使用 usb 連接,我們需要做一個(gè)端口的映射舔示。讓我們本機(jī)電腦的一個(gè)端口映射到 22 端口上去碟婆。

主要分兩步

  • 通過 python 去監(jiān)聽端口
  • 通過 ssh 去連接本機(jī)的服務(wù)器

詳細(xì)過程

在終端執(zhí)行命令

$python tcprelay.py -t 22:1122
//1122是隨便寫的一個(gè)本地沒有占用的端口

此時(shí)本地的 1122 端口就會(huì)一直被監(jiān)聽,只要訪問本地的 1122 端口惕稻,就會(huì)將數(shù)據(jù)發(fā)送到 ssh 連接的 22 端口上竖共。這個(gè)時(shí)候,我們只需要執(zhí)行命令

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

就會(huì)映射到 usb 連接的手機(jī)上缩宜。

注意:這里 1122 端口是本機(jī)的肘迎,22 端口是 ssh 的

通過Shell腳本簡化步驟

上面兩步都是一些沒有營養(yǎng)的步驟,我們可以通過 Shell 腳本簡化锻煌。

  • python-client文件夾拷貝到/Users/xipengfei/XPFShell/目錄下妓布,然后新建一個(gè) shell 腳本 usbConnect.sh,編寫代碼python /Users/xipengfei/XPFShell/python-client/tcprelay.py -t 22:1122保存并退出宋梧。
  • 新建一個(gè) shell 腳本 usbLogin.sh匣沼,編寫代碼ssh -p 1122 root@127.0.0.1保存并退出。

這下捂龄,我們只需要在一個(gè)終端執(zhí)行命令sh usbConnect.sh監(jiān)聽端口释涛,在另一個(gè)終端執(zhí)行命令sh usbLogin.sh連接服務(wù)器加叁。

注:這里需要注意中間人攻擊,同一個(gè)服務(wù)器(IP)唇撬,不同的公鑰就會(huì)出現(xiàn)中間人攻擊

拷貝文件

把文件 123.txt 拷貝到服務(wù)器(手機(jī))用戶目錄下它匕,有兩種方式:

  • wifi 拷貝
    可以在任意目錄下執(zhí)行
    scp 123.txt root@101.2.79.32:~/
  • usb 拷貝
    先映射、監(jiān)聽服務(wù)器端口sh usbConnect.sh窖认,再執(zhí)行
    scp -P 1122 123.txt root@127.0.0.1:~/
    //注:這里 127.0.0.1 也可以改為 localhost

應(yīng)用瘦身

現(xiàn)在大多數(shù)應(yīng)用都支持到 armv7s豫柬,有的甚至支持到 armv7(比如微信)。指令集可能會(huì) armv7扑浸、armv7s烧给、arm64,這樣 mach-o 文件會(huì)比較大喝噪,導(dǎo)致 ipa 包很大础嫡。對(duì)于 iPhone5S 及以下的手機(jī)來說,只需要 arm64 指令集就夠了酝惧,這個(gè)時(shí)候就有必要給應(yīng)用瘦身榴鼎。

  • 通過USB連接手機(jī),保證應(yīng)用傳輸?shù)臅r(shí)候快且穩(wěn)定系奉。
  • 使用如下命令給應(yīng)用瘦身
    $ lipo mach-o文件 -thin armv64 -output macho_armv64
  • 解壓應(yīng)用 ipa 包檬贰,把包內(nèi)容里的 mach-o 文件替換為瘦身后的 mach-o 文件,注意名字改回原來的名字
  • 使用如下命令打包 ipa 包
    zip -ry xxx.ipa Payload
    注:Payload 為要打包的文件夾
  • 用 Xcode 的 Devices 安裝瘦身后的應(yīng)用

安裝成功后缺亮,你會(huì)發(fā)現(xiàn)應(yīng)用比瘦身之前少了將近一半的大小。對(duì)于非越獄手機(jī)需要做重簽名的操作桥言。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末萌踱,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子号阿,更是在濱河造成了極大的恐慌并鸵,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,214評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件扔涧,死亡現(xiàn)場離奇詭異园担,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)枯夜,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門弯汰,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人湖雹,你說我怎么就攤上這事咏闪。” “怎么了摔吏?”我有些...
    開封第一講書人閱讀 152,543評(píng)論 0 341
  • 文/不壞的土叔 我叫張陵鸽嫂,是天一觀的道長纵装。 經(jīng)常有香客問我,道長据某,這世上最難降的妖魔是什么橡娄? 我笑而不...
    開封第一講書人閱讀 55,221評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮癣籽,結(jié)果婚禮上瀑踢,老公的妹妹穿的比我還像新娘。我一直安慰自己才避,他們只是感情好橱夭,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,224評(píng)論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著桑逝,像睡著了一般棘劣。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上楞遏,一...
    開封第一講書人閱讀 49,007評(píng)論 1 284
  • 那天茬暇,我揣著相機(jī)與錄音,去河邊找鬼寡喝。 笑死糙俗,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的预鬓。 我是一名探鬼主播巧骚,決...
    沈念sama閱讀 38,313評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼格二!你這毒婦竟也來了劈彪?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,956評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤顶猜,失蹤者是張志新(化名)和其女友劉穎沧奴,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體长窄,經(jīng)...
    沈念sama閱讀 43,441評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡滔吠,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,925評(píng)論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了挠日。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片疮绷。...
    茶點(diǎn)故事閱讀 38,018評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖肆资,靈堂內(nèi)的尸體忽然破棺而出矗愧,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 33,685評(píng)論 4 322
  • 正文 年R本政府宣布唉韭,位于F島的核電站夜涕,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏属愤。R本人自食惡果不足惜女器,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,234評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望住诸。 院中可真熱鬧驾胆,春花似錦、人聲如沸贱呐。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,240評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽奄薇。三九已至驳阎,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間馁蒂,已是汗流浹背呵晚。 一陣腳步聲響...
    開封第一講書人閱讀 31,464評(píng)論 1 261
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留沫屡,地道東北人饵隙。 一個(gè)月前我還...
    沈念sama閱讀 45,467評(píng)論 2 352
  • 正文 我出身青樓,卻偏偏與公主長得像沮脖,于是被迫代替她去往敵國和親金矛。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,762評(píng)論 2 345