(Ne)zvanična Habr aplikacija - HabrApp 2.0: dobijanje pristupa

Jedne klonule i već prilično dosadne večeri, ja listam službeni Habr aplikacija, opet sam savio prste, po jedan za svaku neradnu funkciju. Ovdje, na primjer, ne možete komentarisati, ovdje vam je uskraćeno pravo glasa, i općenito, zašto se formule ne vide na ekranu?

(Ne)zvanična Habr aplikacija - HabrApp 2.0: dobijanje pristupa
Odlučeno je: treba nam nešto udobno, ugodno, nešto svoje. Šta je s vašom vlastitom aplikacijom za Habr?
Dozvolite mi da vam dam nekoliko snimaka ekrana da razumete situaciju.

(Ne)zvanična Habr aplikacija - HabrApp 2.0: dobijanje pristupaIzgleda otprilike ovako to - od. aplikacija habr.com

Spisak "nepogodnosti"

  • Ne možete ocjenjivati ​​publikaciju čija se ocjena razlikuje od 0
  • Nije uvijek moguće napisati komentar
  • Ankete ne rade
  • Formule nisu vidljive u tamnoj temi (crno na crnom)
  • Nisu dostupne sve oznake

Da, aplikacija nije ažurirana od avgusta prošle godine, ali je i dalje loša. Generalno, to treba popraviti.

Prvi dio. Tražim pristup.

Brzi Google upit "habrahabr API" kaže da je već prilično zastarjela spremište na Githubu, od tada nije ažurirano Novembar 21 2016, i ovo, na trenutak, dvije i po godine.

Zanemarujući činjenicu da je ovo PHP, skrolujte dole i pročitajte:

Dobivanje ID-a aplikacije

Iskorištavanje ovaj obrazac na Habrahabru morate ukratko opisati suštinu nove aplikacije i svrhu za koju joj je potreban API.

Nema sumnje, ako trebate dobiti pristup, onda vam je potreban. Pišemo pismo (skraćeno):

Pisanje

Postoji želja da se napravi aplikacija za Habr bazirana na PWA. Postoji nekoliko razloga za to. 

Prvo i najočitije: Android aplikacija ne ispunjava moje lične zahtjeve.

Drugo: nema dovoljno izvornih obavijesti o svim vrstama stvari koje obično dolaze putem e-pošte (komentari, na primjer).

Treće: lični pregledi (kao perspektiva) o ljudima/centrima koji me zanimaju, uzimajući u obzir moje interese.

Odgovor, naravno, nije bio baš prijatan, ali barem iskren:

Nažalost, pristup našem API-ju trenutno nije dostupan. Planiramo nastaviti pružanje pristupa nakon što završimo finalizaciju API-ja, ali još uvijek nemamo tačne datume, jer Trenutno smo zauzeti rješavanjem ostalih prioritetnih zadataka.

"Uredu, nema problema! Smislićemo nešto!" - rekao sam sebi i počeo da tražim.

Drugi dio. Duboka iskopavanja.

Na osnovu logike, ako je aplikacija pokrenuta, tada ima pristup API-ju i hardverski je povezan sa aplikacijom. Hajde da analiziramo.

Budući da se bavimo saobraćajem, Wireshark je naš izbor. Ne bez muke, nakon povezivanja telefona na Internet preko desktop računara, otvaramo aplikaciju i gledamo zahtjeve:

(Ne)zvanična Habr aplikacija - HabrApp 2.0: dobijanje pristupa
Jasno je da ništa nije jasno

Da, sve je šifrovano, ali ne želim da se petljam sa kriptografijom. Zatim morate pogledati unutar same aplikacije.

Dekompilirano .apk, hajde da tražimo. Šta je potrebno bilo kom API-ju? u redu, krajnja tačka, mjesto gdje idu svi zahtjevi. Ovo je vjerovatno http(s), hajde da pokušamo pronaći "https://":

U fajlu AuthLinkManager.smali mi nalazimo

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

Ovo je kod za Android virtuelnu mašinu (Dalvik VM), nije baš razumljivo za ljude, ali ipak prilično informativno. Ove tri konstante, sudeći po njihovom sadržaju i nazivu, kao i GitHub spremište, koriste se za traženje tokena za pristup pomoću metode GET.

Pogledajmo dalje. Fajl koji se pojavljuje sljedeći u pretrazi je NetworkModule.smali:

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

A ovdje je mjesto na koje možete ići sa svojim zahtjevima!

Da bi samopisni klijent ispravno funkcionisao, ostaje samo jedna stvar koju treba shvatiti - client_id, što je najvjerovatnije jedinstveni identifikator za aplikaciju.

Međutim, traženje ovog teksta u izvornom kodu nije dovelo do pronalaženja relevantnih informacija...

Ali odjednom mi je u jednom od fajlova oko zapalo nekoliko zanimljivih redaka:

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

Ovo je, kao što možete razumjeti, unos u dnevnik. Ali snimanje šta?

Treći dio. Ovo su dnevnici!

Koristimo adb logcat da vidite dnevnike aplikacija.

(Ne)zvanična Habr aplikacija - HabrApp 2.0: dobijanje pristupa

Neočekivano, ispostavilo se da su dnevnici još detaljniji nego što se očekivalo.

Ovdje imamo ne samo ono što nam treba client_idAli token korisnik/aplikacija, i login и lozinka u čistom tekstu!

Neke teorije zavereSamo prisustvo login-a i lozinke u log-ovima ne šteti ničemu, jer se ovi zapisi mogu čitati samo sa root pravima ili vezom preko adb. Ali zbog činjenice da među ljudima koji čitaju Habr postoje Android programeri koji možda imaju omogućeno otklanjanje grešaka, ovo postaje problem.

U ovom slučaju, „besplatno punjenje“ na aerodromu može dovesti do krađe računa, ali kome je to potrebno?
Iz ovih dnevnika možemo izdvojiti:

  • client_id и apikeypotrebno za pristup api;
  • URL autorizacije korisnika (čudno, ali u spremištu nema ništa o ovoj metodi, možda nije navedeno?)

Tako se to dogodilo. Na osnovu ovog malog istraživanja, već se radi na malom projektu - vlastitoj implementaciji mobilne aplikacije. Molim one koji žele da pomognu da napišu poruku, a sve ostale - da glasaju (jer želim da shvatim da li je ovo nekome potrebno).

Spasibo za vnimanie!

Samo registrovani korisnici mogu učestvovati u anketi. Prijavite semolim.

Koristite li mobilnu aplikaciju Habr?

  • Da, koristim ga, zadovoljan sam

  • Da, koristim ga, aplikacija izaziva neugodnosti

  • Ne, koristim web verziju na svom telefonu

  • Ne, koristim Habr sa svog kompjutera

Glasalo je 357 korisnika. Uzdržano je bilo 30 korisnika.

izvor: www.habr.com

Dodajte komentar