@port139 Blog

基本的にはデジタル・フォレンジックの技術について取り扱っていますが、記載内容には高確率で誤りが含まれる可能性があります。

exFATのタイムゾーン値

exFATではディレクトリエントリ(85タイプのレコード)に、CWA のタイムスタンプに関連してタイムゾーン情報が CWA 順に1バイトずつ保存されています。
日本のタイムゾーン(+9)の場合には、タイムゾーンの値として 0xA4 が設定されることになりますが、この値は 15分単位でカウントしているので以下の計算になるようです。(詳細はSANS資料P41辺りを参照)

0xA4

10100100

0100100(最上位ビットをオフにする)

36

36/4=9

プラスの場合の計算なので、マイナスのタイムゾーンについては補数を計算する必要があるようですが、詳細は確認していません。補数の戻し方って、-1 してからビット反転でよいのだろうか・・・

0xEC
↓
11101100
↓
1101100(最上位ビットをオフ)
↓
101100(マイナス)
↓
101100
-    1
------
101011
↓
010100(ビット反転)
↓
20
↓
20/4
↓
5(GMT-5 or EST)

exFATにおいてカサブランカタイムゾーンでファイルを保存すると、タイムゾーンの値としては「0x80」が設定されますが、ファイルをJSTタイムゾーンの状態で exFAT のローカルボリュームにコピーすると、タイムゾーン値は 0xA4 に更新されて JST タイムゾーンとして保存されます。
タイムゾーン値が設定されることにより、ローカル時刻として保存されている日時が、どのタイムゾーンのローカルタイムとして保存されたのかが exFAT では把握できるようになりますね。