Mac遠程登錄iPhone
- 我們經(jīng)常在Mac終端上菱父,通過敲一些命令來完成一些操作甚纲;
- iOS和Mac OS X都是基于Darwin(蘋果的一個基于Unix的開源系統(tǒng)內(nèi)核)商膊,所以iOS中同樣支持終端命令操作售睹;
- 在逆向工程中尊残,我們經(jīng)常會通過命令行來操縱iPhone绍些;
- 為了能夠讓Mac終端命令能作用在iPhone上,我們需要讓Mac和iPhone之間建立連接柬批;- - 通過Mac遠程登錄到iPhone的方式建立連接啸澡;
SSH與OpenSSH
- SSH是Secure Shell的縮寫,意為"安全外殼協(xié)議"萝快,是一種可以為遠程登錄提供安全保障的協(xié)議锻霎;
- 使用SSH,可以把所有傳輸?shù)臄?shù)據(jù)進行加密揪漩,"中間人"攻擊方式就不可能實現(xiàn)旋恼,能防止DNS欺騙和IP欺騙;
- OpenSSH是SHH協(xié)議的免費開源實現(xiàn)奄容,可以通過OpenSSH的方式讓Mac遠程登錄到iPhone冰更;
使用OpenSSH遠程登錄
- 在iPhone上通過Cydia安裝OpenSSH工具(軟件源:http://apt/saurik.com)
- OpenSSH的具體使用步驟可以查看Description中的描述;
- SSH是通過TCP協(xié)議通信昂勒,所以要確保Mac和iPhone在同一局域網(wǎng)下蜀细,比如連接者同一個Wi-Fi;
- 登錄iPhone的root賬戶:在Mac終端輸入ssh root@服務(wù)器主機地址
- 例如ssh root@10.1.1.168(這里的服務(wù)器是手機) 初始密碼為:
alpine
- 登錄成功后可以使用終端命令來操作iPhone戈盈;
終端中輸入以下命令奠衔,查看文件系統(tǒng)與Mac上的iFunBox查看的文件系統(tǒng)進行比較如下所示:
- 發(fā)現(xiàn)文件系統(tǒng)是相同的,說明我們通過OpenSSH塘娶,讓Mac成功登錄到iPhone归斤,兩者之間建立了連接。
- exit 是退出登錄刁岸,操作結(jié)果如下:
root 和 mobile賬戶
- iOS下有兩個常用賬戶:root和mobile
- root賬戶:最高權(quán)限賬戶脏里,$HOME是/var/root
- 登錄root賬戶:
ssh root@服務(wù)器主機地址
- mobile賬戶:普通權(quán)限賬戶,只能操作一些普通文件虹曙,不能操作系統(tǒng)級別的文件迫横,$HOME是/var/mobile
- 登錄mobile賬戶:
ssh mobile@服務(wù)器主機地址
- root和mobile賬戶的
初始登錄密碼都是alpine
- 最好修改一下root和mobile用戶的登錄密碼番舆,登錄root賬戶后,通過passwd修改矾踱;登錄mobile賬戶恨狈,通過passwd mobile修改;
- 可以看到root賬號級別的顯示#介返,mobile賬號級別的顯示$拴事;
SSL與OpenSSL
- SSL是Secure Socket Layer的縮寫沃斤,是為網(wǎng)絡(luò)通信提供安全及數(shù)據(jù)完整性的一種安全協(xié)議圣蝎,在傳輸層對網(wǎng)絡(luò)連接進行加密;
- OpenSSL是SSL的開源實現(xiàn)衡瓶,絕大部份HTTPS網(wǎng)絡(luò)請求等價于:HTTP + OpenSSL
- OpenSSH的加密就是通過OpenSSL完成的徘公;
SSH的版本
- SSH協(xié)議一共有兩個版本,分別為SSH-1與SSH-2哮针;
- 現(xiàn)在用的比較多的是SSH-2关面,客戶端與服務(wù)端版本要保持一致才能相互通信;
通過WI-FI進行SSH登錄
-
必須保證Mac與iPhone在相同的網(wǎng)絡(luò)環(huán)境下十厢,即連接同一個WI-FI網(wǎng)絡(luò)
其SSH的通信過程可以分為3大階段:
第一步:建立安全連接
- 在建立安全連接過程中等太,服務(wù)器會提供自己的身份證明;
- 如果客戶端并無服務(wù)端的公鑰蛮放,就會詢問是否連接此服務(wù)器缩抡;
-
~/.ssh/known.hosts
:是存儲服務(wù)端公鑰信息的文件; - 在Mac上
~
:表示主路徑相當于根路徑
包颁,終端剛打開時的路徑瞻想,等價于/Users/用戶名
- 在建立連接過程中,可能會遇到以下的錯誤信息:服務(wù)器的身份信息發(fā)生了變更娩嚼;如果確定要連接此服務(wù)器蘑险,刪除之前服務(wù)器的公鑰信息即可;或者直接打開known.hosts文件刪除服務(wù)器的公鑰信息岳悟;
第二步:客戶端認證
SSH-2提供了兩種常用的客戶端認證方式:
第一種:基于密碼的客戶端認證
- 使用賬號和密碼即可認證
第二種:基于密鑰的客戶端認證
- 免密碼認證佃迄,最安全的一種認證方式;
- SSH-2默認會優(yōu)先嘗試密鑰認證贵少,如果認證失敗呵俏,才會嘗試密碼認證;
- 基于密鑰的客戶端的認證原理如下:
第一種方案:
- 在客戶端生成一對相關(guān)聯(lián)的密鑰:一個公鑰(Public Key)春瞬,一個私鑰(Private Key)
- 終端命令為:
ssh -keygen
柴信,一路敲回車即可; - OpenSSH默認生成的是rsa密鑰宽气,可以通過-t參數(shù)指定密鑰的類型随常;
- 生成的公鑰:~/.ssh/id_rsa.pub
- 生成的私鑰:~/.ssh/id_rsa
- 把客戶端的公鑰追加到服務(wù)端的授權(quán)文件(~/.ssh/authroized_keys)尾部潜沦,終端命令為:
ssh copy id root@服務(wù)端主機地址
,需要輸入root賬戶的登錄密碼绪氛;
第二種方案:
- 一對密鑰的生成同上唆鸡;
- 復(fù)制客戶端的公鑰到服務(wù)器的某路徑;終端命令為:
scp ~/.ssh/id.rsa.pub root@服務(wù)器主機地址:~指定路徑
- scp是Secure Copy的縮寫枣察,是基于SSH登錄進行安全的遠程文件拷貝命令争占,把一個文件copy到遠程另外一臺主機上;
上述兩種方案均可實現(xiàn)免密碼登錄序目。
可能會用到的終端命令:
- 刪除公鑰:rm ~/.ssh/id_rsa.pub
第三步:數(shù)據(jù)傳輸
- 現(xiàn)在我們來實現(xiàn)將越獄iPhone中的文件臂痕,拷貝到Mac電腦上;
- 首先iPhone上的文件目標為:
/tmp/fseventsd-uuid
猿涨,如下所示:
- Mac終端環(huán)境執(zhí)行:
scp root@172.20.10.2:/tmp/fseventsd-uuid ~/Desktop/
握童,其中172.20.10.2是iPhone的主機地址,通過查看Wi-Fi網(wǎng)絡(luò)獲得叛赚;
- 執(zhí)行完成之后澡绩,查看Mac的桌面文件系統(tǒng),
- 實現(xiàn)了文件傳遞:iPhone --> Mac
通過USB進行SSH登錄
為了加快傳輸速度俺附,也可以通過USB連接的方式進行SSH登錄肥卡,在Mac上有個服務(wù)程序usbmuxd(它會開機自動啟動)
,可以將Mac的數(shù)據(jù)通過USB傳輸?shù)絠Phone事镣,其路徑如下:/System/Library/PrivateFrameworks/MobileDevice.framework/Resources/usbmuxd
原理圖如下:
端口
端口就是設(shè)備對外提供服務(wù)的窗口步鉴,每個端口都有一個端口號(范圍是0~65535,共2^16)
- 21端口提供FTP服務(wù)
- 80端口提供HTTP服務(wù)
- 22端口提供SSH服務(wù)(查看命令:etc/ssh/sshd_config)
- iPhone默認是使用22端口進行SSH通信蛮浑,采用的是TCP協(xié)議
usbmuxd的使用
- 下載usbmuxd工具包(1.0.8版本唠叛,主要用到里面的一個python腳本:tcprelay.py),下載地址為:https://cgit.sukimashita.com/usbmuxd.git/snapshot/usbmuxd-1.0.8.tar.gz沮稚,解壓之后刪除無用的文件艺沼,最后的文件預(yù)覽如下:
- 終端命令,cd usbmuxb 文件路徑下蕴掏,執(zhí)行
python tcprelay.py -t 22:10010
障般,即將iPhone的22端口(SSH端口)映射到Mac本地的10010端口;
- 端口映射完畢后盛杰,以后如果想跟iPhone的22端口通信挽荡,直接跟Mac本地的10010端口通信就可以了;然后command+T 新建一個命令行窗口即供,SSH登錄到Mac本地的10010窗口定拟,命令行為:
ssh root@localhost -p 10010
,密碼為alpine
- usbmuxd會將Mac本地10010端口的TCP協(xié)議數(shù)據(jù)逗嫡,通過USB連接轉(zhuǎn)發(fā)到iPhone的22端口青自;
- 遠程拷貝文件也可以直接跟Mac本地的10010端口通信株依,命令行如下:
scp -P 10010 ~/.ssh/id_rsa root@localhost:~
即將Mac端的id.rsa.pub公鑰文件拷貝到iPhone的主文件夾下;
Mac端的id.rsa.pub公鑰文件延窜,如下所示:
- 終端執(zhí)行命令:
scp -P 10010 ~/.ssh/id.rsa root@localhost:~
恋腕,注意是在Mac的終端環(huán)境下執(zhí)行,如下所示:
- 打開iPhone的主文件夾逆瑞,如下所示:
- 實現(xiàn)了文件傳遞:Mac --> iPhone
sh腳本文件
我們可以將經(jīng)常執(zhí)行的一些列終端命令行放到sh腳本文件中(shell)荠藤,然后執(zhí)行腳本文件;制作腳本的相關(guān)命令如下:
- 在當前主文件路徑下
~
執(zhí)行vim usb.sh
:創(chuàng)建編輯usb.sh文件获高,進入編輯界面哈肖; - 按下
i
鍵,現(xiàn)在可以往usb.sh文件中添加內(nèi)容了谋减,添加內(nèi)容為:python /Users/liyanyan33/Desktop/usbmuxd/usbmuxd/tcprelay.py -t 22:10010
- 按下
Esc
鍵退出牡彻,然后按下Shift + 冒號 組合鍵扫沼,最后輸入wq 回車出爹,保存退出文件編輯界面; -
ls -l
:可以預(yù)覽當前文件夾下的所有文件缎除,看是否有usb.sh文件
- 如果有
usb.sh文件
严就,輸入cat usb.sh
可查看文件中的內(nèi)容;
腳本文件的執(zhí)行命令有如下幾種:
-
sh usb.sh
: bash usb.sh
source usb.sh
- 可以按Ctrl + C 組合鍵退出當前的狀態(tài)
- sh與bash腳本執(zhí)行命令會在當前shell環(huán)境啟動一個子進程來執(zhí)行腳本文件器罐,執(zhí)行后返回到父進程的shell環(huán)境梢为,執(zhí)行cd時,在子進程中會進入到cd的目錄轰坊,但是在父進程中環(huán)境并沒有改變铸董,也就是說目錄沒有改變;
- source腳本命令是在當前的shell環(huán)境下執(zhí)行腳本文件肴沫;
上面進行端口映射粟害,創(chuàng)建了一個usb.sh
腳本文件,下面SSH登錄到Mac本地的10010窗口颤芬,也創(chuàng)建一個login.sh
腳本悲幅,其步驟與上面的相同,腳本內(nèi)容為ssh root@localhost -p 10010
站蝠,以后的端口映射與登錄就直接執(zhí)行usb.sh
與login.sh
兩個腳本文件即可汰具;
- 必須保證手機是越獄的狀態(tài),否則會出現(xiàn)SSH登陸報錯的情況菱魔,如下圖所示:
iOS終端的中文亂碼問題
- 默認情況下留荔,iOS終端不支持中文輸入和顯示的;
- 解決方案:新建一個
~/.inputrc
文件澜倦,文件內(nèi)容為: - set convert-mea off:不將中文字符轉(zhuǎn)化為轉(zhuǎn)義字符
- set output-mea on:允許向終端輸出中文
- set mea-flag on:允許向終端輸入中文
- set input-mea on:允許向終端輸入中文
- 如果想在終端編輯文件內(nèi)容聚蝶,可以通過Cydia安裝一個vim(軟件源:http://apt.saurik.com)