(On)officiële Habr-applicatie - HabrApp 2.0: toegang verkrijgen

Op een lome en toch al behoorlijk saaie avond bladerde ik door оициальное Habr-applicatie, opnieuw boog ik mijn vingers, één voor elke niet-werkende functie. Hier kun je bijvoorbeeld geen commentaar geven, hier wordt je het stemrecht ontzegd, en waarom zijn de formules in het algemeen niet zichtbaar op het scherm?

(On)officiële Habr-applicatie - HabrApp 2.0: toegang verkrijgen
Er werd besloten: we hadden iets comfortabels, aangenaams, iets van onszelf nodig. Hoe zit het met uw eigen aanvraag voor Habr?
Ik zal u een paar schermafbeeldingen geven om de situatie te begrijpen.

(On)officiële Habr-applicatie - HabrApp 2.0: toegang verkrijgenOp de een of andere manier ziet het er zo uit het - van. habr.com-applicatie

Lijst met "ongemakken"

  • U kunt een publicatie waarvan de beoordeling afwijkt van 0, niet beoordelen
  • Het is niet altijd mogelijk om een ​​reactie te schrijven
  • Peilingen werken niet
  • Formules zijn niet zichtbaar in donker thema (zwart op zwart)
  • Niet alle bladwijzers zijn beschikbaar

Ja, de app is sinds augustus vorig jaar niet meer bijgewerkt, maar hij is nog steeds slecht. Over het algemeen moet het worden opgelost.

Deel een. Op zoek naar toegang.

Snelle Google-query "habrahabr-API" er staat dat het al behoorlijk verouderd is opslagplaats op Github, sindsdien niet meer bijgewerkt November 21 2016, en dit, voor een moment, twee en een half jaar.

Negeer het feit dat dit PHP is, scroll naar beneden en lees:

De applicatie-ID ophalen

Profiteren deze vorm op Habrahabr moet je kort de essentie van de nieuwe applicatie beschrijven en het doel waarvoor deze een API nodig heeft.

Er bestaat geen twijfel over: als je toegang nodig hebt, dan heb je die nodig. We schrijven een brief (afgekort):

Письмо

Er bestaat een wens om een ​​aanvraag te doen voor Habr op basis van PWA. Hiervoor zijn verschillende redenen. 

De eerste en meest voor de hand liggende: de Android-applicatie voldoet niet aan mijn persoonlijke eisen.

Ten tweede: er zijn niet genoeg native notificaties over allerlei zaken die doorgaans per e-mail binnenkomen (reacties bijvoorbeeld).

Ten derde: persoonlijke samenvattingen (als perspectief) van mensen/hubs die mij interesseren, rekening houdend met mijn interesses.

Het antwoord was natuurlijk niet erg prettig, maar in ieder geval eerlijk:

Helaas is toegang tot onze API momenteel niet beschikbaar. We zijn van plan het verlenen van toegang te hervatten nadat we klaar zijn met het finaliseren van de API, maar we hebben nog geen exacte data, omdat We zijn momenteel druk bezig met het oplossen van andere prioritaire taken.

"Oke geen probleem! Wij verzinnen wel iets!" - Ik zei tegen mezelf en begon te zoeken.

Deel twee. Diepe opgravingen.

Op basis van logica: als de applicatie actief is, heeft deze toegang tot de API en is deze vast in de applicatie geïntegreerd. Laten we analyseren.

Omdat we met verkeer te maken hebben, is Wireshark onze keuze. Niet zonder enige moeite, nadat we de telefoon via een desktopcomputer met internet hebben verbonden, openen we de applicatie en bekijken we de verzoeken:

(On)officiële Habr-applicatie - HabrApp 2.0: toegang verkrijgen
Het is duidelijk dat niets duidelijk is

Ja, alles is gecodeerd, maar ik wil niet knoeien met cryptografie. Dan moet je in de applicatie zelf kijken.

Gedecompileerd . Apk, laten we beginnen met zoeken. Wat heeft een API nodig? Rechts, eindpunt, de plaats waar alle verzoeken naartoe gaan. Dit is waarschijnlijk http(s), laten we proberen “https://” te vinden:

In bestand AuthLinkManager.smali vind

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

Dit is de code voor de virtuele Android-machine (Dalvik VM), niet erg begrijpelijk voor mensen, maar toch behoorlijk informatief. Deze drie constanten, te oordelen naar hun inhoud en naam, evenals de GitHub-repository, worden gebruikt om een ​​toegangstoken aan te vragen met behulp van de methode GET.

Laten we verder kijken. Het bestand dat als volgende verschijnt in de zoekopdracht is NetworkModule.smali:

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

En hier kunt u terecht met uw verzoeken!

Om de zelfgeschreven client goed te laten werken, hoeft u nog maar één ding uit te zoeken: client_id, wat hoogstwaarschijnlijk een unieke identificatie voor de toepassing is.

Het zoeken naar deze tekst in de broncode leidde echter niet tot het vinden van relevante informatie...

Maar plotseling vielen mijn ogen in een van de bestanden een aantal interessante regels op:

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

Dit is, zoals u begrijpt, een logboekinvoer. Maar wat opnemen?

Deel drie. Dit zijn de logboeken!

We gebruiken adb logcat om toepassingslogboeken te bekijken.

(On)officiële Habr-applicatie - HabrApp 2.0: toegang verkrijgen

Onverwachts bleken de logs nog gedetailleerder dan verwacht.

Hier hebben we niet alleen wat we nodig hebben client_idMaar токен gebruiker/applicatie, en Log in и wachtwoord in platte tekst!

Enkele complottheorieënDe loutere aanwezigheid van een login en wachtwoord in de logs schaadt niets, aangezien deze logs alleen kunnen worden gelezen met rootrechten of een verbinding via adb. Maar vanwege het feit dat er onder de mensen die Habr lezen Android-ontwikkelaars zijn die debuggen mogelijk hebben ingeschakeld, wordt dit een probleem.

In dit geval kan ‘gratis opladen’ op de luchthaven resulteren in accountdiefstal, maar wie heeft dit nodig?
Uit deze logboeken kunnen we het volgende halen:

  • client_id и apikeyvereist om toegang te krijgen api;
  • URL voor gebruikersautorisatie (vreemd, maar er staat niets in de repository over deze methode, misschien wordt deze niet verstrekt?)

Zo gebeurde het. Op basis van dit kleine onderzoek wordt er al gewerkt aan een klein project: onze eigen implementatie van een mobiele applicatie. Ik vraag degenen die willen helpen een bericht te schrijven, en alle anderen - om te stemmen (omdat ik wil begrijpen of iemand dit nodig heeft).

Dank je wel!

Alleen geregistreerde gebruikers kunnen deelnemen aan het onderzoek. Inloggen, Alsjeblieft.

Maakt u gebruik van de Habr mobiele applicatie?

  • Ja, ik gebruik het, ik ben er blij mee

  • Ja, ik gebruik het, de applicatie veroorzaakt ongemak

  • Nee, ik gebruik de webversie op mijn telefoon

  • Nee, ik gebruik Habr vanaf mijn computer

357 gebruikers hebben gestemd. 30 gebruikers onthielden zich van stemming.

Bron: www.habr.com

Voeg een reactie