Moi-même bien que me devant de ne pas ignorer la chose, j'avoue ne pas être adepte de ce site pour diverses raisons mais estime illégitime de lutter contre via la censure. Aussi, je me suis intéressé aux projets de proxy. De plus en tant que secrétaire national, j'ai une responsabilité pénale et morale dans cette affaire et c'est donc naturellement qu'avant la mise en production du projet qui devait utiliser UnblockedPirateBay à l'origine (nous en étions à choisir la taille du logo et placer les mentions légales), que j'ai été surpris par plusieurs aspects dans le code source de UnblockedPirateBay.
UnblockedPirateBay : des étrangetés
- Tout d'abord le code source est encodé (ce qui fait qu'il n'est pas lisible facilement : cela se nomme de l'obfuscation), c'est un comportement qu'on retrouve généralement dans les logiciels propriétaires, pas tellement chez les "pirates". D'autant que l'auteur se justifie en disant que le script sera plus rapide ainsi (ce qui est faux). Voir le fichier "Readme" : << ... encoded firstly for speed, secondly as I've spent a lot of time on here ironing out as many bugs as I can to keep the functionality and speed of the script as fast as possible. >> .
- Le bas de page comporte plusieurs différences avec le site original de thepiratebay.se
- L'auteur du proxy ne se fait connaitre à aucun endroit sur son site et même appel à faire des donations aux Parti Pirates plutôt qu'à lui même (trop gentil pour être totalement désintéressé : les cout serveurs pour son sites justifieraient au moins quelques remboursements).
- Sur un ou deux endroits, il semble que le travail ait été baclé et il est dit que ça sera fait plus tard (pourtant ça n'est pas bien compliqué et certaines fonctionnalités sont faites avec la rigueur requise, alors pourquoi ?)
- Enfin, dans un esprit d'opensource, de libre enfin de partage (c'est The Pirate Bay tout de même !), il est surprenant de ne pas avoir forké un projet libre ou même en avoir juste fait la promotion (par exemple cet outil est très générique : phproxy et il y en a quelques autres).
J'ai donc décodé le code source pour être un peu plus sur de ce que nous allions mettre en production[1]. Et là j'ai vu encore d'autres choses. Et avec un esprit un peu pervers. En effet, une fois le code lisible, on peut lire des commentaires (lorsqu'on programme, on ajoute des lignes de texte ligne pour expliquer ce que l'on fait au dessous) pas très cohérent avec ce qui est réalisé et, plus, on peut lire un commentaire qui ajoute de nouvelles raison au fait que ce soit encodé (pour éviter que l'on retire son nom), qui nous autorise à le faire (parce qu'on est doué ?) et qui nous dit en plus qu'il y a des appels qui sont fait entre le script et le site UnblockedPirateBay (pour plein de bonnes intentions). Voir le texte en anglais, dessous [2].
Cela devient encore plus louche.
UnblockedPirateBay : les malware qu'il contient
Du coup j'ai regardé ce que faisait le code.
- Il remplace les liens vers le site de utorrent vers des sites de malware[3] [4], il fait aussi d'autres remplacement de ce type mais j'ai pas pu tout analyser.
- Il utilise le code qui s'échange entre son site, UnblockedPirateBay, et le script pour injecter du code javascript (ce n'est pas directement dangereux, mais ça pourrait le devenir)
- Il remplace certaines publicités de TPB par les siennes (à noter néanmoins qu'il nous invite à le faire nous aussi dans le fichier "readme")
Dans tous les cas, il est certain qu'en propageant son programme chez beaucoup de monde, il espère récupérer de l'argent via des revenus détournés. La force réside malheureusement sur la crédulité du public sur internet. Les intentions affichées semblent aller dans le sens que nous aimerions et l'on a tendance à croire que son prochain cherche systématiquement à nous être sympathique. Ce n'est pas toujours le cas.
Ma conclusion personnelle
Aucun projet ne prend 5 minutes à être réalisé.
Le proxy http://tpb.partipirate.org qui a commencé à être annoncé hier (et qui est en travail depuis plus d'une semaine) a finalement été fait directement via un reverse proxy sur nginx. Cela prend quelques lignes et ici le proxy est fait sans recompilation des sources de nginx [5] (n'étant pas utilisateur de TPB, je n'ais pu tester que les fonctionnalités principales). C'est une action très positive et il faut aussi que nous soyons capable de faire du buzz sur des actions pragmatique et légitime. Néanmoins, d'un point de vu idéologique, je trouve dommage de ne pas avoir envisagé la question sous un angle plus global et de créer proxy plus générique. Un proxy pouvant servir de relais pour tous les sites censurés à travers le monde (dont le contenu peut-être plus "politique" que TPB). Ceci avec phproxy, un VPN ou même un serveur proxy anonyme. Néanmoins là aussi il faudra du travail pour étudier la légalité, la technique et les contraintes associés (ban d'ip, NDD, surcharge, ...).
Quoiqu'il en soit il y a toujours des risques à se lever de son lit et il faut juste savoir pour quoi nous nous le faisons. De plus, une action militante, comme un proxy vers TPB ne doit pas nous détourner du sérieux qui est le notre au sein du Parti Pirate et avant de faire ce type d'action, nous devrions continuer de prendre le temps de le faire avec soin. C'est le cas pour la plupart de nos actions et c'est ce qui fait notre force et nous apportera des résultats par la suite. De plus, il faut toujours garder les yeux ouverts et d'ailleurs je vous invite à vérifier ce que je viens de vous dire en téléchargeant les sources d'origine du projet et d'en observer les sources (quand bien même je ne serai pas malveillant, je peux être faillible). Si vous avez quelques maigres notions de PHP, vous n'aurez aucun mal (le code est très basique).
Dans l'hypothèse où les sources seraient modifiées entre temps, j'en ai fait une copie ici mais vous pouvez aussi les prendre sur le site de son auteur unblockedpiratebay.com/external.
Les notes de bas de page
[1] Vous pouvez décoder à l'aider de ce bout de code par exemple :
Code : Tout sélectionner
function decode($str, $iter=0) {
$iter++;
$str = str_replace('eval(', 'return(', $str);
$str = eval($str);
if($iter < 300 and preg_match('/gzinflate/i', $str)>0) {
return decode($str, $iter);
}
return $str;
}
echo decode("Le code sources de la page du type eval(gzinflate(str_rot13(base64_decode ... ");
//Merci pour votre indulgence sur la qualité de ce code, mon objectif n'était pas là.
[2] Commentaire dans le code, après décodage : << The reason for base64 encoding some stuff is most people, I included, will remove credits etc instantly that dont effect functionality, removing my credit, without worrying whether it effects them.
I would like the credits kept in, but you are more than free to remove them, and just by getting to reading this, you deserve the right to remove them.
You will notice some calls to my server, in the footer etc, these will be used to I can insert an image or text if thepiratebay changes something major and the script stops working, allowing me to inform the site owner, and offer updates. >>
[3] Un malware est un logiciel malveillant. Ce n'est pas nécessairement un virus mais l'objectif est de gagner de l'argent en vous faisant visualiser des publicités ou, d'espionner et éventuellement vous conduire à dépenser de l'argent. Il maîtrise la page qui fait la redirection, actuellement ça pointe sur http*//galleries.blamcity.com/c43ae4a8fa8e0f/c437e3a9f3820e/c6/8429d0ed/c1/ (je ne connais pas ce logiciel mais manifestement c'est pas utorrent ... et je vous invite à ne pas le télécharger (même sans l’exécuter).
[4] Un morceau de code choisi :
Code : Tout sélectionner
//adjust buttons
$rr1 = 'http://bflixdownload.info/';
$rr2 = 'http*//unblockedpiratebay.com/external/download.php';
$toremove = str_replace("$rr1","$rr2", $toremove);
$rr1 = 'http://www.utorrent.com/downloads';
$rr2 = 'http*//unblockedpiratebay.com/external/torrentclient.php';
$toremove = str_replace("$rr1","$rr2", $toremove);
$rr1 = 'http://www.utorrent.com/';
$toremove = str_replace("$rr1","$rr2", $toremove);
[5] La zone nginx sur le serveur du Parti Pirate (mériterai un peu d'optimisation) :
Code : Tout sélectionner
upstream ext-tpb {
server 194.71.107.80:80;
}
server {
listen 80;
server_name tpb.partipirate.org;
location = /robots.txt {
echo "User-Agent: * \nDisallow: /";
break;
}
location / {
proxy_set_header Host thepiratebay.se;
proxy_pass http://ext-tpb;
proxy_cache off;
#proxy_cache_valid 200 0;
#proxy_cache_use_stale error timeout invalid_header updating http_500 http_502 http_503 http_504;
if ( $request_uri !~* \.(gif|jpg|jpeg|png|css|js|txt)$ ) {
echo_after_body "<p style='text-align:center;'><b><i>This is a Pirate Bay proxy set up by the <a href='https://www.partipirate.org'>Pirate Party of France</a> to support the Pirate Party of the United Kingdom. We do not host any content. </i><br/>Ceci est un proxy vers The Pirate Bay mis en place par le <a href='https://www.partipirate.org'>Parti Pirate Français</a> en soutien au Parti Pirate UK. Nous n'hébergeons aucun contenu.</b><br/><a href='https://www.partipirate.org/spip.php?article107'>Mentions legales</a></p>";
}
}
}