ディスクイメージは、大きく以下の構造に別れている。箇条書きで先頭から順番に構造を定義していく。一番最後の16進数は例。
- 4byte マジックナンバー(deadbeaf)
0xdeadbeaf
- 4byte トップレベルのディレクトリのディレクトリ構造がディスクの先頭から何バイトの場所にあるか
0x000000f0
- ???byte ディレクトリ構造やファイル構造やファイル本体が自由に書き込まれている
- 1byte フラグ用領域。
- 7ビット目(最上位): 特に意味なし
- 6~1ビット目: 特に意味なし
- 0ビット目(最下位): 1なら自身のディレクトリ名がxor(xor EBC)で暗号化されている。0なら暗号化無し。(暗号化されるのはディレクトリ名のみで、子には影響を与えない)
- 16byte ディレクトリ名
"sample_directory"
- 4byte 子ディレクトリの数
0x02
- 4byte 子ファイルの数
0x01
- (4byte*子ディレクトリの数) 子ディレクトリのディレクトリ構造がディスクの先頭から何バイトの場所にあるか
0x00000100, 0x00000200, ...
- (4byte*子ファイルの数) 子ファイルのファイル構造がディスクの先頭から何バイトの場所にあるか
0x00000100, 0x00000200, ...
- 1byte フラグ用領域。
- 7ビット目(最上位): 特に意味なし
- 6~3ビット目: 特に意味なし
- 2ビット目: 1なら自身のファイル名がxorで暗号化されている。0なら暗号化無し。
- 1ビット目: 1なら自身のファイル内容が後述するアルゴリズムで暗号化されている。0なら暗号化無し。
- 0ビット目(最下位): 1ビット目が1のときのみ意味がある。0ならただのxor暗号化(xor ebc)、1ならdo_you_like_CBCと同じ暗号化。
- 32byte ファイル名
"sample_file"
- 4byte ファイルサイズ
0x000000f0
- 4byte ファイルを1024Bに分割した数
0x00000005
- (4byte*分割したあとの数) ファイルの実態がディスクの先頭から何バイトの場所にあるか、を並べたもの
0x000f0000,0x000fb000,0x00200000...
※各分割データで1024Bに足りない部分は、\0
で埋められます。