Aplicación (no)oficial de Habr - HabrApp 2.0: obteniendo acceso

Una tarde lánguida y ya bastante aburrida, yo, hojeando oficial Habr aplicación, una vez más doblé los dedos, uno para cada función que no funciona. Aquí, por ejemplo, no puedes comentar, aquí te niegan el derecho a votar y, en general, ¿por qué las fórmulas no se ven en la pantalla?

Aplicación (no)oficial de Habr - HabrApp 2.0: obteniendo acceso
Estaba decidido: necesitábamos algo cómodo, agradable, algo propio. ¿Qué pasa con su propia aplicación para Habr?
Déjame darte algunas capturas de pantalla para comprender la situación.

Aplicación (no)oficial de Habr - HabrApp 2.0: obteniendo accesoDe alguna manera se parece a esto это - de. aplicación habr.com

Lista de "inconvenientes"

  • No se puede calificar una publicación cuya calificación sea diferente de 0
  • No siempre es posible escribir un comentario.
  • Las encuestas no funcionan
  • Las fórmulas no son visibles en el tema oscuro (negro sobre negro)
  • No todos los marcadores están disponibles

Sí, la aplicación no se ha actualizado desde agosto del año pasado, pero sigue siendo mala. En general, es necesario arreglarlo.

Parte uno. Buscando acceso.

Consulta rápida en Google "API habrahabr" dice que ya esta bastante desactualizado repositorio en Github, no actualizado desde Noviembre 21 2016, y esto, por un momento, dos años y medio.

Ignorando el hecho de que se trata de PHP, desplácese hacia abajo y lea:

Obtener el ID de la aplicación

Aprovechando esta forma En Habrahabr, es necesario describir brevemente la esencia de la nueva aplicación y el propósito para el cual necesita una API.

No hay duda de que si necesita obtener acceso, entonces lo necesita. Escribimos una carta (abreviada):

Carta

Existe el deseo de presentar una solicitud para Habr basada en PWA. Hay varias razones para esto. 

La primera y más obvia: la aplicación de Android no cumple con mis requisitos personales.

Segundo: no hay suficientes notificaciones nativas sobre todo tipo de cosas que suelen llegar por correo electrónico (comentarios, por ejemplo).

Tercero: resúmenes personales (como perspectiva) sobre personas/centros que me interesan, teniendo en cuenta mis intereses.

La respuesta, por supuesto, no fue muy agradable, pero al menos honesta:

Lamentablemente, el acceso a nuestra API no está disponible actualmente. Planeamos reanudar el suministro de acceso una vez que terminemos de finalizar la API, pero aún no tenemos fechas exactas porque Actualmente estamos ocupados resolviendo otras tareas prioritarias.

"¡Está bien, no hay problema! ¡Se nos ocurrirá algo!". - Me dije y comencé a buscar.

La segunda parte. Excavaciones profundas.

Según la lógica, si la aplicación se está ejecutando, entonces tiene acceso a la API y está conectada a la aplicación. Analicemos.

Dado que nos ocupamos del tráfico, Wireshark es nuestra elección. No sin algunas molestias, después de conectar el teléfono a Internet a través de una computadora de escritorio, abrimos la aplicación y miramos las solicitudes:

Aplicación (no)oficial de Habr - HabrApp 2.0: obteniendo acceso
Claro que nada está claro

Sí, todo está cifrado, pero no quiero meterme con la criptografía. Luego debes mirar dentro de la aplicación.

descompilado . Apk, empecemos a buscar. ¿Qué necesita cualquier API? Bien, punto final, el lugar donde van todas las solicitudes. Probablemente sea http(s), intentemos encontrar “https://”:

En archivo AuthLinkManager.smali encontrar

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

Este es el código para la máquina virtual de Android (Dalvík VM), no muy comprensible para los humanos, pero aún así bastante informativo. Estas tres constantes, a juzgar por su contenido y nombre, así como por el repositorio de GitHub, se utilizan para solicitar un token de acceso mediante el método GET.

Miremos más allá. El archivo que aparece a continuación en la búsqueda es NetworkModule.smali:

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

¡Y aquí está el lugar al que acudir con tus peticiones!

Para que el cliente escrito por uno mismo funcione correctamente, sólo queda una cosa por resolver: client_id, que probablemente sea un identificador único para la aplicación.

Sin embargo, la búsqueda de este texto en el código fuente no condujo a encontrar información relevante...

Pero de repente en uno de los archivos mis ojos captaron unas líneas interesantes:

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

Esto, como puede comprender, es una entrada de registro. ¿Pero grabar qué?

Parte tres. ¡Estos son los registros!

Uso adb logcat para ver los registros de la aplicación.

Aplicación (no)oficial de Habr - HabrApp 2.0: obteniendo acceso

Inesperadamente, los registros resultaron ser incluso más detallados de lo esperado.

Aquí no sólo tenemos lo que necesitamos. client_idpero token usuario/aplicación, y логин и пароль en texto plano!

Algunas teorías de la conspiraciónLa mera presencia de un nombre de usuario y contraseña en los registros no daña nada, ya que estos registros solo se pueden leer con derechos de root o una conexión a través de adb. Pero debido al hecho de que entre las personas que leen Habr hay desarrolladores de Android que pueden tener habilitada la depuración, esto se convierte en un problema.

En este caso, el “cobro gratuito” en el aeropuerto puede resultar en el robo de cuentas, pero ¿quién lo necesita?
De estos registros podemos extraer:

  • client_id и apikeyrequerido para acceder abejas;
  • URL de autorización de usuario (extraño, pero no hay nada en el repositorio sobre este método, ¿tal vez no se proporciona?)

Así sucedió. A partir de esta pequeña investigación, ya se está trabajando en un pequeño proyecto: nuestra propia implementación de una aplicación móvil. Les pido a quienes quieran ayudar que escriban un mensaje y a todos los demás que voten (porque quiero saber si alguien lo necesita).

Gracias por su atención!

Solo los usuarios registrados pueden participar en la encuesta. Registrarsepor favor

¿Utilizas la aplicación móvil Habr?

  • Sí, lo uso, estoy contento con él.

  • Sí, lo uso, la aplicación causa inconvenientes.

  • No, uso la versión web en mi teléfono.

  • No, uso Habr desde mi computadora.

357 usuarios votaron. 30 usuarios se abstuvieron.

Fuente: habr.com

Añadir un comentario