一個慵懶又無聊的夜晚,我翻閱著 奧沙伊沙利諾埃 Habr 應用程序,我再次彎曲手指,每個不工作的功能都用一根手指。 例如,在這裡你不能發表評論,在這裡你被剝奪了投票權,而且一般來說,為什麼公式在螢幕上不可見?
我們決定:我們需要一些舒適、愉快、屬於自己的東西。 你自己的 Habr 申請怎麼樣?
讓我給你幾張截圖來了解一下狀況。
看起來像這樣 它 - 的。 habr.com 應用程式
「不便之處」清單
- 您無法對評級不為 0 的出版物進行評級
- 並不總是可以寫評論
- 民調不起作用
- 公式在深色主題中不可見(黑底黑字)
- 並非所有書籤都可用
是的,該應用程式自去年八月以來就沒有更新過,但仍然很糟糕。 一般來說,需要修復。
第一部分。 正在尋找存取權限。
快速谷歌查詢 “哈布拉哈布爾 API” 它說它已經很過時了
忽略這是 PHP 的事實,向下滾動並閱讀:
取得應用程式 ID
利用
這個表格 在 Habrahabr 上,您需要簡要描述新應用程式的本質以及它需要 API 的目的。
毫無疑問,如果您需要獲得存取權限,那麼您就需要它。 我們寫了一封信(略):
信
希望基於 PWA 來製作 Habr 的應用程式。 有幾個原因。
第一個也是最明顯的:Android 應用程式不符合我的個人要求。
其次:沒有足夠的關於通常透過電子郵件發送的各種內容的本機通知(例如評論)。
第三:考慮到我的興趣,對我有興趣的人/中心進行個人摘要(作為一個觀點)。
當然,答案不是很愉快,但至少是誠實的:
不幸的是,目前無法存取我們的 API。 我們計劃在完成 API 敲定後恢復提供存取權限,但我們還沒有任何確切日期,因為我們目前正忙於解決其他優先任務。
「好的沒問題! 我們會想出一些辦法的!” - 我告訴自己並開始尋找。
第二部分。 深挖掘。
根據邏輯,如果應用程式正在運行,則它可以存取 API,並且它被硬連線到應用程式中。 我們來分析一下。
由於我們處理的是流量,因此我們選擇 Wireshark。 並非沒有一些痛苦,透過桌上型電腦將手機連接到網路後,我們打開應用程式並查看請求:
明明什麼都不清楚
是的,一切都是加密的,但我不想搞亂密碼學。 然後您需要查看應用程式本身的內部。
反編譯 APK。,讓我們開始尋找吧。 任何 API 都需要什麼? 正確的, 端點,所有請求所在的地方。 這可能是 http(s),讓我們試著找出「https://」:
在文件中 AuthLinkManager.smali
尋找
.field OAUTH:Ljava/lang/String; = "https://habrahabr.ru/auth/o/%s/"
.field OAUTH_PARAMS:Ljava/lang/String; = "?client_id=%s&response_type=token&redirect_uri=%s"
.field OAUTH_REDIRECT_URL:Ljava/lang/String; = "http://cleverpumpkin.ru"
這是Android虛擬機器的程式碼(達爾維克VM),對於人類來說不是很容易理解,但仍然提供了相當多的信息。 這三個常數,根據其內容和名稱以及 GitHub 儲存庫來判斷,用於使用以下方法請求存取令牌 GET
.
讓我們進一步看一下。 搜尋中接下來出現的文件是 NetworkModule.smali
:
const-string v0, "https://habr.com/api/v1/"
這裡是滿足您要求的地方!
為了讓自己編寫的客戶端正常運作,只剩下一件事需要弄清楚—— client_id
,這很可能是應用程式的唯一識別碼。
然而,在原始碼中搜尋這段文字並沒有找到相關資訊...
但突然在其中一份文件中,我的眼睛看到了一些有趣的線條:
const-string p8, "log-tag"
invoke-static {p8, p2}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I
正如您所理解的,這是一個日誌條目。 但記錄什麼?
第三部分。 這些是日誌!
我們用 adb logcat
查看應用程式日誌。
沒想到,日誌比想像的還要詳細。
這裡不僅有我們需要的 client_id
但 代幣 用戶/應用程序,以及 登錄 и 密碼 以明文形式!
一些陰謀論日誌中僅存在登入名稱和密碼不會造成任何損害,因為這些日誌只能使用 root 權限或透過以下方式進行連線來讀取: adb
。 但由於閱讀 Habr 的人中可能存在啟用了調試的 Android 開發人員,這成為一個問題。
在這種情況下,機場「免費充電」可能會導致帳號被盜,但誰需要呢?
從這些日誌中我們可以提取:
client_id
иapikey
需要訪問 API;- 使用者授權URL(奇怪,但是儲存庫中沒有任何關於此方法的內容,也許沒有提供?)
事情就是這樣發生的。 基於這項微小的研究,一個小專案的工作已經在進行中——我們自己實現的行動應用程式。 我要求那些想要幫忙寫訊息的人以及其他所有人 - 投票(因為我想了解是否有人需要這個)。
謝謝你的關注!
只有註冊用戶才能參與調查。
您使用 Habr 行動應用程式嗎?
-
是的,我用它,我很滿意
-
是的,我用的,應用程式造成不便
-
不,我在手機上使用網頁版
-
不,我在電腦上使用 Habr
357 位用戶投票。 30 名用戶棄權。
來源: www.habr.com