2015-11-06 1 views
0

Comment puis-je manipuler un fichier afin que la signature MD5/SHA1 soit modifiée. Je voudrais le faire d'une manière générique, sans connaître le type de fichier, exe, pdf, jpg, etc. Est-il possible de faire comme ceci et ne pas corrompre le fichier?Comment modifier une signature de fichier

Je n'essaie pas de construire une nouvelle signature connue juste changer de la signature existante. Je me fiche de la nouvelle signature.

Je pensais juste ajouter un nouvel octet nul à la fin du fichier. Est-ce que cela casserait n'importe quel format?

Répondre

1

Les formats binaires spécifient le format en bits. Cela dépend donc du format de chaque bit. En d'autres termes: vous ne pouvez pas modifier le fichier sans comprendre le format si vous voulez qu'il reste valide. L'ajout d'un octet nul peut fonctionner pour de nombreux formats car il peut être simplement ignoré, mais ce n'est pas une donnée.

Vous pouvez également rechercher des emplacements dans des formats existants et les stocker dans un tableau. Vous pouvez généralement rechercher le format en utilisant la commande file dans les systèmes Posix (Linux, CygWin ...).

0

Je suis d'accord avec @Maarten. Cela dépend du format de fichier, vous avez donc besoin d'une carte de règles par format. Je voudrais essayer d'ajouter un octet ZERO à la fin du fichier. Cela peut fonctionner dans la majorité des fichiers communs.

RandomAccessFile f = new RandomAccessFile("filePath", "r"); 
    byte[] b = new byte[(int)f.length() + 1]; 
    f.read(b); 


    FileOutputStream fos = new FileOutputStream("newFilePath"); 
    fos.write(b);