(Un)offizielle Habr-Anwendung – HabrApp 2.0: Zugriff erhalten

An einem trägen und schon ziemlich langweiligen Abend blätterte ich darin offiziell Habr-Anwendung, noch einmal beugte ich meine Finger, einen für jede nicht funktionierende Funktion. Hier kann man zum Beispiel nicht kommentieren, hier wird einem das Stimmrecht verweigert und warum sind die Formeln überhaupt nicht auf dem Bildschirm sichtbar?

(Un)offizielle Habr-Anwendung – HabrApp 2.0: Zugriff erhalten
Es wurde beschlossen: Wir brauchten etwas Bequemes, Angenehmes, etwas Eigenes. Wie wäre es mit Ihrer eigenen Bewerbung für Habr?
Lassen Sie mich Ihnen ein paar Screenshots geben, um die Situation zu verstehen.

(Un)offizielle Habr-Anwendung – HabrApp 2.0: Zugriff erhaltenIrgendwie sieht es so aus es - von. habr.com-Anwendung

Liste der „Unannehmlichkeiten“

  • Sie können eine Veröffentlichung nicht bewerten, deren Bewertung ungleich 0 ist
  • Es ist nicht immer möglich, einen Kommentar zu schreiben
  • Umfragen funktionieren nicht
  • Formeln sind im dunklen Design (Schwarz auf Schwarz) nicht sichtbar.
  • Nicht alle Lesezeichen sind verfügbar

Ja, die App wurde seit August letzten Jahres nicht aktualisiert, aber sie ist immer noch schlecht. Im Allgemeinen muss es behoben werden.

Teil eins. Suche Zugang.

Schnelle Google-Abfrage „Habrahabr-API“ Es heißt, es sei bereits ziemlich veraltet Repository auf Github, seitdem nicht aktualisiert November 21 2016, und das, für einen Moment, zweieinhalb Jahre.

Ignorieren Sie die Tatsache, dass es sich hierbei um PHP handelt, scrollen Sie nach unten und lesen Sie:

Abrufen der Anwendungs-ID

Einen Vorteil ziehen aus diese Form Auf Habrahabr müssen Sie kurz das Wesentliche der neuen Anwendung und den Zweck beschreiben, für den sie eine API benötigt.

Es besteht kein Zweifel: Wenn Sie Zugang benötigen, dann brauchen Sie ihn. Wir schreiben einen Brief (gekürzt):

Brief

Es besteht der Wunsch, einen Antrag für Habr auf der Grundlage von PWA zu stellen. Dafür gibt es mehrere Gründe. 

Das erste und offensichtlichste: Die Android-Anwendung entspricht nicht meinen persönlichen Anforderungen.

Zweitens: Es gibt nicht genügend native Benachrichtigungen zu allen möglichen Dingen, die normalerweise per E-Mail eingehen (z. B. Kommentare).

Drittens: Persönliche Übersichten (als Perspektive) über Personen/Hubs, die mich interessieren, unter Berücksichtigung meiner Interessen.

Die Antwort war natürlich nicht sehr erfreulich, aber zumindest ehrlich:

Leider ist der Zugriff auf unsere API derzeit nicht verfügbar. Wir planen, die Bereitstellung des Zugriffs wieder aufzunehmen, sobald wir die API fertiggestellt haben, aber wir haben noch keine genauen Termine, weil Wir sind derzeit damit beschäftigt, weitere vorrangige Aufgaben zu lösen.

"Okay, kein Problem! Da lassen wir uns was einfallen!“ - sagte ich mir und begann zu suchen.

Zweiter Teil. Tiefe Ausgrabungen.

Basierend auf der Logik hat die Anwendung, wenn sie ausgeführt wird, Zugriff auf die API und ist fest mit der Anwendung verbunden. Lassen Sie uns analysieren.

Da wir uns mit Datenverkehr befassen, ist Wireshark unsere Wahl. Nachdem wir das Telefon über einen Desktop-Computer mit dem Internet verbunden haben, öffnen wir nicht ohne Mühe die Anwendung und sehen uns die Anfragen an:

(Un)offizielle Habr-Anwendung – HabrApp 2.0: Zugriff erhalten
Klar, dass nichts klar ist

Ja, alles ist verschlüsselt, aber ich möchte mich nicht mit der Kryptografie herumschlagen. Dann müssen Sie einen Blick in die Anwendung selbst werfen.

Dekompiliert apk, fangen wir an zu suchen. Was braucht eine API? Rechts, Endpunkt, der Ort, an den alle Anfragen gehen. Dies ist wahrscheinlich http(s). Versuchen wir, „https://“ zu finden:

Im Ordner AuthLinkManager.smali finden

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

Dies ist der Code für die virtuelle Android-Maschine (Dalvik VM), für Menschen nicht sehr verständlich, aber dennoch recht informativ. Diese drei Konstanten werden, ihrem Inhalt und Namen nach zu urteilen, sowie das GitHub-Repository verwendet, um mithilfe der Methode ein Zugriffstoken anzufordern GET.

Schauen wir weiter. Die Datei, die als nächstes bei der Suche auftaucht, ist NetworkModule.smali:

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

Und hier sind Sie mit Ihren Anliegen genau richtig!

Damit der selbstgeschriebene Client ordnungsgemäß funktioniert, müssen Sie nur noch eines herausfinden: client_id, was höchstwahrscheinlich eine eindeutige Kennung für die Anwendung ist.

Die Suche nach diesem Text im Quellcode führte jedoch nicht zum Auffinden relevanter Informationen ...

Aber plötzlich fielen mir in einer der Dateien einige interessante Zeilen auf:

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

Wie Sie verstehen, handelt es sich hierbei um einen Protokolleintrag. Aber was aufnehmen?

Teil drei. Das sind die Protokolle!

Wir gebrauchen adb logcat um Anwendungsprotokolle anzuzeigen.

(Un)offizielle Habr-Anwendung – HabrApp 2.0: Zugriff erhalten

Unerwarteterweise waren die Protokolle noch detaillierter als erwartet.

Hier haben wir nicht nur das, was wir brauchen client_idAber Zeichen Benutzer/Anwendung und anmelden и Kennwort im Klartext!

Einige VerschwörungstheorienDas bloße Vorhandensein eines Logins und Passworts in den Protokollen schadet nichts, da diese Protokolle nur entweder mit Root-Rechten oder einer Verbindung über gelesen werden können adb. Aber aufgrund der Tatsache, dass es unter den Leuten, die Habr lesen, Android-Entwickler gibt, die möglicherweise das Debuggen aktiviert haben, wird dies zu einem Problem.

In diesem Fall kann das „kostenlose Aufladen“ am Flughafen zu einem Kontodiebstahl führen, aber wer braucht das schon?
Aus diesen Protokollen können wir Folgendes extrahieren:

  • client_id и apikeyfür den Zugriff erforderlich Bienen;
  • Benutzerautorisierungs-URL (seltsam, aber es gibt nichts im Repository über diese Methode, vielleicht wird sie nicht bereitgestellt?)

So ist es passiert. Basierend auf dieser winzigen Recherche wird bereits an einem kleinen Projekt gearbeitet – unserer eigenen Implementierung einer mobilen Anwendung. Ich bitte diejenigen, die helfen wollen, eine Nachricht zu schreiben, und alle anderen, abzustimmen (weil ich verstehen möchte, ob das jemand braucht).

Danke!

An der Umfrage können nur registrierte Benutzer teilnehmen. Einloggenbitte.

Nutzen Sie die Habr-Mobilanwendung?

  • Ja, ich benutze es, ich bin zufrieden damit

  • Ja, ich benutze es, die Anwendung verursacht Unannehmlichkeiten

  • Nein, ich verwende die Webversion auf meinem Telefon

  • Nein, ich verwende Habr von meinem Computer aus

357 Benutzer haben abgestimmt. 30 Benutzer enthielten sich der Stimme.

Source: habr.com

Kommentar hinzufügen