Stalker ses amis Facebook sur Tinder

En voilà une mauvaise idée !
[Recherches et scripts réalisés en aout 2016.]

Tout d'abord pour ceux qui sortent du coma ou qui ne sortent pas de chez eux, Tinder est une application pour faire des rencontres sexuelles sympathiques, disponible sur smartphone où l'inscription se fait uniquement via le compte Facebook (malheureusement peut-être mais heureusement pour cet article...).

alt

Le principe est simple, des profils avec photos, prénoms, âges et descriptions vous sont présentés et vous devez switcher vers la droite pour "liker" ou vers la gauche pour "noper" chaque profil. Si vous "likez" un profil et que la personne vous "like" également cela donne un "match" et vous pouvez commencer à sexter discuter.
Désolé par avance, cet article et cet outil ne vous permettrons pas d'augmenter significativement votre tableau de chasse ou à vous dépuceler!
A l'inverse vous pourriez vous rendre compte que votre dernière/actuelle/future conquête n'est pas si sérieuse que ça et qu'elle a surement acquis ici plus d'expérience de "likes" que toi tu n'en acquerras dans toute ta vie ;]

alt

Passons aux choses techniques.

Tout d'abord tout ce qui est présenté ici, je cite : "It's not a bug it's a feature" d'après Tinder.

Comme beaucoup d'applications, Tinder dialogue en permanence avec une API hébergée à l'adresse https://api.gotinder.com. Cette API n'est pas publique et non documentée. En utilisant un outil comme Mitmproxy pour proxifier la connexion entre l'application et les serveurs il est possible d'observer l'ensemble des échanges. Pour cela il faut au préalable pousser un certificat généré par Mitmproxy sur le smartphone pour pouvoir déchiffrer la connexion entre le smartphone et le serveur.

Le certificate pinning a été implémenté dans l'application ce qui la protège contre les attaques du type (Man in the Middle)[https://en.wikipedia.org/wiki/Man-in-the-middle_attack]. Le ou les certificats SSL des serveurs Tinder sont stockés en dur dans l'application et vérifie que les échanges ne sont pas intercéptés, déchiffrés et re-chifrés par un tiers lors des communications application<->serveur.

Pour pouvoir tout de même observer les échanges il faut installer une application sur son téléphone. Android-SSL-TrustKiller est une application qui permet de contourner le SSL certificate pinning. Le traffic ne pouvant plus être réellement trusté après l'installation il est préférable d'utiliser un téléphone de test.

Pour installer Android-SSL-TrustKiller il suffit de :

  • Télécharger l'APK ici : pre-compiled APK
  • Installer l'application Cydia Substrate sur son smartphone
  • Installer les tools Android pour adb : # apt-get install android-tools-adb
  • Brancher son smartphone Android
  • Activer le mode développeur sur son smartphone
  • Activer le "Débogage USB"dans les "Options pour les développeurs"
  • Vérifier que le téléphone est bien reconnu alt
  • Lancer l'installation alt

Une fois la configuration en place on peut commencer à analyser les échanges. Quand on lance l'application on observe une première requête vers l'url http://api.gotinder.com/auth.
alt

Le détail de la requête :
alt

La réponse :
alt

On identifie donc 2 valeurs servant à s'authentifier, un id facebook et un token facebook. Pour le premier il est assez simple de le récupérer, il suffit par exemple de se rendre à l'adresse http://findmyfbid.com/ et de rentrer l'url de son profil facebook.
alt

Vous pouvez aussi très bien utiliser cette commande avec l'adresse de votre profil Facebook :
$ curl http://findmyfbid.com/ --data "url=https://www.facebook.com/your.name" | grep -m 1 -Eoh '[0-9]{7,10}'

Pour le token facebook c'est un peu plus compliqué, les moyens de le récupérer sans passer par le déchiffrement des échanges par un proxy sont limités. Il est possible de le trouver de la façon suivante avec le plugin firefox Firebug. Il faut lancer firebug et se rendre sur cette page facebook.
Vous devrez normalement vous connecter ou si vous l'êtes déjà vous obtiendrez cette popup : alt Cliquer sur "OK" et vous devez maintenant voir apparaitre une réponse à la requête POST confirm?.dpr1 dans l'onglet réseau de Firebug:
alt

Le token facebook correspond l'intégralité de la chaine de caractères de la variable access_token
Une fois que l'on possède son id et son token on peut commencer à dialoguer avec l'API de Tinder.

Il faut aussi savoir, et cela va avoir toute son importance ici, que Tinder a intégré pendant l'été 2016 une nouvelle fonctionnalité "Tinder Social" dans son application. Elle permet de "sortir entre amis" et de rencontrer d'autres groupes d'amis pour une orgie aller boire une bière ou deux ou plus.
Cet option que chaque utilisateur est amené à accepter et accepte comme d'habitude les yeux fermés permet à l'application d'accéder via facebook à la liste de ses amis qui utilisent aussi Tinder ! La réciproque est donc vraie, vos amis verront que, vous aussi, vous êtes en... recherche de l'âme soeur.

Pour dialoguer avec l'APi de Tinder quoi de plus sympas que d'utiliser Python. Je me suis servi de Mitmproxy afin d'analyser les différentes requêtes qu'effectuait l'application. J'ai pu ainsi identifier les URI correspondants aux différentes fonctionnalités de l'application pour les reproduire. L'API est dans l'ensemble assez simple et renvoi des données en JSON facilement parsables.

Lorsqu'on affiche un profil utilisateur sur l'application (Le fait qu'il s'agisse le profil d'un ladyboy Thailandais n'est que pur hasard) :
alt

La requête qui récupère l'intégralité de ses amis Facebook présent sur tinder :
alt

La requête envoyée lorsqu'on "like" un profil :
alt

Requête envoyée avec la géolocalisation :
alt

Requête lorsqu'on envoi un message :
alt

Liste des URI intéressantes dont je me suis servi ainsi que leur méthode :

URL_Tinder_API = "https://api.gotinder.com/URI" URI_Auth = POST "auth" URI_Profile = GET "user/user_id" URI_Facebook_Friends = GET "group/friends" URI_Like = GET "like/user_id" URI_Message = POST "user/matches/user_id_1_+_user_id_2" URI_Updates = POST "updates" (très verbeux, toutes les infos...) URI_Location = POST "user/ping" -> fonctionnalité payante bypassable URI_Recommandations = GET "user/recs" URI_Report = POST "report/user_id_1_+_user_id_2"

Avec ces URI voici les différentes actions possibles et intéressantes que l'on peut faire en les rejouant et que j'ai trouvé intéressant de scripter en python dans l'outil tinderStalker.py que vous pouvez trouver sur mon github : https://github.com/arishitz

Pour télécharger l'outil :

$ git clone https://github.com/arishitz/tinderstalker.git

Insérer ensuite l'ID et le Token Facebook dans le fichier credz.json et lancer l'outil :

$ python tinderStalker.py

alt

Les fonctionnalités détaillées du menu :

0) Lister l'ensemble de ses amis facebook qui sont présents sur Tinder...

1) Récupérer pour chaque profil ses informations dont son nom, la date et l'heure GMT (+1h pour la france) de sa dernière connexion. Tinder avait soit disant retiré cette fonctionnalité pour des problèmes de confidentialité et de vie privée mais en réalité cette valeur n'est juste plus affichée dans l'application mais bien présente dans les échanges... Il est aussi possible de récupérer le genre, la date d'anniversaire (biaisée mais correspond tout de même à la bonne année), la distance nous séparant. La bio (description du profil), le profil Instagram, l'école et le travail peuvent aussi être vus si renseignés. Et pour finir le nombre d'amis en commun (Facebook), les "matchs" en commun et surtout le nombre de "matchs" total du profil (souvent très révélateur...) !

alt

2) "Liker" un profil en particulier grâce à son id ou liker automatiquement les 100 profils (nombre maximum de profils "likables" par jour) qui nous sont recommandés par l'application sans avoir besoin de "swiper" vers la droite 100 fois comme un gros perver débile.

alt

3) Envoyer un message a un profil grâce a son id. Il faut qu'il y ait déjà eu un "match" avec ce profil évidement... Pratique comme fonctionnalité pour les bots, faux profils de "jolies" femmes Russes t'invitant à les rejoindre sur un autre site avec un lien. Quand on à faim ne fait pas attention et que l'on clique on arrive généralement sur un site d'adultes ou il faut créer un compte, c'est comme ça que les escrocs sont rémunérés, au nombre de compte créés.

4) Modifier sa géolocalisation, cette fonctionnalité est normalement payante et disponible avec "Tinder Plus" au tarif de 5€ minimum pour 12 mois. Cela permet de changer sa position géographique pour "matcher" avec des ladyboys en Thailande personnes partout dans le monde !

5) Mettre à jour, cette option est destinée a ceux qui souhaite exploiter et récupérer les données de leur profil (matchs, conversations, infos...) au format json.

6) Signaler un profil, cela ne sert quasiment à rien et vous n'aurez pas besoin de l'utiliser. Même si votre ex/futur ex semble se faire plaisir avec son nombre de matchs grandissant d'heures en heures il n'est pas éthique de reporter son profil 3 fois par jours pour "Photos inappropriées" ou "SPAM"...

7) Quitter, même quand vous ragez il faut arrêter de stalker "proprement" de temps en temps.

Bien d'autres possibilités sont envisageables (récupération des photos, création de bot...), j'encourage toute personne lisant cet article à essayer l'outil avec de bonnes intentions :] et pourquoi pas à regarder plus en détails le code et s'en resservir.

Un projet que je trouverais intéressant de réaliser mais le temps me manque serait de développer un bot tinder qui avec des gros boobs un physique sympa et classique "likerai" le maximum de profil et indexerai un maximum d'informations dans ELK (Elasticsearch Logstash Kibana) pour faire une analyse sociologique. Il serait possible de voir le temps de réponse moyen après un match, la réponse la plus employée, le pourcentage de gros cochons, faire un classement des messages les plus drôles, beaufs, tristes et tout cela par ville et bien plus encore :].

Il est aussi possible en créant plusieurs bots qui "matcheraient" avec une personne ciblée, de tracer cette personne en temps réel par triangulation.

Fap'ment,