Sergent Adrien
Choveton-Caillat Julien
La page principale est constituée d'un navigateur surplombé par une bannière qui contient la note correspondant au domaine actuel (les étoiles sont vides s'il n'y pas de notes), puis le nom de domaine associé au site actuellement visité et un bouton "go".
La zone associée au nom de domaine est éditable, on peut y entrer une url et cliquer sur le bouton "go" pour s'y rendre.
En cliquant sur la note (les étoiles), et on est envoyé sur le second fragment qui donne accès aux détails de la note que l'on a mise à ce domaine. On peut changer la note qui a été attribuée, et optionnellement ajouter des remarques. Ces changements prennent effet dans la mémoire du téléphone lorsque l'on appuie sur le bouton "send". Enfin il y a un bouton back pour revenir au fragment précédent.
L'application de contact utilise la notion de RecylerViewer et d'adaptateur pour afficher les contacts récuperés via une query. Un button Rate this app est disponible et permet à l'utilisateur mettre une note à l'application. Après une boite de dialogue, ce bouton renverra sur la page de l'appstore dans un navigateur (puisque celle-ci n'existe pas, c'est l'url du repo qui est utilisée). Mais si l'app myWebReviews est présente, cela donnera lieu, à la place, à la collusion décrite ci-après.
Le fragment navigateur de myWebReviews est inspiré de par cet article
Le stockage de myWebReviews est fait avec une base de données SQLite, nous sommes parties des bases fournies par ce tutoriel
La collusion se fait par un intent explicite lorsque l'usager clique sur "rate this app" dans Simple Contact Viewer. Les contacts sont envoyés à myWebReviews via un champ extra de l'intent. Voyant la présence de ce champ extra, myWebReviews effectue une requête POST au site paste.ee (un site similaire à pastebin avec une api simple d'utilisation) avec ce contenu. L'api de paste.ee renvoie l'url associée au paste qui vient d'être créé, et le navigateur de myWebReviews affiche cette page pour démontrer que la collusion a bien eu lieu. On obtient donc ce genre de résultat :
Ces applications ont été pensées comme des démonstrations et non comme une tentative d'une collusion la plus discrète possible. Tout d'abord, il est facile de détecter la présence d'une autre application grâce aux explicit intents. On aurait donc pu faire en sorte que Simple Contact Viewer lance myWebReviews dès que l'on détecte que cette app a été installée. On pourrait alors faire passer ce comportement pour une popup comme il y en a beaucoup : myWebReviews n'afficherait pas le résultat de la collusion sur paste.ee, mais plutôt un site proposant de noter Simple Contact Viewer ou de passer à la version payante...