Método de paso a nivel de kernel para cambiar hashes de archivos

Método de paso a nivel de kernel para cambiar hashes de archivos

Estoy buscando cualquier mecanismo a nivel de kernel que sea de transferencia y cambie los hash de los archivos cifrando el contenido del archivo o agregando datos. La solución más obvia es el cifrado, pero no puedo encontrar ningún método de cifrado apropiado (por ejemplo, completamente solo para el kernel, sin ecryptfs, sin tecnología FUSE, etc.).

Específicamente, tengo una gran cantidad de archivos /fooque me gustaría que también aparecieran de /foobarcualquier manera que oculte el MD5 original de los archivos.sinduplicar los datos sin procesar. No me preocupa si los archivos /foobarse vuelven inútiles debido a las adiciones; estoy feliz de agregar algunos bytes aleatorios a cada archivo y dejar que eso rompa muchos de los formatos de archivo, pero no sé cómo hacer esto con algunos especie de montaje de enlace

Respuesta1

Si está buscando una superposición de sistema de archivos personalizada, FUSE es la dirección correcta. Hay varios sistemas de archivos personalizados escritos con FUSE (sshfs, ntfs-3g, wikipediafs...), incluidas superposiciones simples comoenlazar.

Se podría tomar el código fuente de bindfs y modificarlo para, por ejemplo, XOR el primer byte con algunos datos aleatorios cada vez que procesa una operación de lectura.

Para una opción de kernel puro, puede modificar overlayfslos unionfscontroladores de manera similar.

Otra alternativa es tomar Samba, escribir un módulo Samba vfs para corromper archivos, compartir el directorio fuente y montarlo en la misma máquina usando el cifscontrolador de Linux. (Lo mismo también es posible usando el 9pcontrolador y el u9fsdemonio, o con el nfscontrolador y algún que otro demonio del servidor NFS).


Si no le importa el contenido, cree archivos dispersos con el tamaño deseado; no ocuparán ningún espacio en absoluto:

$ truncate -s 1G largefile
$ du -h --apparent largefile
1G  largefile
$ du -h largefile
0   largefile

Haz un bucle sobre un árbol como este:

cd /foo
find -type d | while read -r file; do
    mkdir -p "/foobar/$file"
done
find -type f | while read -r file; do
    truncate -r "$file" "/foobar/$file"
done

información relacionada