eCryptfs ファイルのヘッダーを解析するプログラム (C ではなく Free Pascal を使用) を作成しています。
ヘッダーの値の 1 つはバイト 7 で始まり、15 で終わります (8 バイト値)。ファイルを eCryptfs ファイルとして一意に識別する値であるため、私にとっては役に立ちます。そのため、ファイルにそのような値が見つかったときにそれを認識するようにアプリをコーディングしようとしています。
ただし、マーカー自体は、ランダムに生成された 4 バイト値 (X) と別の 4 バイト静的 16 進値 0x3c81b7f5 (Y) を XOR することによって生成されます。生成された値は 4 バイトの Z です。X + Z を合わせて 8 バイトの特殊マーカーを形成します。Y 自体はファイル ヘッダーに格納されません。したがって、値 0x3c81b7f5 (Y) がヘッダーに格納されることは決してないので、それを探すようにアプリケーションをコーディングすることはできません。他の 4 バイトは、ある静的な値と別のランダムな値との XOR の結果であることを確認できます。 、どのように認識されているのかわかりません。
eCryptfs Launchpad サイト ( https://answers.launchpad.net/ecryptfs/+question/152821 ) で eCryptfs プログラムがこの値を「eCryptfs ファイル」として認識する方法を尋ねたところ、コミュニティの 1 人が関連する C ソース コードを紹介してくれました。以下にリンクしています.しかし、私はCが特別なマーカーをどのように認識しているかを理解するのに十分なほどよく理解していません.同じ種類の認識プロセスを自分のアプリにコーディングできるように、誰か助けてもらえますか?ソースコードは必要ありませんが、C コードがどのように機能するかを誰かに説明してもらいたいだけです。
http://fxr.watson.org/fxr/source/fs/ecryptfs/crypto.c?v=linux-2.6;im=excerpts#L1029