(Ոչ)պաշտոնական Habr հավելված - HabrApp 2.0. մուտքի հնարավորություն

Մի տխուր և արդեն բավականին ձանձրալի երեկո, ես թերթում եմ պաշտոնական Habr հավելված, հերթական անգամ մատներս ծռեցի, յուրաքանչյուր չաշխատող հատկանիշի համար մեկ։ Այստեղ, օրինակ, չես կարող մեկնաբանել, այստեղ քեզ զրկում են ձայնի իրավունքից, իսկ ընդհանրապես ինչո՞ւ բանաձեւերը չեն երեւում էկրանին։

(Ոչ)պաշտոնական Habr հավելված - HabrApp 2.0. մուտքի հնարավորություն
Որոշվեց՝ մեզ պետք էր ինչ-որ հարմարավետ, հաճելի, մեր սեփական: Ի՞նչ կասեք Habr-ի համար ձեր սեփական դիմումի մասին:
Թույլ տվեք ձեզ մի քանի սքրինշոթ տալ՝ իրավիճակը հասկանալու համար:

(Ոչ)պաշտոնական Habr հավելված - HabrApp 2.0. մուտքի հնարավորությունԿարծես նման բան это -ից. habr.com հավելվածը

«Անհարմարությունների» ցուցակ.

  • Դուք չեք կարող գնահատել հրապարակմանը, որի վարկանիշը տարբերվում է 0-ից
  • Միշտ չէ, որ հնարավոր է մեկնաբանություն գրել
  • Հարցումները չեն աշխատում
  • Բանաձևերը տեսանելի չեն մուգ թեմաներով (սևը սևի վրա)
  • Ոչ բոլոր էջանիշներն են հասանելի

Այո, հավելվածը չի թարմացվել անցյալ տարվա օգոստոսից, բայց այն դեռ վատ է: Ընդհանուր առմամբ, այն պետք է շտկել։

Առաջին մաս. Փնտրվում է մուտքի հնարավորություն:

Արագ Google հարցում «habrahabr API» ասում է, որ դա արդեն բավականին հնացած է պահոց Github-ում, այն չի թարմացվել Նոյեմբերի 21 2016և սա մի պահ, երկուսուկես տարի.

Անտեսելով այն փաստը, որ սա PHP է, ոլորեք ներքև և կարդացեք.

Դիմումի ID-ն ստանալը

Օգտվելով այս ձևը Habrahabr-ում դուք պետք է համառոտ նկարագրեք նոր հավելվածի էությունը և նպատակը, որի համար նրան անհրաժեշտ է API:

Հարց չկա, եթե դուք պետք է մուտք գործեք, ապա դա ձեզ պետք է: Մենք գրում ենք նամակ (կրճատ).

Գրելու

Ցանկություն կա Habr-ի համար PWA-ի հիման վրա հայտ ներկայացնել։ Դրա մի քանի պատճառ կա: 

Առաջինն ու ամենաակնհայտը՝ Android հավելվածը չի համապատասխանում իմ անձնական պահանջներին։

Երկրորդ. չկան բավարար բնիկ ծանուցումներ բոլոր տեսակի բաների մասին, որոնք սովորաբար գալիս են էլեկտրոնային փոստով (օրինակ, մեկնաբանություններ):

Երրորդ. անձնական մարսումներ (որպես հեռանկար) ինձ հետաքրքրող մարդկանց/հանգույցների մասին՝ հաշվի առնելով իմ հետաքրքրությունները:

Պատասխանը, իհարկե, այնքան էլ հաճելի չէր, բայց գոնե անկեղծ.

Ցավոք, մեր API-ին հասանելիությունը ներկայումս հասանելի չէ: Մենք նախատեսում ենք վերսկսել մուտքի տրամադրումը API-ի վերջնական մշակումն ավարտելուց հետո, սակայն դեռ հստակ ժամկետներ չունենք, քանի որ Ներկայումս մենք զբաղված ենք այլ առաջնահերթ խնդիրների լուծումով։

"Լավ, խնդիր չկա! Մենք ինչ-որ բան կհասկանանք»: - ասացի ինքս ինձ ու սկսեցի նայել։

Մաս երկրորդ. Խորը պեղումներ.

Տրամաբանությունից ելնելով, եթե հավելվածն աշխատում է, ապա այն ունի մուտք դեպի API, և այն միացված է հավելվածին: Եկեք վերլուծենք.

Քանի որ մենք գործ ունենք տրաֆիկի հետ, Wireshark-ը մեր ընտրությունն է: Ոչ առանց որոշ ցավերի, հեռախոսը միացնելով ինտերնետին սեղանադիր համակարգչի միջոցով, մենք բացում ենք հավելվածը և նայում հարցումներին.

(Ոչ)պաշտոնական Habr հավելված - HabrApp 2.0. մուտքի հնարավորություն
Պարզ է, որ ոչինչ պարզ չէ

Այո, ամեն ինչ կոդավորված է, բայց ես չեմ ուզում խառնվել գաղտնագրության հետ: Այնուհետև դուք պետք է նայեք հենց հավելվածի ներսում:

Ապակոմպիլացված .apk, սկսենք փնտրել։ Ինչ է պետք ցանկացած API-ի: Ճիշտ, վերջնակետ, այն վայրը, որտեղ գնում են բոլոր խնդրանքները: Սա հավանաբար http(s) է, եկեք փորձենք գտնել «https://»:

Ֆայլում AuthLinkManager.smali մենք գտնում ենք

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

Սա Android վիրտուալ մեքենայի կոդը է (Դալվիկ Վ.Մ.), մարդկանց համար այնքան էլ հասկանալի չէ, բայց դեռ բավականին տեղեկատվական։ Այս երեք հաստատունները, դատելով դրանց բովանդակությունից և անվանումից, ինչպես նաև GitHub շտեմարանից, օգտագործվում են մեթոդի միջոցով մուտքի նշան պահանջելու համար: GET.

Եկեք նայենք հետագա: Որոնման մեջ հաջորդ հայտնվող ֆայլն է NetworkModule.smali:

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

Եվ ահա այն վայրը, որտեղ պետք է գնալ ձեր խնդրանքներին:

Որպեսզի ինքնագիր հաճախորդը ճիշտ աշխատի, մնում է միայն մեկ բան պարզել. client_id, որը, ամենայն հավանականությամբ, հավելվածի եզակի նույնացուցիչ է:

Սակայն սկզբնական կոդում այս տեքստի որոնումը չի հանգեցրել համապատասխան տեղեկատվություն գտնելու...

Բայց հանկարծ ֆայլերից մեկում իմ աչքերը որսացին մի քանի հետաքրքիր տողեր.

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

Սա, ինչպես հասկանում եք, գրանցամատյան է: Բայց ինչ արձանագրել.

Մաս երրորդ. Սրանք տեղեկամատյաններն են։

Մենք օգտագործում ենք adb logcat հավելվածների տեղեկամատյանները դիտելու համար:

(Ոչ)պաշտոնական Habr հավելված - HabrApp 2.0. մուտքի հնարավորություն

Անսպասելիորեն, տեղեկամատյանները նույնիսկ ավելի մանրամասն են ստացվել, քան սպասվում էր:

Այստեղ մենք ունենք ոչ միայն այն, ինչ մեզ անհրաժեշտ է client_idՍակայն նշան օգտագործող/հավելված, և մուտք и пароль պարզ տեքստով!

Որոշ դավադրության տեսություններՄատյաններում միայն մուտքի և գաղտնաբառի առկայությունը ոչինչ չի վնասում, քանի որ այս տեղեկամատյանները կարելի է կարդալ միայն արմատային իրավունքներով կամ կապի միջոցով: adb. Բայց քանի որ Habr-ը կարդացող մարդկանց մեջ կան Android ծրագրավորողներ, որոնց հնարավոր է միացված լինի վրիպազերծումը, սա խնդիր է դառնում:

Այս դեպքում օդանավակայանում «անվճար գանձումը» կարող է հանգեցնել հաշվի գողության, բայց ո՞ւմ է դա պետք:
Այս տեղեկամատյաններից մենք կարող ենք հանել.

  • client_id и apikeyմուտք գործելու համար անհրաժեշտ է API;
  • Օգտագործողի թույլտվության URL (տարօրինակ է, բայց այս մեթոդի մասին պահոցում ոչինչ չկա, միգուցե այն տրամադրված չէ):

Այդպես էլ եղավ։ Այս փոքրիկ հետազոտության հիման վրա արդեն աշխատանքներ են տարվում փոքր նախագծի վրա՝ բջջային հավելվածի մեր սեփական ներդրումը: Օգնել ցանկացողներին խնդրում եմ գրել հաղորդագրություն, իսկ մնացած բոլորին՝ քվեարկել (որովհետև ուզում եմ հասկանալ՝ սա ինչ-որ մեկին պե՞տք է):

Շնորհակալություն ձեր ուշադրության համար:

Հարցմանը կարող են մասնակցել միայն գրանցված օգտվողները։ Մուտք գործել, խնդրում եմ:

Դուք օգտվո՞ւմ եք Habr բջջային հավելվածից:

  • Այո, ես օգտագործում եմ այն, ես գոհ եմ դրանից

  • Այո, ես օգտագործում եմ այն, հավելվածը անհարմարություններ է առաջացնում

  • Ոչ, ես օգտագործում եմ վեբ տարբերակը իմ հեռախոսում

  • Ոչ, ես իմ համակարգչից օգտագործում եմ Habr-ը

Քվեարկել է 357 օգտատեր։ 30 օգտատեր ձեռնպահ է մնացել։

Source: www.habr.com

Добавить комментарий