Application (Un)officielle Habr - HabrApp 2.0 : accéder

Par une soirée alanguie et déjà bien ennuyeuse, moi, en feuilletant officiel Application Habr, encore une fois j'ai plié les doigts, un pour chaque fonctionnalité qui ne fonctionne pas. Ici par exemple, vous ne pouvez pas commenter, ici on vous refuse le droit de vote, et en général, pourquoi les formules ne sont-elles pas visibles à l'écran ?

Application (Un)officielle Habr - HabrApp 2.0 : accéder
C'était décidé : il nous fallait quelque chose de confortable, d'agréable, quelque chose qui nous soit propre. Qu’en est-il de votre propre candidature pour Habr ?
Laissez-moi vous donner quelques captures d'écran pour comprendre la situation.

Application (Un)officielle Habr - HabrApp 2.0 : accéderQuelque part ça ressemble à ça это - de. Application habr.com

Liste des « inconvénients »

  • Vous ne pouvez pas noter une publication dont la note est différente de 0
  • Il n'est pas toujours possible d'écrire un commentaire
  • Les sondages ne fonctionnent pas
  • Les formules ne sont pas visibles dans le thème sombre (noir sur noir)
  • Tous les favoris ne sont pas disponibles

Oui, l'application n'a pas été mise à jour depuis août de l'année dernière, mais elle est toujours mauvaise. En général, il faut le réparer.

Partie un. En recherche d'accès.

Requête Google rapide "API Habrahabr" ça dit que c'est déjà assez obsolète dépôt sur Github, pas mis à jour depuis Novembre 21 2016, et ceci, l'espace d'un instant, Deux ans et demi.

Ignorant le fait qu'il s'agit de PHP, faites défiler vers le bas et lisez :

Obtenir l'ID de l'application

Profiter de ce formulaire sur Habrahabr, vous devez décrire brièvement l'essence de la nouvelle application et le but pour lequel elle a besoin d'une API.

Il ne fait aucun doute que si vous avez besoin d’y accéder, alors vous en avez besoin. Nous écrivons une lettre (abrégée) :

Lettre

Il existe un souhait de créer une application pour Habr basée sur PWA. Il y a plusieurs raisons à cela. 

La première et la plus évidente : l’application Android ne répond pas à mes exigences personnelles.

Deuxièmement : il n'y a pas assez de notifications natives sur toutes sortes de choses qui arrivent habituellement par e-mail (commentaires, par exemple).

Troisièmement : des résumés personnels (en guise de perspective) sur les personnes/hubs qui m'intéressent, en tenant compte de mes intérêts.

La réponse, bien sûr, n’était pas très agréable, mais au moins honnête :

Malheureusement, l'accès à notre API n'est pas disponible actuellement. Nous prévoyons de reprendre l'accès après avoir finalisé l'API, mais nous n'avons pas encore de dates exactes, car Nous sommes actuellement occupés à résoudre d'autres tâches prioritaires.

"D'accord pas de problème! Nous trouverons quelque chose !" - Je me suis dit et j'ai commencé à chercher.

Deuxième partie. Fouilles profondes.

D'après la logique, si l'application est en cours d'exécution, elle a accès à l'API et elle est câblée à l'application. Analysons.

Puisque nous traitons du trafic, Wireshark est notre choix. Non sans quelques pénibles, après avoir connecté le téléphone à Internet via un ordinateur de bureau, on ouvre l'application et on regarde les requêtes :

Application (Un)officielle Habr - HabrApp 2.0 : accéder
Clair que rien n'est clair

Oui, tout est crypté, mais je ne veux pas jouer avec la cryptographie. Ensuite, vous devez regarder à l’intérieur de l’application elle-même.

Décompilé .apk, commençons à chercher. De quoi a besoin une API ? Droite, point final, l'endroit où vont toutes les demandes. Il s'agit probablement de http(s), essayons de trouver « https:// » :

En fichier AuthLinkManager.smali trouver

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

C'est le code de la machine virtuelle Android (VM Dalvik), peu compréhensible pour les humains, mais néanmoins assez informatif. Ces trois constantes, à en juger par leur contenu et leur nom, ainsi que le référentiel GitHub, permettent de demander un jeton d'accès en utilisant la méthode GET.

Regardons plus loin. Le fichier qui apparaît ensuite dans la recherche est NetworkModule.smali:

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

Et voici où aller pour vos demandes !

Pour que le client auto-écrit fonctionne correctement, il ne reste qu'une chose à comprendre : client_id, qui est très probablement un identifiant unique pour l'application.

Cependant, la recherche de ce texte dans le code source n'a pas permis de trouver des informations pertinentes...

Mais soudain, dans l’un des fichiers, mes yeux ont aperçu des lignes intéressantes :

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

Comme vous pouvez le comprendre, il s’agit d’une entrée de journal. Mais enregistrer quoi ?

Partie trois. Ce sont les journaux !

Nous utilisons adb logcat pour afficher les journaux d'application.

Application (Un)officielle Habr - HabrApp 2.0 : accéder

De manière inattendue, les journaux se sont révélés encore plus détaillés que prévu.

Ici, nous avons non seulement ce dont nous avons besoin client_idMais jeton utilisateur/application, et login и mot de passe en texte brut !

Quelques théories du complotLa simple présence d'un login et d'un mot de passe dans les logs ne nuit à rien, puisque ces logs ne peuvent être lus qu'avec les droits root ou une connexion via adb. Mais étant donné que parmi les personnes qui lisent Habr, il y a des développeurs Android qui peuvent avoir activé le débogage, cela devient un problème.

Dans ce cas, la « recharge gratuite » à l’aéroport peut entraîner un vol de compte, mais qui en a besoin ?
De ces logs nous pouvons extraire :

  • client_id и apikeyrequis pour accéder api;
  • URL d'autorisation utilisateur (étrange, mais il n'y a rien dans le référentiel sur cette méthode, peut-être qu'elle n'est pas fournie ?)

C'est comme ça que ça s'est passé. Sur la base de cette petite recherche, nous travaillons déjà sur un petit projet : notre propre implémentation d'une application mobile. Je demande à ceux qui veulent aider d'écrire un message, et à tous les autres - de voter (car je veux comprendre si quelqu'un en a besoin).

Je vous remercie!

Seuls les utilisateurs enregistrés peuvent participer à l'enquête. se connecters'il te plait.

Utilisez-vous l'application mobile Habr ?

  • Oui, je l'utilise, j'en suis content

  • Oui, je l'utilise, l'application provoque des désagréments

  • Non, j'utilise la version Web sur mon téléphone

  • Non, j'utilise Habr depuis mon ordinateur

357 utilisateurs ont voté. 30 utilisateurs se sont abstenus.

Source: habr.com

Ajouter un commentaire