(U)officiel Habr-applikation - HabrApp 2.0: får adgang

En sløv og allerede ret kedelig aften bladrede jeg igennem officiel Habr ansøgning, endnu en gang bøjede jeg mine fingre, en for hver ikke-fungerende funktion. Her kan man for eksempel ikke kommentere, her nægtes man stemmeret, og i det hele taget, hvorfor er formlerne ikke synlige på skærmen?

(U)officiel Habr-applikation - HabrApp 2.0: får adgang
Det blev besluttet: vi havde brug for noget behageligt, behageligt, noget af vores eget. Hvad med din egen ansøgning til Habr?
Lad mig give dig et par skærmbilleder for at forstå situationen.

(U)officiel Habr-applikation - HabrApp 2.0: får adgangSer sådan noget ud dette - af. habr.com applikation

Liste over "ulemper"

  • Du kan ikke bedømme en publikation, hvis vurdering er forskellig fra 0
  • Det er ikke altid muligt at skrive en kommentar
  • Afstemninger virker ikke
  • Formler er ikke synlige i mørkt tema (sort på sort)
  • Ikke alle bogmærker er tilgængelige

Ja, appen er ikke blevet opdateret siden august sidste år, men den er stadig dårlig. Generelt skal det rettes.

Del et. Leder efter adgang.

Hurtig Google-forespørgsel "habrahabr API" den siger, at den allerede er ret forældet depot på Github, ikke opdateret siden November 21 2016, og dette et øjeblik, to et halvt år.

Ignorerer det faktum, at dette er PHP, scroll ned og læs:

Hentning af applikations-id

Udnytte denne form på Habrahabr skal du kort beskrive essensen af ​​den nye applikation og det formål, som den skal bruge en API til.

Der er ingen tvivl, hvis du har brug for at få adgang, så har du brug for det. Vi skriver et brev (forkortet):

brev

Der er ønske om at lave en ansøgning til Habr baseret på PWA. Det er der flere grunde til. 

Den første og mest åbenlyse: Android-applikationen opfylder ikke mine personlige krav.

For det andet: der er ikke nok native notifikationer om alle mulige ting, der normalt kommer via e-mail (f.eks. kommentarer).

For det tredje: personlige fordøjelser (som et perspektiv) om mennesker/hubs, der interesserer mig, under hensyntagen til mine interesser.

Svaret var selvfølgelig ikke særlig behageligt, men i det mindste ærligt:

Desværre er adgang til vores API ikke tilgængelig i øjeblikket. Vi planlægger at genoptage at give adgang, når vi er færdige med at færdiggøre API'en, men vi har ikke nogen nøjagtige datoer endnu, fordi Vi har i øjeblikket travlt med at løse andre prioriterede opgaver.

"Okay intet problem! Vi finder på noget!" - sagde jeg til mig selv og begyndte at lede.

Del to. Dybe udgravninger.

Baseret på logik, hvis applikationen kører, så har den adgang til API'en, og den er forbundet med applikationen. Lad os analysere.

Da vi har med trafik at gøre, er Wireshark vores valg. Ikke uden nogle smerter, efter at have tilsluttet telefonen til internettet via en stationær computer, åbner vi applikationen og ser på anmodningerne:

(U)officiel Habr-applikation - HabrApp 2.0: får adgang
Det er klart, at intet er klart

Ja, alt er krypteret, men jeg vil ikke rode med kryptografi. Så skal du kigge inde i selve applikationen.

Dekompileret . Apk, lad os begynde at lede. Hvad har enhver API brug for? Højre, endpoint, det sted, hvor alle anmodninger går. Dette er sandsynligvis http(er), lad os prøve at finde "https://":

I fil AuthLinkManager.smali finde

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

Dette er koden til den virtuelle Android-maskine (Dalvik VM), ikke særlig forståelig for mennesker, men stadig ret informativ. Disse tre konstanter, at dømme efter deres indhold og navn, samt GitHub-lageret, bruges til at anmode om et adgangstoken ved hjælp af metoden GET.

Lad os se videre. Den fil, der kommer op næste gang i søgningen er NetworkModule.smali:

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

Og her er stedet at tage hen med dine ønsker!

For at den selvskrevne klient skal fungere ordentligt, er der kun én ting tilbage at finde ud af - client_id, som højst sandsynligt er en unik identifikator for applikationen.

Men at søge efter denne tekst i kildekoden førte ikke til at finde relevant information...

Men pludselig fangede mine øjne nogle interessante linjer i en af ​​filerne:

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

Dette er, som du kan forstå, en logpost. Men optager hvad?

Del tre. Dette er logfilerne!

Vi bruger adb logcat for at se applikationslogfiler.

(U)officiel Habr-applikation - HabrApp 2.0: får adgang

Uventet viste logfilerne sig at være endnu mere detaljerede end forventet.

Her har vi ikke kun det, vi har brug for client_idMen polet bruger/applikation, og login и adgangskode i almindelig tekst!

Nogle konspirationsteorierAlene tilstedeværelsen af ​​et login og adgangskode i loggene skader ikke noget, da disse logs kun kan læses med enten root-rettigheder eller en forbindelse via adb. Men på grund af det faktum, at der blandt de mennesker, der læser Habr, er Android-udviklere, som muligvis har debugging aktiveret, bliver dette et problem.

I dette tilfælde kan "gratis opladning" i lufthavnen resultere i kontotyveri, men hvem har brug for det?
Fra disse logfiler kan vi udtrække:

  • client_id и apikeykræves for at få adgang api;
  • Brugergodkendelses-URL (mærkeligt, men der er intet i lageret om denne metode, måske er det ikke angivet?)

Sådan skete det. Baseret på denne lille research er arbejdet allerede i gang med et lille projekt - vores egen implementering af en mobilapplikation. Jeg beder dem, der vil hjælpe, om at skrive en besked, og alle andre - om at stemme (fordi jeg vil forstå, om nogen har brug for dette).

Tak for din opmærksomhed!

Kun registrerede brugere kan deltage i undersøgelsen. Log ind, Vær venlig.

Bruger du Habr-mobilapplikationen?

  • Ja, jeg bruger den, jeg er glad for den

  • Ja, jeg bruger det, applikationen forårsager besvær

  • Nej, jeg bruger webversionen på min telefon

  • Nej, jeg bruger Habr fra min computer

357 brugere stemte. 30 brugere undlod at stemme.

Kilde: www.habr.com

Tilføj en kommentar