J'utilise peu les trackers torrent privés, car ils sont généralement gavés de pubs et de demandes implicites de financement (ratio) alors que j'veux partager sans faire de commerce (l'acte commercial étant ce qui caractérise, pour moi, le téléchargement illégal), de conditions d'utilisation merdiques (ratio, liker pour télécharger, etc.) et de règles chiantes / chamailleries contraires à l'esprit de partage notamment pour les téléversements (telle mise en forme bullshit imposée, pas le contenu de telle équipe, pas le contenu provenant de tel endroit car il nous pompe nos contenus, etc.). Sans compter que ça forme des communautés éclatées qui ne se parlent pas (la DHT est inopérante, par exemple), ce qui amoindri la force du réseau torrent. Mais parfois, je ne trouve pas ce que je recherche sur les trackers publics.
Sur les trackers privés, il y a généralement une contrainte de téléverser autant que tu télécharges. C'est le ratio. Pour une raison que je n'explique pas, ce mécanisme incitatif est contre-productif : sur les trackers publics, j'émets à environ 3 mo/s constant avec de fréquents pics durables à 8 mo/s. Sur un tracker privé, j'émets très rarement… Comment le tracker choisit les IPs de pairs qu'il distribue ? Il existe plein de logiciels pour falsifier ce ratio (surtout pour winwin, de mémoire). Il est aussi possible de se créer un nouveau compte utilisateur à l'aide d'adresses emails jetables dès que le précédent est interdit de téléchargement pour cause de ratio négatif.
L'autre soir, je me demandais : comment un tracker est informé du volume de données téléchargées et émises ?. Par le client torrent qui télécharge / émet ? Par ceux depuis lesquels il télécharge / vers qui il émet ? La réponse est : par le client qui télécharge / émet. Voici le type de requête HTTP effectuée par un client torrent auprès d'un tracker (ici, à la fin d'un téléchargement) :
GET /<identifiant_torrent>/announce?info_hash=<CENSURE>&peer_id=<CENSURE>&port=6881&uploaded=0&downloaded=2064257560&left=0&corrupt=67108864&key=<CENSURE>&event=completed&numwant=200&compact=1&no_peer_id=1&supportcrypto=1&redundant=26712331&ipv6=<CENSURE>
Host: <nom_machine_tracker>
On voit très clairement « downloaded=2064257560 » + « uploaded=0 ». J'ai téléchargé 1,9 Go, et j'ai téléversé 0 octet.
Une falsification simple de son ratio consiste donc à bloquer le trafic destiné au tracker dès lors que le téléchargement a commencé, c'est-à-dire dès que le logiciel client torrent a récupéré une liste de pairs auprès du tracker, donc que l'utilité de ce dernier diminue. Une fois le téléchargement terminé, il faut supprimer le torrent du client torrent avant de retirer la règle de filtrage, sinon le client torrent balancera les infos au tracker.
Mise en œuvre avec Netfilter (le pare-feu de Linux) et nftables (la nouvelle interface pour piloter Netfilter) :
sudo nft add table inet filter
sudo nft add chain inet filter OUTPUT '{ type filter hook output priority 0; policy accept; }'
sudo nft insert rule inet filter OUTPUT ip daddr <adresse_IP_du_tracker> counter drop
Voir mes notes sur nftables pour apprendre comment supprimer une règle (c'est beaucoup moins intuitif qu'avec iptables
).
Testé avec le client torrent Deluge et approuvé.
Vu que la communication avec un tracker se fait au-dessus du protocol HTTP (web), on pourrait également la falsifier avec un proxy HTTP. :D