PROJET AUTOBLOG


Le blog de Mitsu

Archivé

Site original : Le blog de Mitsu

⇐ retour index

Chiffrement LUKS-dmcrypt et automontage

samedi 21 mars 2015 à 23:44

Aujourd’hui, j’ai chiffré mon disque dur :)

Contexte: j’utilise 2 volumes de stockage internes, à savoir un SSD (pour le système, le /home etc) et un disque dur bien gros (pour l’archive du Mitsu’Media, les fichiers de jeux Steam, …). Le SSD se compose ainsi:

Ça, c’est une combinaison de flemmardise et de bidouilles: l’assistant installation d’Antergos permet de chiffrer le périphérique avec LUKS-dmcrypt, mais pour cette opération il crée un « plan standard » de partitionnement: un /home, un /, et un espace swap. C’est pourquoi j’ai choisi LVM, car alors avec un peu de bidouille on peut supprimer le swap et fusionner le /home au sein du /. Pratique, car GParted n’est d’aucune aide, car ne traitant pas les conteneurs LUKS-dmcrypt.

Bref ! Le disque dur de stockage était bêtement sous partitionnement MBR et type ext4 avec montage automatique défini dans /etc/fstab.


 

Dans un premier temps, j’ai transféré toutes les données de ce disque dur interne vers des disques durs externes. Puis une fois le disque dur vidé, je l’ai formaté ainsi:

Jusque là, c’est cool: gnome-disk-utility (ou palimpsest) dispose d’une fonction de formatage LUKS-dmcrypt, c’est enfantin.

À présent, au démarrage de l’ordinateur, après m’avoir demandé le mot de passe pour déchiffrer le SSD, le système me demande le mot de passe pour déchiffrer le DD. Rébarbatif ! On va automatiser ça.

LUKS est super pratique, car il dispose de « slots » où l’on peut définir un mot de passe, ou un keyfile (dont les X premiers octets sont utilisés comme clé). On peut à tout moment ajouter ou supprimer des clés dans ces slots (en veillant à toujours garder au moins 1 slot utilisé, car sinon après on peut plus déchiffrer, normal). Et si l’on définit un keyfile, il est possible de faire un montage automatique au démarrage. L’intérêt étant bien sûr de placer ce keyfile dans le SSD déjà chiffré par mot de passe.

Ainsi donc, au démarrage, le PC demande le mot de passe pour booter sur le SSD, SSD sur lequel se trouve le keyfile utilisé par crypptab pour déverrouiller le DD, DD qui est ensuite monté automatiquement par fstab.

Mon dernier problème: si le /home est intégralement sauvegardé 2 fois sur disques durs externes, ce n’est pas le cas du DD, beaucoup trop gros. Donc je me cherche une solution:

Financièrement la dernière solution semble meilleure, mais avec quelle solution de chiffrement ? Je pensais par exemple à du 7-zip à mot de passe: chiffrement AES donc assez solide, les noms de fichiers dans l’archive sont aussi chiffrés, et il y a un contrôle d’intégrité… bref, déjà finir le retransfert des données ^^

Petit test de compression d’images

jeudi 12 mars 2015 à 12:55

L’informatique évolue, les techniques de compression s’améliorent, et il est trop facile de rester figés dans ses anciennes habitudes :) Donc j’ai voulu faire un petit comparatif de compressions d’images spécialisées photographies.

Image source: Sunset at Fjärdlång, Stockholm archipelago (Sweden) par Tommie Hansen (Creative Commons by)

Pour cette image, j’ai fait une première compression JPEG (libjpeg-turbo) avec niveau de qualité faible mais toutes les optimisations disponibles: en sort une image de 320 ko, mon « mètre-étalon », toutes les autres techniques de compression devront faire des images de poids égal ou inférieur.

Et puisque je ne peux pas envoyer un fichier PNG pour chaque compression (+ de 20 Mo à chaque fois), j’ai extrait une partie de l’image avec imagemagick: -crop 1200×700+3700+500  (cette zone correspond aux arbres en arrière plan à droite, une bonne cible car peu représentatifs de l’image mais tout de même assez détaillés).

Voici donc le résultat libjpeg-turbo fait avec GIMP (cliquez pour avoir en taille réelle):

zjpg

Pour remplacer JPEG, il y a eu 2 formats: JPEG-XR et JPEG2000. Globalement, ils se sont plantés: très faible adoption et des problèmes de brevets et tout. JPEG2000 est une compression wavelet tandis que JPEG-XR est un classique DCT. J’ai obtenu avec XnView, JPEG2000:

zjpg2000

On remarque que la technique de compression wavelet a du sens pour les dégradés, mais des détails sont complètement « lavés ».

JPEG-XR:

zjxr

Un peu mieux, non ? Bon, passons aux choses sérieuses. Firefox ne sait pas (encore ?) décoder les images WebP, et il y a une raison à cela: Mozilla a estimé que le WebP n’apporte qu’un faible gain de qualité par rapport à JPEG (je suis pas de cet avis), et pour le prouver ils développent une nouvelle bibliothèque d’encodage JPEG, nommée MozJPEG. L’avantage est énorme: il produit des images lisibles par tous les décodeurs JPEG disponibles. Donc pour tester cela, j’ai compilé MozJPEG 3, qui vient en remplacement de libjpeg-turbo (donc GIMP peut l’utiliser). La compression est plus lente, mais on remarque tout de suite que le paramètre de qualité peut être tiré vers le haut par rapport à libjpeg-turbo pour obtenir un poids équivalent. Voici donc ce que ça donne:

zmozjpeg

Visuellement, MozJPEG est meilleur que JPEG-XR. Bien joué ! Bah du coup je garde MozJPEG comme librairie d’encodage JPEG sur mon PC :) Mais ça reste qu’un « petit ».

Passons aux champions issus du monde de la vidéo: WebP et BPG. Le premier utilise les techniques d’encodage du VP8 développé par Google, le second les techniques du H.265 et est crée par Fabrice Bellard. Oui, LE Fabrice Bellard.

La principale amélioration de ces formats de compression est leur filtre de deblocking. Visuellement, ça rend beaucoup mieux. Voici ce que ça donne en WebP via plugin GIMP:

zwebp

Et maintenant, BPG via bpgenc:

zbpg

C’est diablement difficile de les départager. BPG parvient à un peu plus de détails (cime des arbres, moins de « bavures », la mousse sur le rocher..) MAIS crée une sorte d’inconsistance de qualité, on arrive à distinguer des blocs dans les arbres. Si on observe la mer et les nuages, BPG s’arrache un léger avantage de qualité.

Avec WebP et BPG dans un mouchoir de poche, la suite s’annonce intéressante. Car Google continue de foncer dans son format vidéo, avec le VP9 dont j’espère de nettes optimisations de compression à la prochaine version stable de libvpx, alors que Google annonce déjà commencer à bosser sur VP10…   Côté H.265, bah ça se tourne les pouces…  j’ai fait quelques tests avec x265 par exemple, et bien on est encore loin de remplacer H.264 high 10bit.

BPG bien que prometteur pourrait ne rester qu’une « démo technique », qui se heurterait aux cauchemars des brevets relatifs à JPEG, l’histoire du GIF, les clowneries du MPEG-LA avec H.264 et les horizons à peine éclaircis avec H.265.

Et puis je me dois de mentionner le projet Daala, supporté par la fondation Xiph et Mozilla, qui pourrait également introduire un format d’image hautement efficace en se débarrassant des contraintes de la compression DCT et de la lessiveuse wavelet pour des techniques inédites.

ISIS-chan

lundi 26 janvier 2015 à 12:59

On se rappelle d’Ebola-chan ? Voilà ISIS-chan.

isis-chan_B8OyIG8CAAIM3ZQ

ISIS, caricaturée sous les traits d’une jeune femme.

En y pensant, c’est une très bonne réponse: les médias étant les médias, toutes les prises d’otages et exécutions sont rapportées. À défaut de censurer toute information à ce sujet, il y a que trois options: déstabiliser le peuple et le gouvernement les faisant sur-réagir et envoyer des troupes (l’objectif de terroristes), ignorer la prise d’otages, ou décrédibiliser les preneurs d’otage via la caricature.

En réalité il est impossible de sauver des vies (vu que si payement de rançon il y a, davantage de prises d’otages auront lieu plus tard conduisant mécaniquement à davantage de morts). Le problème étant aussi que les médias ont la (très mauvaise) habitude d’interviewer la famille etc et donc d’afficher de l’émotion pure et contagieuse, démontrant aux preneurs et apprentis preneurs d’otages que l’action est efficace. Il leur est alors facilement possible de détourner la faute de la conclusion (exécution) au gouvernement. Ce que ISIS a fait en rejetant la faute sur Shinzo Abe pour l’exécution de Haruna Yukawa.

En fait, les internautes japonais avec #ISISクソコラグランプリ « ISIS grand prix du collage pourri » et #ISISちゃん  « ISIS-chan »  jouent avec un couteau à double lame (si vous me permettez..): rire et se moquer des preneurs d’otages leur démontre que le peuple n’a pas peur d’eux et ne se laisse pas faire et que toute nouvelle action sera à nouveau raillée et caricaturée, le revers de la médaille étant que ces moqueries pourraient leur faire sous-estimer le danger de la zone (imaginez carrément un pèlerinage de japonais voulant voir de leurs propres yeux la zone contrôlée par ISIS pour espérer rencontrer ISIS-chan et partager un melon avec elle…). Cependant, les internautes ont aussi un objectif avec ISIS-chan: faire du « Google bombing » avec de la SEO efficace pour contrer les images de propagande d’ISIS et polluer leur communication sur le web bien mieux que la contre-propagande souvent ratée par la CIA.

En vertu de la constitution japonaise et de son article 9, le Japon renonce définitivement à la guerre. Ce qui fait débat bien sûr puisque dès l’intervention américaine lors de la guerre de Corée, le général MacArthur a demandé au gouvernement japonais de constituer une force militaire d’auto-défense, la JSDF. Laquelle n’a jamais vraiment remplacé les bases militaires américaines au Japon mais dispose d’un potentiel militaire suffisant pour repousser toute attaque venant de Corée du Nord (mais sans doute pas de Chine) ~ ce qui entre en contradiction avec l’article 9. Or, puisque la JSDF ne fait pas la guerre, les troupes sont régulièrement envoyées comme soutien à la reconstruction dans les zones de conflit notamment Irak. Bien que la JSDF ne dispose pas de capacité de riposte tout comme les Casques Bleus de l’ONU, leur implication logistique a désigné le Japon comme cible possible pour ISIS. D’où cette prise d’otage, avec une demande de rançon équivalente aux fonds débloqués par le Japon pour la logistique en Irak (200 millions de dollars). Les otages sont Kenji Goto, journaliste freelance, et Haruna Yukawa, décrit comme « touriste de guerre », ils ne font pas partie de la JSDF et des opérations logistiques du Japon.

Bien évidemment, l’article 9 interdit à la JSDF d’entrer en conflit armé avec ISIS même pour libérer des otages, et il ne fait pas de doute que l’ISIS le sait, forçant la main sur la négociation. Et en matière de libération d’otages, les forces occidentales engagées en Irak sont… pas hyper efficaces #euphémisme. Reste la seule solution, super dangereuse: équiper et soutenir les armées irakiennes et insurgés kurdes du territoire du Kurdistan irakien, ainsi que les insurgés syriens qui ne sont ni avec ISIS, ni avec Bachar el-Assad. Avec une situation très explosive avec le Pakistan, la Turquie, l’Iran, l’Arabie Saoudite, l’Israël, l’Afghanistan, la Palestine, le Yémen et les Émirats Arabes Unis, tous impliqués dans un mouchoir de poche avec des oppositions religieuses (juifs, chrétiens, kurdes, chiites, sunnites, wahhabites, ..). Et c’est sur ces divisions et tensions que l’ISIS a pu « facilement » se croquer les nords de la Syrie et l’Irak. S’attaqueront-ils aux puissants Turquie et Iran ? Probablement pas. Ils pourraient par contre gober la Syrie et se placer face à l’Israël (sans pour autant entrer en guerre contre eux, mais ça leur assurerait un fort recrutement parmi les peuples qui n’ont pas de sympathie pour Israël aka «le petite satan»). Mais le pire là-dedans: les énormes stocks de gaz moutarde, sarin et VX dont dispose la Syrie. Oui, il y a urgence à démanteler ces stocks avant qu’ils tombent entre de mauvaises mains. Je m’entends: entre des mains encore plus mauvaises que le sanguinaire Bachar el-Assad.

ISIS-chan, tout comme Ebola-chan, sont des personnifications « moe » particulièrement controversistes très appréciées par 2ch/4chan/8chan/reddit, et ce ne sont certainement pas les dernières personnifications qui apparaîtront sur l’internet.

Selon le consensus actuel sur l’imageboard japonais 2ch, voilà le profil de ISIS-chan:

Et bien sûr il y a un Tumblr pour ça et un Twitter.

EDIT: et une page sur Know Your Meme, logiquement.

Quelques exemples de détournements et ISIS-chan:

B8AFgtrCUAAkNnHB750yTICEAA4rNAB8AFgzpCMAEYQl7B78RXySCAAAe9WeB78RX4ECUAAKr_ZB7zQSLICQAAJwJYB789J6UCAAELkIQB78e6yNIcAE-ReaB78e6yOIAAAFhBvB7-ji12CAAA65UEB7-ji18CUAASstvB742sYgCYAE-jf5B8II12WIEAA0rY6B79tw09IcAAozHDB8BTMEvCUAAaofoB8RGchmCQAApFcwB8RGchnCcAAea51B72Q27VIAAEAzsVB8Q_iSNCEAA8RlxB8BxavCCcAAJscIB8G77zECEAAkZ7TB8HrPbkIcAAM0X9B8OFI6eCcAAaXUTB8P4QnoCUAAD2qHB8RGSDYCIAAFwreB8WgL6pCMAAcCFN

isis-chan_5b7 isis-chan_B8bbGe_CcAAZ-cg isis-chan_B8cxpEtCMAAMn26 isis-chan_B8dGB1TCcAAdFVM isis-chan_B8ga4MrCIAAJUOK isis-chan_B8leVxXCIAENPfo isis-chan_B8leVxXCYAEv2kJ isis-chan_B8m4QjaCQAEi5jH isis-chan_B8m5CJkCQAAl9Qe isis-chan_B8m8aBcCIAAfpM8 isis-chan_B8m8aCCCcAEwsZM isis-chan_B8m8aCNCIAApCMc isis-chan_B8m95XNIMAEHLxk isis-chan_B8m95zJIYAAVwjT isis-chan_B8mKvu7CQAESG7d isis-chan_B8mMqYRCIAMN5cs isis-chan_B8mNC2sCcAADXmn isis-chan_B8mndogCAAEdGGU isis-chan_B8mtEVCCcAE5F-r isis-chan_B8Mxy38IMAEfdJY isis-chan_B8N9GXRCEAAb3d_ isis-chan_B8NfHvZCIAA8EXi isis-chan_B8NfWFKCcAELudY isis-chan_B8N-HZWCUAEvYat isis-chan_B8Nj5ZfCUAA3Khb isis-chan_B8N-rfqCUAAy5g2 isis-chan_B8NTWtFCcAAnTDs isis-chan_B8nvyUwCQAEJs_I isis-chan_B8Omn2fCUAABb0z isis-chan_B8OnfhiIIAEjmP_ isis-chan_B8OnfozIYAAE0Fl isis-chan_B8oNpanCYAE6YH1 isis-chan_B8OyIG8CAAIM3ZQ isis-chan_B8p25yFCYAA0tcn isis-chan_B8pFffKCIAAuEiy isis-chan_B8PhjijCEAMHzPZ isis-chan_B8PK4CjCIAAjbA8 isis-chan_B8PpwKECMAACzr2 isis-chan_B8PQRkECcAEaI1u isis-chan_B8qBnFECcAEhZ9o isis-chan_B8qIElxCQAEQNNT isis-chan_B8qiXVYCEAAUU1q isis-chan_B8QLo6gCAAMgVjm isis-chan_B8qUv4QCAAEp9Ah isis-chan_B8QZ9sVCUAAlxuV isis-chan_B8Sb9PVCcAAKDb- isis-chan_B8SE9OVCAAAtrKm isis-chan_B8SinE-CIAA-OXZ isis-chan_B8SNaY3CcAAJZhU isis-chan_B8SOy58CcAIbfBE isis-chan_B8SxpOyCUAAX3YF isis-chan_B8TYz1_CAAAKqnx isis-chan_B8UGbE2CIAINc_I isis-chan_B8WZdv6CIAIQuNl isis-chan_B8XshgkCcAAAPxE isis-chan_B8YG6izCcAAAmiZ isis-chan_B8YI2vwCIAEhens isis-chan_HBg2aHR0cDovL2Vt isis-chan_tumblr_niqr5j2VCv1u9oq3jo8_1280 isis-chan_tumblr_niqr95ki0n1u9oq3jo1_1280 isis-chan_tumblr_niqskkYZsA1u9oq3jo2_540 isis-chan_tumblr_nir08wEsqo1u9oq3jo2_1280isis-chan_B8s3LLyCAAAj7or isis-chan_B8ufadLCYAEmYN isis-chan_B8usbLnCcAAe61i isis-chan_B8v-92WCUAAutK5 isis-chan_B8vc6fHCIAADi7s isis-chan_B8vsojNCUAAF4wM isis-chan_B8wnmKMCUAEbrF7 isis-chan_B8wo-YGCAAE9Iix isis-chan_B8wSIjtCUAEN2ST isis-chan_B8wSwTBCEAAF1JM isis-chan_B8xRWPaCQAAm0HH isis-chan_B8y23LoCMAEs54D isis-chan_B8z7KRoCAAED2jM isis-chan_B8zo3QuCQAEENgNB870G4WCYAAHTMUB9A0XBnIQAAmCBQB8sY7P9CEAAl3euB8_MeV5IEAAQkva B9FI840CAAAzIin B9FSjSLCcAEeUhp B89Fnd6IAAMnfEl563931093527568384_1590984644_0 563948559448297473_2995853846_0 563986714088046592_2995853846_0B8moDalCUAAgVyD B9IZvaZCEAAuph4 B9PQGaMCIAAfkfQ B9PQwY-CUAIv8Zr563840792595144705_2932162754_0564744195680632832_3014276389_0 564755271877001219_3014276389_0isis-chan_B8s3LLyCAAAj7or isis-chan_565779142147198976_2995853846_0isis-chan_566091201472778240_2995853846_0isis-chan_566431884188479488_3011497742_0 isis-chan_566446771446894592_3011497742_0 isis-chan_566461915019214848_3011497742_0 isis-chan_566476968988663808_3011497742_0 isis-chan_566479612331302914_2499145980_0isis-chan_566711179553148928_3004052682_0isis-chan_567024302281609216_93757831_0isis-chan_569629374301020162_2882604147_0 isis-chan_569780314333011969_2499145980_0isis-chan_574922228380364801_320124624_0isis-chan_562792041118445568_3004052682_0isis-chan_564077942909575168_3004052682_0isis-chan_573080116152016897_134405173_0isis-chan_575261476866277377_2932162754_0isis-chan_577039313281536000_1712687240_0isis-chan_579997555162894336_141771476_0isis-chan_572002580680732672_3000808488_0isis-chan_580004526863753216_141771476_0isis-chan_582670003138215936_2995853846_0isis-chan_560899001944260608_15724704_0

 (all copyrights to the respective #ISISちゃん artists)

Et enfin, une chanson !

Charlie, liberté, fraternité, humanité, etc

mardi 13 janvier 2015 à 01:31

Ça y est, on voit et entend les politiciens se jeter sur les corps encore chauds des victimes des assassinats, parlant ici de « coopération accrue entre opérateurs et autorités », où là de « référendum sur la peine de mort »…

Le vrai combat, ami·e·s hacktivistes et netizen, commence maintenant. Ce que j’ai pu entendre de plus violent: le « Patriot Act à la française », sous-entendant guerres impérialistes à l’autre bout du monde (aka « pétrole contre nourriture »), attaques de drones tuant des civils et innocents, ouverture de camps militaires dans un régime dictatorial pour y détenir et torturer des prisonniers pour leur arracher des infos inutiles (au passage, Guantanamo coûterait presque 4 millions de dollars par an et par prisonnier), persécution des lanceurs d’alerte (Chelsea Manning, Edward Snowden) et hacktivistes qui dérangent (Julian Assange), fichages hallucinants des transports de marchandises et personnes, exigence sans juge à l’ensemble des fichiers détenus par les sociétés privées,…  Les temps vont être durs pour nos libertés individuelles, et il n’est pas question de lâcher quoi que ce soit au profit de la peur et la terreur.

Je lis et j’entends certains d’entre vous rappeler le propos tenu par Charlie Hebdo, je n’y répondrais que la qualification du propos est et doit rester aux juridictions compétentes avec des plaidoiries contradictoires. Car à défaut de cela, c’est de la « justice populaire » où deux enragés s’octroient un droit de vengeance à l’AK47, où d’autres enragés balancent grenades et cocktails Molotov dans des synagogues, mosquées, restaurants kebab et supérettes kascher. Laissez la justice calmer les haines et entreprendre les vengeances adéquates à la place des personnes lésées ou qui s’estiment telles. La justice est lente, mais la justice française est bonne.

Un petit rappel de jugement ? http://www.maitre-eolas.fr/post/2007/03/22/580-le-jugement-de-l-affaire-charlie-hebdo

Ensuite, pour rester dans le fond de la problématique: quel que soit votre propos, vous offenserez des personnes. Je répète et je souligne, pour nos amis la presse américaine censureuse de « fuck »: TOUT PROPOS OFFENSERA. C’est ce fameux adage du « on ne peut pas plaire à tout le monde ». Le but est de savoir qu’on offensera, de savoir à quel point on offensera, et que l’on accepte en retour d’être offensé·e. Tout peut être débattu de manière constructive, sans atteindre à la vie de la partie adverse. Vous savez quoi ? Je propose d’ajouter aux cours d’éducation civique des leçons et exercices d’argumentation et plaidoiries. Il s’agit moins de former de futurs avocats que d’apprendre aux futurs citoyens de confronter et défendre leurs opinions et accepter celles des autres. La résultante ? Je pense que nombre de discriminations dogmatiques (religion, origines, apparence physique, sexe et genre, orientation sexuelle, opinions politiques, ..) s’en retrouveraient réduites.

« Liberté » scandaient les participants au grand rassemblement dimanche dernier. Liberté de la presse, liberté d’expression….   slogans qui auraient eu toute leur place lors de la censure de hara-kiri en 1970 (« Bal tragique à Colombey – un mort »). Or là, on est pas dans la situation d’un État qui censure Charlie Hebdo. L’impact sur la liberté de la presse et la liberté d’expression est faible, voire nul, sauf si toute personne souhaitant s’exprimer s’auto-censure par peur de représailles. Non un mot qui aurait été mieux: fraternité. La fraternité, c’est le préambule de la solidarité. C’est ce qui fait qu’on parvient à vivre ensemble la plupart du temps paisiblement, qu’on se réconcilie quand on s’embrouille, et qu’ensemble avec nos différences on forme une Nation unique.

Liberté, fraternité… manque plus que l’égalité pour que la devise de la Ve république française soit au complet, n’est-ce pas ? Oui mais: l’égalité me dérange. Bien sûr c’est important que tous les citoyens soient égaux en droits, mais à mon sens le mot « justice » devrait être utilisé à la place. Pour illustrer rapidement: l’égalité donne à tout citoyen les mêmes places dans le bus, la justice donne aux personnes handicapées un espace pour la chaise roulante, la fraternité et la solidarité donne que les personnes valides laissent cet espace libre et aident la personne en chaise roulante à monter dans le bus.

Dans le cas présent, comment est honorée la fraternité ? Elle l’est en ne stigmatisant pas, elle l’est en ne demandant pas aux musulmans de se désolidariser de ce qui leur est totalement étranger, elle l’est par des non-opprimés (chrétiens, athées, blancs, riches, hétérosexuels, sédentaires,..) défendent et viennent en aide aux opprimés (musulmans, juifs, noirs, pauvres, homosexuels, nomades,..). La fraternité est fraternité quand elle est sincère, désintéressée et spontanée. Et je souhaite que tous les citoyens s’en rappellent et changent en ce sens.

Les victimes de ces assassinats, quand on y pense, illustrent à merveille l’hétérogénéité qui unit la France: des hommes, des femmes, des ouvriers, des français fraîchement accueillis dans la nationalité, des artistes de gauche, des policiers de droite, des personnes de couleur, des athées, des chrétiens, des musulmans, des juifs, des français d’outre-mer,… Cette hétérogénéité, il faut à tout prix la préserver. Qu’elle reste la force et l’essence de la France, unie dans la différence, et non l’objet des haines et déchirements que l’extrême droite prépare pour demain ou que les terroristes tentent encore aujourd’hui.

Élargissons notre point de vue. Voyons cette Union Européenne, prix Nobel de la paix mérité, rassemblant 28 États et mille cultures différentes. On débat avec nos voisins, on trolle à l’occasion, on se chamaille, on se retrouve et on avance ensemble. L’Union Européenne est une super-Nation, certes imparfaite car encore en construction, mais qui est précieuse pour nous, citoyens. Car à partir de l’UE, un espoir est permis: celui d’une nouvelle Union, en lieu et place d’une ONU somme toute limitée. Car nombre de sujets, tels que le réchauffement climatique, mettent en jeu la survie de l’espèce humaine voire la survie des êtes vivants sur cette belle planète bleue, et il n’y a guère qu’ensemble que l’on sera efficaces pour empêcher les catastrophes futures.


Faute de manifeste, vous n’avez qu’une vision parcellaire de mes opinions. Et c’est volontaire puisque certaines d’entre elles sont si libérales qu’elles me demanderaient une énergie colossale à expliquer, surtout en contexte d’autres opinions nettement moins libérales voire contradictoires. Mais finalement c’est ça aussi, l’humanité: la contradiction, la subtilité et les notes de bas de page. « Prismes de personnalités ». Débattre de la liberté d’expression ? Je pense que oui: la liberté d’expression vaut la peine qu’on débatte à son sujet de temps en temps, voire tous les ans, voire plus souvent encore. Pour ma part, j’estime qu’un débat authentique ne peut avoir lieu que si chaque opinion peut être librement exprimée et opposée, au final la question ne serait pas celle de la liberté d’expression totale, mais bien la sagesse d’utilisation de cette liberté, de la fraternité qui doit lui être attachée ?

N’ayons pas peur. Soyons ensemble. Avançons ensemble. Vive la France. Vive l’humanité. Vive la vie.

L’après-TPB: DHT, infohash et indexation

jeudi 11 décembre 2014 à 20:41

Rappel du contexte: The Pirate Bay ne répond plus suite à un raid, et vu le délai il est bien possible que TPB ait définitivement tiré sa révérence, ce qui n’est pas une mauvaise chose en soi. Car il est temps de laisser place à une indexation automatique et décentralisée de tous les fichiers torrent.

D’emblée, il faut avertir: les échanges avec le protocole BitTorrent ne sont pas chiffrés et il n’est pas difficile de déterminer qui possède un contenu et qui le télécharge. Nul besoin donc de pleurnicher sur la fonction de « modération » que permettait la centralisation autour d’un faible nombre d’indexeurs de fichiers torrent, les fichiers terroristes, pédophiles et nazis gagneront effectivement en visibilité mais aussi faciliteront grandement le travail des autorités compétentes. Et bien sûr, libre aux indexeurs de DHT de filtrer l’océan de contenus à la petite cuillère si « faciliter l’accès » à certains contenus pose des problèmes légaux et/ou moraux.

La DHT (Distributed Hash Table) de BitTorrent est un mécanisme vraiment bien conçu: avec un infohash (identifiant unique de torrent), le client lance une requête à ses pairs immédiats, lesquels retournent vers quels relais s’adresser dans le  « troupeau » immédiat, jusqu’à trouver un « troupeau » dans lequel se trouve un pair qui possède le torrent correspondant à cet infohash, et le transmette au client. À chaque torrent correspond un infohash, et à chaque infohash correspond un torrent: si vous créez un nouveau torrent à partir des mêmes fichiers, vous aurez beaucoup de mal à retrouver un même infohash: tout doit correspondre à la perfection, du nom à la taille des pièces jusqu’aux méta-données inutiles style date de création ou client+version à son origine.

Vous me demanderez: est-ce possible de récupérer le torrent correspondant à un infohash précis ? Oui, ça l’est. Aria2.

Il y a un site que j’utilise de temps en temps pour « liquéfier » des téléchargements difficiles depuis des seeds chinois par exemple:  Furk. Ce site, vous pouvez lui faire télécharger un torrent soit en lui donnant le fichier .torrent, soit en entrant un infohash ou magnet. Ça m’intriguait: je me mets en seed sur un torrent, je l’envoie sur le site, et j’observe: se connecte un serveur néerlandais tournant sous Aria2.

Aria2 est un client de téléchargement en CLI, avec de la communication RPC pour être facilement commandable, Aria2 sait faire du HTTP(S), FTP, BitTorrent, Metalink. Un petit couteau suisse. Mais surtout: il prend en charge les liens Magnet BTIH, se connecte à la DHT…..  et permet de sauvegarder juste le torrent et sortir les métadonnées sous forme de texte. Une pièce majeure de mon puzzle: Aria2 fait la transition entre un torrent de la DHT et une base de données indexant les torrents.

Ouais mais, les infohash… d’où ils viennent ? Il faut un crawler de DHT: un logiciel qui se connecte à la DHT et écoute ce que les pairs immédiats recherchent/téléchargent/partagent. J’en ai trouvé un: simDHT, écrit en Python2. C’est cool Python, sauf que j’ai jamais vraiment développé en Python pour l’instant, que c’est de la version 2, et que le script ne sort pas les résultats dans stdout. La façon de récupérer les infohash reçus est donc…  jugez plutôt:

AVANT:

class Master(object):
def log(self, infohash, address=None):
print "%s from %s:%s" % (
infohash.encode("hex"), address[0], address[1]
)

APRÈS:

class Master(object):
def log(self, infohash, address=None):
print "%s from %s:%s" % (
infohash.encode("hex"), address[0], address[1]
)
f = open("infohash/"+infohash.encode("hex"),'w')
f.close()
)

(ouais WordPress défonce l’indentation)

Cool cool. Bon. simDHT reçoit dans les 80 infohash par minute, jusque là ça va. Je fourre les infohash dans un fichier, et j’en nourris Aria2:

aria2c -j 10 --dht-listen-port=6881 --bt-stop-timeout=30 --bt-metadata-only=true --bt-save-metadata=true -i infohash.list

Les paramètres:

Ça donne quoi ? Bah. Ça montre surtout que la DHT est polluée par du spamflood: sur 200 infohash, vous aurez genre 2-5 « vrais torrents ». Ou alors il n’y avait aucun pair qui a le torrent. Ou alors trop loin ou trop lent pour le délai de 30 secondes. Mais on va pas laisser tourner Aria2 pendant une heure puisque, logiquement, Aria2 rediffuse le spam dans la DHT quand il tente d’en avoir le torrent.

Mais voilà, on a des .torrent ! On peut afficher les métadonnées ainsi:

aria2c -S fichier.torrent

À ce stade, j’ai fait un petit script PHP pour (tenter de) parser les métadonnées obtenues et en faire du JSON, qu’on peut alors brancher à du SQLite ou MariaDB ou tout autre SGBD au centre d’un moteur de recherche de torrent sur le web… mais puisque je me sens ridicule avec mon PHP tout moisi qui sait pas array_search(), je vais limiter mes ambitions. Mais les fichiers torrent sont là, traitables, indexables.

Donc amusez-vous à expérimenter vous-même la récupération et identification d’infohashes dans la DHT :)  Mon script:

#!/bin/bash
echo "## finding infohashes..."
timeout 60 python2 simDHT.py
count=$(ls infohash | wc -l)
echo "## processing $count infohashes..."
cd "infohash"
for file in *; do
echo "magnet:?xt=urn:btih:$file&tr=udp%3a%2f%2ftracker.publicbt.com%3a80%2fannounce" >> ../infohash.list;
rm "$file"
done
cd ..
aria2c -j 10 --dht-listen-port=6881 --bt-stop-timeout=30 --bt-metadata-only=true --bt-save-metadata=true -i infohash.list
rm 'infohash.list'
for file in *.torrent; do
aria2c -S $file >> "infohash/$file.metadata"
mv $file "db/"
done
php parse.php


À titre d’info, voilà ce que j’ai pu avoir avec ~4 minutes de fonctionnement:

57e3eee00b3ba637ead378c0a91821a28a3af840: Chelovek.Nojabrja.2014.Dc.Eng.HDRip.avi
281f90d4314fb29c0501209f3397349a875dce1c: Once Upon a Time S04E06 HDTV x264-LOL[ettv]
595900a6b58a30cd8b8ff999faae60f0616f873f: The.Daily.Show.2014.12.08.Norman.Lear.HDTV.x264-BATV.mp4
a7f5eec587bd3f31532e20b0e1603524d02bfe9e: [www.Cpasbien.pe] Marvels.Agents.Of.S.H.I.E.L.D.S01E20.FRENCH.LD.BDRip.XviD-RNT
b51c7241d26584cf4bf2c4cf7fab84acb6082866: Deliver Us from Evil (2014)
f10aea5762918b80b2a303d827c04c13eb9af125: Lager.X-Ray.2014.P.WEB-DLRip.1400MB.avi
86fdc07104a5524d2976264b24ca0a7126565c8f: The Walking Dead - Temporada 5 [HDTV][Cap.508][Español Castellano]


 

Addendum, 13 décembre:

Oh je me rappelle d’une chose: Tribler. Ce client BitTorrent a une fonction de recherche de torrent intégrée, et pour ce faire il enregistre les torrents qui circulent dans la DHT ! Vous pouvez trouver dans le répertoire de téléchargement un dossier appelé « collected_torrent_files », contenant les miniatures, fichiers de métadonnées et les torrents eux-mêmes. N’ayez pas peur d’avoir des dizaines de milliers de fichiers à cet endroit, Tribler est vraiment bien conçu !