(Epä)virallinen Habr-sovellus - HabrApp 2.0: pääsyn saaminen

Eräänä laiska ja jo aika tylsä ​​ilta, minä selailen virallinen Habr-sovellus, jälleen kerran taivutin sormiani, yksi jokaiselle toimimattomalle ominaisuudelle. Täällä esimerkiksi ei voi kommentoida, täällä evätään äänioikeus ja ylipäänsä miksi kaavat eivät näy ruudulla?

(Epä)virallinen Habr-sovellus - HabrApp 2.0: pääsyn saaminen
Päätettiin: tarvitsimme jotain mukavaa, miellyttävää, jotain omaa. Entä oma hakemuksesi Habrille?
Annan sinulle muutaman kuvakaappauksen tilanteen ymmärtämiseksi.

(Epä)virallinen Habr-sovellus - HabrApp 2.0: pääsyn saaminenJotenkin se näyttää tältä это - of. habr.com-sovellus

Luettelo "haitoista"

  • Et voi arvioida julkaisua, jonka luokitus on eri kuin 0
  • Aina ei ole mahdollista kirjoittaa kommentteja
  • Äänestykset eivät toimi
  • Kaavat eivät näy tummassa teemassa (musta mustalla)
  • Kaikki kirjanmerkit eivät ole käytettävissä

Kyllä, sovellusta ei ole päivitetty viime vuoden elokuun jälkeen, mutta se on silti huono. Yleensä se on korjattava.

Osa yksi. Etsitään pääsyä.

Nopea Google-kysely "habrahabr API" se on kuulemma jo aika vanhentunut arkisto Githubissa, ei päivitetty sen jälkeen Marraskuu 21 2016, ja tämä hetkeksi, kaksi ja puoli vuotta.

Ohita se tosiasia, että tämä on PHP, vieritä alas ja lue:

Sovellustunnuksen saaminen

Hyödyntää Tämä muoto Habrahabrissa sinun on kuvattava lyhyesti uuden sovelluksen ydin ja tarkoitus, johon se tarvitsee API:n.

Ei ole epäilystäkään, jos tarvitset pääsyn, tarvitset sitä. Kirjoitamme kirjeen (lyhennettynä):

kirjain

Habrille halutaan tehdä hakemus PWA:n perusteella. Tähän on useita syitä. 

Ensimmäinen ja ilmeisin: Android-sovellus ei täytä henkilökohtaisia ​​vaatimuksiani.

Toiseksi: ei ole tarpeeksi alkuperäisiä ilmoituksia kaikenlaisista asioista, jotka yleensä tulevat sähköpostitse (esimerkiksi kommentit).

Kolmanneksi: henkilökohtaiset tiivistelmät (perspektiivinä) minua kiinnostavista ihmisistä/keskipisteistä kiinnostuksen kohteeni huomioon ottaen.

Vastaus ei tietenkään ollut kovin miellyttävä, mutta ainakin rehellinen:

Valitettavasti pääsy sovellusliittymäämme ei ole tällä hetkellä saatavilla. Aiomme jatkaa käyttöoikeuksien tarjoamista API:n viimeistelyn jälkeen, mutta meillä ei ole vielä tarkkoja päivämääriä, koska Ratkaisemme parhaillaan muita tärkeitä tehtäviä.

"Okei ei hätää! Keksimme jotain!" - Sanoin itselleni ja aloin etsiä.

Osa kaksi. Syviä kaivauksia.

Logiikkaan perustuen, jos sovellus on käynnissä, sillä on pääsy API:iin ja se on kiinteästi kytketty sovellukseen. Analysoidaan.

Koska käsittelemme liikennettä, Wireshark on valintamme. Ei ilman kipuja, kun puhelin on kytketty Internetiin pöytätietokoneen kautta, avaamme sovelluksen ja katsomme pyyntöjä:

(Epä)virallinen Habr-sovellus - HabrApp 2.0: pääsyn saaminen
Selvää, että mikään ei ole selvää

Kyllä, kaikki on salattu, mutta en halua sotkea kryptografiaa. Sitten sinun on katsottava itse sovelluksen sisälle.

Purettu . Apk, aloitetaan etsiminen. Mitä mikään API tarvitsee? oikein, päätepiste, paikka, johon kaikki pyynnöt menevät. Tämä on luultavasti http, yritetään löytää "https://":

Tiedostossa AuthLinkManager.smali löydämme

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

Tämä on koodi Android-virtuaalikoneelle (Dalvik VM), ei kovin ymmärrettävää ihmisille, mutta silti melko informatiivinen. Näitä kolmea vakiota, niiden sisällön ja nimen sekä GitHub-tietovaraston perusteella päätellen, käytetään käyttöoikeustunnisteen pyytämiseen menetelmällä GET.

Katsotaanpa pidemmälle. Seuraavaksi haussa esiin tuleva tiedosto on NetworkModule.smali:

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

Ja tässä on paikka, johon voit hakea pyyntöjäsi!

Jotta itse kirjoittama asiakas toimisi kunnolla, on vain yksi asia selvitettävänä - client_id, joka on todennäköisesti sovelluksen yksilöllinen tunniste.

Tämän tekstin etsiminen lähdekoodista ei kuitenkaan johtanut asiaankuuluvan tiedon löytämiseen...

Mutta yhtäkkiä yhdessä tiedostossa silmäni osuivat mielenkiintoisiin riveihin:

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

Tämä, kuten ymmärrät, on lokimerkintä. Mutta mitä äänittää?

Kolmas osa. Nämä ovat lokit!

käyttö adb logcat tarkastellaksesi sovelluslokeja.

(Epä)virallinen Habr-sovellus - HabrApp 2.0: pääsyn saaminen

Yllättäen lokit osoittautuivat jopa odotettua yksityiskohtaisemmiksi.

Täällä meillä ei ole vain sitä, mitä tarvitsemme client_idMutta merkki käyttäjä/sovellus ja kirjaudu и salasana selkeällä tekstillä!

Joitakin salaliittoteorioitaPelkästään kirjautumistunnuksen ja salasanan läsnäolo lokeissa ei vahingoita mitään, koska näitä lokeja voi lukea vain joko pääkäyttäjän oikeuksilla tai yhteyden kautta adb. Mutta koska Habria lukevien ihmisten joukossa on Android-kehittäjiä, joilla voi olla virheenkorjaus käytössä, tästä tulee ongelma.

Tässä tapauksessa "ilmainen veloitus" lentokentällä voi johtaa tilivarkauksiin, mutta kuka sitä tarvitsee?
Näistä lokeista voimme poimia:

  • client_id и apikeypääsy edellyttää api;
  • Käyttäjän valtuutuksen URL-osoite (outoa, mutta arkistossa ei ole mitään tästä menetelmästä, ehkä sitä ei ole annettu?)

Näin siinä kävi. Tämän pienen tutkimuksen pohjalta työstetään jo pientä projektia - omaa mobiilisovelluksen toteutusta. Pyydän niitä, jotka haluavat auttaa kirjoittamaan viestin, ja kaikkia muita - äänestämään (koska haluan ymmärtää, tarvitseeko joku tätä).

Спасибо за внимание!

Vain rekisteröityneet käyttäjät voivat osallistua kyselyyn. Kirjaudu sisään, ole kiltti.

Käytätkö Habr-mobiilisovellusta?

  • Kyllä, käytän sitä, olen tyytyväinen

  • Kyllä, käytän sitä, sovellus aiheuttaa haittaa

  • Ei, käytän puhelimessani verkkoversiota

  • Ei, käytän Habria tietokoneeltani

357 käyttäjää äänesti. 30 käyttäjää pidättyi äänestämästä.

Lähde: will.com

Lisää kommentti