(非)公式 Habr アプリケーション - HabrApp 2.0: アクセスの取得

ある気だるくて、すでにかなり退屈な夜、私はページをめくりながら 公式 Habr アプリケーションで、動作しない機能ごとに XNUMX つずつ、もう一度指を曲げました。 たとえば、ここではコメントすることはできず、投票する権利も拒否されています。また、一般的に、なぜ式が画面に表示されないのでしょうか?

(非)公式 Habr アプリケーション - HabrApp 2.0: アクセスの取得
何か快適で楽しいもの、そして私たち独自のものが必要だということが決まりました。 あなた自身の Habr アプリケーションについてはどうですか?
状況を理解するためにいくつかのスクリーンショットを示します。

(非)公式 Habr アプリケーション - HabrApp 2.0: アクセスの取得なんとなくこんな感じ それ - の。 habr.com アプリケーション

「不便」リスト

  • 評価が 0 以外の出版物を評価することはできません
  • コメントを常に書き込めるわけではありません
  • 投票が機能しない
  • ダークテーマでは数式が表示されません (黒地に黒)
  • すべてのブックマークが利用できるわけではありません

はい、アプリは昨年 XNUMX 月以来更新されていませんが、依然として調子が悪いです。 一般的には、修正する必要があります。

パート XNUMX。 アクセスを求めています。

クイック Google クエリ 「ハブラハブAPI」 それはすでにかなり時代遅れだと言われています リポジトリ Github 上、それ以来更新されていません 11月21 2016、そしてこれはしばらくの間、 XNUMX年半.

これが PHP であるという事実は無視して、下にスクロールして以下を読んでください。

アプリケーションIDの取得

活用する この形 Habrahabr では、新しいアプリケーションの本質と API が必要な目的を簡単に説明する必要があります。

アクセスする必要があるなら、それが必要であることに疑問の余地はありません。 私たちは手紙を書きます(省略):

レター

PWA に基づいて Habr のアプリケーションを作成したいという要望があります。 これにはいくつかの理由があります。 

まず最も明白なことは、Android アプリケーションが私の個人的な要件を満たしていないことです。

XNUMX 番目: 通常は電子メールで届くあらゆる種類の通知 (コメントなど) に関するネイティブ通知が十分ではありません。

XNUMX 番目: 私の興味を考慮した、私に興味のある人々/ハブに関する個人的なダイジェスト (視点として)。

もちろん、その答えはあまり楽しいものではありませんでしたが、少なくとも正直なものでした。

残念ながら、現在 API にアクセスすることはできません。 API の完成が完了したらアクセスの提供を再開する予定ですが、正確な日付はまだありません。 私たちは現在、他の優先課題の解決に忙しいです。

"いいよ、大丈夫! 何か考えてみましょう!」 -私は自分に言い聞かせて探し始めました。

パートXNUMX。 深い発掘。

ロジックに基づいて、アプリケーションが実行されている場合、そのアプリケーションは API にアクセスでき、API はアプリケーションに組み込まれています。 分析してみましょう。

トラフィックを扱うため、Wireshark を選択します。 デスクトップ コンピュータ経由で電話をインターネットに接続した後、アプリケーションを開いてリクエストを確認します。

(非)公式 Habr アプリケーション - HabrApp 2.0: アクセスの取得
何も明らかでないことは明らかです

はい、すべてが暗号化されていますが、暗号化には手を出したくないのです。 次に、アプリケーション自体の内部を調べる必要があります。

逆コンパイル済み 。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)、人間にはあまり理解できませんが、それでも非常に有益です。 これら XNUMX つの定数は、その内容と名前、および GitHub リポジトリから判断すると、次のメソッドを使用してアクセス トークンをリクエストするために使用されます。 GET.

さらに見てみましょう。 次に検索で出てくるファイルは、 NetworkModule.smali:

const-string v0, "https://habr.com/api/v1/"

そして、あなたのリクエストに応える場所はここです!

自作クライアントが適切に動作するためには、解決すべきことが XNUMX つだけ残っています。 client_idこれはおそらくアプリケーションの一意の識別子です。

ただし、ソース コード内でこのテキストを検索しても、関連する情報は見つかりませんでした。

しかし、ファイルの XNUMX つで突然、いくつかの興味深い行が目に留まりました。

const-string p8, "log-tag"
invoke-static {p8, p2}, Landroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I

ご理解のとおり、これはログ エントリです。 しかし、何を録音するのでしょうか?

パート XNUMX。 これらはログです!

を使用しております adb logcat アプリケーションログを表示します。

(非)公式 Habr アプリケーション - HabrApp 2.0: アクセスの取得

予想外にも、ログは予想よりもさらに詳細であることが判明しました。

ここには必要なものだけが揃っているだけではありません client_idしかし トークン ユーザー/アプリケーション、および ログイン и пароль プレーンテキストで!

いくつかの陰謀論これらのログは root 権限または経由の接続でのみ読み取ることができるため、ログにログイン名とパスワードが存在するだけでは何も害はありません。 adb。 しかし、Habr を読んでいる人の中にはデバッグを有効にしている Android 開発者もいるという事実により、これが問題になります。

この場合、空港での「無料チャージ」はアカウントの盗難につながる可能性がありますが、誰がそれを必要とするのでしょうか?
これらのログから以下を抽出できます。

  • client_id и apikeyアクセスするために必要な API;
  • ユーザー認証 URL (奇妙なことに、このメソッドに関するリポジトリには何もありません。おそらく提供されていないのでしょうか?)

それが起こったわけです。 この小さな調査に基づいて、私たち自身のモバイル アプリケーションの実装という小さなプロジェクトの作業がすでに進行中です。 メッセージを書くのに協力したい人には投票をお願いします。(これを必要としている人がいるかどうかを知りたいので)他の人には投票してください。

ありがとうございました!

登録ユーザーのみがアンケートに参加できます。 ログインお願いします。

Habr モバイル アプリケーションを使用していますか?

  • はい、使っています、満足しています

  • はい、使用しています、アプリケーションにより不便が生じます

  • いいえ、携帯電話ではウェブ版を使用しています

  • いいえ、コンピューターから Habr を使用しています

357 人のユーザーが投票しました。 30名のユーザーが棄権した。

出所: habr.com

コメントを追加します