(Tidak) aplikasi Habr resmi - HabrApp 2.0: mendapatkan akses

Suatu malam yang lesu dan sudah cukup membosankan, saya membolak-baliknya resmi Habr aplikasi, sekali lagi saya tekuk jari saya, satu untuk setiap fitur yang tidak berfungsi. Di sini misalnya Anda tidak bisa berkomentar, di sini Anda tidak diberi hak pilih, dan secara umum mengapa rumusnya tidak terlihat di layar?

(Tidak) aplikasi Habr resmi - HabrApp 2.0: mendapatkan akses
Diputuskan: kami membutuhkan sesuatu yang nyaman, menyenangkan, sesuatu milik kami sendiri. Bagaimana dengan aplikasi Anda sendiri untuk Habr?
Izinkan saya memberi Anda beberapa tangkapan layar untuk memahami situasinya.

(Tidak) aplikasi Habr resmi - HabrApp 2.0: mendapatkan aksesEntah bagaimana terlihat seperti ini ini - dari. aplikasi habr.com

Daftar "ketidaknyamanan"

  • Anda tidak dapat memberi peringkat pada publikasi yang peringkatnya berbeda dari 0
  • Tidak selalu mungkin untuk menulis komentar
  • Jajak pendapat tidak berhasil
  • Rumus tidak terlihat pada tema gelap (hitam di atas hitam)
  • Tidak semua bookmark tersedia

Ya, aplikasinya belum diperbarui sejak Agustus tahun lalu, tapi masih buruk. Secara umum, hal ini perlu diperbaiki.

Bagian satu. Mencari akses.

Kueri Google Cepat "API habrahabr" katanya itu sudah ketinggalan jaman gudang di Github, belum diperbarui sejak itu 21 ноября 2016, dan ini, untuk sesaat, dua setengah tahun.

Mengabaikan fakta bahwa ini adalah PHP, gulir ke bawah dan baca:

Mendapatkan ID Aplikasi

Mengambil keuntungan formulir ini di Habrahabr, Anda perlu menjelaskan secara singkat esensi aplikasi baru dan tujuan memerlukan API.

Tidak ada pertanyaan, jika Anda perlu mendapatkan akses, maka Anda memerlukannya. Kami menulis surat (disingkat):

Surat

Ada keinginan untuk membuat aplikasi Habr berbasis PWA. Ada beberapa alasan untuk hal ini. 

Yang pertama dan paling jelas: aplikasi Android tidak memenuhi kebutuhan pribadi saya.

Kedua: tidak cukup notifikasi asli tentang segala hal yang biasanya datang melalui email (komentar, misalnya).

Ketiga: intisari pribadi (sebagai perspektif) tentang orang/hub yang saya minati, dengan mempertimbangkan minat saya.

Jawabannya, tentu saja, tidak terlalu menyenangkan, tapi setidaknya jujur:

Sayangnya, akses ke API kami saat ini tidak tersedia. Kami berencana untuk melanjutkan penyediaan akses setelah kami selesai menyelesaikan API, namun kami belum mengetahui tanggal pastinya, karena Kami saat ini sedang sibuk menyelesaikan tugas prioritas lainnya.

"Oke tidak masalah! Kami akan memikirkan sesuatu!" - Aku berkata pada diriku sendiri dan mulai mencari.

Bagian kedua. Penggalian mendalam.

Berdasarkan logika, jika aplikasi sedang berjalan, maka aplikasi tersebut memiliki akses ke API, dan sudah tertanam dalam aplikasi. Mari kita analisa.

Karena kami berurusan dengan lalu lintas, Wireshark adalah pilihan kami. Bukan tanpa kesulitan, setelah menghubungkan ponsel ke Internet melalui komputer desktop, kami membuka aplikasi dan melihat permintaan:

(Tidak) aplikasi Habr resmi - HabrApp 2.0: mendapatkan akses
Jelas tidak ada yang jelas

Ya, semuanya dienkripsi, tapi saya tidak ingin main-main dengan kriptografi. Maka Anda perlu melihat ke dalam aplikasi itu sendiri.

Didekompilasi . Apk, mari kita mulai mencari. Apa yang dibutuhkan API? Benar, endpoint, tempat perginya semua permintaan. Ini mungkin http(s), mari kita coba mencari β€œhttps://”:

Dalam file AuthLinkManager.smali Temukan

.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 adalah kode untuk mesin virtual Android (Dalvik VM), tidak terlalu bisa dimengerti manusia, tapi masih cukup informatif. Ketiga konstanta ini, dilihat dari konten dan namanya, serta repositori GitHub, digunakan untuk meminta token akses menggunakan metode ini GET.

Mari kita lihat lebih jauh. File yang muncul berikutnya dalam pencarian adalah NetworkModule.smali:

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

Dan inilah tempat untuk memenuhi permintaan Anda!

Agar klien yang menulis sendiri dapat berfungsi dengan baik, hanya ada satu hal yang perlu dipikirkan - client_id, yang kemungkinan besar merupakan pengidentifikasi unik untuk aplikasi tersebut.

Namun, mencari teks ini dalam kode sumber tidak menghasilkan penemuan informasi yang relevan...

Namun tiba-tiba di salah satu file, 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 pahami, adalah entri log. Tapi merekam apa?

Bagian ketiga. Ini adalah lognya!

Gunakan adb logcat untuk melihat log aplikasi.

(Tidak) aplikasi Habr resmi - HabrApp 2.0: mendapatkan akses

Tanpa diduga, log tersebut ternyata lebih detail dari yang diharapkan.

Di sini kita tidak hanya memiliki apa yang kita butuhkan client_idtapi token pengguna/aplikasi, dan login ΠΈ kata sandi dalam teks biasa!

Beberapa teori konspirasiKehadiran login dan kata sandi di log tidak merugikan apa pun, karena log ini hanya dapat dibaca dengan hak root atau koneksi melalui adb. Namun karena di antara orang yang membaca Habr ada pengembang Android yang mungkin telah mengaktifkan debugging, hal ini menjadi masalah.

Dalam hal ini, β€œpengisian gratis” di bandara dapat mengakibatkan pencurian akun, tetapi siapa yang membutuhkannya?
Dari log ini kita dapat mengekstrak:

  • client_id ΠΈ apikeydiperlukan untuk mengakses api;
  • URL otorisasi pengguna (aneh, tetapi tidak ada apa pun di repositori tentang metode ini, mungkin tidak disediakan?)

Begitulah yang terjadi. Berdasarkan penelitian kecil ini, pekerjaan sedang dilakukan pada sebuah proyek kecil - implementasi aplikasi seluler kami sendiri. Saya meminta mereka yang ingin membantu untuk menulis pesan, dan semua orang - untuk memilih (karena saya ingin memahami apakah ada yang membutuhkan ini).

Terima kasih!

Hanya pengguna terdaftar yang dapat berpartisipasi dalam survei. Masuk, silakan.

Apakah Anda menggunakan aplikasi seluler Habr?

  • Ya, saya menggunakannya, saya senang dengan itu

  • Ya, saya menggunakannya, aplikasinya menyebabkan ketidaknyamanan

  • Tidak, saya menggunakan versi web di ponsel saya

  • Tidak, saya menggunakan Habr dari komputer saya

357 pengguna memilih. 30 pengguna abstain.

Sumber: www.habr.com

Tambah komentar