Le PC d’occasion – 4e partie

Le billet précédent se terminait ainsi : Il me reste à vous narrer les échanges avec le vendeur de Backmarket, et le service après-vente d’icelui.

Ayant constaté avec le support Microsoft que la licence Windows 10 fournie avec le PC d’occasion était déclarée chez eux comme “piratée”, j’ai contacté aussitôt le vendeur de Backmarket. Voici nos échanges :

Jour J
Bonjour, après appel auprès du support Microsoft, il s'avère que la
clef d'activation de Windows 10 est une clef enregistrée comme piratée
chez eux (depuis un an). Merci de m'adresser une clé Windows 10 correcte
et valide.
Bien à vous
Zythom

Jour J+2
bonjour' OK je vous envoie merci

Jour J+8
Bonjour, Je n'ai encore rien reçu. Pouvez-vous me dire par quel canal
vous comptez me l'adresser ?
Bien à vous
Zythom

Jour J+15
bonjour' vous achète une clé sur internet il coute 10 euros je vous
rembourse merci bien

Jour J+15
Bonjour, il n'est pas question d'acheter une clé et d'attendre un
éventuel remboursement de votre part. Merci de m'adresser une clé valide
le plus rapidement possible, par ce canal de communication.
Bien à vous.
Zythom

A partir de ce moment-là, il n’a plus été possible d’obtenir une quelconque réponse de ce vendeur, ni directement, ni par l’intermédiaire de Backmarket (qui sert de plateforme de vente) qui l’a relancé plusieurs fois. Silence radio total. La suite de la conversation se fera exclusivement avec le SAV de Backmarket :

Jour J+15
Bonjour [Zythom],
J'espère que vous allez bien.
Je vous remercie pour votre e-mail, que j'ai lu avec attention.
Je suis vraiment désolée de cette situation singulière qui je peux
le comprendre peut être agaçante.
Ayant à cœur votre satisfaction, je vous informe que je viens
d'adresser une demande à [vendeur taiseux] concernant votre clé
d'activation Windows.
Il dispose de 24 heures ouvrées pour apporter une réponse à ma demande.
Je vous confirme que le marchand va vous apporter une solution adéquate
et conforme à notre charte qualité.
N’hésitez pas à échanger directement avec votre marchand tout au long
de la procédure.
Rassurez-vous, je reste à votre écoute pour appuyer vos demandes si le
besoin s'en fait sentir.
Dans l'attente, je vous souhaite de passer une excellente fin de
journée.
Bien à vous,
[prénom d'une personne du SAV]

Jour J+21
Bonjour,
Comme indiqué précédemment, je ne compte pas payer une licence et
attendre un hypothétique remboursement d'un vendeur m'ayant vendu un
ordinateur avec une licence indiquée comme piratée par Microsoft.
Par conséquent, je vous informe que sans licence Microsoft valide
reçue par ce canal de communication d'ici un mois à compter de la date
d'aujourd'hui, je déposerai une plainte auprès du Procureur de la
République contre Backmarket et ce vendeur.
Bien à vous,
Zythom

Je dois dire que cette réponse, que j’ai fait lire à mon épouse après envoi, l’a faite sourire : “tu comptes poursuivre cette société et ce vendeur au Pénal ?”

Bon, j’ouvre ici une parenthèse pour les lecteurs, afin de vous faire profiter du savoir de la meilleure juriste du monde. En cas de litige avec un commerçant en ligne, il faut :
– essayer de trouver un accord avec le vendeur par email.
– si pas d’accord, envoyer une lettre en recommandée avec avis de réception détaillant les éléments du problème et toutes les références possibles.
– si pas d’évolution, il faut contacter une association de consommateur pour essayer de trouver un accord amiable, ou la Fédération des Entreprises de Vente A Distance si le site y est adhérent, ou saisir le service de médiation de la consommation, ou signaler le problème à la DGCCRF via la plateforme SignalConso, ou directement un avocat qui vous expliquera comment entamer une procédure devant les tribunaux.
– ensuite, c’est parti pour une longue lune de miel avec votre avocat·e qui vous aidera à saisir la justice civile, c’est-à-dire le juge des contentieux de la protection (ex juge du tribunal d’instance) ou le tribunal judiciaire (fusion du tribunal d’instance et du tribunal de grande instance) selon le montant du litige.
Fin de la parenthèse en partie issue du site economie.gouv.fr pour la raison exposée dans le paragraphe suivant.

En effet, étant marié avec une avocate, j’ai la chance d’avoir une professionnelle du droit à mes côtés. Je ne sais d’ailleurs pas qui de l’épouse ou de la professionnelle m’a répondu : “Tu te débrouilles avec ton litige à 130 euros”.

La voix de la sagesse.

Mais malgré mon absence totale de compétences juridiques sérieuses, en dehors de ma capacité en Droit en Recherches sur Internet, j’ai reçu la réponse suivante du SAV de Backmarket :

Jour J+24
Bonjour [Zythom],
Je reviens vers vous concernant le suivi de votre dossier.
Le marchand ne disposant pas d'une clé d'activation en stock vous a
proposé d'en acheter et de vous faire rembourser.
Cependant, cette proposition ne vous convient pas.
Ce que je vous propose désormais comme ultime solution, c'est de
renvoyer l'appareil au marchand pour qu'il procède à votre
remboursement.
Je vous ferai un code promo pour vous permettre d'acheter un autre
appareil.
Dans l'attente de vous lire, je vous souhaite de passer une excellente
journée.
Bien à vous,
[Prénom d'une personne du SAV]

Et là, forcément, je me dis que l’affaire est mal engagée. J’ai bien conservé les cartons d’emballage, mais je me suis bien gardé de dire que j’étais en train de prévenir (indirectement) la mairie que le disque dur du PC d’occasion contenait encore toutes leurs données. Impossible de renvoyer le tout (d’ailleurs ce n’est pas mon souhait).

Jour J+26
Bonjour,
Cette solution ne me convient pas. J'attends l'envoi d'une clé
d'activation non piratée pour que l'achat effectué sur votre plateforme
soit conforme à la législation en vigueur.
Bien à vous,
Zythom

Jour J+28
Bonjour [Zythom],
Comme nous sommes toujours sans nouvelles du revendeur, quelle
alternative preferez-vous?
- Vous renvoyez le produit (sans frais bien sur) et je vous rembourse
la commande
- Vous achetez la clé que je vous rembourse dès réception de votre reçu.
Vous pouvez être certain que votre remboursement sera fait très
rapidement dès que j'aurai reçu votre email avec le justificatif de
paiement.
Dans l'attente de votre retour, je vous souhaite une belle journée,
[Prénom du support niveau 2 du SAV]

Bon, soit je laisse tomber, soit j’achète moi-même cette fichue clef d’activation. Je vais donc sur le site de Microsoft pour passer l’achat et là, STUPEUR. Microsoft mérite bien son surnom de Micro$oft… 145 euros la licence la moins chère ! (je rappelle que j’ai payé le PC complet, livraison incluse, 130 euros).

Bienvenu dans l’univers des licences Windows.

Comme je ne suis ni revendeur, ni assembleur, je considère que je n’ai pas le droit d’acheter une licence EOM (Original Equipment Manufacturer). Je n’ai le droit, formellement, que d’acquérir une licence dite “Retail”. Me voici donc à la recherche d’un site vendant une licence Retail Windows 10, et j’en trouve une à 64 euros. Je contacte donc le SAV Backmarket :

Jour J+29
Bonjour,
Sur le site officiel Microsoft, la licence Windows 10 la moins chère
coûte 145€
cf https://www.microsoft.com/fr-fr/store/b/windows
Il semble y avoir beaucoup de sites qui vendent des licences pirates
(à quelques euros), et d'autre part comme je ne suis ni revendeur, ni
assembleur de PC, je n'ai pas le droit d'acquérir une licence EOM.
J'ai trouvé un site qui semble vendre des licences à un prix correct
(64 euros ttc)
Me confirmez-vous la prise en charge de ce coût ?
Bien à vous,
Zythom

Réponse positive du SAV de Backmarket,
achat par mes soins,
remboursement rapide par le site,
dossier clôt.

Conclusions :
– j’ai parfaitement conscience d’être un acheteur pénible en matière informatique (pour le reste, je suis un acheteur nul) ;
– il faut encourager les sites de reconditionnement qui donne une deuxième vie aux objets ;
– il faut bien effacer les données avant de donner/vendre un ordinateur, une tablette ou un téléphone : vous risquez de tomber sur quelqu’un qui en fera mauvais usage ;
– j’admire les gens qui travaillent dans les SAV : ils sont patients et arrivent très souvent à trouver une solution. Une place leur est réservée au Paradis ;
– les vendeurs de PC avec licence piratée brûleront en Enfer pour l’éternité.

Le PC d’occasion – 3e partie

Le billet précédent se terminait ainsi :
Par contre, je trouve scandaleux que le matériel informatique d’une mairie puisse se retrouver dans la nature sans avoir fait l’objet d’un effacement consciencieux des données qu’il contient. Quelqu’un a commis une erreur, soit par incompétence, soit du fait de sa condition humaine, soit parce que l’ordinateur a été volé… Tout est possible.
Je décide donc de contacter l’ANSSI.

Pourquoi contacter l’ANSSI, quand il me suffit de contacter le service informatique de la mairie concernée ?

Et bien, il s’agit là d’une précaution élémentaire, qui est le fruit d’une longue série d’expériences douloureuses subies par d’autres. En effet, lorsque l’on prévient un organisme qu’il a un problème de sécurité, il arrive fréquemment que l’on se retrouve soi-même à faire partie du problème. Je ne compte plus les affaires où un simple particulier a été mis en cause par un organisme, et qui s’est retrouvé embarqué malgré lui dans des aventures qu’il n’imaginait pas devoir subir.

Et il se trouve que j’ai l’imagination très fertile en ce qui concerne les problèmes potentiels qui peuvent survenir. J’en ai même fait mon métier : je suis Expert en poliorcétique dans une grande école où mon quotidien est fait d’agressions informatiques permanentes et où je vis dans la crainte que l’une d’entre elles emporte tout sur son passage (et je SAIS que cela arrivera, malgré tous les PCA, PRA, parefeux, PSSI, SMSI, SIEM, comités sécurités, cellules de crise cyber, exercices, formations de sensibilisation, etc. que je peux mettre en place, cela ARRIVERA, et je dois dormir chaque nuit avec cette certitude…).

Bref, pas question de me retrouver sur le banc des accusés parce qu’un DGS a paniqué et m’a désigné comme contrefeu à la vindicte des membres de la magistrature… Je me souviens toujours de la tirade de Maître Eric Dupont-Moretti : “La justice, c’est une administration à laquelle on a donné le nom d’une vertu. Ça n’est rien d’autre que cela. Elle a les qualités et les défauts d’une administration. Moi, je ne voudrais pas avoir à faire à la justice.” Le fait qu’il soit devenu Garde des Sceaux ne me rassure pas plus que cela.

Pour le commun des mortels, le fait d’avoir été expert judiciaire pendant 21 ans me place dans la catégorie des personnes nécessairement protégées, faisant parti du système, intouchables… Qu’ils se rassurent, je peux prendre cher comme tout un chacun, et c’est justice (sans réserve).

Je décide donc de contacter l’ANSSI, parce que pour moi, ils représentent les Chevaliers défendant le faible contre les dangers de ce monde. Ils prononcent des vœux d’obéissance, de pauvreté et de chasteté, mais combattent efficacement les cyberinfidèles. Voici mon courriel :

Sujet du message : Faille de sécurité Mairie de [ville de la région
parisienne]

Bonjour,
J'ai acheté un ordinateur d'occasion sur internet sur le site
www.backmarket.fr
Pour ne pas faire de recel de données illégales, j'ai procédé à
l'analyse forensic de son disque dur (je suis expert judiciaire).
Celui-ci contient des données en rapport avec le service financier de
la mairie de [ville de la région parisienne] : documents pdf, word,
excel, et échanges d'emails internes et externes avec par exemple les
finances publiques. Vous trouverez en pièce joint l'un des emails que
j'ai pu récupérer.
Le détail de ma commande sur www.backmarket.fr :
[...]
J'ai extrait le disque dur du PC et je l'ai placé sous scellé. Pouvez-
vous me dire la suite que vous donnerez à ce message et ce que je dois
faire du disque dur ?
Bien à vous,
[Zythom]

Plein d’espoir et les yeux brillants d’émotion, j’ai ouvert la réponse de l’astreinte du CERT ANSSI :

Bonjour,
Nous vous remercions pour votre signalement que nous avons bien pris en
compte sous la référence RM#31415926.
Vous êtes-vous adressé à la mairie de [ville de la région parisienne],
pour connaître la marche à suivre dans ce genre de situation ? Car à
priori, c'est plus de son ressort que du nôtre.
Merci de nous tenir informé des actions entreprises.
Cordialement,

C’est peu de dire que j’étais très déçu…

Mais après quelques réflexions, je me suis souvenu que Alonso Quijano ne se serait pas découragé pour si peu, et j’ai donc repris ma plume électronique :

Bonjour,
Je suis surpris par votre demande : je n'ai aucun contact à la mairie
de [ville de région parisienne], et aucune chance d'être écouté en tant
que simple particulier.
Vous êtes par contre parfaitement qualifié pour leur signaler une
faille de sécurité et déclencher une enquête par les services
appropriés.
Merci de me tenir au courant des suites que vous aurez données à mon
signalement, et je vous précise que je souhaite bénéficier de la
protection de l'alinéa 2 de l'article L.2321-4 du code de la défense.
Bien à vous,
[Zythom]

Quelques temps plus tard, je recevais le message suivant :

Bonjour Monsieur,
Nous avons pris contact avec la Mairie et sommes en attente d'un
retour.
Nous vous tiendrons au courant des éléments vous concernant.
Merci encore pour votre signalement.
Bien cordialement,

VICTOIRE, et tel Amadis de Gaule prenant le nom de Chevalier de la Verde Espée, je suis debout sur mon bureau et fait tournoyer mon clavier en flattant la croupe de ma souris verticale (ce billet devient n’importe quoi). Las, j’avais omis un point que tout fidèle lecteur aura déjà relevé, en bon Sancho Panza, et que la dure réalité de ce monde cruel est venu me rappeler à travers l’email de l’ANSSI reçu un mois plus tard :

Bonjour,

Suite à votre signalement et conformément à l’article L. 2321-4 du code
de la défense, nous avons averti la mairie qui a pris très au sérieux
cet incident et souhaite récupérer ce disque dur.  Acceptez-vous de le
lui transmettre ?

Si oui, et dans le cas où vous souhaitez organiser le transfert
directement avec la mairie, nous pouvons vous fournir un contact.
Si vous souhaitez demeurer anonyme, nous pouvons servir de relais.

Pour votre information, votre anonymat sera conservé par l'ANSSI,
conformément à l'article L. 2321-4 du code de la défense, sauf à ce que
l'ANSSI soit contrainte de divulguer votre identité en cas de
réquisition judiciaire à la suite d'un dépôt de plainte de la mairie.

Cordialement,

En fait de dure réalité, c’est ma douce épouse qui m’a fait remarquer : “Ah parce qu’en plus, tu vas devoir payer pour leur envoyer un disque dur qui t’appartient ?”

“Non, mais ça me fait plaisir”, est la seule chose que j’ai trouvée à lui répondre…

J’ai donc placé le disque dur (mis sous scellé au tout début de cette aventure) dans un emballage robuste, et j’ai envoyé le tout à mes frais au secrétariat général de la défense et de la sécurité nationale.

En confiant mon précieux paquet au bon soin de La Poste, je lui ai fait un petit geste d’adieu définitif.

Il me reste à vous narrer les échanges avec le vendeur de Backmarket, et le service après-vente d’icelui. Cela fera l’objet d’un prochain billet. Stay tuned.

Le PC d’occasion – 2e partie

Le billet précédent se terminait ainsi :
Je contacte le vendeur, le SAV Backmarket, l’ANSSI, et la CNIL. La suite va vous étonner (billets à suivre). Ce cliffhanger de malade (explication en fin de billet 😉 )

Commençons par la CNIL.

Je contacte un agent de la Commission nationale de l’informatique et des libertés, “habilité, à raison de sa fonction, à effectuer les visites et vérifications mentionnées à l’article 19 de la loi du 6 janvier 1978 modifiée et à l’article L. 253-3 du code de la sécurité intérieure.” Ce sont des personnes motivées, impliquées dans leur mission de service public : la preuve, je la contacte et elle me répond presqu’immédiatement alors qu’elle est en vacances ! (oui, ces personnes existent, et plus souvent qu’on ne le pense 🙂

Zythom : Bonjour, je viens d'acheter un PC d'occasion reconditionné
et j'ai analysé le contenu effacé du disque dur (avec dd + photorec) :
il s'agit d'un ordinateur d'une mairie connue de la région parisienne.
Qui dois-je prévenir ?

Voici la réponse du super agent CNIL :

Super agent CNIL : Bonjour et merci du signalement. Je suppose que ce
disque dur mal effacé contient des données à caractère personnel,
pouvez-vous me dire de quel genre de données il s'agit ainsi qu'une
estimation du volume svp ? En fonction de la sensibilité et du nombre de
données nous pouvons agir différemment.

Alors, je suis un peu ennuyé car je viens à peine de commencer l’analyse, et a priori, je n’avais pas prévu de mener une enquête de plusieurs jours… Donc, je réponds avec ce que j’ai :

Zythom : C'est difficile à dire, car d'expérience, les logiciels de
récupération retrouvent beaucoup de fichiers. Tous ne sont pas
exploitables, et ici tous ne contiennent pas de données personnelles. A
ce stade de mon analyse inforensique :
517 fichiers *.doc
1238 fichiers *.pdf
225 fichiers *.xls
5084 fichiers *.jpg
Dans les fichiers pdf, il y a de tout : extrait de comptes publics,
factures, etc.

Ce à quoi il m’a répondu :

Super agent CNIL : Pour que la CNIL soit compétente sur le sujet, il
faut que des DCP aient fuitées. D'où mon intérêt d'avoir une idée un peu
plus précise de ce que l'on peut trouver dans ces fichier : si vous me
dites que c'était le HDD du pôle RH avec plein d'informations privées
sur les employés de la mairie, ce n'est pas la même chose que s'il
s'agit du HDD d'un PC dédié à la gestion des espaces verts.

Si vous trouvez des fichiers contenant des données à caractère
personnel, est que vous m'envoyez un email à XXX@cnil.fr en indiquant :
- un court résumé de la manière dont vous avez acquis la machine
(directement auprès de la mairie, revendeur spécialisé, internet, etc)
- le type de DCP que vous avez trouvé (nom, adresse, numéro de sécurité
social, mot de passe haché/en clair, etc)
- le nom de la mairie concernée

Dans tous les cas, ne joignez pas les fichiers contenant les données
mais conservez-les dans le cas où nous ayons besoin de faire des
constatations. Si nous devions avoir besoin des fichiers, nous vous
demanderons de nous les transférer via notre plateforme sécurisée
d'échange de fichier.
Merci de votre signalement.

J’ai donc poursuivi mes analyses, en ouvrant CHAQUE fichier pour voir s’il contenait des données à caractère personnel. A ma grande surprise, j’en ai trouvé très peu (mais j’ai le détail de tous les remboursements de frais de bouche du maire 😉 ) Donc, fidèle à mon principe “je ne vais pas emm… un organisme public déjà surchargé de dossiers beaucoup plus importants“, je n’ai pas donné suite à ce signalement, pour l’instant.

Par contre, je trouve scandaleux que le matériel informatique d’une mairie puisse se retrouver dans la nature sans avoir fait l’objet d’un effacement consciencieux des données qu’il contient. Quelqu’un a commis une erreur, soit par incompétence, soit du fait de sa condition humaine, soit parce que l’ordinateur a été volé… Tout est possible.

Je décide donc de contacter l’ANSSI.

————————————————————————————————–
Il vous reste 90% de l’article à lire
La suite est réservée aux abonnés.
————————————————————————————————–

Aha, en vrai, la suite dans le prochain billet. Le temps ici est celui des échanges épistolaires d’antan 😉


Le PC d’occasion

J’ai besoin de faire des calculs intensifs, dans le cadre de mon apprentissage de Tensorflow, et de temps en temps pour casser du mot de passe.

J’ai donc une machine dédiée à cela. Mais elle date de 2005, à une période où les cartes mère basculaient vers des bus PCIe, et la magnifique carte graphique GTX 1060 récupérée sur le PC de mon gamer de fils n’était pas bien reconnue, malgré mes montages, disons, hasardeux, à base de ventilateur sur pied pour le refroidissement et d’alimentation ajoutée (avec la fameuse “astuce” du trombone, svp ne le faites pas).

Bref, il me fallait envisager d’investir dans un nouveau PC de calculs.

Seulement voilà, je ne voulais pas mettre trop cher dans la configuration, sachant que j’avais déjà la carte graphique et que la puissance d’icelle me convenait parfaitement. Mon cahier des charges était le suivant :
– une carte mère pouvant accueillir une carte graphique Nvidia
– 8 Go de RAM
– c’est tout

Je me tourne alors vers Internet (c’est une figure de style, je suis toujours face à mes écrans) et je découvre le monde merveilleux des ordinateurs d’occasion : entre les personnes qui pensent pourvoir vendre leur PC au même prix qu’elles l’ont acheté, voire plus, et celles qui vous dirigent vers un site russe entre pilules bleues revigorantes et promos sur les masques FFP2 (je navigue sur les sites que je veux) bloqué par mes Pi Hole / uBlock Origin / AdGuard-en-test…

Et puisqu’il faut bien parfois traverser la rue, je me lance, et je passe commande sur le site français www.backmarket.fr sur lequel j’avais débusqué un Dell Optiplex 3020 MT Core i3 3.4 GHz – HDD 500 Go RAM 8 Go, qui me faisait les yeux doux à 130 euros TTC (!) livraison incluse et garantie d’un an \o/

Matériel réceptionné trois jours après. Jusqu’ici tout va bien.

Je déballe le tout, je branche, j’allume pour voir si tout va bien: nickel ! J’éteins, je débranche, je décharge l’électricité statique de mon gros pull, j’ouvre la bête, je vire le disque dur, la carte wifi bizarre, je place un disque SDD de mon stock, la carte graphique surpuissante, une vieille alim ATX de mon stock (avec son trombone, de mon stock aussi), je branche écran/clavier/souris/câble réseau de mon stock, une clé USB (on peut écrire clef USB ?) pour installer une Debian, les drivers Nvidia, CUDA, etcétéra.

J’ai une nouvelle machine de calculs \o/

Mais pendant que cette nouvelle venue chauffait mon bric-à-brac bureau en faisant des milliards d’opérations, le disque dur de 500Go extrait du PC d’occasion me faisait de l’œil… Et si ?

Et si ce disque dur pouvait me raconter son histoire ? Ni une, ni deux, je le branche sur mon PC et procède à sa copie bit à bit (cf ce billet de 2014, ou celui-ci de 2008), puis je commence son analyse.

Nam et ipsa scienta potestas est, écrivait le philosophe Francis Bacon, dans “De haeresibus” en 1597 (pas lu, mais j’aime les citations latines <3, j’ai fait latin jusqu’en terminale, option au Bac, zéro point gagné).

Dans les données en clair, je récupère la clef de licence Windows 10 (j’aime bien écrire clef-avec-un-f). Ne voulant pas être receleur à l’insu de mon plein gré, j’appelle le support Microsoft (oui, oui). Après trois personnes ne comprenant pas trop mon appel, je tombe sur une charmante dame certainement PFE+++ (Premier Field Engineer) chez Microsoft, qui après diverses vérifications techniques, m’informe que la clef de licence correspond à une clef bloquée chez eux pour avoir été trop souvent activée. “Vous avez une clef PIRATÉE”, me dit-elle…

Je détruis mon téléphone jetable, coupe la liaison satellitaire chiffrée, reboote mon nœud Tor, m’essuie le front avec mon vieux T-Shirt SSTIC 2012 sous le regard désapprobateur d’Edward Snowden dont le livre usé est face à moi…

On m’a vendu un PC avec une licence Windows piratée…

Je pousse plus loin mes investigations, cette fois en regardant les données (mal) effacées du disque dur. Celui-ci a été reformaté rapidement : toutes les données antérieurement présentes sont toujours là, à attendre que je les récupère. Une vie complète d’ordinateur se déroule devant moi, comme au plus fort des expertises judiciaires que j’ai menées : emails, rapports, fichiers Excel, notes de frais…

On m’a vendu le PC d’un employé de la mairie d’une grande ville de la région parisienne…

Je contacte le vendeur, le SAV Backmarket, l’ANSSI, et la CNIL. La suite va vous étonner (billet suivant).

Awk awk awk

Pour retirer les lignes en doublon dans un fichier texte contenant beaucoup de lignes (voir le billet “Dictionnaire français pour hashcat“), j’ai utilisé la commande suivante :

cat toto.txt | sort | uniq > pas-de-doublons.txt

où toto.txt est un fichier texte d’environ 20 Go et où le fichier pas-de-doublons.txt résultant ne fait plus que 311 Mo. La commande met 1h30 à s’exécuter sur mon ordinateur.

Un internaute m’a fait remarquer en commentaire sur mon GitHub que cette commande pouvait être avantageusement remplacée par la commande suivante :

cat toto.txt | awk '!x[$0]++' > pas-de-doublons.txt

Mais avant d’essayer la commande awk sur mon ordinateur, je voulais la comprendre. Et à ma grande surprise, je n’ai pas réussi à trouver d’explications sur cet usage particulièrement concis sur internet (spoiler : j’ai mal cherché). J’ai donc demandé de l’aide sur Twitter où @CyrilBrulebois m’a fourni une explication en quelques secondes : https://unix.stackexchange.com/questions/159695/how-does-awk-a0-work

Je vais détailler ici l’explication, pour pouvoir m’y référer plus tard, quand ma mémoire me fera défaut.

awk est une commande très puissante, c’est un langage de programmation a elle tout seule qui permet une recherche de chaînes et l’exécution d’actions sur les lignes sélectionnées. Elle est utile pour récupérer de l’information, générer des rapports, transformer des données entre autres (source funix.org).

!x[$0]++ est à interpréter de la manière suivante :

$0 contient une ligne complète du fichier toto.txt

x[] est un tableau associatif. Pour en savoir plus, lire cet article sur les tableaux en bash. Il reçoit en argument autre chose que des entiers de 0 à N comme un tableau habituel. Il peut recevoir une chaîne de caractère.

x[$0] regarde si la valeur de la clé $0 est déjà présente dans le tableau associatif x[]. Si elle ne s’y trouve pas, une chaîne de caractère vide est placée dans x[$0]. Dans tous les cas, x[$0] retourne son contenu.

Lequel des deux opérateurs “!” ou “++” est-il prioritaire sur l’autre ? Il s’agit de vérifier la précédence de ces deux opérateurs. Le tableau que l’on trouve par exemple dans ce document, nous indique que ++ est prioritaire sur “!”. Mais comme il est situé à droite de x[$0] (post-incrément), il faut d’abord évaluer le contenu de x[$0], considéré comme un entier (1ère action de “++”), passer cette évaluation à l’opérateur “!”, puis l’incrémenter de 1 (2e action de “++”).

Donc si la ligne contenue dans $0 vient d’apparaître pour la première fois, x[$0] contient une chaîne de caractère vide considérée comme équivalente à 0, et x[$0] retourne 0 (= faux), puis passe à 1. Sinon x[$0] retourne N (= non nul = vrai), puis passe à N+1.

Comme !x[$0]++ est la négation de x[$0]++, il suffit d’inverser le résultat du paragraphe précédent : si la ligne contenue dans $0 vient d’apparaître pour la première fois, !x[$0] retourne 1 (= non nul = vrai), puis x[$0] passe à 1. Sinon !x[$0] retourne 0 (= faux), puis x[$0] passe à N+1.

Dit autrement, !x[$0]++ retourne :
– vrai si $0 contient une ligne non déjà vue, puis incrémente x[$0]
– faux si $0 contient une ligne déjà vue, puis incrémente x[$0]

Enfin, le comportement par défaut de awk est d’imprimer $0 en cas d’évaluation à vrai, et de ne rien faire dans le cas contraire. Toutes les lignes déjà vues disparaissent. Le fichier résultant ne possède pas de lignes en doublon.

La commande recommandée fait donc bien ce qu’elle est sensée faire, et elle le fait plus vite : 15mn sur mon ordinateur au lieu d’1h30 avec la commande “sort | uniq”…

Par contre, elle fonctionne bien parce que mon fichier texte initial contient beaucoup de doublons (le fichier final fait 311 Mo) et ne sature pas la mémoire de mon ordinateur. J’ai eu moins de chance avec un fichier texte de 15 Go recommandé par @CyrilleFranchet, et qui contient peu de doublons… Ça a fait exploser en vol ma machine. Comme quoi, la lisibilité a ses avantages ^^. Cette commande awk est donc à utiliser avec un œil sur l’évolution de l’occupation de la mémoire vive.

Pour aller plus loin : grep – sed – awk, exemples avancés

Dictionnaire français pour hashcat

Dans la droite ligne du billet précédent, et toujours à la demande d’un collègue ayant perdu le mot de passe d’un fichier pro Excel, j’avais besoin d’un fichier de mots français susceptibles d’être utilisés comme mot de passe.

Il y a toute une littérature sur “comment choisir un bon mot de passe”, et une partie non négligeable de mon travail actuel consiste à expliquer aux gens les consignes de base de la sécurité informatique. Je dois reconnaître que c’est passionnant, mais que la base de la base de la base n’est pas toujours comprise malgré des trésors de pédagogie.

Si les politiques de choix d’un mot de passe se sont durcies au fil du temps, et qu’il est difficile aujourd’hui de créer un compte informatique sans devoir prendre un mot de passe d’au moins 12 signes dont des minuscules, des majuscules, des chiffres et/ou des caractères spéciaux, que se passe-t-il quand l’utilisateur PEUT choisir le mot de passe qu’il veut, par exemple pour limiter l’accès à un fichier Excel ? La réponse est simple : mon expérience de la casse de mot de passe pour les besoins de la justice m’a montré que la plupart des personnes choisissent un mot courant, éventuellement suivi par un nombre, parfois complété par un point d’exclamation.

Quand aucune politique de sécurité n’est imposée, le choix préféré des français est donc : mot courant [ + année] [ + ! ]

Avant de procéder à une attaque par force brute, ie en essayant toutes les combinaisons possibles, et après avoir testé les mots de passe “évidents” (date de naissance, nom de l’utilisateur, prénom de son partenaire et de ses enfants, date de mariage, etc.), une bonne méthode est donc l’attaque par dictionnaire, ou plutôt en bon français, “l’attaque par liste de mots”.

Il existe sur internet une grande quantité de listes de mots, toutes aussi intéressantes les unes que les autres, mais je n’ai pas trouvé une liste de mots courants français, incluant les noms des régions, départements, villes, villages, hameaux et lieux dits, incluant aussi les mots d’argots, le vieux français, les différents patois, le langage “jeune”, les prénoms français, les petits noms donnés aux animaux, etc. Le tout intégrant les magnifiques caractères spécifiques du clavier français (le plus courant) é è ç à ù €, mais aussi tous les autres â ê ŷ û î ô ä ë ÿ ü ï ö Ä Ë Ÿ Ü Ï Ö etc.

Je me suis alors souvenu qu’il était possible de récupérer tout le contenu de Wikipédia pour pouvoir en disposer hors ligne. J’ai donc récupéré TOUT le Wikipédia francophone sur mon ordinateur, et je l’ai trié pour ne garder qu’un mot par ligne, puis j’ai éliminé les doublons. En comptant les essais/erreurs et les différents tâtonnements, il m’a fallu une journée pour disposer d’une magnifique liste de mots courant utilisés par les Français…

Puis j’ai utilisé la commande hashcat suivante :

hashcat -m 9500 -a 0 -w 3 --username --status --session=toto hashExcel.txt wikipedia.fr.txt

Environ 20mn plus tard, l’ordinateur me fournissait le mot de passe utilisé : un village des Alpes dont le nom fait 10 caractères.

Si vous aussi vous voulez briller auprès de vos collègues, vous pouvez utiliser cette méthode, à condition d’en donner le crédit “au blogueur dont le nom est presque celui d’une bière de l’Égypte antique” en vous rendant sur mon Github : https://github.com/Zythom/french-wikipedia-word-list. Cette saine lecture vous fera réviser vos codes ASCII et la base octale ^^.

Si par contre vous voulez compliquer la tâche des casseurs de mot de passe, ajoutez un “µ” ou un “>” dans votre mot de passe, ou mieux : générez le aléatoirement avec votre KeePass et installez l’extension “Kee Password Manager” dans votre navigateur.

Mais chacun fait ce qu’il veut.

Mon PC dans le Cloud

Comme vous le savez sans doute si vous me suivez sur Twitter, ou si vous avez lu l’épilogue de ma série de billet “25 ans dans une startup”, je travaille en région parisienne trois jours par semaine et je suis deux jours en télétravail dans ma province profonde (mais belle). Je précise que cette organisation a été mise en place AVANT le confinement de mars 2020, car j’ai la chance d’avoir un employeur moderne. J’en ai fait le bilan dans ce billet consacré au télétravail.

Mon employeur a mis à ma disposition un ordinateur portable qui me suit partout, et j’ai un ordinateur fixe personnel chez moi dans ma province profonde (mais belle) ET un ordinateur personnel chez moi dans ma “coquette petite studette en souplex” de région parisienne. J’ai également installé une VM privée sur mon ordinateur professionnel.

Cela fait donc 3 ordinateurs privés sur lesquels je veux retrouver les mêmes outils, les mêmes habitudes, les emails déjà lus, les mêmes partages de fichiers, etc.

Tout allait bien dans le meilleur des mondes, mais j’étais un peu agacé parfois de devoir synchroniser à la main une configuration, installer trois fois un nouveau logiciel, et maintenir des partages de fichiers en toute sécurité. N’était-il pas possible de simplifier un peu tout cela ?

J’écoutais, de plus en plus séduit, l’appel des sirènes du Cloud. Je voyais passer dans ma veille technologique des appels appuyés en direction des gamers pour qu’ils basculent leurs configurations vers des solutions telles que Google Stadia, Nvidia Geforce Now, xCloud de Xbox ou PlayStation Now. Des gamers ! Alors, pourquoi pas un petit PC perso avec sa petite configuration aux petits oignons ?

Oui mais et ma vie privée dans tout cela ? Et le coût ? Et la sécurité ? Après tout, le Cloud, ce n’est rien d’autre qu’un datacenter géré par quelqu’un d’autre et accessible de partout depuis un accès internet. Il faut se poser les bonnes questions : qui fera les sauvegardes, les mises à jour de sécurité, les montées de version des logiciels et des OS, qui sera “root” sur mes données ?

Autant de questions auxquelles il m’a bien fallu répondre pour l’hébergement de ce blog : après avoir testé l’autohébergement d’un WordPress sur YunoHost, j’ai préféré et choisi la location d’un VPS chez OVH, avec son offre Kimsufi à 3,59€ par mois. Je fais régulièrement un backup (et des tests) sur le WordPress de mon YunoHost. Je présenterai mon usage de la fantastique solution YunoHost dans un billet qui lui sera dédiée.

Oui MAIS : faire héberger un blog, ce n’est pas tout à fait la même chose que de faire héberger la totalité d’un ordinateur personnel… Et après avoir étudié les coûts, les solutions proposées, les risques, le coût des sauvegardes et la sécurité, voici ce que j’ai choisi.

A cause des coûts, j’ai abandonné la notion de “datacenter géré par quelqu’un d’autre” pour ne garder que celle de “accessible de partout depuis un accès internet”. Comme les solutions de type TeamViewer demandent de confier la partie sécurité à quelqu’un d’autre, j’ai donc choisi l’autohébergement complet de ma solution :

J’ai viré de mon ordinateur professionnel, la VM privée que j’y avait installé. J’ai entièrement réinstallé l’ordinateur personnel de ma coquette studette souplex pour n’y laisser que le système d’exploitation (Linux Mint, mais cela aurait aussi bien pu être Windows). Je n’ai conservé qu’un seul ordinateur personnel : celui qui se trouve chez moi.

J’y ai installé le logiciel NoMachine qui est ce que j’ai trouvé de plus efficace pour gérer deux écrans, les périphériques USB et le son à distance.

J’ai configuré le Wake On Line du PC de la manière suivante :
– dans le BIOS, j’ai activé “démarrage sur périphérique PCI-E” ;
– dans l’OS Linux Mint, j’ai activé le WoL avec la commande : sudo ethtool -s enp3s0 wol g

Depuis un PC distant, j’accède de manière chiffré à mon réseau privé grâce à OpenVPN en me connectant sur mon serveur NAS (qui fait tourner le service VPN), puis dans ce canal sécurisé je me connecte en ssh à ma VM Debian (voir le billet “Mon matériel”)

J’allume (depuis cette VM) mon PC perso avec la commande : wakeonlan -i IP -p 9 MAC où IP est l’adresse de broadcast de mon réseau privé et MAC l’adresse MAC du PC perso que je veux allumer.

Une fois démarré, j’y accède avec le client NoMachine (à travers le canal chiffré OpenVPN), et j’utilise mon “PC dans le Cloud” 🙂

Comme il est sous GNU/Linux, je peux si je veux le laisser allumer plusieurs jours sans surprise, si par exemple je lance sur ma carte graphique des calculs durant plusieurs jours.

Quelques remarques avant de vous laisser la parole en commentaire (je suis curieux de connaître vos solutions) :
– la solution NoMachine est vraiment puissante et efficace dans sa gestion des débits internet concernant les graphismes. Seul défaut relevé pour l’instant, elle ne gère pas ma Yubikey USB.
– l’accès par OpenVPN / ssh pour WoL / client NoMachine fonctionne également sous Android ou sur iPhone (pour la commande ssh sur iPhone, j’utilise l’excellente application a-shell).

Et vous, comment accédez-vous à un PC privé à distance ?

Source image https://www.pinterest.fr/pin/471963235926834775

Dialogue avec le support Free

A mon avis, ce n’est plus une bonne idée de vouloir autohéberger son propre serveur de messagerie, tant il est difficile de garantir son bon fonctionnement selon les bonnes pratiques (qui évoluent très vite). Mais c’est possible. Et j’ai voulu m’y atteler pour une raison que j’expliquerai dans un autre billet.

L’une des nombreuses conditions pour disposer d’un serveur de messagerie pleinement accepté par ses petits camarades serveurs-de-messagerie, est de pouvoir mettre en place un reverse DNS. Et cela tombe bien, comme Rodolphe, je suis abonné Free, et ce FAI permet via son interface de mettre en place un reverse DNS.

Enfin, c’est ce que je croyais…

Après avoir paramétré le reverse DNS correspondant à mon besoin, dans l’interface Free de mon abonnement FreeBox, et après avoir attendu plusieurs jours pour être certains que les informations se soient bien propagées, le reverse DNS n’était toujours pas fonctionnel : les différents outils à ma disposition me donnent toujours comme reverse W-X-Y-Z.subs.proxad.net, où W.X.Y.Z est l’adresse IPv4 fournie par Free pour mon point d’accès.

Cherchant à en savoir plus, je me tourne vers internet et je constate que pas mal de personnes semblent avoir le même problème que moi…

Comme il n’est plus possible d’avoir une réponse par les canaux habituels des années 90, je m’adresse au support par Twitter en Direct Messages. Je vous livre le dialogue in extenso :

Bonjour, le reverse DNS n’est pas fonctionnel, alors qu’il est activé dans mon interface depuis 15 jours… Je lis dans de nombreux forums que ce service ne fonctionne pas correctement, est-ce exact ? Comment le faire fonctionner quand on autohéberge un serveur de messagerie ?

Ligne Fibre Optique
NRO : XXXXX
Adresse IP : W.X.Y.Z
Préfixe IPv6 : AAAA:BBBB:CCCC:DDDD::/64

Identifiant : fbxXXXXXX
N° de téléphone Freebox : XX XX XX XX XX
N° de fax : XX XX XX XX XX

Le reverse DNS effectif est WW-XX-YY-ZZ.subs.proxad.net

Ce qui n’est pas ce que j’ai paramétré dans l’interface Freebox

bonjour,
edirection DNS [ma conf] vers WW.XX.YY.ZZ (Actif)
Reverse DNS WW.XX.YY.ZZ vers [ma conf] (Actif)

Pour information, nous n’effectuons aucun support à ce sujet.

Bonne journée

Je pense que vous n’avez pas compris la question, car votre réponse ne fait qu’indiquer ce que j’ai moi-même configuré (je suis donc au courant de ce que j’ai configuré) ET me dire que c’est actif (ce que je sais puisque c’est ce que l’interface de la Freebox indique).

Ma question est donc : pourquoi est-ce que ce n’est pas fonctionnel ?

Nous n’effectuons aucun support à ce sujet.
Bonne journée

Vous m’indiquez que la edirection DNS est : [ma config]

Vous m’indiquez que le reverse DNS est : [ma config]

Je suis d’accord avec vous.

MAIS lorsque l’on teste le reverse DNS effectif depuis les ordinateurs du monde entier, la réponse effective est : WW-XX-YY-ZZ.subs.proxad.net

Ce qui n’est PAS le configuration demandée ET indiquée comme “Actif” sur votre interface Freebox

DONC il y a un bug CHEZ VOUS

Pouvez-vous le corriger et rendre ce service FONCTIONNEL ?

Merci

Je ne comprends pas que votre réponse puisse se limiter à “nous n’effectuons aucun support à ce sujet” : je vous signale un dysfonctionnement, et je demande une réparation d’un service dû qui ne fonctionne pas, je ne demande pas un support !

C’est actif, donc fonctionnel. Bonne journée

Je n’ai eu ensuite plus aucune réponse à mes sollicitations…

Une carte n’est pas le territoire qu’elle représente – Alfred Korzybski

[EDIT du 20/02/2020] Un lecteur m’informe sur Twitter qu’un ticket de bug a été ouvert chez Free cet été sur ce problème, puis fermé avec la réponse suivante :

Close par Thibaut Freebox (Thibaut Freebox)
Thursday  1 August, 2019 15:01:46
Raison de clôture :  Ne sera pas implémenté
Commentaires supplémentaires de clôture :
Ne sera pas implémenté POUR L'INSTANT (période de transition adsl-fibre et ipv4-v6)
Ce sera ré-implémenté à l'avenir, mais non : je n'ai pas de date pour cela.

Remplacer un disque dans un soft RAID GNU/Linux

Hier, j’ai eu une petite frayeur en constatant qu’un test automatique SMART (long selftest) rencontrait une erreur de lecture sur l’un des disques durs de mon NAS de sauvegarde. Celui-ci apparaissait en SMART rouge sur l’interface OpenMediaVault…

Comme c’est un NAS DIY, je n’ai pas de procédure automatique en cas de panne de disque dur : il faut intervenir à la main. Je pose ici la procédure, pour la partager et m’en souvenir, car quand un disque tombe, les autres vont commencer à faire pareil…

Le disque en panne est /dev/sdb, et je suis dans le cas d’un RAID5 où je peux retirer un disque du RAID, sans perdre de données. Le NAS ne contient que des sauvegardes, donc je peux perdre toutes les données, mais j’aime mieux pas (10 To de sauvegardes à reconstituer pendant plusieurs semaines, mon cœur ne tiendrait pas).

Dans un terminal ouvert sur le NAS en ssh sous root (ssh root@X.X.X.X), utilisez les commande suivantes (il faut adapter les commandes selon votre configuration. VOUS DEVEZ COMPRENDRE CHAQUE COMMANDE AVANT DE LA LANCER. Une erreur a pu se glisser dans la suite de commandes que j’indique, je décline toute responsabilité, SGDZ, pas taper) :

Je déclare le disque en panne (SMART ne l’a pas fait), puis je le retire du RAID5 :

mdadm --manage /dev/md0 --fail /dev/sdb
mdadm --manage /dev/md0 --remove /dev/sdb

Je constate dans l’interface OpenMediaVault que le RAID est passé en mode dégradé (il ne l’était pas encore car le problème que j’ai détecté est un problème SMART).

J’arrête le NAS et je remplace hors tension le disque défectueux par un disque de même taille, judicieusement disponible à cette occasion (spare à froid).

Je redémarre le NAS et constate que l’interface OpenMediaVault ne me propose pas d’insérer dans le RAID le nouveau disque dur, sans doute parce que celui-ci n’est pas correctement préparé. Je vais le préparer avec les commandes suivantes :

Je me reconnecte root sur le NAS avec un terminal via ssh, pour lancer la commande gdisk :

gdisk /dev/sdb

Et là, horreur malheur, j’ai les informations suivantes :

GPT fdisk (gdisk) version 1.0.1

Caution: invalid backup GPT header, but valid main header; regenerating backup header from main header.

Partition table scan:
MBR: protective
BSD: not present
APM: not present
GPT: damaged
Caution: Found protective or hybrid MBR and corrupt GPT. Using GPT, but disk verification and recovery are STRONGLY recommended.

Dans l’interface de la commande gdisk, je passe en mode “Expert command” en tapant “x”, puis je supprime les structures GPT et nettoie MBR avec la commande “z”:

Command (? for help): x
Expert command (? for help): z
About to wipe out GPT on /dev/sdb. Proceed? (Y/N): Y

GPT data structures destroyed! You may now partition the disk using fdisk or other utilities.

Blank out MBR? (Y/N): Y

Je quitte gdisk avec la commande “w”, puis je relance gdisk pour vérifier que tout est bon :

# gdisk /dev/sdb
GPT fdisk (gdisk) version 1.0.1

Partition table scan:
MBR: not present
BSD: not present
APM: not present
GPT: not present

Creating new GPT entries.

Command (? for help): q

J’ajoute enfin le nouveau disque dans la grappe RAID :

mdadm --manage /dev/md0 --add /dev/sdb

Je vérifie qu’il n’y a pas d’erreur bizarre, avec :

fdisk -l  # <-- le signe avant le croisillon est un L minuscule

Je vérifie que le RAID se reconstruit correctement, dans l’interface OpenMediaVault ou avec la commande :

cat /proc/mdstat

Je prie pour qu’aucun autre disque ne lâche dans les heures suivantes…

Une fois tout rentré dans l’ordre, je n’oublie pas de reprogrammer un selftest SMART de type long sur le nouveau disque, dans l’interface OpenMediaVault.

J’espère que ce billet pourra faire gagner du temps à quelques uns.

Ceinture et bretelles