(mitte)ametlik Habri rakendus – HabrApp 2.0: juurdepääsu saamine
Ühel tuimal ja juba üsna igaval õhtul lehitsesin mina ametnik Habr rakendus, järjekordselt painutasin sõrmi, iga mittetöötava funktsiooni jaoks ühe. Siin näiteks ei saa kommenteerida, siin võetakse hääleõigus ära ja üleüldse, miks valemid ekraanil ei ole näha?
Otsustati: vajame midagi mugavat, meeldivat, midagi oma. Aga teie enda taotlus Habrile?
Olukorra mõistmiseks annan teile mõned ekraanipildid.
Näeb välja midagi sellist это -. habr.com rakendus
"Ebamugavuste" nimekiri
Te ei saa hinnata väljaannet, mille reiting erineb 0-st
Alati pole võimalik kommentaari kirjutada
Küsitlused ei tööta
Valemid pole tumedal teemal nähtavad (must mustal)
Kõik järjehoidjad pole saadaval
Jah, rakendust pole eelmise aasta augustist saadik värskendatud, kuid see on endiselt halb. Üldiselt tuleb see parandada.
Esimene osa. Otsin juurdepääsu.
Kiire Google'i päring "habrahabr API" see ütleb, et see on juba üsna aegunud hoidla Githubis, pole pärast seda värskendatud November 21 2016, ja see, korraks, kaks ja pool aastat.
Ignoreerides tõsiasja, et see on PHP, kerige alla ja lugege:
Rakenduse ID hankimine
Kasutades ära see vorm Habrahabris peate lühidalt kirjeldama uue rakenduse olemust ja eesmärki, milleks see API-d vajab.
Pole kahtlust, kui teil on vaja juurdepääsu, siis on teil seda vaja. Kirjutame kirja (lühendatult):
Kirjutamine
On soov teha Habrile taotlus PWA põhjal. Sellel on mitu põhjust.
Esimene ja kõige ilmsem: Androidi rakendus ei vasta minu isiklikele nõuetele.
Teiseks: pole piisavalt natiivseid teavitusi igasuguste asjade kohta, mis tavaliselt tulevad meili teel (näiteks kommentaarid).
Kolmandaks: isiklikud kokkuvõtted (perspektiivina) mind huvitavatest inimestest/keskustest, võttes arvesse minu huvisid.
Vastus polnud muidugi kuigi meeldiv, aga vähemalt aus:
Kahjuks pole juurdepääs meie API-le praegu saadaval. Plaanime juurdepääsu pakkumist jätkata pärast API lõpuleviimise lõpetamist, kuid meil pole veel täpseid kuupäevi, sest Hetkel tegeleme teiste prioriteetsete ülesannete lahendamisega.
"Olgu, pole probleemi! Me mõtleme midagi välja!" - ütlesin endale ja hakkasin otsima.
Teine osa. Sügavad kaevamised.
Loogika põhjal, kui rakendus töötab, on sellel juurdepääs API-le ja see on rakendusega ühendatud. Analüüsime.
Kuna tegemist on liiklusega, on meie valik Wireshark. Mitte ilma valuta, olles telefoni lauaarvuti kaudu Internetti ühendanud, avame rakenduse ja vaatame päringuid:
Selge see, et miski pole selge
Jah, kõik on krüpteeritud, kuid ma ei taha krüptograafiaga jamada. Seejärel peate vaatama rakenduse enda sisse.
Dekompileeritud . APK, hakkame otsima. Mida iga API vajab? õige, tulemusnäitaja, koht, kuhu kõik taotlused lähevad. See on tõenäoliselt http(id), proovime leida "https://":
See on Androidi virtuaalmasina kood (Dalvik VM), pole inimese jaoks kuigi arusaadav, kuid siiski üsna informatiivne. Neid kolme konstanti, otsustades nende sisu ja nime, samuti GitHubi hoidla järgi, kasutatakse juurdepääsuloa taotlemiseks meetodiga GET.
Vaatame edasi. Otsingus järgmisena kuvatav fail on NetworkModule.smali:
const-string v0, "https://habr.com/api/v1/"
Ja siin on koht, kuhu oma soovidega minna!
Et isekirjutatud klient korralikult töötaks, tuleb välja mõelda vaid üks asi - client_id, mis on tõenäoliselt rakenduse kordumatu identifikaator.
Selle teksti otsimine lähtekoodist ei viinud aga asjakohase teabe leidmiseni...
Kuid äkki tabasid mu silmad ühes failis huvitavaid ridu:
Nagu aru saate, on see logikirje. Aga mida salvestada?
Kolmas osa. Need on palgid!
Me kasutame adb logcat rakenduste logide vaatamiseks.
Ootamatult osutusid logid oodatust veelgi detailsemaks.
Meil pole siin mitte ainult seda, mida vajame client_idkuid märk kasutaja/rakendus ja logi и parool lihttekstina!
Mõned vandenõuteooriadAinuüksi sisselogimise ja parooli olemasolu logides ei kahjusta midagi, kuna neid logisid saab lugeda ainult kas juurõigustega või ühenduse kaudu adb. Kuid kuna Habrit lugevate inimeste seas on Androidi arendajaid, kellel võib olla silumine lubatud, muutub see probleemiks.
Sel juhul võib "tasuta laadimine" lennujaamas kaasa tuua kontovarguse, kuid kellele seda vaja on?
Nendest logidest saame välja võtta:
client_id и apikeyjuurdepääsuks vajalik API;
Kasutaja autoriseerimise URL (kummaline, kuid hoidlas pole selle meetodi kohta midagi, võib-olla pole seda ette nähtud?)
Nii see juhtuski. Selle pisikese uurimistöö põhjal on töö juba käimas väikese projektiga – meie enda mobiilirakenduse juurutamise kallal. Palun neil, kes soovivad aidata, kirjutada sõnum ja kõigil teistel - hääletada (sest ma tahan aru saada, kas kellelgi on seda vaja).
Tänan teid tähelepanu eest!
Küsitluses saavad osaleda ainult registreerunud kasutajad. Logi sissepalun.
Kas kasutate Habri mobiilirakendust?
Jah, ma kasutan seda, olen sellega rahul
Jah, ma kasutan seda, rakendus tekitab ebamugavusi
Ei, ma kasutan oma telefonis veebiversiooni
Ei, ma kasutan Habrit oma arvutist
357 kasutajat hääletas. 30 kasutajat jäi erapooletuks.