(Ne)oficiální aplikace Habr - HabrApp 2.0: získání přístupu

Jednoho povadlého a už docela nudného večera já listuji oficiální Aplikace Habr, ještě jednou jsem ohnul prsty, jeden pro každou nefungující funkci. Zde například nemůžete komentovat, zde je vám odepřeno právo volit a obecně, proč nejsou vzorce vidět na obrazovce?

(Ne)oficiální aplikace Habr - HabrApp 2.0: získání přístupu
Bylo rozhodnuto: potřebovali jsme něco pohodlného, ​​příjemného, ​​něco vlastního. Co vaše vlastní aplikace pro Habr?
Dovolte mi, abych vám dal několik snímků obrazovky, abyste pochopili situaci.

(Ne)oficiální aplikace Habr - HabrApp 2.0: získání přístupuNějak to tak vypadá tento - z aplikace habr.com

Seznam "nepříjemností"

  • Nemůžete hodnotit publikaci, jejíž hodnocení se liší od 0
  • Ne vždy je možné napsat komentář
  • Ankety nefungují
  • Vzorce nejsou viditelné v tmavém motivu (černá na černé)
  • Ne všechny záložky jsou dostupné

Ano, aplikace nebyla aktualizována od srpna minulého roku, ale stále je špatná. Obecně je potřeba to opravit.

První část. Hledá se přístup.

Rychlý dotaz Google "habrahabr API" říká, že už je to docela zastaralé úložiště na Github, od té doby neaktualizovaný 21 2016 ноябряa tohle na chvíli, dva a půl roku.

Ignorujte skutečnost, že se jedná o PHP, přejděte dolů a přečtěte si:

Získání ID aplikace

Využití tato forma na Habrahabru je potřeba stručně popsat podstatu nové aplikace a účel, ke kterému potřebuje API.

Není pochyb o tom, že pokud potřebujete získat přístup, pak jej potřebujete. Píšeme dopis (zkráceně):

Dopis

Existuje přání vytvořit aplikaci pro Habr na základě PWA. Důvodů je několik. 

První a nejzřetelnější: aplikace pro Android nesplňuje mé osobní požadavky.

Za druhé: není dostatek nativních upozornění na všemožné věci, které obvykle přicházejí e-mailem (například komentáře).

Za třetí: osobní přehledy (jako perspektiva) o lidech/centrech, které mě zajímají, s přihlédnutím k mým zájmům.

Odpověď samozřejmě nebyla moc příjemná, ale alespoň upřímná:

Bohužel přístup k našemu API není v současné době k dispozici. Plánujeme obnovit poskytování přístupu poté, co dokončíme finalizaci API, ale zatím nemáme žádná přesná data, protože V současné době řešíme další prioritní úkoly.

"Dobře žádný problém! Něco vymyslíme!" - řekl jsem si a začal hledat.

Část dvě. Hluboké vykopávky.

Na základě logiky, pokud je aplikace spuštěna, má přístup k API a je pevně připojena k aplikaci. Pojďme analyzovat.

Protože se zabýváme dopravou, Wireshark je naše volba. Po připojení telefonu k internetu přes stolní počítač bez problémů otevřeme aplikaci a podíváme se na požadavky:

(Ne)oficiální aplikace Habr - HabrApp 2.0: získání přístupu
Je jasné, že nic není jasné

Ano, vše je zašifrováno, ale nechci si zahrávat s kryptografií. Pak se musíte podívat dovnitř samotné aplikace.

Dekompilováno . Apk, začněme hledat. Co potřebuje nějaké API? Že jo, Koncový bod, místo, kam směřují všechny požadavky. Toto je pravděpodobně http(s), zkusme najít „https://“:

V souboru AuthLinkManager.smali nalézt

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

Toto je kód pro virtuální stroj Android (Dalvik VM), pro člověka nepříliš srozumitelné, ale přesto docela informativní. Tyto tři konstanty, soudě podle jejich obsahu a názvu, stejně jako úložiště GitHub, se používají k vyžádání přístupového tokenu pomocí metody GET.

Podívejme se dále. Soubor, který se ve vyhledávání objeví jako další, je NetworkModule.smali:

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

A zde je místo, kam jít se svými požadavky!

Aby klient, který si sám napsal, správně fungoval, zbývá zjistit pouze jednu věc - client_id, což je s největší pravděpodobností jedinečný identifikátor aplikace.

Hledání tohoto textu ve zdrojovém kódu však nevedlo k nalezení relevantních informací...

Ale najednou v jednom ze souborů mé oči zachytily několik zajímavých řádků:

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

Toto, jak jistě chápete, je záznam protokolu. Ale nahrávat co?

Část třetí. To jsou logy!

Používáme adb logcat pro zobrazení protokolů aplikací.

(Ne)oficiální aplikace Habr - HabrApp 2.0: získání přístupu

Nečekaně se ukázalo, že protokoly jsou ještě podrobnější, než se očekávalo.

Zde máme nejen to, co potřebujeme client_idAle token uživatel/aplikace a přihlášení и heslo v prostém textu!

Nějaké konspirační teoriePouhá přítomnost přihlašovacího jména a hesla v protokolech nic neškodí, protože tyto protokoly lze číst pouze s právy root nebo s připojením přes adb. Ale vzhledem k tomu, že mezi lidmi, kteří čtou Habr, jsou vývojáři Androidu, kteří mohou mít povoleno ladění, to se stává problémem.

V tomto případě může „nabíjení zdarma“ na letišti vést ke krádeži účtu, ale kdo to potřebuje?
Z těchto protokolů můžeme extrahovat:

  • client_id и apikeynutné pro přístup api;
  • URL autorizace uživatele (zvláštní, ale v úložišti není nic o této metodě, možná není poskytnuta?)

Tak se to stalo. Na základě tohoto drobného výzkumu již probíhají práce na malém projektu – vlastní implementaci mobilní aplikace. Prosím ty, kteří chtějí pomoci, aby napsali zprávu, a všechny ostatní - aby hlasovali (protože chci pochopit, zda to někdo potřebuje).

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

Průzkumu se mohou zúčastnit pouze registrovaní uživatelé. Přihlásit se, prosím.

Používáte mobilní aplikaci Habr?

  • Ano, používám, jsem s ním spokojený

  • Ano, používám, aplikace způsobuje nepříjemnosti

  • Ne, používám webovou verzi v telefonu

  • Ne, používám Habr z počítače

Hlasovalo 357 uživatelů. 30 uživatelů se zdrželo hlasování.

Zdroj: www.habr.com

Přidat komentář