파일 해시를 변경하는 커널 수준 통과 방법

파일 해시를 변경하는 커널 수준 통과 방법

저는 통과 기능이 있고 파일 내용을 암호화하거나 데이터를 추가하여 파일 해시를 변경하는 커널 수준 메커니즘을 찾고 있습니다. 가장 확실한 해결책은 암호화이지만 적절한 암호화 방법(예: 완전 커널 전용, ecryptfs 없음, FUSE 전원 없음 등)을 찾을 수 없습니다.

특히 파일의 원본 MD5를 난독화하는 방식으로 /foo표시하고 싶은 파일이 너무 많습니다 ./foobar없이원시 데이터를 복제합니다. 추가로 인해 파일이 쓸모 없게 되어도 걱정하지 않습니다 /foobar. 각 파일에 임의의 바이트 몇 개를 추가하여 많은 파일 형식을 손상시키는 것은 좋지만 일부 파일에서는 이를 수행하는 방법을 모르겠습니다. 일종의 바인드 마운트

답변1

사용자 정의 파일 시스템 오버레이를 찾고 있다면 FUSE가 올바른 방향입니다. 다음과 같은 간단한 오버레이를 포함하여 FUSE(sshfs, ntfs-3g, wikipediafs...)를 사용하여 작성된 다양한 사용자 정의 파일 시스템이 있습니다.바인드.

예를 들어, 읽기 작업을 처리할 때마다 임의의 데이터를 사용하여 첫 번째 바이트를 XOR하도록 binfs 소스 코드를 수정하여 수정할 수 있습니다.

순수 커널 옵션의 경우 비슷한 방식으로 드라이버를 overlayfs수정할 수 있습니다.unionfs

또 다른 대안은 Samba를 가져와 손상된 파일에 Samba vfs 모듈을 작성하고 소스 디렉토리를 공유한 다음 Linux cifs드라이버를 사용하여 동일한 시스템에 마운트하는 것입니다. ( 9p드라이버와 u9fs데몬을 사용하거나 nfs드라이버와 일부 NFS 서버 데몬을 사용 하여 동일한 작업을 수행할 수도 있습니다 .)


내용에 관심이 없다면 원하는 크기의 스파스 파일을 만드세요. 공간을 전혀 차지하지 않습니다.

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

다음과 같이 트리를 반복합니다.

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

관련 정보