Etude sur un broyeur de fichier (shredder)

Page 1 sur 5 1, 2, 3, 4, 5  Suivant

Voir le sujet précédent Voir le sujet suivant Aller en bas

Etude sur un broyeur de fichier (shredder)

Message  faiseur le Lun 26 Juil - 22:55

Bonjour,

je cherche à me documenter sur la meilleure manière de mettre en place un broyeur de fichier efficace ("schredder" en anglais). Plus je me documente plus je vois qu'il s'agit d'un sujet délicat et difficile. En effet, un formatage simple par exemple ne réinitialise pas vraiment le disque dur mais réinitialise simplement certaines données. Et il semble que les programme de récupération de disque arrivent à récupérer environ 80% des données, c'est assez flippant - ou encourageant selon le point de vue où on se place certes. Mais cela en dit long sur la protection des données. Je me suis documenté ici et là dans l'idée de mettre en place un broyeur de fichier efficace. Il y a plusieurs informations intéressantes qui sortent du lot mais certaines sont contradictoires. Ce qui me paraît clair pour l'instant c'est que:

1. Il faut éviter d'utiliser la fonction de FileMapping car les données sont placées en mémoire cache, donc non écrites physiquement sur le disque dur. Evidemment le but est de faire l'inverse: il faut forcer une écriture réelle sur le disque pour modifier les données du fichier et le rendre illisible avant son effacement.

2. Utiliser les API CreateFile/SetFilePointer pour se placer dans une fichier paraît la meilleure voie à suivre pour écrire REELLEMENT dans un fichier et ainsi effacer les données.

3. Il faut arriver à vider le cache à CHAQUE passe successive pour que chaque passé soit REELLEMENT écrite sur le disque dur.

Conclusion: une partie des logiciels broyeurs disponibles sur internet font certainement mal ce travail car ils ne tiennent pas compte des points cités ci-dessus, ce qui semble confirmé par plusieurs professionnels du milieu.

Concernant la méthode à employer sur ce qu'il faut écrire à chaque passe les informations deviennent contradictoires. J'ai toutefois tiré la conclusion suivante, qui me parle bien, à partir de différentes théories:

Une bonne méthode serait de forcer le disque dur à se "réinitialiser magnétiquement". Pour ce faire l'idée à suivre est d'écrire des passes successives avec les mêmes valeurs 00h puis la suivante avec les mêmes valeurs ffh, et ainsi de suite selon le nombre de passes définies dans le programme. Ce serait un procédé plus efficace que d'écrire n'importe quoi sur le fichier. Si on écrit différentes valeurs pour chaque byte cela génère des interférences qui sont justement utilisées par les programmes de récupération de fichier. L'idée serait d'arriver à réinitialiser magnétiquement le disque avec les même valeurs. En pratique cela paraît difficile à vérifier mais ça tient bien la route.

SI vous avez des idées sur ce sujet, une documentation intéressante, merci de m'en faire part.






Dernière édition par faiseur le Mar 3 Aoû - 0:28, édité 1 fois

faiseur
Admin

Messages: 371
Date d'inscription: 02/05/2010

Voir le profil de l'utilisateur http://www.asmforum.net

Revenir en haut Aller en bas

Re: Etude sur un broyeur de fichier (shredder)

Message  edfed le Mar 27 Juil - 11:12

http://board.flatassembler.net/topic.php?p=57527#57527

mais ça ne fonctionne qu'en mode reel ou V86, selon les machines.

pour le faire fonctionner sous hasta la vista ou seven peché capitaux, faut tout simplement le reecrire en entier en utilisant les api ouinedoze d'ecriture directe sur disque.


edfed

Messages: 44
Date d'inscription: 24/05/2010

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Etude sur un broyeur de fichier (shredder)

Message  bifur le Mar 27 Juil - 19:13

ce 'shredder' c'est pas un broyeur de fichier mais un broyeur de disque!

j'avais déja envisagé de faire ce genre de truc mais je me suis contenté de faire un programme qui efface le premier secteur, j'avais juste besoin a l'époque d'effacer toute trace d'un partitionnement pour reinstaller tranquillement un bon vieux windows XP et puis si qqn veut récupéré mes données qu'il le fasse! vu le genre de connerie que c'est Razz

sinon ça doit pas etre trop difficile, j'ai déja une ptit fonction d'écriture de secteur sur disque via e/s

bifur

Messages: 54
Date d'inscription: 21/05/2010

Voir le profil de l'utilisateur http://bofur.olympe-network.com

Revenir en haut Aller en bas

Re: Etude sur un broyeur de fichier (shredder)

Message  faiseur le Mar 27 Juil - 21:29

Merci pour les retours. En effet, un broyeur de disque est différent d'un broyeur de fichier (ce que je vais mettre en place).

sinon ça doit pas etre trop difficile, j'ai déja une ptit fonction d'écriture de secteur sur disque via e/s


La difficulté est de faire ça bien, de limiter la possibilité d'un logiciel à récupérer le fichier broyé en forçant une véritable réécriture des données, un certain nombre de fois (passes) et pas avec n'importe quelles données semble-t-il. C'est là où les avis divergent...

Actuellement je focus mon attention à obliger Windows à ne pas utiliser de buffer lorsque mon programme va réécrire sur le fichier. C'est la meilleure manière de forcer l'écriture sur le disque à chaque passe. L'argument FILE_FLAG_NO_BUFFERING est important mais il demande des critères précis au niveau de l'allocation de la mémoire sinon ça ne fonctionnera pas. Plus d'infos ici pour les intéressés: http://msdn.microsoft.com/en-us/library/cc644950%28v=VS.85%29.aspx



faiseur
Admin

Messages: 371
Date d'inscription: 02/05/2010

Voir le profil de l'utilisateur http://www.asmforum.net

Revenir en haut Aller en bas

Re: Etude sur un broyeur de fichier (shredder)

Message  Grincheux le Mer 28 Juil - 9:08

Dans mon travail, (je suis assembleur...) j'utilise souvent les récupérateurs de fichiers, notamment celui de OnTrack.
D'après ce que j'ai constaté, quand un fichier est réécrit, les anciennes données ne sont pas écrasées, mais les nouvelles sont écrites plus loin sur le disque, si possible à une place vierge. Si ce n'est pas le cas d'anciennes données sont écrasées. Le meilleur moyen (à mon avis) de faire ce que tu souhaites est de créer un gros fichier rempli de tout ce que tu veux, et que tu écrives le contenu jusqu'à atteindre la fin du disque. Ainsi, plus rien n'est récupérable.[/quote]

Dans mon programme (myViewer) j'ai ajouté une option de destruction des données, et j'ai pensé renommé l'ancien fichier avec un nom bidon, puis créer un nouveau fichier avec le nom du fichier à détruire, le remplir de zéro et supprimer ce fichier, le tout pour tromper l'ennemi. Est-ce efficace ?


Tiens moi au courant, cela m'intéresse.

Grincheux

Messages: 247
Date d'inscription: 17/05/2010
Age: 52
Localisation: Mathenay (39), France

Voir le profil de l'utilisateur http://phrio.biz

Revenir en haut Aller en bas

Re: Etude sur un broyeur de fichier (shredder)

Message  faiseur le Mer 28 Juil - 12:13

Dans mon travail, (je suis assembleur...) j'utilise souvent les récupérateurs de fichiers, notamment celui de OnTrack.
D'après ce que j'ai constaté, quand un fichier est réécrit, les anciennes données ne sont pas écrasées, mais les nouvelles sont écrites plus loin sur le disque, si possible à une place vierge. Si ce n'est pas le cas d'anciennes données sont écrasées. Le meilleur moyen (à mon avis) de faire ce que tu souhaites est de créer un gros fichier rempli de tout ce que tu veux, et que tu écrives le contenu jusqu'à atteindre la fin du disque. Ainsi, plus rien n'est récupérable.


Ce que tu dit est, de ce que j'ai compris, à moitié vrai. Mes connaissances actuelles ne sont pas très poussées mais voici une petite synthèse:

Lorsqu'on souhaite écrire sur un fichier déjà existant Windows va commencer par allouer un buffer pour cette écriture. Ce buffer sert à faciliter les accès disque. Notons que:

a. Ce buffer est indépendant du buffer des données à écrire alloué par le programme.

b. Ce buffer est différent de la mémoire cache du disque dur.

Si les données à écrire sont supérieures aux données du fichier alors Windows va, à un certain moment, écrire sur d'autres secteurs du disque que sur celui où se trouve le fichier déjà existant. Logique puisqu'il faut plus de place. Une partie des données d'origine seront donc préservées. Première erreur à éviter: ne pas écrire sur le fichier d'origine avec des données plus grandes que sa taille.

Si les données à écrire sont inférieurs à la taille du fichier déjà existant, on a toutes les chances pour que Windows écrive effectivement sur le fichier d'origine, pour autant évidemment que l'on spécifie vouloir écrire sur ledit fichier. On peut forcer Windows à le faire de plusieurs manières:

1. En sollicitant l'option GENERIC_ALL avec l'API CreateFile. Cette option ouvre l'accès en lecture et écriture sur le fichier. Donc les données écrites en mode GENERIC_ALL seront certainement placées sur les données lues avec GENERIC_ALL. Je me méfie d'ouvrir le fichier uniquement en accès écriture (avec l'option GENERIC_WRITE), mais peut-être que le résultat est aussi fiable.

2. Si on sollicite un accès au fichier sans utiliser le buffer de Windows les données seront écrites sur le fichier d'origine. En enlevant le buffer de Windows on accède à un levier intéressant pour prendre la main sur l'écriture du disque. Cela se fait avec l'argument FILE_FLAG_NO_BUFFERING puis en utilisant une mémoire allouée selon certains critères.

Le buffer alloué par Windows sert logiquement à éviter d'écrire sur le disque quand ce n'est pas nécessaire. Il permet d'éviter des accès disque trop fréquents. Si par exemple on veut écrire 20 passes avec à chaque fois des données différentes sur le fichier à broyer, il n'est pas du tout certain que les 20 passes seront écrites physiquement sur le disque ! On peut imaginer que dans certains cas Windows attendra que le programme aie terminé ses opérations sur le fichier puis écrira la dernière passe (les données définitives), à la fermeture du fichier, en se servant du buffer. Il faut donc enlever ce buffer. Le fait d'écrire une fois sur le disque au lieu de 20 fois augmente les chances de retrouver les données d'origine. Dans le même registre, éviter d'utiliser CreateFileMapping and co, les données sont placées en mémoire cache par Windows.

3. On peut aussi écrire chaque passe en fermant puis en réouvrant le fichier. Cela sollicite plus le disque dur mais devrait garantir que chaque passe est écrite physiquement sur le disque.

Ensuite il reste le choix des données à écrire sur le fichier. A ma compréhension le mieux est de chercher à réinitialiser les secteurs magnétiquement, avec des passes alternatives de données 00h puis ffh.


Dans mon programme (myViewer) j'ai ajouté une option de destruction des données, et j'ai pensé renommé l'ancien fichier avec un nom bidon, puis créer un nouveau fichier avec le nom du fichier à détruire, le remplir de zéro et supprimer ce fichier, le tout pour tromper l'ennemi. Est-ce efficace ?


Je trouve que c'est une bonne idée si l'"ennemi" cherche le fichier que tu as renommé. Si on part de l'idée que l'"ennemi" ne sait pas ce qu'il faut trouver et qu'il y va à l'aveugle, il aura tout de même récupéré les données du fichier que tu as renommé et il fera le tri...



faiseur
Admin

Messages: 371
Date d'inscription: 02/05/2010

Voir le profil de l'utilisateur http://www.asmforum.net

Revenir en haut Aller en bas

Re: Etude sur un broyeur de fichier (shredder)

Message  Grincheux le Mer 28 Juil - 18:58

Fait un essai avec OnTrack, tu verras comment sont les données sur le disque, je parie que je te récupères des données d'il y a 2 ou 3 ans ! cheers

Grincheux

Messages: 247
Date d'inscription: 17/05/2010
Age: 52
Localisation: Mathenay (39), France

Voir le profil de l'utilisateur http://phrio.biz

Revenir en haut Aller en bas

Re: Etude sur un broyeur de fichier (shredder)

Message  Grincheux le Mer 28 Juil - 19:01

Pour moi la solution la plus efficace consiste à réécrire sur tout le disque, quitte à le remplir. Il faut aussi utiliser le buffering de Windows "FlushFileBuffers" devrait suffire. ne fois ces données réécrite plusieurs fois, il est alors possible de supprimer le fichier.

Qui a d'autres idées ?

Grincheux

Messages: 247
Date d'inscription: 17/05/2010
Age: 52
Localisation: Mathenay (39), France

Voir le profil de l'utilisateur http://phrio.biz

Revenir en haut Aller en bas

Re: Etude sur un broyeur de fichier (shredder)

Message  faiseur le Mer 28 Juil - 22:38

Grincheux a écrit:Fait un essai avec OnTrack, tu verras comment sont les données sur le disque, je parie que je te récupères des données d'il y a 2 ou 3 ans ! cheers


Tu as raison, je vais installer ce truc quand j'en serai à faire mes essai. Je te demanderai conseil s'il y a des choses à savoir.

Pour moi la solution la plus efficace consiste à réécrire sur tout le disque, quitte à le remplir. Il faut aussi utiliser le buffering de Windows "FlushFileBuffers" devrait suffire. ne fois ces données réécrite plusieurs fois, il est alors possible de supprimer le fichier.


Mais écrire sur tout le disque va prendre un temps fou !?!





faiseur
Admin

Messages: 371
Date d'inscription: 02/05/2010

Voir le profil de l'utilisateur http://www.asmforum.net

Revenir en haut Aller en bas

Re: Etude sur un broyeur de fichier (shredder)

Message  Grincheux le Jeu 29 Juil - 8:35

Faut savoir ce que l'on veux !

D'autres parts, faire passes c'est plus rapide ?

Grincheux

Messages: 247
Date d'inscription: 17/05/2010
Age: 52
Localisation: Mathenay (39), France

Voir le profil de l'utilisateur http://phrio.biz

Revenir en haut Aller en bas

Re: Etude sur un broyeur de fichier (shredder)

Message  faiseur le Jeu 29 Juil - 8:55

Grincheux a écrit:Faut savoir ce que l'on veux !

D'autres parts, faire <n> passes c'est plus rapide ?



Disons que 100 passes sur un fichier 500ko ne se fait pas sentir, et passe à plusieurs secondes sur un fichier de 10Mo. C'est sur mon portable qui a un disque dur assez lent.

faiseur
Admin

Messages: 371
Date d'inscription: 02/05/2010

Voir le profil de l'utilisateur http://www.asmforum.net

Revenir en haut Aller en bas

Re: Etude sur un broyeur de fichier (shredder)

Message  edfed le Jeu 29 Juil - 19:37

sinon, tu peu recuperer l'adresse des clusters à ecrire pour faire disparaitre les fichiers.
windows à forcement une api pour retourner le n° du premier cluster du fichier.
et une autre api pour ecrire en RAW sur le disque, donc c pas impossible.
en créant un thread pour l'ecrasement du fichier, ça permetrais de ne pas ressentir la procedure lors d'une session.

sinon, sous linux, il existe des trucs pour le faire direct avec la commande magique RD

edfed

Messages: 44
Date d'inscription: 24/05/2010

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Etude sur un broyeur de fichier (shredder)

Message  Grincheux le Jeu 29 Juil - 20:42

Je pense que c'est la meilleure réponse.

Grincheux

Messages: 247
Date d'inscription: 17/05/2010
Age: 52
Localisation: Mathenay (39), France

Voir le profil de l'utilisateur http://phrio.biz

Revenir en haut Aller en bas

Re: Etude sur un broyeur de fichier (shredder)

Message  edfed le Ven 30 Juil - 0:29

Grincheux a écrit:Je pense que c'est la meilleure réponse.


reste plus qu'à le faire.

j'essayerais bien pour voir, mais j'ai la fleme. on vera.


d'ailleur, au passage, en parlant de DEV pour windows(R)(TM)(C), je propose que soit fait utilisation des libs uniquement compatibles avec WIN32, c'est à dire la seule librairie qui soit presente à l'identique sur tout les (re)ouindozzz.
peut importe les nouvelles super mega fonctionnalités des nouveaux windows (NT,7 etc), elles sont totallement inutiles (bloat) et n'ajoutent pas de possibilité en dehors d'une "amélioration" des perfs qui se limite en la simplification de certains process. [mode politique] et force les utilisateurs a se payer de nouvelles machines, et dont les drivers ne sont devellopés que pour le nouvel os qu'il faudra lui aussi acheter. un systeme qu'il faut refuser.

if code windows
then code win95 compatible

if code not win95 compatible
then don't run at all because it is bloated

sur ce bonne nuit

edfed

Messages: 44
Date d'inscription: 24/05/2010

Voir le profil de l'utilisateur

Revenir en haut Aller en bas

Re: Etude sur un broyeur de fichier (shredder)

Message  faiseur le Ven 30 Juil - 12:17

windows à forcement une api pour retourner le n° du premier cluster du fichier.


Ce serait effectivement le top mais je n'en connais pas. Je vais chercher.

edfed a écrit:

reste plus qu'à le faire.

j'essayerais bien pour voir, mais j'ai la fleme. on vera.


On a peut-être réussi à intéresser Edfed sur un projet Smile



faiseur
Admin

Messages: 371
Date d'inscription: 02/05/2010

Voir le profil de l'utilisateur http://www.asmforum.net

Revenir en haut Aller en bas

Page 1 sur 5 1, 2, 3, 4, 5  Suivant

Voir le sujet précédent Voir le sujet suivant Revenir en haut

- Sujets similaires

Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum