(On)amptelike Habr-toepassing - HabrApp 2.0: verkry toegang

Een lome en reeds redelik vervelige aand blaai ek deur amptelik Habr toepassing, weereens het ek my vingers gebuig, een vir elke nie-werkende kenmerk. Hier kan jy byvoorbeeld nie kommentaar lewer nie, hier word jy stemreg geweier, en oor die algemeen, hoekom is die formules nie sigbaar op die skerm nie?

(On)amptelike Habr-toepassing - HabrApp 2.0: verkry toegang
Daar is besluit: ons het iets gemakliks, aangenaam, iets van ons eie nodig. Wat van jou eie aansoek vir Habr?
Laat ek jou 'n paar skermkiekies gee om die situasie te verstaan.

(On)amptelike Habr-toepassing - HabrApp 2.0: verkry toegangLyk so iets hierdie - van. habr.com aansoek

Lys van "ongerief"

  • Jy kan nie 'n publikasie gradeer waarvan die gradering verskil van 0 nie
  • Dit is nie altyd moontlik om 'n opmerking te skryf nie
  • Meningspeilings werk nie
  • Formules is nie sigbaar in donker tema nie (swart op swart)
  • Nie alle boekmerke is beskikbaar nie

Ja, die toepassing is sedert Augustus verlede jaar nie opgedateer nie, maar dit is steeds sleg. Oor die algemeen moet dit reggemaak word.

Deel een. Soek toegang.

Vinnige Google-navraag "habrahabr API" dit sê dit is reeds redelik verouderd bewaarplek op Github, sedertdien nie opgedateer nie November 21 2016, en dit, vir 'n oomblik, twee en 'n half jaar.

Ignoreer die feit dat dit PHP is, blaai af en lees:

Kry die aansoek-ID

Gebruik te maak hierdie vorm op Habrahabr, moet jy kortliks die essensie van die nuwe toepassing beskryf en die doel waarvoor dit 'n API benodig.

Daar is geen twyfel nie, as jy toegang moet kry, dan het jy dit nodig. Ons skryf 'n brief (afgekort):

brief

Daar is 'n begeerte om 'n aansoek vir Habr te maak gebaseer op PWA. Daar is verskeie redes hiervoor. 

Die eerste en mees ooglopende: die Android-toepassing voldoen nie aan my persoonlike vereistes nie.

Tweedens: daar is nie genoeg inheemse kennisgewings oor allerhande dinge wat gewoonlik per e-pos kom nie (byvoorbeeld opmerkings).

Derdens: persoonlike vertering (as 'n perspektief) oor mense/spilpunte wat my interesseer, met inagneming van my belangstellings.

Die antwoord was natuurlik nie baie aangenaam nie, maar ten minste eerlik:

Ongelukkig is toegang tot ons API nie tans beskikbaar nie. Ons beplan om weer toegang te verskaf nadat ons die API voltooi het, maar ons het nog geen presiese datums nie, want Ons is tans besig om ander prioriteitstake op te los.

"Regso geen probleem nie! Ons sal met iets vorendag kom!" - Ek het vir myself gesê en begin soek.

Deel twee. Diep opgrawings.

Gebaseer op logika, as die toepassing loop, dan het dit toegang tot die API, en dit is hardbedraad in die toepassing. Kom ons ontleed.

Aangesien ons met verkeer te doen het, is Wireshark ons ​​keuse. Nie sonder pyn nie, nadat ons die telefoon via 'n rekenaar aan die internet gekoppel het, maak ons ​​die toepassing oop en kyk na die versoeke:

(On)amptelike Habr-toepassing - HabrApp 2.0: verkry toegang
Dit is duidelik dat niks duidelik is nie

Ja, alles is geïnkripteer, maar ek wil nie met kriptografie mors nie. Dan moet jy binne die toepassing self kyk.

Gedekompileer APK, kom ons begin soek. Wat het enige API nodig? Reg, eindpunt, die plek waarheen alle versoeke gaan. Dit is waarskynlik http(s), kom ons probeer om "https://" te vind:

In lêer AuthLinkManager.smali vind

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

Dit is die kode vir die Android virtuele masjien (Dalvik VM), nie baie verstaanbaar vir mense nie, maar tog redelik insiggewend. Hierdie drie konstantes, te oordeel aan hul inhoud en naam, sowel as die GitHub-bewaarplek, word gebruik om 'n toegangsteken aan te vra met die metode GET.

Kom ons kyk verder. Die lêer wat volgende in die soektog verskyn is NetworkModule.smali:

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

En hier is die plek om te gaan met jou versoeke!

Vir die selfgeskrewe kliënt om behoorlik te werk, is daar net een ding oor om uit te vind - client_id, wat heel waarskynlik 'n unieke identifiseerder vir die toepassing is.

Die soeke na hierdie teks in die bronkode het egter nie daartoe gelei dat relevante inligting gevind is nie...

Maar skielik het my oë in een van die lêers 'n paar interessante lyne opgevang:

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

Dit is, soos u kan verstaan, 'n loginskrywing. Maar wat opneem?

Deel drie. Dit is die logs!

Ons gebruik adb logcat om toepassinglogboeke te sien.

(On)amptelike Habr-toepassing - HabrApp 2.0: verkry toegang

Onverwags het die logboeke selfs meer gedetailleerd geblyk te wees as wat verwag is.

Hier het ons nie net wat ons nodig het nie client_idMaar teken gebruiker/toepassing, en логин и пароль in duidelike teks!

Sommige samesweringsteorieëDie blote teenwoordigheid van 'n login en wagwoord in die logs benadeel niks nie, aangesien hierdie logs slegs gelees kan word met óf wortelregte óf 'n verbinding via adb. Maar as gevolg van die feit dat daar onder die mense wat Habr lees Android-ontwikkelaars is wat ontfouting moontlik geaktiveer het, word dit 'n probleem.

In hierdie geval kan "gratis laai" by die lughawe tot rekeningdiefstal lei, maar wie het dit nodig?
Uit hierdie logs kan ons onttrek:

  • client_id и apikeyvereis om toegang te verkry api;
  • Gebruikersmagtigings-URL (vreemd, maar daar is niks in die bewaarplek oor hierdie metode nie, is dit dalk nie verskaf nie?)

Dis hoe dit gebeur het. Op grond van hierdie piepklein navorsing is daar reeds gewerk aan 'n klein projek - ons eie implementering van 'n mobiele toepassing. Ek vra diegene wat wil help om 'n boodskap te skryf, en almal anders - om te stem (want ek wil verstaan ​​of iemand dit nodig het).

Skep 'n nuwe weergawe!

Slegs geregistreerde gebruikers kan aan die opname deelneem. Meld aan, asseblief.

Gebruik jy die Habr-mobiele toepassing?

  • Ja, ek gebruik dit, ek is tevrede daarmee

  • Ja, ek gebruik dit, die toepassing veroorsaak ongerief

  • Nee, ek gebruik die webweergawe op my foon

  • Nee, ek gebruik Habr vanaf my rekenaar

357 gebruikers het gestem. 30 gebruikers het buite stemming gebly.

Bron: will.com

Voeg 'n opmerking