Deblan blog

La toile

L'histoire des hackers

Je n'ai pas la prétention de pouvoir raconter cette belle histoire qui s'étend depuis plusieurs décennies. Cependant, je vous propose une rétrospective faite par Sabine Blanc et Ophelia Noor qui par les ondes de France Culture nous amènent quelques billes historiques très intéressantes.

Elles expliquent ce qu'ils sont et surtout leurs impacts dans l'informatique d'aujourd'hui, elles présentent aussi leurs objectifs, de leurs démarches, des différents mouvements des hackers. C'est vraiment intéressant et cette petit heure de podcast vaut vraiment le coup.

Un livre a été publié et sont encore disponible sur le site Owni qui fermera bientôt ses portes. C'est sans DRM, ça coûte rien et ça promet d'être une bonne lecture !


DebFlux a migré de version du BilboPlanet, mais...

DebFlux est mon outil principal pour lire les différents flux RSS auxquels je souscris. Il fonctionne pas trop mal et me permet, quelque soit la machine sur laquelle je me trouve, de suivre l'actualité des sites internet qui m'intéressent. Il s'appuie sur BilboPlanet, un logiciel libre que je hack pour le sortir (un peu) de son objectif initial : gérer un planet.

Il me sert énormément mais je dois dire que cette nouvelle version me surprend, surtout d'un point de vue technique. En effet, les développeurs ont choisi de faire un peu d'objet, un peu de procédural et de coller par dessus un moteur de template un peu dépassé. Peut-être voulaient-ils se passer de la gestion du cache et la déléguer à ce moteur ? Ou bien est-ce un choix pour rendre plus simple la modification du rendu et de gérer plusieurs thèmes ? Je ne sais pas, mais je reste sur ma faim.

Mon objectif au travers de ce billet n'est pas descendre le boulot abattu puisque j'apprécie le service qu'il me rend. Cependant, il me paraît nécessaire d'élever une critique qui pourrait aider à son développement, surtout d'un point de vue communautaire.

Dans un premier temps, je regrette qu'il ne repose pas sur un framework. Il aurait été vraiment intéressant que derrière ce CMS, un outil tels que Symfony, CakePHP, Zend Framework ou CodeIgniter ait été utilisé. La raison est simple : les méthodes de développement auraient été standardisées et ce travail aurait permis une intégration plus simple dans d'autres plateformes. Demain je souhaite intégrer le moteur de gestion des flux sur une application et je devrai me coltiner la réécriture du BilboPlanet.

Le choix du moteur de template me dérange. J'ai déjà utilisé un tel outil et ma conclusion est simple : quand on doit polluer son code PHP de méthodes ou fonctions propres au moteur de template, alors il faut changer d'outil. La couche de rendu doit être dissociée de la gestion des données et coller des $core->tpl-> partout dans son code, ça craint : je ne connais pas Hyla et ça me gonfle de devoir lire sa documentation alors que je dois simplement modifier la récupération des données. Il aurait été judicieux de travailler avec des méthodes proches de celles de Symfony : on a des données générées et stockées dans des tableaux simples (array) et le moteur de rendu pourra s'appuyer sur ce qu'il veut : PHP, Twig ou n'importe quoi d'autres. Qui plus est, ça facilite grandement l'intégration du code à l'intérieur d'autres projets.

D'un point de vue sécurité, j'aurais également apprécié d'avoir un grain de sel qui se paramètre à l'installation ou dans un fichier de conf. Avec la gestion de base, on peut brute forcer sans problème puisque qu'on connaît la clé définie en dure dans l'appel de la méthode de hash.

Enfin, pourquoi éparpiller les fonctions un peu partout dans le code ? C'est quand même intéressant de retrouver ses billes quand on connaît les répertoires où elles sont déclarées. Dans le code actuel, il y a un répertoire lib/ mais des fonctions sont écrites un peu partout ailleurs, typiquement l'index de l'administration. Heureusement que ctags est performant !

C'est le genre de projet qui mérite de recevoir des contributions et en ce qui me concerne, c'est le seul qui me convient pour gérer mes flux. Mais de mon point de vue, c'est une réécriture complète à faire.

Que faire ? Est-ce que je vais passer pour un élitiste après m'avoir lu, ou un gros con qui fait chier son monde car on ne fait pas comme il aime ? Faut-il forker ou bien contribuer en faisant un gros pull request avec moultes modifications ? No idea.


Pour cette fin du monde...

Je vais partager une vidéo qui m'a vraiment beaucoup plue ! Ca se passe en 2062, 50 ans après la fin du monde tel qu'on le connaît. Ces quelques minutes sont touchantes...dans un univers graphique sublime.


[Astuce] Contourner un bridage HTTP comme celui de Free

...et pas que d'ailleurs.

Si vous avez besoin de contourner un bridage quelconque sur un accès HTTP alors plusieurs dispositifs existent. Dans cet article, deux outils seront présentés et vous verrez qu'ils sont simples à mettre en place.

Avant toute chose, sachez que vous êtes responsable de vos actes, donc évitez de faire ça n'importe où, ça pourrait vous causer des ennuis :)

La première solution pourra être mise en place si vous possédez un serveur Linux. Il s'agit d'installer un proxy HTTP accessible uniquement en local et auquel vous serez connecté via une connexion SSH.

J'ai choisi de travailler avec privoxy et le serveur est sous Debian.

1. Installation de privoxy
$ su -
# aptitude update
# aptitude install privoxy
# aptitude clean

On va vérifier qu'il est en fonctionnement avec lsof. Sachez que privoxy écoute par défaut sur le port 8118.

# lsof -i :8118
COMMAND  PID    USER   FD   TYPE  DEVICE SIZE/OFF NODE NAME
privoxy 9064 privoxy    4u  IPv4 1544903      0t0  TCP localhost:8118 (LISTEN)

Si lsof ne retourne rien, vérifiez que le port est ouvert sur votre firewall et relancez le serveur :

# service privoxy restart
2. Ouverture de la connexion coté client

On va ouvrir une connexion SSH vers le serveur et créer un tunnel. Quand votre client effectuera une connexion TCP sur votre machine locale (port 8118), la requête sera transmise au serveur privoxy et ce dernier fonctionnera comme un relais.

2.1. Vous êtes sur Linux, BSD ou bien sur Mac

Dans un terminal :

$ ssh -NL 8118:localhost:8118 votre_serveur -l votre_login

Une fois la ligne de commande entrée, laissez le terminal ouvert.

2.2. Vous êtes sur Windows

Il faudra passer par un client comme Putty. Si vous utilisez Putty, suivez le tutorial suivant. Indiquez simplement "8118" à la place de "8887" et "6667".

3. Configuration du navigateur internet

La dernière étape consiste à configurer votre navigateur internet. Pour ce faire, rendez-vous dans la gestion du proxy et paramétrer le serveur localhost et le port 8118. Voici un exemple avec Firefox :

Proxy Firefox

Sachez qu'avec cette méthode, tout est chiffré entre vous et le serveur proxy. Elle est intéressante pour traverser un réseau susceptible de vous surveiller. L'ensemble des accès vers le web passera par ce proxy sauf si vous indiquez des exceptions (noms de domaines). Comme le trafic est chiffré, vous aurez nécessairement une perte de débit plus ou moins importante suivant votre machine, le serveur et le débit entre


La méthode suivante est intéressante dans le cas de Free. En effet, il n'est pas nécessaire de passer tout le temps dans le proxy mais seulement sur certaines pages. On va donc utilisez un service en ligne (autre type de proxy). J'ai choisi de travailler avec Proxfree car il a le mérite d'être gratuit et de faire le taf qu'on lui demande.

Vous avez maintenant deux solutions : vous rendre sur Proxfree et rentrer manuellement les informations ou bien automatiser tout cela.

De mon coté, je suis un flemmard et je n'ai pas envie de le faire manuellement. Mon objectif ici sera d'accéder à Youtube et contourner les restrictions de débit de Free (mon FAI).

1. Préparer votre navigateur

Pour continuer la manipulation, vous devrez installer le plugin Greasemonkey. Il est disponible pour Firefox, Chrome et un mec a même fait un plugin pour Internet Explorer. Pour rappel, Greasemonkey permet d'exécuter des scripts javascript sur les pages de son choix.

2. Configurer Greasemonkey

Note : Greasemonkey vous demandera quel éditeur de texte vous utilisez.

Une fois Greasemonkey installé, ajoutez-lui un nouveau script. Plusieurs paramètres vous seront demandés : indiquez "proxy_free" comme nom et comme namespace puis incluez les URL suivantes : http://www.proxfree.com/?proxy_it et http*://*youtube.*/watch*. Vous pourrez ajouter d'autres URL si vous le désirez. La seule obligatoire est http://www.proxfree.com/?proxy_it.

Une fois ces paramètres définis, il faudra placer le code suivant :

// ==UserScript==
// @name        proxy_free
// @namespace   proxy_free
// @include     http*://*youtube.*/watch*
// @include     http://www.proxfree.com/?proxy_it
// @version     1
// ==/UserScript==


if((document.location.href).toString().indexOf('proxy_it') === -1) 
{
	GM_setValue('get', document.location.href);
	GM_setValue('main_submission', 'PROXFREE');
	GM_setValue('pfserverDropdown', 'http://eu.proxfree.com/request.php?do=go');
	GM_setValue('allowCookies', 'on');
	GM_setValue('removeTitle', 'on');
	GM_setValue('pfipDropdown', 'FR-Rou');
	GM_setValue('removeScripts', 'on');
	GM_setValue('removeObjects', 'on');
	GM_setValue('noReferer', 'on');
	GM_setValue('noUseragent', 'on');

	var proxy = document.createElement('div');
	proxy.innerHTML = '<div style="position: fixed; top: 100px; left: 0; background: red; padding: 5px"><button id="proxy_it" onclick="document.location.href = \'http://www.proxfree.com/?proxy_it\'">PROXY</button></div>';
	document.body.appendChild(proxy);
}
else
{
	var form = document.getElementsByTagName('form')[0];
	var form_html = '';
	var fields = ['get', 'main_submission', 'pfserverDropdown', 'allowCookies', 'removeTitle', 'pfipDropdown', 'removeScripts', 'removeObjects', 'noReferer', 'noUseragent'];

	for(i in fields) {
		form_html += '<input type="hidden" name="'+fields[i]+'" value="'+GM_getValue(fields[i])+'" />';	
	}

	form.innerHTML = form_html;
	form.submit();
}
3. Tester que tout fonctionne

La dernière étape consiste à tester que Greasmonkey et le script fonctionnent bien. Pour ce faire, rendez-vous sur une page de visualisation de vidéo Youtube. Vous devriez voir une bouton rouge très moche tout à gauche de votre page. Cliquez dessus et attendez un instant. Ce script va automatiquement configurer Proxfree et vous rediriger (derrière le service) sur Youtube.

Enjoy :)


Free et Youtube, la preuve que c'est une question d'argent

Ce n'est pas nouveau : entre Free et Youtube (en autres) il y a des réductions de débit importantes. Pourquoi cela ? Rien d'officiel pour le moment et aucune communication n'est faite à ce sujet. Mais naïvement j'ai téléphoné au service technique car je pensais que mon routeur était défectueux, j'ai expliqué le problème et après 45 minutes de conversation, voila ce que mon interlocteur du service client Free m'a répondu :

« [...] Une panne de facturation entre Free et Youtube parce qu'il y a des droits [...] »

D'après le service client, cette panne est connue et remontée par le service technique, un ticket est d'ailleurs ouvert depuis le 26 octobre 2012. Les Freenautes subissent ça depuis des mois déjà.

Des stats de débit ont déjà été faits et je vais vous diriger vers le blog de bartounet avec cette article qui décrit très bien ce que je raconte.

Voici une illustration du bridage par Free contourné par l'utilisation d'un proxy. C'est mon ami Ohax qui est à l'origine de la vidéo.


A défaut de faire un long discours, voila les moments clés de l'entretien.

Télécharger le fichier.

Il m'en aura fallu du temps pour en arriver là mais c'est bien clair : c'est une histoire d'argent qui conduit Free à brider Youtube.

Je ne vais pas faire un énième discours sur la neutralité du net mais sachez que si personne ne réagit alors ces pratiques vont continuer et s'intensifier ! C'est tout bonnement dangereux et il faut lutter contre !

Note : si on me ressort que la vidéo prend trop de bande passante et que c'est légitime de brider Youtube alors je souhaite aussi que ma télévison par Internet en HD qui fonctionne à merveille soit elle aussi bridée. Après tout, ça devrait aussi les embêter...