(Ne)oficiālā Habr lietojumprogramma — HabrApp 2.0: piekļuves iegūšana

Vienā novājinātā un jau diezgan garlaicīgā vakarā es, pārlapojot ierēdnis Habr aplikācija, kārtējo reizi saliecu pirkstus, katram nestrādājošajam pa vienam. Te, piemēram, nevar komentēt, te tev ir liegtas balsstiesības, un vispār, kāpēc uz ekrāna nav redzamas formulas?

(Ne)oficiālā Habr lietojumprogramma — HabrApp 2.0: piekļuves iegūšana
Tika nolemts: vajag kaut ko ērtu, patīkamu, kaut ko savu. Kā ir ar jūsu paša pieteikumu Habram?
Ļaujiet man sniegt jums dažus ekrānuzņēmumus, lai izprastu situāciju.

(Ne)oficiālā Habr lietojumprogramma — HabrApp 2.0: piekļuves iegūšanaIzskatās apmēram šādi šis - no. habr.com lietojumprogramma

"Neērtību" saraksts

  • Jūs nevarat novērtēt publikāciju, kuras vērtējums atšķiras no 0
  • Ne vienmēr ir iespējams uzrakstīt komentāru
  • Aptaujas nedarbojas
  • Formulas nav redzamas tumšajā motīvā (melns uz melna)
  • Ne visas grāmatzīmes ir pieejamas

Jā, lietotne nav atjaunināta kopš pagājušā gada augusta, taču tā joprojām ir slikta. Kopumā tas ir jālabo.

Pirmā daļa. Meklē piekļuvi.

Ātrs Google vaicājums "habrahabr API" tas saka, ka tas jau ir diezgan novecojis krātuve vietnē Github, kopš tā laika nav atjaunināts Novembris 21 2016, un tas uz brīdi, divarpus gadi.

Ignorējot faktu, ka tas ir PHP, ritiniet uz leju un izlasiet:

Lietojumprogrammas ID iegūšana

Izmantojot izdevību šī forma vietnē Habrahabr jums īsi jāapraksta jaunās lietojumprogrammas būtība un mērķis, kādam tai ir nepieciešama API.

Nav šaubu, ja jums ir nepieciešams piekļūt, tad jums tas ir vajadzīgs. Mēs rakstām vēstuli (saīsināti):

Vēstule

Ir vēlme iesniegt pieteikumu Habr, pamatojoties uz PWA. Tam ir vairāki iemesli. 

Pirmais un acīmredzamākais: Android lietojumprogramma neatbilst manām personīgajām prasībām.

Otrkārt: nav pietiekami daudz vietējo paziņojumu par visu veidu lietām, kas parasti tiek saņemtas pa e-pastu (piemēram, komentāri).

Treškārt: personīgie īssavilkumi (kā perspektīva) par cilvēkiem/centriem, kas mani interesē, ņemot vērā manas intereses.

Atbilde, protams, nebija īpaši patīkama, bet vismaz godīga:

Diemžēl piekļuve mūsu API pašlaik nav pieejama. Mēs plānojam atsākt piekļuves nodrošināšanu pēc API pabeigšanas, taču mums vēl nav precīzu datumu, jo Šobrīd esam aizņemti ar citu prioritāro uzdevumu risināšanu.

"Labi, nekādu problēmu! Mēs kaut ko izdomāsim!" - es sev teicu un sāku meklēt.

Otrā daļa. Dziļi izrakumi.

Pamatojoties uz loģiku, ja lietojumprogramma darbojas, tai ir piekļuve API un tā ir pievienota lietojumprogrammai. Analizēsim.

Tā kā mums ir darīšana ar satiksmi, Wireshark ir mūsu izvēle. Ne bez sāpēm, pieslēdzot tālruni internetam caur galddatoru, atveram aplikāciju un apskatām pieprasījumus:

(Ne)oficiālā Habr lietojumprogramma — HabrApp 2.0: piekļuves iegūšana
Ir skaidrs, ka nekas nav skaidrs

Jā, viss ir šifrēts, bet es nevēlos jaukties ar kriptogrāfiju. Pēc tam jums jāieskatās pašā lietojumprogrammā.

Dekompilēts . APK, sāksim meklēt. Kas ir nepieciešams jebkurai API? Pa labi, galapunkts, vieta, kur tiek nosūtīti visi pieprasījumi. Tas, iespējams, ir http, mēģināsim atrast “https://”:

Failā AuthLinkManager.smali mēs atradām

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

Šis ir Android virtuālās mašīnas kods (Dalvik VM), cilvēkiem ne pārāk saprotams, bet tomēr diezgan informatīvs. Šīs trīs konstantes, spriežot pēc to satura un nosaukuma, kā arī GitHub repozitorija, tiek izmantotas, lai pieprasītu piekļuves pilnvaru, izmantojot metodi GET.

Paskatīsimies tālāk. Fails, kas parādās nākamais meklēšanā, ir NetworkModule.smali:

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

Un šeit ir vieta, kur doties ar saviem lūgumiem!

Lai pašrakstītais klients darbotos pareizi, atliek izdomāt tikai vienu lietu - client_id, kas, visticamāk, ir unikāls lietojumprogrammas identifikators.

Taču, meklējot šo tekstu avota kodā, atbilstoša informācija netika atrasta...

Bet pēkšņi vienā no failiem manas acis uztvēra dažas interesantas rindas:

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

Tas, kā jūs saprotat, ir žurnāla ieraksts. Bet ko ierakstīt?

Trešā daļa. Tie ir baļķi!

Mēs izmantojam adb logcat lai skatītu lietojumprogrammu žurnālus.

(Ne)oficiālā Habr lietojumprogramma — HabrApp 2.0: piekļuves iegūšana

Negaidīti žurnāli izrādījās vēl detalizētāki, nekā gaidīts.

Šeit mums ir ne tikai tas, kas mums vajadzīgs client_idBet žetons lietotājs/lietojumprogramma un login и parole vienkāršā tekstā!

Dažas sazvērestības teorijasPieteikšanās vārda un paroles klātbūtne žurnālos neko nekaitē, jo šos žurnālus var lasīt tikai ar root tiesībām vai savienojumu, izmantojot adb. Taču, ņemot vērā to, ka starp cilvēkiem, kas lasa Habr, ir Android izstrādātāji, kuriem, iespējams, ir iespējota atkļūdošana, tā kļūst par problēmu.

Šādā gadījumā “bezmaksas iekasēšana” lidostā var beigties ar konta zādzību, bet kam tas vajadzīgs?
No šiem žurnāliem mēs varam iegūt:

  • client_id и apikeynepieciešams, lai piekļūtu api;
  • Lietotāja autorizācijas URL (dīvaini, bet repozitorijā nav nekā par šo metodi, varbūt tas nav norādīts?)

Tā tas notika. Pamatojoties uz šo mazo pētījumu, jau notiek darbs pie neliela projekta - mūsu pašu mobilās lietojumprogrammas ieviešanas. Aicinu tos, kuri vēlas palīdzēt, rakstīt ziņu, bet visus pārējos - balsot (jo gribu saprast vai kādam tas ir vajadzīgs).

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

Aptaujā var piedalīties tikai reģistrēti lietotāji. Ielogoties, lūdzu.

Vai izmantojat mobilo aplikāciju Habr?

  • Jā, es to izmantoju, esmu apmierināts ar to

  • Jā, izmantoju, aplikācija sagādā neērtības

  • Nē, es savā tālrunī izmantoju tīmekļa versiju

  • Nē, es izmantoju Habr no sava datora

Nobalsoja 357 lietotāji. 30 lietotāji atturējās.

Avots: www.habr.com

Pievieno komentāru