Skip to content
This repository has been archived by the owner on May 24, 2023. It is now read-only.

Latest commit

 

History

History
38 lines (29 loc) · 2.38 KB

katiofs.md

File metadata and controls

38 lines (29 loc) · 2.38 KB

自作ファイルシステム katiofs ver 1.0 仕様書

ディスクイメージは、大きく以下の構造に別れている。箇条書きで先頭から順番に構造を定義していく。一番最後の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で埋められます。