(Ne)službena Habr aplikacija - HabrApp 2.0: dobivanje pristupa

Jedne trome i već prilično dosadne večeri, ja, listajući oficialʹnoe Aplikacija Habr, još jednom sam savio prste, po jedan za svaku neradnu značajku. Evo, na primjer, ne možete komentirati, ovdje vam se uskraćuje pravo glasa, i uopće, zašto se formule ne vide na ekranu?

(Ne)službena Habr aplikacija - HabrApp 2.0: dobivanje pristupa
Odlučeno je: trebamo nešto udobno, ugodno, nešto svoje. Što je s vlastitom aplikacijom za Habr?
Dat ću vam nekoliko snimaka zaslona da biste razumjeli situaciju.

(Ne)službena Habr aplikacija - HabrApp 2.0: dobivanje pristupaIzgleda otprilike ovako ovo - od. aplikacija habr.com

Popis "neugodnosti"

  • Ne možete ocijeniti publikaciju čija je ocjena različita od 0
  • Nije uvijek moguće napisati komentar
  • Ankete ne rade
  • Formule nisu vidljive u tamnoj temi (crno na crno)
  • Nisu sve oznake dostupne

Da, aplikacija nije ažurirana od kolovoza prošle godine, ali i dalje je loša. Općenito, to treba popraviti.

Prvi dio. Tražim pristup.

Brzi Google upit "habrahabr API" kaže da je već prilično zastario spremište na Githubu, od tada nije ažuriran Studenog 21 2016, a ovo, na trenutak, dvije i pol godine.

Zanemarujući činjenicu da je ovo PHP, pomaknite se prema dolje i pročitajte:

Dobivanje ID aplikacije

Iskorištavanje ova forma na Habrahabru trebate ukratko opisati bit nove aplikacije i svrhu za koju joj je potreban API.

Nema sumnje, ako trebate dobiti pristup, onda vam je potreban. Pišemo pismo (skraćeno):

Pismo

Postoji želja napraviti aplikaciju za Habr temeljenu na PWA. Nekoliko je razloga za to. 

Prvo i najočitije: Android aplikacija ne ispunjava moje osobne zahtjeve.

Drugo: nema dovoljno izvornih obavijesti o svakakvim stvarima koje obično dolaze e-poštom (komentari, na primjer).

Treće: osobni sažetci (kao perspektiva) o ljudima/centrilima koji me zanimaju, uzimajući u obzir moje interese.

Odgovor, naravno, nije bio baš ugodan, ali barem iskren:

Nažalost, pristup našem API-ju trenutno nije dostupan. Planiramo nastaviti pružati pristup nakon što završimo finaliziranje API-ja, ali još nemamo točne datume jer Trenutno smo zauzeti rješavanjem drugih prioritetnih zadataka.

"U redu nema problema! Smislit ćemo nešto!" - rekla sam sama sebi i počela tražiti.

Drugi dio. Duboki iskopi.

Na temelju logike, ako je aplikacija pokrenuta, tada ima pristup API-ju i ugrađena je u aplikaciju. Analizirajmo.

Budući da se bavimo prometom, Wireshark je naš izbor. Ne bez muke, nakon povezivanja telefona s internetom preko stolnog računala, otvaramo aplikaciju i gledamo zahtjeve:

(Ne)službena Habr aplikacija - HabrApp 2.0: dobivanje pristupa
Jasno je da ništa nije jasno

Da, sve je šifrirano, ali ne želim se petljati s kriptografijom. Zatim morate pogledati unutar same aplikacije.

Dekompilirano . APK, počnimo tražiti. Što je potrebno bilo kojem API-ju? Pravo, krajnja, mjesto gdje idu svi zahtjevi. Ovo je vjerojatno http(s), pokušajmo pronaći "https://":

U spisu AuthLinkManager.smali pronaći

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

Ovo je kod za Android virtualni stroj (Dalvik VM), ne baš razumljivo ljudima, ali ipak prilično informativno. Ove tri konstante, sudeći po njihovom sadržaju i nazivu, kao i GitHub repozitoriju, koriste se za traženje pristupnog tokena metodom GET.

Pogledajmo dalje. Datoteka koja se pojavljuje sljedeća u pretrazi je NetworkModule.smali:

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

A ovdje je mjesto na koje možete ići sa svojim zahtjevima!

Da bi klijent koji je sam napisao ispravno radio, preostaje samo jedna stvar koju treba shvatiti - client_id, što je najvjerojatnije jedinstveni identifikator za aplikaciju.

Međutim, traženje ovog teksta u izvornom kodu nije dovelo do pronalaska relevantnih informacija...

Ali iznenada su mi u jednoj od datoteka oči zapele neke zanimljive retke:

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

Ovo je, kao što možete razumjeti, zapis u dnevniku. Ali snimanje čega?

treći dio. Ovo su cjepanice!

Koristimo adb logcat za pregled zapisa aplikacije.

(Ne)službena Habr aplikacija - HabrApp 2.0: dobivanje pristupa

Neočekivano, dnevnici su se pokazali još detaljnijima nego što se očekivalo.

Ovdje nemamo samo ono što nam je potrebno client_idAli žeton korisnik/aplikacija i prijava и lozinka čistim tekstom!

Neke teorije zavjereSama prisutnost prijave i lozinke u zapisima ne šteti ničemu, budući da se ti zapisi mogu čitati samo s root pravima ili vezom putem adb. Ali zbog činjenice da među ljudima koji čitaju Habr postoje Android programeri koji možda imaju omogućeno uklanjanje pogrešaka, ovo postaje problem.

U ovom slučaju "besplatno punjenje" u zračnoj luci može rezultirati krađom računa, ali kome to treba?
Iz ovih zapisa možemo izdvojiti:

  • client_id и apikeypotrebno za pristup api;
  • URL autorizacije korisnika (čudno, ali u repozitoriju nema ništa o ovoj metodi, možda nije navedena?)

Tako se i dogodilo. Na temelju ovog malog istraživanja već se radi na malom projektu - vlastitoj implementaciji mobilne aplikacije. Molim one koji žele pomoći da napišu poruku, a sve ostale - da glasaju (jer želim razumjeti treba li to nekome).

Hvala vam!

U anketi mogu sudjelovati samo registrirani korisnici. Prijaviti se, molim.

Koristite li mobilnu aplikaciju Habr?

  • Da, koristim ga, zadovoljan sam

  • Da, koristim ga, aplikacija uzrokuje neugodnosti

  • Ne, koristim web verziju na svom telefonu

  • Ne, koristim Habr sa svog računala

Glasovalo je 357 korisnika. Suzdržano je bilo 30 korisnika.

Izvor: www.habr.com

Dodajte komentar