Greboca  

Suport technique et veille technologique

Suport technique et veille technologique

Aujourd’hui, les grandes entreprises et administrations publiques hésitent entre continuer à utiliser des logiciels propriétaires ou basculer vers les Logiciels Libres. Pourtant, la plupart des logiciels libres sont capables de bien traiter les données issues des logiciels propriétaire, et parfois avec une meilleur compatibilité.

C’est alors la barrière de la prise en main qui fait peur, et pourtant...

Les logiciels libres

L’aspect « Logiciel Libre » permet une évolution rapide et une plus grande participation des utilisateurs. Les aides et tutoriels foisonnent sur Internet ou sont directement inclus dans le logiciel lui-même.

Enfin, les concepteurs sont plus proches des utilisateurs, ce qui rend les logiciels libres plus agréable à utiliser et conviviaux.

Grâce à la disponibilité des logiciels libres, vous trouverez facilement des services de support techniques et la licence n’est plus un frein à l’utilisation de ces logiciels par votre personnel.

Notre support technique concerne essentiellement les logiciels libres, que ce soit sous forme de services ponctuels ou de tutoriels.

LinuxFr.org : les journaux  -  Disséquer un APK pour trouver une API de météo

 -  Juin 2019 - 

Intro

Si vous vous rendez sur le site de Météo France, il n'y a pas de moyen évident de récupérer les prévisions météorologiques par API pour les intégrer dans ses propres applications. Alors que, si j'en crois Wikipedia, Météo France est un "établissement public administratif", donc plus ou moins financé par nos impôts.

Pour commencer gentiment, j'ouvre les outils de développement de Firefox (F12) pour voir comment une page de prévisions est construite (onglet "network"). On peut constater que la page n'est pas construite par un appel d'API (xhr) mais directement rendu en HTML côté serveur. Doh !

FF F12

Pourtant il y a une application officielle sur le playstore de google/android. Et qui ne semble pas être un simple revamping du site web. Je parierai qu'elle utilise une API.

J'envisage quelques solutions pour en avoir le cœur net :

  • installer l'application sur mon ordiphone, lancer l'application en la faisant passer par un proxy et regarder le trafic quand je l'utilise.
  • faire de même dans un simulateur sur le PC avec l'android studio
  • faire une analyse statique de l'application : peut être un fichier de configuration me donnera un pointeur

Les deux premières me semblent compliquées et intrusives car mon ordiphone n'est pas relié à google. J'opte pour l'analyse statique.

Analyse d'un APK

Télécharger l'APK

S'assurer de l'identifiant de l'application. Notons au passage la taille de la bête - 51M - qui dépasse mon entendement.

Chercher un site qui permet de télécharger une application Android sur PC. Il y en a des centaines. On se demande ce qu'ils ont à y gagner : juste afficher de la pub ou installer une petite spécialité maison au passage … méfions nous des fichiers récupérés de cette manière.

Je prends le premier, j'entre l'ID de l'application et lance le téléchargement. J'obtiens un fichier APK sur mon PC.

Extraire l'APK

Un APK est grosso-modo une archive ZIP.

Mais dex2jar fournit un outil appelé "d2j-std-apk" qui prétend "clean up apk to standard zip". Alors pourquoi pas.

dex2jar-2.0/d2j-std-apk.sh -o apk.zip ~/Downloads/My\ Weather\ App_v6.2.1_apkpure.com.apk puis unzip apk.zip.

strings

Avant toute chose, je tente une méthode un peu brutale, en utilisant strings sur l'ensemble des fichiers.

find apk -type f -print0 | xargs -0 strings | less -p "meteofrance.com"

Je commence à trouver des trucs très sympa comme "webservice.meteofrance.com", "ws.meteofrance.com", "api.meteofrance.com". C'est bon signe mais cela ne me dit pas vraiment comment utiliser l'API ni où elle est exactement.

Déchiffrer les DEX

Le code de l'application se trouve dans les fichiers dex. Il faut tout d'abord recréer les fichiers class de java.

dex2jar propose l'outil dex2jar exactement pour ça.

dex2jar-2.0/d2j-dex2jar.sh classes.dex

à répéter avec classes2.dex et classes3.dex

strings, le retour

Maintenant que j'ai des jar avec des class. Je retente la méthode brutale, strings mais cette fois si sur le contenu des jars.

unzip -p apk/classes2-dex2jar.jar | strings | less -p "meteofrance.com", à répéter avec classes2.dex et classes3.dex.

Je ne trouve rien de plus que lors de la première passe.

décompiler

Java Decompiler permet de décompiler les fichiers class. Et propose une GUI en plus de la CLI.

java -jar ~/Downloads/jd-gui-1.5.1.jar apk/classes-dex2jar.jar

Dans le premier fichier je trouve un package "rest" avec une class "RestClient". On touche au but mais ce n'est pas suffisant.

Dans le second fichier, rien de bien folichon.

Dans le troisième, bingo, l'API est explicitée, avec l'hôte, les chemins et les paramètres.

Exploitation de l'API

curl et jq permettent de facilement comprendre comment fonctionnent l'API.

Il faut noter que Météo France travaille avec les identifiants INSEE des villes de France et pas avec les code postaux.

Un verbe de l'API permet de chercher une ville et d'obtenir cet identifiant.

curl -s -S 'http://ws.meteofrance.com/ws/getLieux/rennes.json' | jq -rc '.result.france[]|[.indicatif, .nom]|@csv'

"352380","Rennes"
"531890","Rennes-en-Grenouilles"
"113090","Rennes-le-Château"
"113100","Rennes-les-Bains"
"254880","Rennes-sur-Loue"

Un verbe permet d'avoir les prévisions :

curl -s -S 'http://ws.meteofrance.com/ws/getDetail/france/352380.json' | jq -rc '.result.previsions48h|.[]|[.moment, .description]|@csv'

"20-23","Rares averses"
"23-02","Rares averses"
"02-05","Rares averses"
"05-08","Rares averses"
"08-11","Rares averses"
"11-14","Risque d'orages"
"14-17","Averses orageuses"
"17-20","Averses orageuses"
"20-23","Rares averses"
"23-02","Eclaircies"

Outro

Voilà, nous avons vu comment disséquer une application Android pour retrouver l'API qu'elle utilise. Y avait-il un autre moyen ?

Happy hacking !

Commentaires : voir le flux atom ouvrir dans le navigateur

par steph1978

LinuxFr.org : les journaux

LinuxFr.org : Journaux

Pâques, le bug d'Excel et la difficile adaptation de LibreOffice

 -  25 avril - 

Sommaire Où l'on décide de la date de Pâques Ce cher Jules 1254 ans fast forward Le calendrier julien révisé Bon, et Excel, dans tout ça ? LibreOffice (...)


Sauver des données embarquée à dos d'outarde

 -  8 avril - 

Ou comment l'association GEBULL, petit GUL de province, a contribué à une étude scientifique.À la fin du mois de novembre 2021, une balise de suivi (...)


IA : Imitation Artificielle

 -  28 mars - 

Bonjour Nal',Tout le monde cause de l'IA. L'IA par ci, l'IA par là. L'IA dans les journaux qui trouvent qu'il y a trop d'IA.Ça commence à (...)


Un super Logic Analyzer DIY pour pas cher

 -  26 mars - 

Wouah, le titre cryptique. Un peu de Wikipedia pour éclaircir (j’espère que c'est mieux que ChatGPT):L’analyseur logique est un outil de mesure (...)


Mise a jour de la traduction française du Wiki de Scribus

 -  24 mars - 

Je viens de commencer à mettre à jour la traduction française du Wiki du logiciel de Publication Assistée par Ordinateur (PAO) Scribus (équivalent (...)