Alors voilà. Le récit des deux derniers jours, passés entre des 0
et des 1.
Le récit d'une lose comment on en voit peu, je pense. Si vous êtes
passé ici dans les dernières 48h (et même peut être avant), vous
avez du vous en rendre compte. Tous les posts, effacés, un à un.
Sans exception.
Avant hier soir, table rase.
Vide.
Ø
Plus rien.
J'ai flippé, sur le coup. J'ai pas arrêté ensuite, pendant les
dernières 48h. Qu'est ce qu'il s'était passé ? Qui avait fait ça ?
Comment c'était arrivé ? Comment récuperer les données. Est ce que
je pouvais, même ?
Tout mercredi soir, après la découverte, en recherchant les
différents backups qu'éventuellement je pouvais avoir, je me
demandais ce qu'il s'était passé. J'avais le cœur serré, l'estomac
noué. Est ce que c'était une attaque, un piratage quelconque ?
L'œuvre de quelqu'un de malintentionné ? Une erreur de disque, de
système de fichier, enfin whatever ? Impossible de trouver ce qu'il
s'était passé, la nuit avançait, je trouvais pas. Je cherchais mes
backups. Vieux. Janvier 2006, 9 mois de posts perdus ? Je regarde
dans la base, les posts sont effacés, effectivement, mais les
données sont encore là. Illisibles par mysql, mais encore là,
marquées effacées, incompréhensibles. Et toujours pas de trace de
comment.
Et puis, en cherchant dans les logs de mysql, je vois des requêtes
d'effacement, une à une, sur plusieurs jours, tous les posts, les
uns après les autres. C'est clairement pas un problème disque, ils
ont été effacés parfaitement correctement, comme si moi je les
avais effacés. Ou comme si quelqu'un d'autre les avait effacés,
étant donné que je suis encore à peu près certain que c'est pas moi
qui l'ait fait.
Et puis, en recherchant dans mes logs apache aux heures
correspondantes, la réponse apparait.
Cinglante.
C'est google. Googlebot, plus exactement. Un robot oui,
parfaitement. Méthodiquement, comme il a été programmé, il inspecte
les pages, et suit les liens. Il a réussi à trouver un chemin
jusqu'à mon interface d'administration, non protegé par un
login/pass, en passant pas par le vhost www.corsac.net. Un
chemin qu'a priori personne n'aurait suivi, mais googlebot, lui,
n'est pas une personne. Il a juste suivi, exaustivement, tous les
liens qu'il a pu trouver. Une fois dans l'interface
d'administration, il est tombé sur la page avec tous les posts, et
à côté de chacun le lien "Effacer".
Et il a suivi tous ces liens, un à un, petit à petit. Et il a
effacé tous mes posts. Juste en faisant son job, sans se poser de
question, sans intention de nuire (don't do evil).
Froidement.
C'est d'autant plus rageant que c'est ma faute (j'aurais jamais du
laisser l'accès ouvert jusque là), mais que c'était impossible à
empecher sans savoir que c'était accessible par là.
Je m'en suis bouffé les doigts, mercredi soir, ça me désperait. Que
ce soit de ma faute et en même temps la faute de personne, que je
sois en faute mais que ce n'ait même pas été moi qui ait cliqué sur
"Effacer". Une boule au ventre qui ne m'a pas quitté de la
nuit.
Et le lendemain, petit à petit, essayer d'analyser le format .MYD
des bases de données mysql, pour retrouver comment parser les
champs, et reconstituer la base, en ayant perdu les champs id et
tri, sur lequel je me base pour l'organiser. Deux jours de
bataille, la tête dans l'hexa, à lire dans le binaire, à coder du C
de crade. J'oserais pas poster ici le parser que j'ai codé pour
lire le .MYD et recuperer les posts, mais c'est du bien crade, y'a
pas de doute. Et ensuite, éditer à la main le binaire pour
l'arranger, parce que, comble du comble, certains posts se sont
retrouvés au milieu de certains autres, il manquait des champs au
début, à la fin, bref ça foutait en l'air mon programme. Éditer à
la main les dates aussi, pour transformer Aout en Août (parce que
Aout c'est pas compris par strptime()), à transformer
Decembre en Décembre, Fevrier en Février, et Ao&uirct en Août,
donc à nouveau changer la taille des champs, un à un.
Tout ça pour, au final, reconstituer un fichier SQL et réinserer
toutes les données dedans. Pour un peu moins de décalage, je suis
reparti du backup de janvier dernier, mais au final j'ai
reconstitué l'intégralité de la base (à quelques posts près, je
pense). Les id ont été décalés, donc les commentaires éventuels ne
correspondent plus, mais bon, depuis janvier y'a pas eu beaucoup de
posts avec commentaires donc c'est pas très très grave. Je
réarrangerai si/quand j'aurai le courage.
Plus de peur que de mal, au final, sur cette affaire, mais,
vraiment, on le dira jamais assez, -faites- des backups. Tout le
temps, régulierement. Parce que perdre d'un coup plus de 4 ans de
blog, vraiment, ça m'a fait mal au cœur. Ça m'arrive régulierement
de perdre des mails, quelques années, paf. Ou des logs. C'est pas
encore trop grave, ça fait vraiment chier pour les mails, surtout
que là il commence à y en avoir des vraiment importants, mais bon,
on s'y fait, on prend l'habitude. Mais là, ces 4 années, c'est des
choses que moi j'ai écrites, c'est des choses que j'ai été, que
j'ai pensé. Et j'avoue que l'idée de repartir de zéro, de faire
table rase du passé, non, vraiment, j'acceptais pas. Pas si c'était
pas de mon plein gré. Je suis pas spécialement fier de tous les
posts, y'en a quelques uns dans le lot que j'aime bien, mais pas
beaucoup. Mais il n'empèche, c'est moi, ça a été moi, et j'y tiens,
finalement.
Un grand merci à Gniarf, pour le temps qu'il a passé à repécher mes
données et à rattraper les erreurs d'un autre, un grand merci à
#debian-devel-fr et #linuxfr pour les conseils judicieux en matière
de code.
On a beau ne pas s'attacher aux choses materielles, y'a des fois,
quand même, ça passe pas.
Bon, maintenant il s'agit d'aller acheter un disque dur et de faire
des vrais backups, un peu.
Images
Stats
Stuff