Home
Abdoulaye DIALLO Redoine EL-OUASTI Jihen FOURATI
Contents
1. ce stade la r ponse est contenue dans notre objet PDOStatement query Nous d sirons dans l application client pouvoir construire autant d objets Site que d entr es rows trouv es dans la base de donn es C est dire pour une solution utilisant String Tokenizer String reponse_serveur demande_site_par_utilisateur getReponse_serveur if lreponse_serveur isEmptyO sites new Vector lt Site gt reponse new StringTokenizer reponse_serveur while reponse hasMoreTokens String long_token reponse nextToken TOKEN sites add new Site long_token Le code pr c dent fait plusieurs choses il extrait une sous cha ne d limit e par TOKEN et demande la classe Site de cr er une s rie d objets partir de cette cha ne jusqu ce qu il n y ait plus de TOKEN dans reponse serveur De m me Site String data doit cr er une nouvelle instance partir d une cha ne de caract res StringTokenizer strtok new StringTokenizer data String str strtok nextToken ATTR_TOKEN id Integer parselnt str str strtok nextToken ATTR_TOKEN nom str str strtok nextToken ATTR_TOKEN 36 adresse str str strtok nextToken ATTR_TOKEN descriptif str str strtok nextToken ATTR_TOKEN url str str strtok nextToken ATTR_TOKEN etat_alerte str La difficult consiste donc d terminer la valeur donner nos tokens Comme lt et gt sont d
2. 15 4 R alisation et impl mentation Cette section pr sente la r alisation des fonctionnalit s les plus impor tantes 4 1 Interface Homme Machine Les Activit s sont des classes sp ciales auxquelles est associ un fichier XML d finissant une interface statique On peut aussi d finir PIHM en uti lisant du code Java Si d embl e cette pratique semble moins agr able qu une d finition par XML elle offre en revanche la possibilit de modifier de notre interface la vol e C est ce que l on appelle une interface dynamique L Activit Affichage _ Liste _ Site liste l ensemble des sites plac s sous sur veillance Ce nombre tant variable il est indispensable d utiliser une inter face dynamique Nous crivons la partie statique dans le XML et la dynamique en Java et reconstruisons cette partie chaque fois que l activit revient au premier plan callback onResume C est cette dynamicit qui permet de colorer un site en vert lorsque l tat d alerte est faux voir manuel en annexe en rouge dans le cas contraire Pour crire une interface dynamique notre solution est de laisser un lt LI NEARLAYOUT gt identifi que l on manipulera dans le code Java lt Fichier XML gt lt LinearLayout android id id content2 gt lt LinearLayout gt Fichier Java R cup ration Layout XML LinearLayout content LinearLayout findViewById R id content2
3. emettre_requete setReponse_serveur recevoir_reponse fermer_connection Les sous routines ci dessus sont elles m mes d coup es en sous routines En plus d am liorer le maintient de notre programme la modularit permet aussi d asso cier une s mantique une sous routine Package rapace network Relation entre les classes Puisque MESSAGEHTTP r utilise les propri t s de HTTPURLCONNECTION on pourrait se demander pourquoi avoir choisi d associer les deux classes alors qu une relation de sp cialisation semblait mieux indiqu e pour illustrer les liens s mantiques entre nos classes Tout simplement parce que MESSAGEHTTP sp cialise d j la classe Java lang THREAD En effet la communication avec le serveur Apache peut prendre un certain temps durant lequel l application se fige L IHM n est alors plus op rationnelle et l uti lisateur peut ressentir un d sagr ment Pire encore le syst me Android peut d cider de fermer notre application et afficher un message d erreur si le client n obtient pas rapidement de r ponse Quant la classe SERVEUR elle impl mente plusieurs fonctions comme au thentifier ou lever alerte dont le r le est simplement de renseigner l url du script appeler et formater les param tres transmettre la classe MessagePost Lorsque message passe l tat termin la m thode lit la r ponse renvoy e par le serveur APACHE et effectue un traitement en cons quence 8 2 2
4. return message Lit le contenu d un tampon param bufferedReader tampon a lire return String fidele au contenu du tampon public String lire BufferedReader bufferedReader String line StringBuffer sb new StringBuffer try while line bufferedReader readLine null sb append line A4 catch IOException e1 Log e Erreur Erreur dans la lecture du flux en provenance de url toString return sb toString 8 5 4 MessagePOST package com example quentin rapace_v1 network ES Permet l envoi de requete HTTP suivant la methode POST public class MessagePost extends MessageHttp Constructeur param url adresse de la cible param param parametres de la requete public MessagePost String url String param super url param Traitement effectue par le Thread a son execution Override public void run ouvrir_connection emettre_requete setReponse_serveur recevoir_reponse fermer_connection Ouverture du tampon d emission Creturn tampon d emission ouvert 45 public OutputStreamWriter obtenir_tampon_emission OutputStreamWriter _tampon_emission null try _tampon_emission new OutputStreamWriter getConnection getOutputStream catch IOException e Log e Erreur Impossible d obtenir un flux de sortie return _tampon_emission Preparation
5. OutputStream out new BufferedOutputStream urlConnection getOutputStream ecriture dans ce flux writeStream out Creation du flux de r ception InputStream in new BufferedInputStream urlConnection getInputStream Lecture du flux readStream in finally fermeture de connection urlConnection disconnect Le code suivant pose plusieurs probl mes Ce code g n re un grand nombre d exceptions On en compte pas moins de huit dans son adaptation notre client Rapace Or l impl mentation ci dessus ne permet pas d identifier clairement les exceptions et de les traiter Plusieurs m thodes par exemple jettent une JAVANULLPOIN TEREXCEPTION Solution Une solution vise d couper le bloc try en autant de sous blocs try qu il y a de m thodes RISQUE Mais avec un nombre important de m thodes risque notre code devient rapidement illisible Ce code g re un grand nombre de fonctionnalit s Ouverture de connexion configuration de connexion cr ation de flux mission r ception ainsi que leurs entr es sorties plus fermeture de connexion Or il est g n ralement pr f rable de n attribuer qu un r le une m thode Solution Une solution consiste d couper notre code en autant sous routines qu il y a de commentaires dans notre exemple En conjuguant nos deux solutions on obtient la m thode principale de MES SAGEPOST 33 public void run ouvrir_connection
6. Cas d utilisation 33 SEMA DS a a 332 D ja aar er aa eea a Diagramme de classes Diagramme de s quence Base de donn es 4 R alisation et impl mentation 4 1 4 2 4 3 4 4 Interface Homme Machine Communication client serveur 4 2 1 C t client Rapace 4 2 2 C t serveur Apache M canisme d alerte 10 10 10 11 13 13 Int r ts de ce projet 21 5 1 L enrichissement personnel 21 5 2 Des comp tences techniques 21 Conclusion 22 Bibliographie 23 Annexe 24 8 1 Mode emploi 45 8 he ae te Mg te he 24 8 1 1 R ception de alerte sut am siaen use 24 8 1 2 D Authentification oaoa a a 25 8 1 3 Affichage des sites 26 SAT Streaming s mi oe p ern e ARLES SALUT E a 26 8 2 Compl ment sur les communications Client Serveur 30 8 2 1 Pourquoi le package network 30 8 2 2 Les processus l gers ou Thread 33 8 2 3 Acc s la base de donn es 34 8 2 4 Comment est encod e la r ponse du serveur 34 8 3 Nativit une application ve 4 SUD a n pn a ip 36 8 4 Envoyer un SMS l mulateur Android 37 8 5 CO Soure p 84 2 Lee Rens le Aa a ADE a A ANNE og 37 SL Utlisateti ER ee Later me RENTREE 38 B52 SC DAS ane Manet fussaer er ke Er
7. peut ressentir un d sagr ment Pire encore le syst me Android peut d cider de fermer l application et afficher un message d erreur si le client n obtient pas rapidement une r ponse La classe Thread d finit ce que l on appelle en fran ais un processus l ger Un processus l ger n est pas un processus au sens propre voir annexe On utilise la fonction MESSAGE START pour envoyer un message et THREAD JOIN pour attendre la r ponse MessagePost message new MessagePost url parametres message start message join Quant la classe SERVEUR elle impl mente plusieurs m thodes comme au thentifier ou lever _alerte dont le r le est d envoyer un formulaire au bon script et de traiter sa r ponse 17 4 2 2 C t serveur Apache Nous utilisons trois scripts authentification php demander _ site_par_ utilisateur php lever_ alerte php dont les r les sont explicites Les scripts sont form s de la fa on suivante 1 On teste la pr sence des param tres attendus if lempty trim _POST parametre1i and empty trim _POST parametre2 and empty trim _POST parametre_n traitement 2 On ouvre une connexion avec PDO utilisons une requ te pr par e et renvoyons le r sultat avec une boucle sous la forme answer query gt fetch PDO FETCH_ASSOC foreach answer as value print value Voir annexe pour comprendre l importan
8. 39 8 5 3 MessageHTTP 22 gi durs ss ments 41 8 5 4 M SSas POSE sms dates de mie pe 44 Se RS 2 ao aotar RA S a A I A E a a aia 46 8 5 6 SMSReceiver 49 1 Introduction tudiants en troisi me ann e de licence informatique notre projet consiste d velopper une application pour smartphone permettant de surveiller un lieu distance Par sa vocation surveiller notre travail s apparente la t l surveillance plus pr cis ment la vid o surveillance Nous verrons quelles techniques sont associ es la T l surveillance Autre domaine en lien avec notre projet celui de la programmation mobile qui consiste en la programmation de logi ciels pour appareils mobiles En mariant ces deux domaines nous t cherons d associer la performance de l un la mobilit de l autre afin de proposer la meilleure exp rience possible l utilisateur Pour r pondre ces objectifs nous avons connu plusieurs phases gestion de projet analyse et conception d finition de l architecture impl mentation durant lesquelles notre organisation volua Coll giale au d but conception et apprentissage d Android notre organisation s est ensuite structur e cha cun se sp cialisa dans un domaine IHM pour Redoine noyau l application cliente pour Abdoulaye et Jihen serveur Rapace pour Quentin Ce rapport est crit de sorte initier le lecteur aux probl matiques ren contr es au cours du
9. On le vide de son contenu content removeAllViewsInLayout Cr ation d une vue TextView no_site new TextView this no_site setText Vous ne surveillez actuellement aucun site LinearLayout LayoutParams layoutParam new LinearLayout LayoutParams param tres layout 16 Insertion d une vue dans notre layout content addView no_site layoutParam voir code source en annexe pour d autres exemples 4 2 Communication client serveur Pour g rer l authentification et d terminer les lieux qu un utilisateur place sous surveillance on utilise une base de donn es Dans notre cas il s agit d un serveur MYSQL coupl l outil PHPMY ADMIN ce sont des outils simples et dont les performances suffisent largement Voyons pr sent comment client et serveur communiquent 4 2 1 C t client Rapace Le package RAPACE NETWORK r git l ensemble des communications avec le serveur APACHE La classe abstraite MESSAGEHTTP impl mente les fonc tionnalit s indispensables l envoi de messages HTTP Elle repose sur la classe java net HTTPURLCONNECTION recommand e par developer android depuis la version 2 3 MESSAGEPOST sp cialise MESSAGEHTTP pour la m thode POST La classe MESSAGEHTTP sp cialise la classe Java lang THREAD La commu nication avec le serveur Apache peut prendre un certain temps durant lequel l application se fige L IHM n est alors plus op rationnelle et l utilisateur
10. acqu rir la discipline et la maturit requise pour cela 5 2 Des comp tences techniques Les notions abord es par ce projet sont nombreuses et en font selon nous un tr s bon sujet pour l apprentissage Le code natif tant en JAVA nous avons t amen s renforcer notre ma trise du langage Puisque la t l surveillance repose grandement sur les r seaux informatiques il n est pas tonnant de constater que nous avons approfondi nos connais sances dans ce domaine l architecture client serveur et le protocole HTTP Nous nous sommes galement initi s aux probl matiques du streaming et aux diff rents protocoles associ s comme aux formats d encodage des images Le projet rev t un cot syst me puisqu il a fallut bri vement tudier le fonc tionnement du syst me Android afin d impl menter un m canisme d alerte et le multi threading De plus conjointement avec nos cours d architecture du web et de base de donn es ce projet nous a permis d apprendre dans ces deux disciplines puisque nous avons d crire des scripts php r gissant les interactions avec notre base de donn es Enfin nous avons acquis certaines connaissances sur des outils comme PhpMyAdmin les serveurs Apache et MySQL le gestion naire de versions SVN le lecteur multi m dia vlc dont nous n avons pas parl dans ce rapport mais qui nous a guid tout au long de nos tests sur le strea ming 22 6 Conclusion Nous avons dans le
11. class Serveur url du script d authentification private static final String url_script_authentification http 10 0 2 2 quentin authentification php 10 0 2 2 127 0 0 1 pour android url du script listant les sites que surveille un utilisateur a partir de son identifiant private static final String url_script_demander_site_par_utilisateur url du script permettant de lever une alerte private static final String url_script_lever_alerte Envoie une requete permettant d authentifier un utilisateur 47 enregistre selon son email et son mot de passe Cparam email adresse email du client param password mot de passe du client non crypte Creturn Une instance d Utilisateur public static Utilisateur authentifier String email String password String identifiants preparer_identifiants email password MessagePost demande_authentification new MessagePost url_script_authentification identifiants demande_authentification start attendre_fin demande_authentification String reponse demande_authentification getReponse_serveur String reponse contient une chaine contenant l ensemble des attributs d un unique utilisateur ou est nulle Utilisateur utilisateur null if lreponse isEmptyO utilisateur new Utilisateur reponse return utilisateur Sous routine s occupant de la preparation des arguments de la requet
12. de la requete Cparam reponse_serveur public void setReponse_serveur String reponse_serveur this reponse_serveur reponse_serveur SubClassResponsability Override public void run ES Ouvre une nouvelle connection public void ouvrir_connection try connection HttpURLConnection url openConnection catch IOException e Log e Erreur Impossible d acc der l url demand e url toString ES x Ferme une connection active public void fermer _connection connection disconnect Ouvertue du tampon de reception return tampon de reception ouvert si reussite public BufferedReader obtenir_tampon_reception 43 BufferedReader _tampon_reception null Ouverture du flux try _tampon_reception new BufferedReader new InputStreamReader connection getInputStream catch IOException e1 Log e Erreur Erreur dans la r ception du flux en provenance de url toString return _tampon_ reception Encadre la reception d une reponse serveur return reponse a la requete public String recevoir_reponse BufferedReader tampon_reception obtenir_tampon_reception String message lire tampon_reception Fermeture du tampon try tampon_reception close catch IOException ei Log e Erreur Impossible de fermer le flux de r cpetion en provenance de url toString
13. de la requete chargement des parametres en tampon param _tampon_emission tampon d emission ouvert public void preparerRequete OutputStreamWriter _tampon_emission On y crit notre morceau de requ te HTTP contenu dans param try _tampon_emission write getParam catch IOException e Log e Erreur Impossible d crire sur le flux sortant Envoi une requete HTTP suivant la methode POST param _tampon_emission tampon d emission ouvert et prepare public void envoyerRequete OutputStreamWriter _tampon_emission On vide le buffer afin d envoyer notre requ te HTTP try _tampon_emission flush catch IOException e Log e Erreur Impossible d envoyer la requete HTTP Met en forme et emet une requete 46 public void emettre_requete On autorise un tampon pour l criture de la requ te getConnection setDoUutput true getConnection setChunkedStreamingMode 0 OutputStreamWriter tampon_sortie obtenir_tampon_emission if tampon_sortie null Log e tampon nul preparerRequete tampon_sortie envoyerRequete tampon_sortie On ferme le tampon car il ne nous sera plus utile try tampon_sortie close catch IOException e e printStackTrace 8 5 5 Serveur package com example quentin rapace_vi network Assure la liaison entre l application et le serveur Rapace public
14. message l application revient au premier plan en affichant le message d alerte Android permet aux d veloppeurs d interagir facilement avec les composants du t l phone La classe SMSRECEIVER sp cialise la classe BROADCASTRE CEIVER qui permet d couter un composant Android Lorsqu un message arrive il est accessible depuis les instances de BROADCA TRECEIVER Dans notre cas on r cup re le message on v rifie la provenance et on invoque ALERTE si le num ro pdus correspond celui du serveur public void onReceive Context context Intent intent On r cup re l intent Bundle bundle intent getExtras SnsMessage msgs if bundle null Object pdus Object bundle get pdus msgs new SmsMessage pdus length Pour tout messages entrant for int i 0 i lt msgs length i SmsMessage message_entrant SmsMessage createFromPdu byte pdus il Si le num ro correpond celui du serveur 000 if message_entrant getOriginatingAddress equals O000 msgs i message_entrant On appelle l Activit Alerte Intent mainActivitylntent new Intent context Alert class mainActivitylntent setFlags Intent FLAG_ACTIVITY_NEW_TASK context startActivity mainActivitylntent 20 4 4 Lecture streaming Diff rents types de streaming Il existe deux types de streaming Lecture progressive On lit un fichier fini stock sur un serveur On parle de le
15. null str strtok nextToken gt id Integer parselnt str str strtok nextToken gt nom str str strtok nextToken gt adresse str str strtok nextToken gt descriptif str str strtok nextToken gt url str strtok nextToken gt etat_alerte str str 41 8 5 3 MessageHTTP x Classe abstraite impl mentant des fonctions de bases n cessaires l envoi de requ te Http public abstract class MessageHttp extends Thread adresse de la cible private URL url null param tre de la requ te private String param null classe g rant l envoi et la r ception des requ tes Http 8 P q P private HttpURLConnection connection null x reponse obtenue apres traitement de notre requete private static String reponse_serveur null Constructeur param url adresse de la cible param param param tre de la requ te public MessageHttp String url String param try this url new URL url catch MalformedURLException e Log e Erreur URL invalide malform e this param param Accesseur vers la reponse obtenu apres traitement de la requete Attention aux problemes de syncronisation return reponse obtenue apres traitement de la requete public String getReponse_serveur return reponse_serveur 42 x Mutateur vers la reponse obtenu apres traitement
16. taillons 8 2 1 Pourquoi le package network Le package RAPACE NETWORK r git l ensemble des communications avec le serveur APACHE 31 Package rapace network Structure utilise La classe abstraite MESSAGEHTTP impl mente les fonctionnalit s indispensables l envoi de message HTTP ind pendamment la m thode utilis e Elle repose principalement sur la classe java net HTTPURLCONNECTION recommand e par developer android depuis la version 2 3 D autres classes permettent l envoi de requ tes HTTP mais des probl mes de compatibilit apparaissent suivant la version du mobile MESSAGEPOST sp cialise MESSAGEHTTP afin de prendre en charge la m thode POST Nous aurions pu cr er une classe MESSAGEGET sp cialisant MESSAGEHTTP pour la m thode GET mais nous n avons pas eu besoin d utiliser cette m thode dans notre projet HTTPURLCONNECTION supporte elle seule l envoi de message HTTP quelque soit la m thode On peut alors se demander pourquoi avoir cr le package RA PACE NETWORK Le site developer android nous donne un exemple de son uti lisation Cr ation de 1 URL URL url new URL http www android com Ouverture de connection HttpURLConnection urlConnection HttpURLConnection url openConnection try 32 Configuration de la connection urlConnection setDoUutput true urlConnection setChunkedStreamingMode 0 Cr ation du flux d mission
17. tre utile aide comprendre en cas d erreur Log w Bad Data Impossible d instancier Utilisateur partir de null 39 id Integer parselnt strtok nextToken nom strtok nextToken prenom strtok nextToken psswd strtok nextToken email strtok nextToken x Rassemble les donnees de l utilisateur dans une chaine de caracteres return Descriptif des donnees de l utilisateur public String toString return id getId n nom prenom getNom getPrenom 8 5 2 Site package com example quentin rapace_v1 metier x Classe representant un site sous surveillance public class Site identifiant du site dans la base de donnee private int id 1 nom du site private String nom non renseigne adresse du site private String adresse non renseigne x descriptif du site private String descriptif non renseigne x url de la video du site private String url non renseigne 40 etat d alerte du site private String etat_alerte non renseigne Constructeur Cparam data String contenant le r ponse formatee du serveur public Site String data Stringlokenizer strtok null try strtok new StringTokenizer data catch NullPointerException e Log e Bad Data Impossible d instancier Utilisateur partir de null String str
18. E Par exemple sms send 007 Mon nom est Bond James Bond se traduit par la r ception chez notre machine virtuelle d un message provenant du num ro 007 contenant Mon nom est Bond James Bond 8 5 Code source Dans cette section nous pr sentons une partie du code utilis par notre ap plication nous occultons par soucis de clart des commentaires ou des m thodes peu utiles au lecteur on pense en particuliers aux accesseurs mutateurs ainsi que les import 38 8 5 1 Utilisateur package com example quentin rapace_vi metier x Classe representant un utilisateur inscrit public class Utilisateur identifiant dans la base de donnees private int id 1 nom de l utilisateur private String nom non renseign x prenom de l utilisateur private String prenom non renseign x mot de passe crypte de l utilisateur P yP private String psswd non renseign x adresse email de l utilisateur private String email non renseign public Utilisateur Constructeur param data Reponse formatee du serveur public Utilisateur String data On utilise une instance de StringTokenize pour parser notre r ponse StringTokenizer strtok null try strtok new StringTokenizer data catch NullPointerException e Normalement il n est pas n c ssaire de catcher une RunTimeException mais crire un Log et quitter la fonction ici peut
19. Les processus l gers ou Thread Pour viter toute ambigu t il est important de pr ciser qu un thread n est pas un processus En effet les processus vivent dans des espaces virtuels isol s alors que les threads sont des traitements qui vivent ensemble au sein d un m me processus http alwin developpez com tutorial JavaThread En Java la classe Thread permet de d finir ce que l on appelle en fran ais un processus l ger Un processus l ger n est pas un processus au sens propre mais un objet dans notre cas instanci dans un programme ex cut dans un certain processus Processus et Thread permettent une ex cution en parall le au moins par 34 illusion mais deux processus ont leurs propres segments m moire pile sta tique dynamique alors que les processus l gers utilisent les m mes segments celui du processus p re Cela rend la communication entre processus l gers par ticuli rement agr able Chacun poss de en revanche sa propre pile d appel permettant dans notre cas de d tacher l IHM de communication avec le serveur APACHE En java la cr ation d un processus l ger se fait comme n importe quelle instanciation d objet L ex cution du processus l ger d marre avec la m thode THREAD START qui effectue le traitement d fini dans la red finition de THREAD RUN Pour attendre la fin de la fonction THREAD START on utilise THREAD JOIN L envoi d un message HTTP suivant la m thode POST se fait pa
20. Rapport TER HLIN601 S Licence Informatique Troisi me ann e m effectu de Janvier Avril 2015 7 encadr par Abdelhak Djamel SERIAI Our Surveiller sa maison via son Smartphone sous Android RAPPORT Travail r alis par l quipe Abdoulaye DIALLO Quentin PHILIPPOT Jihen FOURATI Redoine EL OUASTI https sourceforge net projects ter2015 Remerciements Nous remercions notre r f rent M Seriari pour ses conseils avis s et pour l efficacit avec laquelle il nous a guid s tout au long du d veloppement du projet Nous tenons remercier aussi toutes les personnes pr sentes lors de notre soutenance et plus particuli rement les membres du Jury propos du logo de l application il s agit en r alit d un emprunt au s duisant logo de l quipe de Hockey Rapace Table des mati res 1 Introduction 2 Contexte et tude des syst mes existants 2 1 2 2 2 3 2 4 2 9 2 6 Contexte ana LS ns de Ps se T l surveillance et vid osurveillance 2 2 1 Pr sence de t l surveillance 2 2 2 Poste de surveillance Application mobile Syst me d exploitation mobile et Android 2 4 1 L apport des applications mobiles Aper u des syst mes existants L application Rapace Ce hisemei es 3 Gestion du projet Analyse et conception 3 1 3 2 3 3 3 4 3 9 3 6 Cahier des charges Architecture 4 nat oh LATE 4
21. ce d utiliser des requ tes pr par es et autres questions de s curit Authentification Le cryptage du mot de passe Que se passerait il si un individu parvenait r cup rer le contenu de notre base de donn es Il poss derait le mot de passe tout utilisateur et avec aurait acc s toutes les cam ras enregistr es On vite ce genre de probl me en cryptant la base de donn es Le site php net recommande l utilisation du couple PASSWORD _HASH PASSWORD _ VERIFY pour crypter et v rifier si un mot de passe crypt et non crypt correspondent authentification php proc de en deux tapes il charge les informations d un utilisateur dont l identifiant est donn v rifie le mot de passe et si les deux concordent renvoie les informations au client query bdd gt prepare SELECT FROM Utilisateur WHERE email email query gt bindParam email email PDO PARAM_STR query gt execute answer query gt fetch PDO FETCH_ASSOC if password_verify password answer psswd foreach answer as value print value 18 D tail getSitesByUserld php Ce script a pour mission de renvoyer l en semble des sites surveill s par un utilisateur dont on conna t l identifiant if lempty int htmlentities _REQUEST user_id Les id sont sous forme d int pas d injection SQL possible user_id int _REQUEST user_id query bdd gt prepa
22. ces priv es 2 2 2 Poste de surveillance La t l surveillance force un individu utiliser un poste de surveillance afin de visualiser les informations r colt es La vid osurveillance d un super march par exemple impose aux vigiles d tre dans une pi ce contenant des moniteurs pour voir les images obtenues gr ce aux cam ras Dans le cas g n ral un utilisateur doit acc der un poste de surveillance moniteur ordinateur etc pour visualiser des informations 2 3 Application mobile Il s agit d un logiciel applicatif pour appareil mobile L avantage de ces applications est d apporter une plus grande libert son utilisateur Ce der nier pouvant acc der ses applications favorites o qu il soit simplement en allumant son appareil mobile 2 4 Syst me d exploitation mobile et Android Il existe plusieurs syst mes d exploitations pour les appareils mobiles smartphones tablettes etc ANDROID IOS et WINDOWS PHONE dominent le march Ventes de smartphone en France janvier 2015 Android O5 mWindows BRIM M Autres Android 65 30 prapes des statistiques Kantar WorndPonel Port de march sur fes ventes de emortphone en france Panel de camammatew Microsoft Windows 13 00 RIZA Shoes RES a aussi has jenv 15 infographie EcoConscient Android se distingue des autres OS par la simplicit avec laquelle nous pou vons cr er de nouvelles applications Le choix de Ja
23. ctement repr sent e sur le march AppStore AndroidMarket Windows Phone Store une seule impl mentation suffit une application web Les performances sont certes moins lev es mais il faut noter que la majorit des applications ne requi rent pas de hautes performances Le vrai d faut de ces applications r side dans le fait que g n ralement par s curit le syst me d exploitation interdit aux scripts l acc s aux compo sants du syst me cam ra acc s sms r pertoire etc Les application hybrides De mani re assez vidente elles acceptent du code natif et du code issu d une page web Il s agit d un compromis entre application native et application web permettant de tirer judicieu sement parti de chacune 8 4 Envoyer un SMS l mulateur Android Un vrai t l phone poss de un num ro et le serveur envoi un sms d alerte ce num ro Dans notre cas il s agit d une machine virtuelle d pourvue num ro Pour simuler l envoi d un sms nous devons donc suivre la proc dure suivante On utilise la commande TELNET SERVEUR PORT pour se connec ter au port utilis par la machine virtuelle dans notre cas cela donne TELNET LOCALHOST 5554 Le num ro de port utilis par votre machine virtuelle est indiqu dans le coin sup rieur gauche de votre fen tre conte nant la machine virtuelle On peut alors utiliser les commandes livr es avec l mulateur android SMS SEND NUM_ TELEPHONNE CONTENU _ MESSAG
24. cture progressive lorsque l application t l charge et lit le fichier simultan ment Le protocole HTTP supporte ce type de strea ming C est le streaming utilis par Youtube par exemple Lecture continue On lit un flux vid o Le protocole HTTP ne supporte pas tr s bien ce mode de streaming on utilise plut t RTSP ou RIMP C est ce type de streaming qui est utilis pour diffuser le flux d une cam ra L API Android propose de lire une vid o en streaming lecture continue ou progressive en utilisant un VideoView auquel on renseigne une uri Par exemple On r cup re la vue VideoView video VideoView findViewById R id video On renseigne l uri de la vid o lire video setVideoURI Uri parse url Let s play video start 21 5 Int r ts de ce projet 5 1 L enrichissement personnel Avant d tre une exp rience informatique ce projet est une exp rience humaine Les tudiants doivent coop rer pour mener bien la r alisation de l application Cela nous a permis d apprendre communiquer et changer pour clarifier parfois certains concepts que nous ne ma trisions pas D couvrir une nouvelle fa on de programmer ainsi que la richesse de l uni vers Android en dehors des cours magistraux est galement une exp rience int ressante Dans le monde de l entreprise nous serons certainement amen s nous auto former et des projets comme celui ci nous aident
25. e 25 La pression du bouton voir nous redirige vers l authentification 8 1 2 L Authentification Il s agit alors de renseigner notre adresse email et notre mot de passe Rapace email james cameron rapace com Mot de passe Remember Me SE CONNECTER Identifiants incorrects La pression du bouton s authentifier nous redirige vers l affichage des sites 26 8 1 3 Affichage des sites Bienvenue Cameron ci la liste de vos sites Pandora Les sites affich s en vert sont des sites pour lesquels aucune alerte n est enre gistr e les sites rouge en revanche sont en tat d alerte Une pression sur un bouton vous redirigera vers les images du site 8 1 4 Streaming Suivant le site que vous avez choisi l affichage diff re 27 Lecture video On visionne un site sans alerte oa uT w IEn 28 Lecture video ot LUTTER wW MEL pi LEVER L ALERTE APPELER LA POLICE On visionne un site en alerte La pression du bouton appeler la police provoque l appel de la police 29 La pression du bouton lever alerte provoque la lev e de l alerte Ainsi si l on retourne en arri re nous obtenons l affichage suivant 30 Bienvenue Cameron Voici la liste de vos site Pandora 8 2 Compl ment sur les communications Client Serveur Nous reprennons dans cette section certaines explications d j donn es dans le rapport que nous d
26. e d authentification Cparam email adresse email du client param password mot de passe du client non crypte Creturn String formatee exprimant les parametres de notre requete private static String preparer_identifiants String email String password String identifiants null try identifiants URLEncoder encode email UTF 8 URLEncoder encode email UTF 8 amp URLEncoder encode password UTF 8 URLEncoder encode password UTF 8 catch UnsupportedEncodingException e Log e Error Argument mal form 48 e printStackTrace return identifiants Envoie une requete permettant de lister les sites surveilles par un utilisateur param id_utilisateur numero identifiant un utilisateur enregistre return Liste des sites sous la surveillance de l utilisateur renseigne public static Vector lt Site gt charger_site String id_utilisateur Vector lt Site gt sites null String id preparer_requete_site id_utilisateur StringTokenizer reponse null MessagePost demande_site_par_utilisateur new MessagePost url_script_demander_site_par_utilisateur id demande_site_par_utilisateur start attendre_fin demande_site_par_utilisateur String reponse_serveur demande_site_par_utilisateur getReponse_serveur if reponse_serveur isEmpty sites new Vector lt Site gt reponse new StringTokenizer reponse_serveur while r
27. eponse hasMoreTokens String long_token reponse nextToken lt sites add new Site long_token return sites ES Envoie d une requete levant un etat d alerte pour un site donne Cparam email adresse email du client param password mot de passe du client crypte Cparam id_site numero identifiant un utilisateur enregistre 49 public static void lever_alerte String email String password String id_site String parametres preparer_requete_alerte email password id_site MessagePost demande_levee new MessagePost url_script_lever_alerte parametres demande_levee start attendre_fin demande_levee Attendre qu une requete HTTP obtienne reponse param messageHttp requete dont on souhaite attendre la reponse private static void attendre_fin MessageHttp messageHttp try messageHttp join catch InterruptedException e e printStackTrace 7 8 5 6 SMSReceiver package com example quentin rapace_vi service Classe s occupant de la d tection des alertes public class SMSReceiver extends BroadcastReceiver Override public void onReceive Context context Intent intent Bundle bundle intent getExtras SmsMessage msgs if bundle null Les pdus correspondent aux num ros de t l phonne des exp diteurs Object pdus Object bundle get pdus msgs new SmsMessage pdus length Pour tout messages ent
28. erveur Rapace sa structure est la suivante voir justification en annexe utilise 13 3 5 Diagramme de s quence Nous montrons ici comment nos contr leurs g rent les transitions Authentification Bouton Authentification Listener 1 onClick View v O gt 2 authentifier email password E w 3 send http message receive http message utilisateur null afficher erreur startActivity toAffichage_Liste_Site Bouton Site Listener vity 1 onClick View v 3 startActivity toLecture_Streaming Bouton Lever Alerte Listener source Activity 1 onClickiView v 1 I l 3 startActivity toAuthentification 3 6 Base de donn es Nous avons besoin d une base de donn es afin d authentifier un utilisa teur m moriser des informations sur les utilisateurs les sites et les liens de surveillance On d cide qu un utilisateur peut surveiller un nombre illimit de sites et qu un site peut tre surveill par un nombre illimit d utilisateurs 14 mais qu un site ne dispose que d une seule cam ra champ url Il vient le sch ma entit association suivant id Are nom nom Surveille adresse descriptif en alerte prenom psswd Soient les relations Utilisateur id nom prenom psswd email Site id nom adresse descriptif url en_ alerte Surveille id_ utilisateur id_ site
29. es caract res inhabituels pour d crire un site nous avons choi sis de remplacer TOKEN par lt et ATTR TOKEN par gt dans notre code et d chapper syst matiquement ces caract res lors de toutes les insertions dans la table Rapace Site Nous renvoyons finalement notre r ponse l application client de la mani re suivante while answer query gt fetch PDO FETCH_ASSOC foreach answer as value print value gt print lt 8 3 Nativit d une application Que l on d veloppe sous Android iOS ou Windows il existe trois types d ap plications ayant chacune leurs avantages et leurs d fauts Les applications natives Elles sont int gralement d velopp es en lan gage natif Java et XML pour Android Ces langages ont l avantage d of frir de meilleures performances il est compil en partie et le syst me est optimis pour les supporter De plus ils donnent la possibilit d interagir avec le syst me d exploitation Les applications web Elles r cup rent le contenu d une page web Sous Android cela se fait via la balise ouvrante XML lt WEBVIEW gt prenant en attribut l url de la page encod e avec les technologies web usuelles L avantage de ces applications est leur portabilit il ne s agit plus de 37 compatibilit entre syst mes d exploitations mais entre navigateurs web L o une application native exige trois impl mentations diff rentes pour tre corre
30. on per mettant uniquement de lire le flux vid o partir d une url adresse diffusant le flux Exemple d applications IPCamViewer IPWebcam 2 6 L application Rapace Nous proposons une application nomm e Rapace appartenant la premi re famille d applications pr sent es pr c demment Nous consid rerons toutefois qu un utilisateur peut connecter autant de cam ras qu il le souhaite et ne ferons donc pas le hiatus application gratuite payante 3 Gestion du projet Analyse et conception Cette section expose notre analyse du probl me et la conception de l ap plication Rapace 3 1 Cahier des charges L application Rapace client devra impl menter les fonctionnalit s sui vantes L authentification d un utilisateur enregistr La pr sentation et l acc s s curis aux informations relatives un SITE nous nommerons ainsi un lieu plac sous surveillance un utilisateur autoris La lecture en streaming d une vid o D autres fonctionnalit s pourront venir se greffer par la suite M canisme d alerte avertissant en cas d intrusion simulation logi cielle Possibilit de contacter directement la police sans quitter l application G rer le cas de fausses alertes depuis l application Rapace 3 2 Architecture Communiquent Diffuse CL P Serveur Rapace M r En L architecture sera la suivante l applica
31. on redirige l utili sateur vers la vid o du site s lectionn Surveiller ou Lecture d un flux vid o L activit lit un flux vid o cor respondant au site s lectionn En cas d alerte deux boutons apparaissent sous la vid o permettant soit d appeler la police soit de lever l alerte R ception d une alerte L activit affiche une alerte Pour des raisons de s curit on donnera peu de d tails sur la nature d une alerte aucune infor mation sur le site Nous demandons l utilisateur de s authentifier avant d obtenir plus d informations Si l utilisateur gare son t l phone et re oit une alerte aucune donn e ne peut tre lue par un tiers 3 4 Diagramme de classes Notre conception utilise le patron MVC On associe des contr leurs cer tains l ments graphiques comme suivant Les classes Bouton_ _ Listener sont des contr leurs Bouton ou Bouton Site des l ments graphiques cout s Tous les contr leurs except Bouton Site Listener sont en association avec l activit contenant l l ment graphique Les contr leurs amorcent les transitions entre activit s et les interactions avec la classe m tier via la classe Serveur 12 lt lt extends gt gt lt lt extends gt gt lt lt extends gt gt agit sur compose compose lt lt extends gt gt Utilise Bouton Listener La classe Serveur est utilis e pour envoyer des messages notre S
32. pr sent document propos une solution simple pour r pondre aux probl mes logiciels que pose la t l surveillance La modularit du code et le respect des concepts objets permettront aux curieux de modifier et d am liorer notre application avec aisance En effet les am liorations possibles sont nombreuses Nous pouvons imaginer de nouvelles fonctionnalit s venant enrichir notre application Rapace G rer la d tection de mouvement par exemple de mani re compl ter notre m canisme d alerte o permettre l utilisateur d enregistrer des vid os partir d un flux de conserver des clich s en cas d intrusion sont autant d options pouvant am liorer l exp rience de l utilisateur 23 7 Bibliographie Livres Programmer en Java de Claude Delannoy Coder proprement Martin Robert C Cours D veloppement d applications Mobiles sous Android Abdelhak Djamel Seriai Universit Montpellier Sites web https www java com https www php net com https www openclassrooms com http developer android com http www developpez com http fr wikipedia org wiki Vid surveillance 24 8 Annexe 8 1 Mode d emploi Nous allons pr senter une utilisation classique de notre application travers la simulation d une intrusion On suppose que l application est install e sur le mobile et que l utilisateur est enregistr dans la base de donn es 8 1 1 R ception de l alerte Vous avez une nouvelle alert
33. projet et d apporter des explications concises aux so lutions propos es Nous approfondirons certains points en annexe Pour commencer nous pr senterons le contexte dans lequel se place notre projet et l tude des syst mes existants lesquels guideront notre analyse durant la phase de conception Nous d taillerons ensuite la r alisation et l impl mentation Enfin nous porterons un regard sur l ensemble du projet et discuterons de son int r t pour notre formation 2 Contexte et tude des syst mes existants Cette section a pour but d expliciter le contexte dans lequel notre projet s est d roul 2 1 Contexte 2 2 T l surveillance et vid osurveillance La t l surveillance d signe un ensemble de techniques utilisant des r seaux informatiques dispositifs de capture et de traitement de l information Son but est d assurer la surveillance d un lieu entre autre distance La vid osurveillance est une branche active de la t l surveillance reposant sur l usage de cam ras de surveillances Il s agit alors de garantir la protection d un lieu par l tude d images en provenance de ce dernier 2 2 1 Pr sence de t l surveillance L valuation du trafic routier fr quentation pollution etc Aide la maintenance des machines usure disponibilit ressources d tection d erreur etc Surveillance de lieux sensibles DBA centres commerciaux et moins sensibles r siden
34. r MessagePost message new MessagePost url parametres message start message join 8 2 3 Acc s la base de donn es L importance d utiliser PDO et ses requ tes pr par es L API PDO propose un ensemble de fonctionnalit s optimis es et disponibles ind pendamment du syst me de gestion de base de donn es Son usage fortement recommand e par le site php net permet une plus grande portabilit du code mais pas seulement La faille par injection SQL Une faille connue consiste envoyer du code SQL dans un formulaire pour ma nipuler notre base de donn es sans en avoir les droits En plus d optimiser nos requ tes l utilisation de requ tes pr par es permet de se pr munir contre ce type d attaque 8 2 4 Comment est encod e la r ponse du serveur Un probl me s est pos lorsque nous avons voulu s rialiser un ensemble de Site code client partir des informations renvoy es par le serveur Pour ce faire nous r cup rons d abord tous les sites sous surveillance d un utili sateur if lempty int htmlentities _REQUEST user_id Les id sont sous forme d int pas d injection SQL possible 39 pas de requetes prepar es user_id int _REQUESTl user_id N anmoins nous voulons query bdd gt prepare SELECT DISTINCT Site FROM Site JOIN Surveille ON Site id Surveille id_site WHERE Surveille id_utilisateur user_id query gt execute
35. rant 90 for int i 0 i lt msgs length i SmsMessage message_entrant SmsMessage createFromPdu byte pdus i Si le num ro correpond celui du serveur 000 if message_entrant get OriginatingAddress equals 000 msgs i message_entrant On appelle l Activit Alerte Intent mainActivityIntent new Intent context Alert class mainActivitylntent setFlags Intent FLAG_ACTIVITY_NEW_TASK context startActivity mainActivitylIntent Intent broadcastIntent new Intent broadcastIntent setAction SMS_RECEIVED_ACTION context sendBroadcast broadcastIntent
36. re SELECT DISTINCT Site FROM Site JOIN Surveille ON Site id Surveille id_site WHERE Surveille id_utilisateur user_id query gt execute La seule difficult pos e par ce script r side dans le renvoi des informations que nous tudions en annexe D tail lever__alerte php Nous appliquons les principes de construction nonc s pr c demment en ajoutant une contrainte pour lever une alerte il faut re authentifier l utili sateur Cette mesure est faite pour viter qu un intrus d joue le syst me d alertes en envoyant une simple requ te au serveur Rapace statement bdd gt prepare UPDATE Site Utilisateur Surveille SET en_alerte 0 WHERE Site id id_site AND Utilisateur email email AND Utilisateur psswd password AND Utilisateur id Surveille id_ utilisateur AND Surveille id_site Site id gt statement gt bindParam email _POST email PDO PARAM_STR Remarque Le mot de passe re u correspond au mot de passe CRYPTE gard en m moire dans l application cliente le temps de l x cution on peut donc le passer tel quel en parametre statement gt bindParam password _POST password PDO PARAM_STR 19 statement gt bindParam id_site _POST id_site PDO PARAM_INT statement gt execute 4 3 M canisme d alerte Le serveur contacte l utilisateur par sms Apr s r ception du
37. tion cliente communiquera avec le serveur afin d interagir avec la base de donn es ou de r cup rer un flux vid o Le serveur Rapace sera en r alit compos de deux serveurs un serveur Apache pour les scripts PHP et un serveur MySQL g rant nos donn es 10 3 3 Cas d utilisation 3 3 1 Sch ma Renseigner email lt include gt S authentifier Renseigner mot de passe lt include gt gt lt lt include gt gt mrene gt Lister sites surveill s lt lt include 4 raS Utilisateur i 1 lt lt extends gt gt Appeler police Application cliente lt lt include gt gt de PE Interroger BDD Application Client Serveur Rapace 3 3 2 D tail L authentification Apr s enregistrement d un utilisateur dans la base de donn es ce dernier poss de une adresse e mail et un mot de passe qui r giront son authentification Un message d erreur pourra tre affich dans les cas suivants 11 Les donn es renseign es par le champ email ne correspondent pas une adresse e mail Les informations fournies ne permettent pas l authentification Affichage d une liste de Sites Cette activit permet la s lection d un site parmi une liste de sites surveill s L THM est dynamique puisque l affichage diff re selon le nombre de sites surveill s et leur tat d alerte voir manuel en annexe Chaque bouton correspond un site Une pressi
38. va comme langage na tif voir annexe lib re les d veloppeurs des contraintes li es la gestion m moire De plus l interpr tation de code Java par la machine virtuelle AN DROID RUNTIME permet aux entreprises de cr er rapidement des applications efficaces 2 4 1 L apport des applications mobiles Ce qu apportent les applications mobiles la t l surveillance c est la capacit de transformer son appareil mobile en un v ritable poste de sur veillance via des applications de t l surveillance 2 5 Aper u des syst mes existants Il existe sur le march plusieurs solutions afin de transformer son mobile en poste de surveillance iCamSpy Android transforme son pc ou sa webcam en cam ra de surveillance Visualisation depuis son mobile D tection de mouve ments m canisme d alerte Version payante enregistrement vid o AtHome iOS transforme une webcam en cam ra de surveillance Visualisation depuis son mobile Version payante limite de webcams augment e enregistrement vid o PrynPocket iOS Enregistrement programm Visualisation depuis son mobile M canisme d alerte Contr le du mat riel distance etc Celles ci exigent une pr paration de la part de l utilisateur manipulation et ou installation de logiciel serveur pour iCamSpy et AtHome achat de mat riels de l entreprise pour PrynPocket Un second type d application existe ne n cessitant aucune installati
Download Pdf Manuals
Related Search
Related Contents
Agreement Specification Polisens verksamhetsstöd Administrativa Samsung CE2774 User Manual miniHUB User Manual - OM Systems Trading Modulhandbuch SPO 2007 - Fakultät für Wirtschaftswissenschaften TRX20-V TRX20-TW - PASO Sound Systems Products GE ZGU36K User's Manual John Deere AT-3105-J User's Manual Manuel d`utilisation du système de base du traitement des Modelo 961/962 Copyright © All rights reserved.
Failed to retrieve file