Auteur Sujet: suivi conso data api operateur  (Lu 3593 fois)

0 Membres et 1 Invité sur ce sujet

IP4G

  • Abonné Orange / Sosh 4G/5G
  • *
  • Messages: 47
suivi conso data api operateur
« le: 05 janvier 2019 à 11:46:56 »
Hello!

Savez-vous s'il existe un moyen de collecter les infos de suivis consos chez tous les opérateurs par des API ou des requêtes JSON, XML ?
J'ai beaucoup d'abonnements, souvent les sims sont dans des équipements inaccessibles, pas de possibilités d'envoyer des sms et par les sites webs ça prends beaucoup de temps. Est-ce qu'il s'agit même d'un service payant ?
Orange, Free, SFR, Bouygues, Sosh, redbysfr, b&you,  nrjmobile, etc...

merci :)

chantoine

  • Abonné Bbox fibre
  • *
  • Messages: 1 953
  • 91
suivi conso data api operateur
« Réponse #1 le: 05 janvier 2019 à 12:22:12 »
Je gère de nombreuses sim entre mes 2 mobiles, ceux de la famille, et 6 sim utilisées dans un galet et 2 routeurs de bureau, j'ai le même souci.

Pour NRJ, j'utilise le suivi conso sur le site, car l'appli "NRJ mobile" ne permet de suivre qu'une ligne.

MySosh permet de suivre plusieurs lignes et de basculer de l'une à l'autre très rapidement (un glissement de doigt). Par contre le suivi n'est jamais à la minute, il peut y avoir des heures (voire jours) de décalage.

Red&Moi est presque aussi pratique, la bascule se fait par le menu hamburger (rond avec une tête en l'occurrence).

Pour B&You c'est moins cool, le mot de passe est souvent redemandé (pour rien, il suffit de faire retour), et la mise à jour est très longue.

A mon avis il n'existe pas d'API.

IP4G

  • Abonné Orange / Sosh 4G/5G
  • *
  • Messages: 47
suivi conso data api operateur
« Réponse #2 le: 05 janvier 2019 à 12:31:58 »
Merci pour ta réponse. En fait je cherche une solution pro car on gère pas moins de 1000 sims reparties dans pleins de type de forfaits différents chez pleins de clients. Les sim sont souvent installées dans des modems 4G ou d'autres équipements donc inaccessibles. J'avais conçu un soft qui scrappait les infos sur tous les sites mais difficile à maintenir surtout sfr qui change regulierement la syntaxe de son site. Donc du coup si une api existait ce serait parfait. Peut être qu'il faut que je questionne les dev de chaque operateur mais je n'ai pas ces contacts.

Marin

  • Client Bbox vdsl
  • Modérateur
  • *
  • Messages: 2 804
  • 73
suivi conso data api operateur
« Réponse #3 le: 05 janvier 2019 à 13:02:36 »
Salut,

Ces API existent, elles ne sont juste pas documentées.

Pour connaître l'API de ton opérateur, il faut pouvoir reconstituer les requêtes réseau envoyées vers celle-ci. En principe, le moyen le plus simple est d'utiliser mitmproxy, pour capturer le traffic HTTP(S) et éventuellement le déchiffrer. Voici un exemple de marche à suivre :
  • Installer mitmproxy sur une machine Linux : https://mitmproxy.org/

  • Lancer mitmproxy sur le port 8080, en stockant les clefs de session SSL utilisées quelque part : SSLKEYLOGFILE=$HOME/session_key_file mitmproxy -p 8080 --set upstream_cert=false

  • Connecter un téléphone Android sur le même réseau Wifi que la machine Linux.

  • Dans les préférences du réseau Wifi sur Android, spécifier l'adresse IP de la machine Linux en tant que proxy : IP_LINUX:8080

  • Depuis le téléphone Android, se rendre sur http://mitm.it/ et télécharger le certificat .PEM qui est proposé. Aller dans les préférences de sécurité du téléphone et importer le certificat (les menus dépendent de la surcouche). Ton téléphone va normalement te demander d'ajouter un code PIN de déverrouillage obligatoire (dépend de la version). Cette étape ne sera en principe à faire qu'une seule fois.

  • Lancer Wireshark sur une machine Linux. Aller dans « Edit > Preferences > Protocols > SSL > (Pre)-Master-Shared log filename > Browse » et sélectionner le fichier mentionné plus haut ($HOME/session_key_file). Cocher les trois options au-dessus (« Reassemble SSL Records [...] », « Reassemble SSL Application Data [...] », « [...] ignore "mac failed" »). Valider.

  • Lancer Wireshark en capture sur l'interface du Wifi (ou bien sur l'interface any). Utiliser le filtre « http.request » pour voir uniquement les requêtes HTTP, ajouter « && ssl » pour voir uniquement le trafic déchiffré.

  • Lancer l'application de ton opérateur qui affiche tes données mobiles.

  • Quand tu as terminé, arrêter la capture Wireshark, et modifier la configuration du réseau Wifi sur le téléphone Android pour retirer le proxy.

En principe, cela fonctionnera sauf s'il y a du certificate pinning (certificat en dur dans l'application Android), dans quel cas l'application ne fonctionnera pas correctement quand le proxy sera en place.

S'il y a du certificate pinning, le plus simple devient de décompiler l'application pour trouver l'API. Voici un exemple de marche à suivre :
  • Télécharger le .APK de l'application, soit depuis ton téléphone avec adb, soit avec ce site : https://apps.evozi.com/apk-downloader/ ou celui-ci : https://apkpure.com/fr/ ou sinon cette application : https://github.com/matlink/gplaycli

  • Extraire le .APK (c'est un zip renommé) : 7z x nom_du_fichier.apk

  • Utiliser apktool pour extraire les ressources du .APK, et notamment les chaînes de caractères (qui seront dans un fichier strings/values.xml, celles-ci étant normalement référencées par des valeurs numériques dans l'application) : apktool d nom_du_fichier.apk

  • Convertir le ou les .DEX (fichier bytecode Android) en .JAR (archive de fichiers bytecode Java) en utilisant dex2jar : ./d2j-dex2jar.sh classes.dex

  • Décompiler les .JAR en utilisant jd-gui : java -jar jd-gui-1.4.0.jar classes-dex2jar.jar

  • Ensuite, tu peux soit naviguer dans le .JAR en utilisant l'outil de recherche qui est très performant, soit en extrayant toutes les sources décompilées (« File > Save All Sources ») et en faisant des grep

  • Si jd-gui bute sur un fichier ou une classe, et affiche une erreur, tu peux utiliser jad qui est un décompilateur très vieux mais très performant. jad s'utilise sur des .CLASS qui sont les fichiers de bytecode contenus dans un .JAR (qui est un zip renommé). Pour décompiler récursivement tous les .CLASS contenus dans un dossier : find "${jar_extract_dir}" -iname "*.class" -exec jad -d "${jar_decompiled_dir}" -s java -r -o -dead "{""}" \;


Ça ne reste pas une solution professionnelle, mais les API concernées sont en général beaucoup plus stables que de faire du scraping sur les pages web des opérateurs.

Un autre endroit où ces API sont utilisées, c'est au niveau des logiciels pour Windows qui ajoutent un widget sur le bureau pour faire du suivi de consommation, comme on en trouve notamment sur la partie stockage des clefs 3G fournies par les opérateurs.
« Modifié: 05 janvier 2019 à 15:04:35 par Marin »

IP4G

  • Abonné Orange / Sosh 4G/5G
  • *
  • Messages: 47
suivi conso data api operateur
« Réponse #4 le: 05 janvier 2019 à 13:57:38 »
Merci pour ta réponse mais cela ne sera pas pratique dans notre cas. Nos clients on des modems multi sims embarqués et des encodeurs video dotés de 8 sims. Tout ces équipements montent des vpn et tunnel le traffic en bonding. La plupart du traffic est UDP. Dans mon idéal j'aimerai juste faire une request rest vers l'opérateur via le num mobile, l'imei et un token et avoir les infos de data restantes.
Oui le scrap c'est illégal en plus et c'est pas stable mais pour le moment je n'ai rien d'autre.
Je compte egalement la conso dans chaque equipement ca c'est possible mais quand la sim est sortie et utilisee dans un équipement annexe aui ne compte pas on est cuits.

Marin

  • Client Bbox vdsl
  • Modérateur
  • *
  • Messages: 2 804
  • 73
suivi conso data api operateur
« Réponse #5 le: 05 janvier 2019 à 15:14:13 »
Nos clients on des modems multi sims embarqués et des encodeurs video dotés de 8 sims.

Je pense que le plus pratique est de faire le comptage au niveau du modem et de le faire remonter vers un serveur distant. En principe la plupart des modems de ce type tournent sur du Linux standard avec une libc qui peut varier et de l'ARM. La cross-compilation doit être aisée avec buildroot.

Oui le scrap c'est illégal

Faire du scraping n'est pas illégal. Violer la propriété intellectuelle (par exemple, en extrayant une base de données dans son intégralité) est illégal, récupérer le compteur d'utilisation 4G d'une ligne ne viole certainement pas la propriété intellectuelle.

IP4G

  • Abonné Orange / Sosh 4G/5G
  • *
  • Messages: 47
suivi conso data api operateur
« Réponse #6 le: 05 janvier 2019 à 16:41:21 »
Tu as raison c'est deja ce qu'on fait pour certaines sims dans des équipements mais j'aimerai mettre à disposition un portail ou la societe rentre son num son login + mdp et ca lui donne sa conso. Ok je pensai que c'était illegal. J.ai posé une question aux dev d'orange et je vous communiquerai la reponse.