(Nem)hivatalos Habr alkalmazás - HabrApp 2.0: hozzáférés megszerzése

Egy bágyadt és már elég unalmas este én, lapozgatva hivatalos Habr alkalmazás, még egyszer behajlítottam az ujjaimat, minden nem működő funkcióhoz egyet. Itt például nem lehet hozzászólni, itt megtagadják a szavazati jogot, és általában miért nem látszanak a képletek a képernyőn?

(Nem)hivatalos Habr alkalmazás - HabrApp 2.0: hozzáférés megszerzése
Eldőlt: kell valami kényelmes, kellemes, valami saját. Mi a helyzet a saját Habr-jelentkezéseddel?
Hadd adjak néhány képernyőképet a helyzet megértéséhez.

(Nem)hivatalos Habr alkalmazás - HabrApp 2.0: hozzáférés megszerzéseValahogy így néz ki ezt - nak,-nek. habr.com alkalmazás

A "kellemetlenségek" listája

  • Nem értékelhet olyan kiadványt, amelynek értékelése eltér 0-tól
  • Nem mindig lehet megjegyzést írni
  • A szavazások nem működnek
  • A képletek nem láthatók sötét témában (fekete a feketén)
  • Nem minden könyvjelző érhető el

Igen, tavaly augusztus óta nem frissítették az alkalmazást, de még mindig rossz. Általában javítani kell.

Első rész. Hozzáférést keres.

Gyors Google lekérdezés "habrahabr API" azt írja, hogy már eléggé elavult adattár a Githubon, azóta nem frissült November 21 2016, és ez egy pillanatra, két és fél év.

Figyelmen kívül hagyva azt a tényt, hogy ez PHP, görgessen le, és olvassa el:

Az alkalmazásazonosító beszerzése

Kihasználva ez a forma a Habrahabron röviden le kell írnia az új alkalmazás lényegét és azt, hogy milyen célból van szüksége API-ra.

Nem kérdés, ha hozzáférést kell szerezni, akkor szükség van rá. Levelet írunk (rövidítve):

levél

A PWA alapján szeretnének jelentkezni a Habr-ra. Ennek több oka is van. 

Az első és legnyilvánvalóbb: az Android alkalmazás nem felel meg a személyes követelményeimnek.

Másodszor: nincs elég natív értesítés minden olyan dologról, amely általában e-mailben érkezik (például megjegyzések).

Harmadszor: személyes emésztések (perspektívaként) az engem érdeklő emberekről/központokról, figyelembe véve az érdeklődési köreimet.

A válasz persze nem volt túl kellemes, de legalább őszinte:

Sajnos jelenleg nem érhető el API-nk. Terveink szerint az API véglegesítését követően folytatjuk a hozzáférés biztosítását, de még nincs pontos dátumunk, mert Jelenleg egyéb kiemelt feladatok megoldásával foglalkozunk.

"Jó, semmi gond! Majd kitalálunk valamit!" - mondtam magamnak és keresni kezdtem.

Második rész. Mély ásatások.

A logika alapján, ha az alkalmazás fut, akkor hozzáfér az API-hoz, és be van kötve az alkalmazásba. Elemezzük.

Mivel forgalommal foglalkozunk, a Wireshark a mi választásunk. Nem minden fájdalom nélkül, miután a telefont asztali számítógépen keresztül csatlakoztatta az internethez, megnyitjuk az alkalmazást, és megnézzük a kéréseket:

(Nem)hivatalos Habr alkalmazás - HabrApp 2.0: hozzáférés megszerzése
Tiszta, hogy semmi sem világos

Igen, minden titkosítva van, de nem akarok a titkosítással vacakolni. Ezután bele kell néznie magába az alkalmazásba.

Dekompilált . Apk, kezdjük el keresni. Mire van szüksége egy API-nak? Jobb, végpont, az a hely, ahová minden kérés érkezik. Ez valószínűleg http(k), próbáljuk meg megtalálni a „https://”-t:

Fájlban AuthLinkManager.smali megtalálja

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

Ez az Android virtuális gép kódja (Dalvik VM), nem túl érthető az emberek számára, de mégis elég informatív. Ez a három konstans, tartalmuk és nevük alapján, valamint a GitHub tárhelye alapján hozzáférési jogkivonatot kér a metódus segítségével. GET.

Nézzük tovább. A keresésben következő fájl a következő NetworkModule.smali:

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

És itt a hely a kéréseiddel!

Ahhoz, hogy a saját kezűleg írt kliens megfelelően működjön, már csak egy dolgot kell kitalálni: client_id, amely nagy valószínűséggel az alkalmazás egyedi azonosítója.

Ennek a szövegnek a forráskódban való keresése azonban nem vezetett releváns információ megtalálásához...

De az egyik aktában hirtelen megakadt a szemem néhány érdekes soron:

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

Ez, amint érti, egy naplóbejegyzés. De mit rögzíteni?

Harmadik rész. Ezek a naplók!

Használjuk adb logcat az alkalmazásnaplók megtekintéséhez.

(Nem)hivatalos Habr alkalmazás - HabrApp 2.0: hozzáférés megszerzése

A naplók váratlanul a vártnál is részletesebbek lettek.

Itt nem csak az van, amire szükségünk van client_idDe jelképes felhasználó/alkalmazás, és bejelentkezés и пароль egyszerű szöveggel!

Néhány összeesküvés-elméletA bejelentkezési név és a jelszó puszta jelenléte a naplókban nem árt semmit, mivel ezek a naplók csak root jogokkal vagy kapcsolaton keresztül olvashatók. adb. De mivel a Habr olvasói között vannak Android-fejlesztők, akiknél engedélyezve van a hibakeresés, ez problémát jelent.

Ebben az esetben a repülőtéri „ingyenes töltés” ​​számlalopást eredményezhet, de kinek van erre szüksége?
Ezekből a naplókból kivonhatjuk:

  • client_id и apikeyhozzáféréséhez szükséges api;
  • Felhasználói engedélyezési URL (furcsa, de a tárolóban nincs semmi erről a módszerről, esetleg nincs megadva?)

Így történt. Ezen apró kutatások alapján már folyik a munka egy kis projekten – egy mobilalkalmazás saját megvalósításán. Kérem a segíteni akarókat, hogy írjanak üzenetet, a többieket pedig szavazzanak (mert szeretném megérteni, hogy kell-e valakinek ez).

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

A felmérésben csak regisztrált felhasználók vehetnek részt. Bejelentkezés, kérem.

Használod a Habr mobilalkalmazást?

  • Igen, használom, elégedett vagyok vele

  • Igen, használom, az alkalmazás kellemetlenséget okoz

  • Nem, a webes verziót használom a telefonomon

  • Nem, a Habr-t használom a számítógépemről

357 felhasználó szavazott. 30 felhasználó tartózkodott.

Forrás: will.com

Hozzászólás