PROJET AUTOBLOG


Shaarli - Mitsu'liens

Site original : Shaarli - Mitsu'liens

⇐ retour index

Collecter des infohash Bittorrent depuis la DHT

samedi 13 mai 2017 à 17:19

Petit tuto de ce que j'ai fait l'autre jour :) https://framapiaf.org/@mitsu/550072

Comme vous le savez, la DHT (Distributed Hash Table) est le mécanisme décentralisé utilisé par les logiciels Bittorrent pour échanger les informations sur les torrents, ainsi que les sources et pairs.
Ainsi lorsqu'on lance son logiciel Bittorrent, celui-ci va servir de relais pour une "branche" de la DHT. Ce qui permet donc de collecter des infohash qui circulent (rattachés ou non à un torrent authentique), et avoir un aperçu de ce qui est échangé sur le réseau.

Étape 1: la collecte. Pour ce faire, j'ai configuré qBittorrent pour qu'il utilise le port UDP 51515 pour les connexions DHT. Peu importe le port, c'est juste pour ne pas avoir trop de pollution par la suite.
Étape 2: lancer Wireshark et le faire écouter la carte réseau, avec un filtre de capture: "port 51515"

Laisser tourner quelques temps :) En 10 minutes vous aurez déjà pas mal de données à vous mettre sous la dent.

Étape 3: dans Wireshark appliquer un filtre d'affichage pour ne garder que les paquets contenant des infohash: "udp contains 5f:68:61:73:68:32:30:3a"
(5f:68:61:73:68:32:30:3a étant la valeur hexa pour le texte UTF-8 "_hash", on aurait pu faire un filtre sur le tag entier "info_hash" mais c'est pas nécessaire)
Ensuite, cliquez sur Edit > mark all displayed packets.
Et enfin: File > Save as (en ne sélectionnant que les paquets marqués)

Étape 4: exporter la payload des paquets en hexadécimal brut. Simple ligne de commande: tshark -r fichier.pcapng -Tfields -e data >> fichier.txt

Étape 5: extraire les infohash. Voilà la commande: cat fichier.txt | grep -o -P "5f6861736832303a.{0,40}" | sed 's/5f6861736832303a/magnet:?xt=urn:btih:/' | sort -u >> infohash.txt
(détail: on prend le contenu brut, on vise la séquence hexa correspondante à "_hash" et on inclut les 40 chiffres hexadécimaux suivants, puis on remplace la séquence par le schéma pour avoir des liens magnet, que l'on trie pour supprimer les doublons, et on sort le résultat)

Étape 6: récupérer les .torrent correspondants aux infohash, sachant qu'il y a beaucoup de spam sur le réseau: vous n'aurez peut-être qu'une poignée de fichiers .torrent. Pas grave. Commande:
aria2c --bt-save-metadata --bt-metadata-only --enable-dht6=true --dht-entry-point='dht.transmissionbt.com:6881' --dht-entry-point6='dht.transmissionbt.com:6881' --max-concurrent-downloads=3 --timeout=40 --bt-stop-timeout=30 --dht-file-path=dht.dat --dht-file-path6=dht6.dat --input-file=infohash.txt

Détail: Aria2 est un puissant logiciel de téléchargement. Ici, on indique en paramètre que l'on ne veut que les .torrent (pas les fichiers partagés eux-même), maxi 3 simultanés pour ne pas être rejetés par les liens DHT, en utilisant les fichiers de relais DHT du répertoire courant (vous voudrez peut-être utiliser Aria2 pour télécharger un torrent populaire, de sorte à créer ces fichiers de "voisins" dans la DHT).

Et voilà ! Vous obtiendrez des fichiers .torrent, dont vous pourrez afficher le contenu avec aria2c -S *.torrent
Libre à vous de les utiliser ensuite pour créer votre propre The Pirate Bay, de manière complètement autonome, avec uniquement des torrents effectivement échangés sur le réseau ^^

Permalink