本文共2121字,預(yù)計(jì)閱讀時(shí)間13分鐘
0x00 前言
前段時(shí)間由于給小破站開啟了青少年模式,結(jié)果密碼給忘記了。導(dǎo)致只能看一些學(xué)習(xí)課堂和書法之類的相關(guān)視頻。雖然有找回密碼選項(xiàng),但是找回密碼需要發(fā)送本人手持身份證的照片。而后在輸入密碼的時(shí)候試了多次,除了提示"密碼輸入錯(cuò)誤,請(qǐng)重試"外,沒有其他限制,也沒有網(wǎng)絡(luò)請(qǐng)求。由于是4位的數(shù)字密碼,我想如果我寫個(gè)自動(dòng)輸入密碼的腳本,利用生成0000~9999的密碼字典,應(yīng)該就可以找到正確的密碼。
經(jīng)搜索發(fā)現(xiàn),iOS自動(dòng)化的框架有很多,如、、KIF、等。其中和無(wú)需源碼就可以進(jìn)行測(cè)試,而且支持多種語(yǔ)言,所以這里我選擇了『』 ()。
0x01 環(huán)境搭建與自動(dòng)化測(cè)試
介紹
是一個(gè)開源工具,用于自動(dòng)化iOS手機(jī)、手機(jī)和桌面平臺(tái)上的原生、移動(dòng)Web和混合應(yīng)用。它使用協(xié)議驅(qū)動(dòng)iOS,和應(yīng)用程序。是跨平臺(tái)的,它允許用同樣的API對(duì)多平臺(tái)(iOS、、)寫測(cè)試,做到在iOS、和測(cè)試套件之間復(fù)用代碼。而且支持多種語(yǔ)言,如Java、、PHP、Ruby等等。
我這里是在MacOS系統(tǒng)下進(jìn)行的測(cè)試,采用了手機(jī)版本為13.5.1(iOS真機(jī)),開發(fā)語(yǔ)言選擇了.8。
下面就開始搭建環(huán)境進(jìn)行測(cè)試吧。
安裝
首先是的安裝。
如果沒有『』 (),則需要先安裝:
安裝Node:
安裝相關(guān)依賴與軟件:
“
可以參考官方文檔進(jìn)行安裝:
或直接安裝桌面程序:
安裝后執(zhí)行- --ios指令,可以查看與iOS相關(guān)配置是否完整。如果有哪一項(xiàng)是打叉的,則根據(jù)安裝說明進(jìn)行安裝就可以了:
安裝過程
下圖是全部配置都成功的情況:
安裝成功
配置
由于需要在真機(jī)下進(jìn)行測(cè)試,所以還需要配置『』 ()。
下載并進(jìn)入到目錄,然后執(zhí)行.//.sh下載安裝依賴庫(kù):
安裝過程
雙擊.,使用XCode打開項(xiàng)目,配置、以及的開發(fā)者信息:
配置過程
發(fā)現(xiàn)有錯(cuò)誤,接下來修改和的 :
配置過程
修改后發(fā)現(xiàn)無(wú)報(bào)錯(cuò)信息。然后數(shù)據(jù)線連接真機(jī),進(jìn)行安裝。
發(fā)現(xiàn)編譯失敗,將改成,然后重新使用 + U進(jìn)行編譯安裝測(cè)試:
編譯失敗處理
然后訪問手機(jī)IP:8100:
訪問狀態(tài)接口
“
需要手機(jī)與電腦處于同一網(wǎng)絡(luò)下python模擬登錄退出登錄狀態(tài),我這里為了測(cè)試,電腦連接的是手機(jī)的熱點(diǎn)。
此時(shí)配置成功。如果在中使用時(shí),還需替換中的。
我這里的路徑為://.app///app////--//。
直接替換即可,或者直接修改中的,效果一樣。
自動(dòng)化腳本編寫
接下來就是自動(dòng)化腳本的編寫。
可以通過使用應(yīng)用程序查看iOS元素特征。啟動(dòng),左上角菜單欄選擇『 - New ...』或快捷鍵 + N:
查看iOS元素特征
填寫對(duì)應(yīng)的啟動(dòng)參數(shù)。一些必要的參數(shù)如下:
配置完成后,點(diǎn)擊『Start 』,手機(jī)會(huì)自動(dòng)打開『?jiǎn)袅▎袅ā籄PP:
自動(dòng)打開『?jiǎn)袅▎袅ā?/p>
可以利用XPath獲取元素并進(jìn)行輸入、點(diǎn)擊等一系列操作。接下來就可以通過使用腳本來進(jìn)行自動(dòng)化測(cè)試了。
需要安裝的依賴庫(kù):
編寫啟動(dòng)APP的腳本:
接下來需要進(jìn)入到輸入密碼界面,依次需要點(diǎn)擊『我的-青少年模式-修改密碼(或者關(guān)閉青少年模式)』。
繼續(xù)編寫腳本實(shí)現(xiàn)自動(dòng)化:
運(yùn)行效果如下:
自動(dòng)進(jìn)入關(guān)閉青少年模式
“
如果已經(jīng)打開APP超過40分鐘,或者當(dāng)前為非正常時(shí)段,則會(huì)直接顯示輸入密碼界面。
條件觸發(fā)青少年模式
可以利用XPath獲取密碼輸入框元素,輸入密碼后并點(diǎn)擊『立即驗(yàn)證』按鈕:
完整代碼如下:
由上面執(zhí)行的結(jié)果來看,每次輸入前都會(huì)等待一會(huì)再輸入,所以看起來速度很慢:
輸入前等待
通過找到上圖標(biāo)記的,然后使用Send Keys直接傳入一個(gè)四位數(shù)字:
修改過后,發(fā)現(xiàn)速度確實(shí)有所提升,但是總體速度還是很慢的。經(jīng)過搜索發(fā)現(xiàn),有帖子說在iOS模擬器上和安卓上會(huì)快一些,由于程序無(wú)法安裝到iOS模擬器,所以這里選擇了在安卓設(shè)備上進(jìn)行測(cè)試。
安卓環(huán)境下測(cè)試
安卓的環(huán)境需要安裝 SDK、JDK、安卓模擬器(真機(jī)也可以,這里采用的是模擬器)。安裝后配置、。
然后通過執(zhí)行- --來查看是否配置成功:
安卓環(huán)境安裝
查看元素信息可以使用。位于 SDK下的/tools/bin/目錄。
啟動(dòng)模擬器并打開測(cè)試的APP,然后打開。選擇『 』(從左至右第二個(gè)圖標(biāo)):
使用模擬器打開APP
通過tv..bili:id/可以定位到編輯框,按鈕『立即驗(yàn)證』可以通過tv..bili:id/來定位。
這里直接貼使用安卓下自動(dòng)化爆破的腳本:
對(duì)比之下,在下的效率是很快的。而且經(jīng)過測(cè)試,安卓破解100次,耗時(shí)約139.14s,而ios破解50次,耗時(shí)約262.56s。
所以最后我采用了安卓環(huán)境下進(jìn)行破解,最終成功跑出了密碼:4578。
0x02 思考
由于輸入密碼的時(shí)候并沒有發(fā)生網(wǎng)絡(luò)請(qǐng)求,猜測(cè)密碼應(yīng)該保存在本地。一般情況下本地存儲(chǔ)采用數(shù)據(jù)庫(kù)或者是中。
先查看中的文件,進(jìn)入/data/data/tv..bili/目錄:
目錄
發(fā)現(xiàn)文件.xml,根據(jù)文件名發(fā)現(xiàn)文件就是和青少年模式有關(guān)的配置文件:
文件
發(fā)現(xiàn)一串神秘字符串,通過cmd5查詢:=md5(4578),正好是設(shè)置的密碼。
另外由于登錄前可以看到所有的內(nèi)容,而登錄開啟青少年模式的賬戶時(shí),就會(huì)進(jìn)入青少年模式,只能看特定內(nèi)容。所以退出賬戶重新登錄并抓包,可以看到如下的請(qǐng)求:
重新登錄抓包
也成功找到經(jīng)過md5加密的密碼。
0x03 總結(jié)
這次是因?yàn)锽站開啟了青少年模式,后來密碼給忘記了。當(dāng)時(shí)只想著用爆破的方式來解決了,沒有想著抓包或者查看保存的數(shù)據(jù)文件。后來爆破出密碼后,又發(fā)現(xiàn)可以通過查看配置文件的方式和抓包的方式找到密碼。而且之前是打算用iOS作為測(cè)試的python模擬登錄退出登錄狀態(tài),后來因?yàn)樾实膯栴},才轉(zhuǎn)戰(zhàn)安卓。如果使用安卓的話,自動(dòng)化測(cè)試工具也很多,例如等。
本文其實(shí)就是一個(gè)流水賬,記錄一下自己找回青少年模式密碼的過程,可能比較粗糙。有關(guān)IOS真機(jī)調(diào)試更詳細(xì)的教程可以參考『使用進(jìn)行iOS的真機(jī)自動(dòng)化測(cè)試』 ()。
喜歡您來,喜歡您再來