(Tidak) aplikasi Habr rasmi - HabrApp 2.0: mendapat akses

Satu petang yang lesu dan sudah cukup membosankan, saya, keluar rasmi Permohonan Habr, sekali lagi saya membengkokkan jari saya, satu untuk setiap ciri yang tidak berfungsi. Di sini, sebagai contoh, anda tidak boleh mengulas, di sini anda dinafikan hak untuk mengundi, dan secara umum, mengapa formula tidak kelihatan pada skrin?

(Tidak) aplikasi Habr rasmi - HabrApp 2.0: mendapat akses
Ia telah diputuskan: kami memerlukan sesuatu yang selesa, menyenangkan, sesuatu yang kami sendiri. Bagaimana dengan permohonan anda sendiri untuk Habr?
Izinkan saya memberi anda beberapa tangkapan skrin untuk memahami keadaan.

(Tidak) aplikasi Habr rasmi - HabrApp 2.0: mendapat aksesNampak macam ni это - daripada. aplikasi habr.com

Senarai "kesulitan"

  • Anda tidak boleh menilai penerbitan yang penilaiannya berbeza daripada 0
  • Tidak selalu boleh menulis ulasan
  • Undian tidak berfungsi
  • Formula tidak kelihatan dalam tema gelap (hitam pada hitam)
  • Tidak semua penanda halaman tersedia

Ya, apl itu belum dikemas kini sejak Ogos tahun lalu, tetapi ia masih teruk. Secara umum, ia perlu diperbaiki.

Bahagian satu. Mencari akses.

Pertanyaan Google Pantas "API habrahabr" ia mengatakan ia sudah agak ketinggalan zaman repositori pada Github, tidak dikemas kini sejak itu November 21 2016, dan ini, untuk seketika, dua setengah tahun.

Mengabaikan fakta bahawa ini adalah PHP, tatal ke bawah dan baca:

Mendapatkan ID Permohonan

Mengambil kesempatan borang ini pada Habrahabr, anda perlu menerangkan secara ringkas intipati aplikasi baharu dan tujuan ia memerlukan API.

Tidak ada persoalan, jika anda perlu mendapatkan akses, maka anda memerlukannya. Kami menulis surat (disingkatkan):

Surat

Terdapat keinginan untuk membuat permohonan untuk Habr berdasarkan PWA. Terdapat beberapa sebab untuk ini. 

Yang pertama dan paling jelas: aplikasi Android tidak memenuhi keperluan peribadi saya.

Kedua: tidak ada pemberitahuan asli yang mencukupi tentang semua jenis perkara yang biasanya datang melalui e-mel (ulasan, contohnya).

Ketiga: ringkasan peribadi (sebagai perspektif) tentang orang/hab yang menarik minat saya, dengan mengambil kira minat saya.

Jawapannya, tentu saja, tidak begitu menyenangkan, tetapi sekurang-kurangnya jujur:

Malangnya, akses kepada API kami tidak tersedia pada masa ini. Kami merancang untuk meneruskan penyediaan akses selepas kami selesai memuktamadkan API, tetapi kami belum mempunyai sebarang tarikh yang tepat, kerana Kami sedang sibuk menyelesaikan tugas keutamaan lain.

β€œBaiklah, tiada masalah! Kami akan buat sesuatu!" - Saya berkata kepada diri sendiri dan mula mencari.

Bahagian kedua. Penggalian dalam.

Berdasarkan logik, jika aplikasi sedang berjalan, maka ia mempunyai akses kepada API, dan ia disambungkan ke dalam aplikasi. Mari analisa.

Memandangkan kami berurusan dengan trafik, Wireshark adalah pilihan kami. Bukan tanpa rasa sakit, setelah menyambungkan telefon ke Internet melalui komputer meja, kami membuka aplikasi dan melihat permintaan:

(Tidak) aplikasi Habr rasmi - HabrApp 2.0: mendapat akses
Jelas bahawa tiada apa yang jelas

Ya, semuanya disulitkan, tetapi saya tidak mahu mengacaukan kriptografi. Kemudian anda perlu melihat ke dalam aplikasi itu sendiri.

Disusun semula .apk, mari kita mula mencari. Apakah yang diperlukan oleh mana-mana API? betul, titik akhir, tempat di mana semua permintaan pergi. Ini mungkin http(s), mari cuba cari "https://":

Dalam fail AuthLinkManager.smali kita dapati

.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"

Ini ialah kod untuk mesin maya Android (Dalvik VM), tidak begitu difahami oleh manusia, tetapi masih cukup bermaklumat. Ketiga pemalar ini, berdasarkan kandungan dan nama mereka, serta repositori GitHub, digunakan untuk meminta token akses menggunakan kaedah GET.

Mari kita lihat lebih jauh. Fail yang muncul seterusnya dalam carian ialah NetworkModule.smali:

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

Dan inilah tempat untuk pergi dengan permintaan anda!

Untuk pelanggan yang ditulis sendiri berfungsi dengan baik, hanya ada satu perkara yang perlu difikirkan - client_id, yang kemungkinan besar merupakan pengecam unik untuk aplikasi.

Walau bagaimanapun, mencari teks ini dalam kod sumber tidak membawa kepada mencari maklumat yang berkaitan...

Tetapi tiba-tiba dalam salah satu fail mata saya menangkap beberapa baris menarik:

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

Ini, seperti yang anda faham, adalah entri log. Tetapi merakam apa?

Bahagian ketiga. Ini adalah log!

Kami guna adb logcat untuk melihat log aplikasi.

(Tidak) aplikasi Habr rasmi - HabrApp 2.0: mendapat akses

Tanpa diduga, log ternyata lebih terperinci daripada yang dijangkakan.

Di sini kita mempunyai bukan sahaja apa yang kita perlukan client_idTetapi token pengguna/aplikasi, dan login ΠΈ kata laluan dalam teks biasa!

Beberapa teori konspirasiKehadiran log masuk dan kata laluan dalam log tidak membahayakan apa-apa, kerana log ini hanya boleh dibaca dengan hak akar atau sambungan melalui adb. Tetapi disebabkan fakta bahawa di kalangan orang yang membaca Habr terdapat pembangun Android yang mungkin telah mendayakan penyahpepijatan, ini menjadi masalah.

Dalam kes ini, "caj percuma" di lapangan terbang boleh mengakibatkan kecurian akaun, tetapi siapa yang memerlukannya?
Daripada log ini kita boleh mengekstrak:

  • client_id ΠΈ apikeydiperlukan untuk mengakses api;
  • URL kebenaran pengguna (pelik, tetapi tiada apa-apa dalam repositori tentang kaedah ini, mungkin ia tidak disediakan?)

Begitulah ia berlaku. Berdasarkan penyelidikan kecil ini, kerja sedang dijalankan untuk projek kecil - pelaksanaan aplikasi mudah alih kami sendiri. Saya meminta mereka yang ingin membantu menulis mesej, dan orang lain - untuk mengundi (kerana saya ingin memahami sama ada sesiapa memerlukan ini).

Thank you!

Hanya pengguna berdaftar boleh mengambil bahagian dalam tinjauan. Log masuk, Sama-sama.

Adakah anda menggunakan aplikasi mudah alih Habr?

  • Ya, saya menggunakannya, saya gembira dengannya

  • Ya, saya menggunakannya, aplikasi itu menyebabkan kesulitan

  • Tidak, saya menggunakan versi web pada telefon saya

  • Tidak, saya menggunakan Habr dari komputer saya

357 pengguna mengundi. 30 pengguna berpantang.

Sumber: www.habr.com

Tambah komen