Gérer un parc de téléphones (Droidcon Tunisia 2014)

50 %
50 %
Information about Gérer un parc de téléphones (Droidcon Tunisia 2014)
Technology

Published on March 4, 2014

Author: sidereo

Source: slideshare.net

Description

Présentation donnée à la DroidCon Tunisia 2014 par Pierre-Olivier Dybman et Edouard Marquez.

01 SHOWCASE GERER UN PARC DE TELEPHONES return xp++; Pierre-Olivier Dybman Edouard Marquez ! ! +PierreOlivierDybman (aka flappy beard) +EdouardMarquez (aka g123k)

02 SHOWCASE GERER UN PARC DE TELEPHONES QUI SOMMES NOUS ? Mais qui est Sidereo ? Que faisons-nous ? LES COMPOSANTS d’une solution mobile NOTRE CLIENT COMMENT MODIFIER Android pour ces besoins ? PRINCIPALES DIFFICULTES Et nos conclusions !

03 QUI SOMMES NOUS ? Besoin d'une stratégie mobile ? 
 Attention à la marche ! 
 Sidereo vous aidera à concevoir, développer et 
 mettre en marché votre solution mobile. Nos sujets Nos compétences Applicatif métier mobile Étude, conseil et analyse Gestion de parc Gestion de projet Gestion applicative Développement et recueil des retours Objets connectés OS embarqués utilisateur Déploiement Mise en marché

QUI SOMMES NOUS ? Humanoid 04

LES COMPOSANTS D’UNE SOLUTION MOBILE 05

06 LES COMPOSANTS App. Signature Mobile Application Management (MAM) Mobile Device Management (MDM) FrameWork Android Dalvik Virtual Machine (ou Android RunTime) Librairies natives et noyau GSM WiFi Sécurité App. Système Configuration App. Utilisateur Authentification D’UNE SOLUTION MOBILE

06 LES COMPOSANTS App. Signature Mobile Application Management (MAM) Mobile Device Management (MDM) FrameWork Android Dalvik Virtual Machine (ou Android RunTime) Librairies natives et noyau GSM WiFi Sécurité App. Système Configuration App. Utilisateur Authentification D’UNE SOLUTION MOBILE

06 LES COMPOSANTS App. Signature Mobile Application Management (MAM) Mobile Device Management (MDM) FrameWork Android Dalvik Virtual Machine (ou Android RunTime) Librairies natives et noyau GSM WiFi Sécurité App. Système Configuration App. Utilisateur Authentification D’UNE SOLUTION MOBILE

06 LES COMPOSANTS App. Signature Mobile Application Management (MAM) Mobile Device Management (MDM) FrameWork Android Dalvik Virtual Machine (ou Android RunTime) Librairies natives et noyau GSM WiFi Sécurité App. Système Configuration App. Utilisateur Authentification D’UNE SOLUTION MOBILE

06 LES COMPOSANTS App. Signature Mobile Application Management (MAM) Mobile Device Management (MDM) FrameWork Android Dalvik Virtual Machine (ou Android RunTime) Librairies natives et noyau GSM WiFi Sécurité App. Système Configuration App. Utilisateur Authentification D’UNE SOLUTION MOBILE

ETUDE DE CAS 07 • Location de terminaux mobiles à court terme • Calcul de la consommation voix et data • Pas de SMS • Localisation des terminaux, gestion des dégâts, etc. • Environnement contraint pour l’utilisateur • Embarquer des applications

08 ETUDE DE CAS LES COMPOSANTS D’UNE App. Signature Mobile Application Management (MAM) Mobile Device Management (MDM) FrameWork Android Dalvik Virtual Machine (ou Android RunTime) Librairies natives et noyau GSM WiFi Sécurité App. Système Configuration App. Utilisateur Authentification SOLUTION MOBILE

09 COMMENT MODIFIER ANDROID ? INTRODUCTION : LE SERVEUR - Base utilisateurs - Tarifs & Consommation Smartphone en location - Paiement - Gestion des dommages - Applications - Contacts - Numéros bloqués - Push Serveur

COMMENT MODIFIER ANDROID ? DIFFÉRENTS TYPES D’APPLICATION Application utilisateur :
 ! - Utilisation standard du framework Android - Peut remplacer des briques de bases telles que le launcher, le composer, le clavier 10

COMMENT MODIFIER ANDROID ? DIFFÉRENTS TYPES D’APPLICATION Application utilisateur :
 ! - Utilisation standard du framework Android - Peut remplacer des briques de bases telles que le launcher, le composer, le clavier Application système : 
 ! - Peut utiliser certaines permissions particulières (reboot, installation silencieuse d’application, …) - Non désinstallable 10

10 COMMENT MODIFIER ANDROID ? DIFFÉRENTS TYPES D’APPLICATION Application utilisateur :
 ! - Utilisation standard du framework Android - Peut remplacer des briques de bases telles que le launcher, le composer, le clavier Application système : 
 ! - Peut utiliser certaines permissions particulières (reboot, installation silencieuse d’application, …) - Non désinstallable Application signature :
 ! - Non désactivable par l’utilisateur

COMMENT MODIFIER ANDROID ? DIFFÉRENTS TYPES D’APPLICATION 10

COMMENT MODIFIER ANDROID ? PRÉEMBARQUER DES APPLICATIONS • Avec le code source via un Makefile Android classique (Android.mk) : ! LOCAL_PATH:= $(call my-dir) include $(CLEAR_VARS) ! LOCAL_SRC_FILES := $(call all-java-files-under, src) ! LOCAL_PACKAGE_NAME := CityGuide LOCAL_CERTIFICATE := platform ! include $(BUILD_PACKAGE) ! ! • Au format APK (dont on n’a pas le code source) : ! PRODUCT_COPY_FILES += somewhere/ToiletsInParis.apk:system/app/ToiletsInParis.apk (< 4.4) somewhere/ToiletsInParis.apk:system/priv-app/ToiletsInParis.apk (>= 4.4) 11

COMMENT MODIFIER ANDROID ? PRÉEMBARQUER DES APPLICATIONS • Avec le code source via un Makefile Android classique (Android.mk) : ! LOCAL_PATH:= $(call my-dir) include $(CLEAR_VARS) ! LOCAL_SRC_FILES := $(call all-java-files-under, src) ! LOCAL_PACKAGE_NAME := CityGuide LOCAL_CERTIFICATE := platform ! include $(BUILD_PACKAGE) ! ! • Au format APK (dont on n’a pas le code source) : ! PRODUCT_COPY_FILES += somewhere/ToiletsInParis.apk:system/app/ToiletsInParis.apk (< 4.4) somewhere/ToiletsInParis.apk:system/priv-app/ToiletsInParis.apk (>= 4.4) 11

COMMENT MODIFIER ANDROID ? Application “Découverte et paiement” : • Impassable sans paiement • Aucune fonctionnalité du téléphone accessible • Lancée à chaque démarrage tant que le paiement n’est pas fait 12

COMMENT MODIFIER 13 ANDROID ? DÉVELOPPER UNE APPLICATION DE DÉMARRAGE BLOQUANTE • C’est simple ! • Rajouter sur une Activity de l’AndroidManifest.xml : <intent-filter> <action android:name="android.intent.action.MAIN"/> <action android:name="android.intent.action.DEVICE_INITIALIZATION_WIZARD"/> <category android:name="android.intent.category.HOME"/> <category android:name="android.intent.category.DEFAULT"/> </intent-filter>

COMMENT MODIFIER 14 ANDROID ? DÉVELOPPER UNE APPLICATION DE DÉMARRAGE BLOQUANTE • Mais il faut penser à désactiver l’application : PackageManager packageManager = context.getPackageManager(); ! packageManager.setComponentEnabledSetting( new ComponentName(“com.helloworld.app”, HelloWorldActivity.class), PackageManager.COMPONENT_ENABLED_STATE_DISABLED, 0);

COMMENT MODIFIER 15 ANDROID ? DESCENTE D’APPLICATION SILENCIEUSE • Pour provoquer l’installation d’une application sans demande de permission, il faut être système public final static String PM_UPDATE = "pm install -r"; ! public static String executeCommand(String command, String param) { BufferedReader in = null; try { Process process = Runtime.getRuntime().exec(String.format("%s %s", command, param)); } […]

COMMENT MODIFIER ANDROID ? MODIFIER LES APNS • Il ne faut pas modifier le fichier dans le framework, mais en créer un autre. ! • Chez CyanogenMod, il est situé dans vendor/cm/ prebuild/common/etc : <apns version="xx"> <apn carrier="xxx" mcc="xxx" mnc="xxx" apn="xxx" user="xxx" password="xx" type=“xxx" … /> </apns> 16

COMMENT MODIFIER ANDROID ? Application “Rendu du téléphone” : • Authentification distributeur • Formulaire de vérification du téléphone à remplir par le distributeur • Reset complet du téléphone • Redémarrage avec optimisation des applications 17

COMMENT MODIFIER ANDROID ? POURQUOI UN RESET ? 18

COMMENT MODIFIER ANDROID ? COMMENT FAIRE UN RESET ? • Il faut demander la permission système android.permission.MASTER_CLEAR 19

COMMENT MODIFIER ANDROID ? COMMENT FAIRE UN RESET ? • Il faut demander la permission système android.permission.MASTER_CLEAR ! ! • Et appeler cet Intent : sendBroadcast( new Intent(“android.intent.action.MASTER_CLEAR")); 19

COMMENT MODIFIER ANDROID ? GÉRER LES COMMUNICATIONS • SMS en modifiant le framework ! • Appels : plusieurs choix – Directement dans le framework – En interceptant l’Intent dans une application ! • Internet via des règles iptables 20

COMMENT MODIFIER 21 ANDROID ? COUPER LES SMS • Les applications tierces utilisent le SmsManager pour envoyer un message, qui lui même utilise le IccSmsInterfaceManager. public void sendTextMessage(String destinationAddress, String scAddress, String text, PendingIntent sentIntent, PendingIntent deliveryIntent) { […] ISms iccISms = ISms.Stub.asInterface(ServiceManager.getService("isms")); if (iccISms != null) { iccISms.sendText(ActivityThread.currentPackageName(), destinationAddress, scAddress, text, sentIntent, deliveryIntent); } […]

COMMENT MODIFIER ANDROID ? COUPER LES SMS • On note plus particulièrement ces méthodes : ! • sendData(…) • sendText(…) • sendTextWithPriority(…) • … 22

COMMENT MODIFIER 23 ANDROID ? COUPER LES SMS public void sendData(String destAddr, String scAddr, int destPort, byte[] data, PendingIntent sentIntent, PendingIntent deliveryIntent) { ! ! ! } mPhone.getContext().enforceCallingPermission("android.permission.SEND_SMS", "Sending SMS message”); if (Rlog.isLoggable("SMS", Log.VERBOSE)) { log("sendData: destAddr=" + destAddr + " scAddr=" + scAddr + " destPort=" + destPort + " data='"+ HexDump.toHexString(data) + "' sentIntent=" + sentIntent + " deliveryIntent=" + deliveryIntent) } mDispatcher.sendData(destAddr, scAddr, destPort, data, sentIntent, deliveryIntent);

COMMENT MODIFIER 23 ANDROID ? COUPER LES SMS public void sendData(String destAddr, String scAddr, int destPort, byte[] data, PendingIntent sentIntent, PendingIntent deliveryIntent) { ! ! ! } mPhone.getContext().enforceCallingPermission("android.permission.SEND_SMS", "Sending SMS message”); if (Rlog.isLoggable("SMS", Log.VERBOSE)) { log("sendData: destAddr=" + destAddr + " scAddr=" + scAddr + " destPort=" + destPort + " data='"+ HexDump.toHexString(data) + "' sentIntent=" + sentIntent + " deliveryIntent=" + deliveryIntent) } mDispatcher.sendData(destAddr, scAddr, destPort, data, sentIntent, deliveryIntent);

COMMENT MODIFIER 23 ANDROID ? COUPER LES SMS public void sendData(String destAddr, String scAddr, int destPort, byte[] data, PendingIntent sentIntent, PendingIntent deliveryIntent) { ! ! ! } mPhone.getContext().enforceCallingPermission("android.permission.SEND_SMS", "Sending SMS message”); if (Rlog.isLoggable("SMS", Log.VERBOSE)) { log("sendData: destAddr=" + destAddr + " scAddr=" + scAddr + " destPort=" + destPort + " data='"+ HexDump.toHexString(data) + "' sentIntent=" + sentIntent + " deliveryIntent=" + deliveryIntent) } if (!blockSms()) { mDispatcher.sendData(destAddr, scAddr, destPort, data, sentIntent, deliveryIntent); }

COMMENT MODIFIER ANDROID ? COUPER LES APPELS • Application interceptant l’intent ! <intent-filter> <action android:name="android.intent.action.ANSWER"/> <action android:name="android.intent.action.PHONE_STATE"/> <action android:name="android.intent.action.NEW_OUTGOING_CALL" /> </intent-filter> ! ! • Mais ne la rendant pas au système setResultData(null); ! ! • Inconvénient : priorité d’interception • Solution : modifier le framework pour changer l’intent levée par un appel 24

COMMENT MODIFIER ANDROID ? COUPER LES APPELS • Application interceptant l’intent ! <intent-filter priority=“xx”> <action android:name="android.intent.action.ANSWER"/> <action android:name="android.intent.action.PHONE_STATE"/> <action android:name="android.intent.action.NEW_OUTGOING_CALL" /> </intent-filter> ! ! • Mais ne la rendant pas au système setResultData(null); ! ! • Inconvénient : priorité d’interception • Solution : modifier le framework pour changer l’intent levée par un appel 24

COMMENT MODIFIER ANDROID ? FACTURER LES APPELS • On enregistre un BroadcastReceiver pour qu’il reçoive les événements relatifs aux appels : ! <intent-filter android:priority=“0"> <action android:name="android.intent.action.NEW_OUTGOING_CALL"/> <category android:name="android.intent.category.DEFAULT"/> </intent-filter> ! • Un appel suit forcément cette séquence, sinon il n’a pas abouti/l’utilisateur l’a annulé avant : • Action de l’Intent vaut Intent.ACTION_NEW_OUTGOING_CALL • Puis en fonction du CallState du TelephonyManager • TelephonyManager.CALL_STATE_OFFHOOK • TelephonyManager.CALL_STATE_IDLE 25

COMMENT MODIFIER ANDROID ? COUPER INTERNET • Règles iptables ! • Problème : on filtre par IP mais ici la gestion du Push pose un problème : ! – Soit on coupe tout, mais on ne reçoit plus de communication du SI – Soit on whitelist les serveurs de GCM mais dans ce cas, on reçoit tous les pushs, pas juste les notres • Solution : filtrer par application 26

COMMENT MODIFIER ANDROID ? COUPER INTERNET Maps Uid : 1 GoogleServices Framework Uid : 2 TrafficManager Uid : 3 Paris City Guide Uid : 4 27

COMMENT MODIFIER ANDROID ? COUPER INTERNET Maps Uid : 1 GoogleServices Framework Uid : 2 TrafficManager Uid : 3 Paris City Guide Uid : 4 27

COMMENT MODIFIER 28 ANDROID ? COUPER INTERNET • 1) On initialise iptables ! iptables --flush iptables -P INPUT ACCEPT iptables -P FORWARD ACCEPT iptables -P OUTPUT DROP -A : ajouter une règle en fin de liste -P : indiquer une policy -j : indiquer une décision -m : règle/correspondance --sport : port source --dport : port de destination

28 COMMENT MODIFIER ANDROID ? COUPER INTERNET -A : ajouter une règle en fin de liste -P : indiquer une policy -j : indiquer une décision -m : règle/correspondance --sport : port source --dport : port de destination • 2) On crée des meta-interfaces ! iptables -N mtm ! iptables -N mtm-wifi iptables -N mtm-3g

28 COMMENT MODIFIER ANDROID ? COUPER INTERNET -A : ajouter une règle en fin de liste -P : indiquer une policy -j : indiquer une décision -m : règle/correspondance --sport : port source --dport : port de destination • 3) On associe ces metas-interfaces aux interfaces réseau ! iptables -A mtm -o wlan+ -j mtm-wifi iptables -A mtm -o tiwlan+ -j mtm-wifi… ! iptables -A mtm -o rmnet+ -j mtm-3g…

28 COMMENT MODIFIER ANDROID ? COUPER INTERNET -A : ajouter une règle en fin de liste -P : indiquer une policy -j : indiquer une décision -m : règle/correspondance --sport : port source --dport : port de destination • 4) On définit les exceptions ! iptables -A mtm-wifi -m owner --uid-owner uid -j RETURN iptables -A mtm-3g -m owner --uid-owner uid -j RETURN

COMMENT MODIFIER 28 ANDROID ? COUPER INTERNET • 5) On termine par ! iptables -P OUTPUT ACCEPT -A : ajouter une règle en fin de liste -P : indiquer une policy -j : indiquer une décision -m : règle/correspondance --sport : port source --dport : port de destination

COMMENT MODIFIER ANDROID ? PRINCIPALES DIFFICULTÉS • Choisir une bonne base (AOSP ? CyanogenMod ?) • Modifier le moins de choses possibles • Gérer les sources d’Android • Faible documentation • Temps pour tester • Samsung ;) 29

30 SHOWCASE GERER UN PARC DE TELEPHONES QR & C’EST À VOTRE TOUR !

Add a comment

Related presentations

Related pages

Talks / Workshops 2014 – Droidcon Tunisia 2016

February 14, 2014 Talks / Workshops 2014 By Droidcon Tunisia. A whole new world with the Presentation API ...
Read more

Comment gérer un parc de téléphones Android (PAUG ...

Comment gérer un parc de téléphones ... 2014. Conférence donnée ... Ils vous présenteront un de leurs retours d'expérience d'une de leurs ...
Read more

Polaris par Cyril Mottier 12/11/2012 Paris Android User ...

Polaris par Cyril Mottier 12/11/2012 Paris Android User Group ... Comment gérer un parc de téléphones Android ... Droidcon Paris 2014 ...
Read more

Vente en ligne PC portable Tunisie, ordinateur de bureau ...

Etui de protection pour Téléphones; Divers pour Téléphones; Power Bank; SmartWatch; ... Saisissez un nom de produit. Top ventes des ordinateurs en Tunisie.
Read more

Femmes de Tunisie - Facebook

Un grand merci à Femmes de Tunisie qui m'a permis de tenir ma propre chronique durant plus ... Views of Tunisia : ... 2014. Highlights All Stories. See ...
Read more

Enterprise Mobile Manager powered by AppTec

Sign in to your account. Please enter your eMail address and password to login
Read more

Salsa Disco Djerba - Facebook

Salsa Disco Djerba. 86,459 likes · 1,545 ... La vodka est le premier alcool fort consommé dans le monde avec un peu plus de ... Tunisia Téléphones ...
Read more

Orange : téléphones, forfaits, Internet, actualité ...

Orange vous présente ses offres de téléphones ... Découvrez l’univers Mobile Orange avec une large gamme de téléphones mobiles, et un grand ...
Read more