(U)offisiell Habr-applikasjon - HabrApp 2.0: får tilgang

En sløv og allerede ganske kjedelig kveld blar jeg igjennom offisielt Habr søknad, nok en gang bøyde jeg fingrene, en for hver funksjon som ikke fungerer. Her kan du for eksempel ikke kommentere, her nektes du stemmerett, og generelt sett, hvorfor er ikke formlene synlige på skjermen?

(U)offisiell Habr-applikasjon - HabrApp 2.0: får tilgang
Det ble bestemt: vi trengte noe behagelig, hyggelig, noe eget. Hva med din egen søknad for Habr?
La meg gi deg noen skjermbilder for å forstå situasjonen.

(U)offisiell Habr-applikasjon - HabrApp 2.0: får tilgangSer noe slikt ut dette - av. habr.com-applikasjonen

Liste over "ulemper"

  • Du kan ikke rangere en publikasjon hvis vurdering er forskjellig fra 0
  • Det er ikke alltid mulig å skrive en kommentar
  • Meningsmålinger fungerer ikke
  • Formler er ikke synlige i mørkt tema (svart på svart)
  • Ikke alle bokmerker er tilgjengelige

Ja, appen har ikke blitt oppdatert siden august i fjor, men den er fortsatt dårlig. Generelt må det fikses.

Del en. Ser etter tilgang.

Rask Google-søk "habrahabr API" det står at det allerede er ganske utdatert oppbevaringssted på Github, ikke oppdatert siden November 21 2016, og dette, for et øyeblikk, to og et halvt år.

Ignorerer det faktum at dette er PHP, bla ned og les:

Får applikasjons-ID

Utnytte Denne formen på Habrahabr må du kort beskrive essensen av den nye applikasjonen og formålet den trenger en API for.

Det er ingen tvil, hvis du trenger å få tilgang, så trenger du det. Vi skriver et brev (forkortet):

Et brev

Det er ønske om å lage en søknad for Habr basert på PWA. Det er flere grunner til dette. 

Den første og mest åpenbare: Android-applikasjonen oppfyller ikke mine personlige krav.

For det andre: det er ikke nok innfødte varsler om alle slags ting som vanligvis kommer på e-post (for eksempel kommentarer).

For det tredje: personlige fordøyelser (som et perspektiv) på mennesker/knutepunkter som interesserer meg, med hensyn til mine interesser.

Svaret var selvfølgelig ikke særlig hyggelig, men i det minste ærlig:

Dessverre er tilgang til vår API for øyeblikket ikke tilgjengelig. Vi planlegger å gjenoppta tilgangen etter at vi er ferdige med å fullføre API, men vi har ingen eksakte datoer ennå, fordi Vi er for tiden opptatt med å løse andre prioriterte oppgaver.

"Ok ikke noe problem! Vi finner på noe!" – Jeg sa til meg selv og begynte å lete.

Andre del. Dype utgravninger.

Basert på logikk, hvis applikasjonen kjører, har den tilgang til API, og den er koblet til applikasjonen. La oss analysere.

Siden vi har å gjøre med trafikk, er Wireshark vårt valg. Ikke uten noen smerter, etter å ha koblet telefonen til Internett via en stasjonær datamaskin, åpner vi applikasjonen og ser på forespørslene:

(U)offisiell Habr-applikasjon - HabrApp 2.0: får tilgang
Klart at ingenting er klart

Ja, alt er kryptert, men jeg vil ikke rote med kryptografi. Deretter må du se inne i selve applikasjonen.

Dekompilert . APK, la oss begynne å lete. Hva trenger enhver API? Ikke sant, endepunkt, stedet hvor alle forespørsler går. Dette er sannsynligvis http(er), la oss prøve å finne "https://":

I fil AuthLinkManager.smali Vi finner

.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 for den virtuelle Android-maskinen (Dalvik VM), ikke veldig forståelig for mennesker, men likevel ganske informativ. Disse tre konstantene, dømme etter innhold og navn, samt GitHub-depotet, brukes til å be om et tilgangstoken ved å bruke metoden GET.

La oss se videre. Filen som kommer opp neste i søket er NetworkModule.smali:

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

Og her er stedet å gå med dine forespørsler!

For at den selvskrevne klienten skal fungere ordentlig, er det bare én ting igjen å finne ut - client_id, som mest sannsynlig er en unik identifikator for applikasjonen.

Søking etter denne teksten i kildekoden førte imidlertid ikke til å finne relevant informasjon...

Men plutselig fanget øynene mine noen interessante linjer i en av filene:

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 loggoppføring. Men opptak hva?

Del tre. Dette er loggene!

Vi bruker adb logcat for å se applikasjonslogger.

(U)offisiell Habr-applikasjon - HabrApp 2.0: får tilgang

Ikke uventet viste loggene seg å være enda mer detaljerte enn forventet.

Her har vi ikke bare det vi trenger client_idMen pollett bruker/applikasjon, og innlogging и passord i klartekst!

Noen konspirasjonsteorierBare tilstedeværelsen av pålogging og passord i loggene skader ingenting, siden disse loggene kun kan leses med enten root-rettigheter eller en tilkobling via adb. Men på grunn av det faktum at det blant folk som leser Habr er Android-utviklere som kan ha feilsøking aktivert, blir dette et problem.

I dette tilfellet kan "gratis lading" på flyplassen føre til kontotyveri, men hvem trenger det?
Fra disse loggene kan vi trekke ut:

  • client_id и apikeynødvendig for å få tilgang api;
  • Brukerautorisasjons-URL (merkelig, men det er ingenting i depotet om denne metoden, kanskje den ikke er oppgitt?)

Slik ble det. Basert på denne bittelille forskningen, er arbeidet allerede i gang med et lite prosjekt – vår egen implementering av en mobilapplikasjon. Jeg ber de som vil hjelpe til å skrive en melding, og alle andre - om å stemme (fordi jeg vil forstå om noen trenger dette).

Takk for din oppmerksomhet!

Kun registrerte brukere kan delta i undersøkelsen. Logg inn, vær så snill.

Bruker du Habr-mobilapplikasjonen?

  • Ja, jeg bruker den, jeg er fornøyd med den

  • Ja, jeg bruker det, applikasjonen forårsaker ulemper

  • Nei, jeg bruker nettversjonen på telefonen min

  • Nei, jeg bruker Habr fra datamaskinen min

357 brukere stemte. 30 brukere avsto.

Kilde: www.habr.com

Legg til en kommentar