■問題
The judge for these pictures is a real fan of antiques. Can you age this photo to the specifications? Set the timestamps on this picture to 1970:01:01 00:00:00.001+00:00 with as much precision as possible for each timestamp. In this example, +00:00 is a timezone adjustment. Any timezone is acceptable as long as the time is equivalent. As an example, this timestamp is acceptable as well: 1969:12:31 19:00:00.001-05:00. For timestamps without a timezone adjustment, put them in GMT time (+00:00). The checker program provides the timestamp needed for each. Use this picture.
Additional details will be available after launching your challenge instance.
「これらの写真の審査員はアンティークの大ファンです。この写真の日付を指定された年齢に設定できますか?すべてのタイムスタンプを1970年01月01日 00:00:00.001+00:00に設定し、できるだけ精密に合わせてください。この例での+00:00はタイムゾーンの調整です。どのタイムゾーンでも、その時間と等価であれば受け入れられます。例えば、1969年12月31日 19:00:00.001-05:00も許容されるタイムスタンプです。タイムゾーン調整のないタイムスタンプは、GMT時間(+00:00)にしてください。必要なタイムスタンプは、チェッカープログラムで提供されます。この写真を使用してください。
追加の詳細は、チャレンジインスタンスを開始した後に表示されます。
■解き方
①画像をダウンロードする
②画像のメタデータをexiftoolコマンドで確認する
・Create Date
・Date/Time Original
・Modify Date
・Time Stamp
上記4つを確認
③Create Date、Modify Date、Modify Dateの3つの時間を1970年01月01日 00:00:00.001+00:00に変更する。
※この時点ではTime Stampの時間変更は困難
※参考
AllDatesオプションにDateTimeOriginal、CreateDate、ModifyDateが含まれている
~DateTimeOriginal~
意味: 画像が「撮影」された日時を表す。
~CreateDate~
意味: 画像ファイルが「作成」された日時を表す。
~ModifyDate~
意味: 画像ファイルが「最後に編集」された日時を表す。
SubSec(サブセカンド)フィールドは、Exifメタデータの一部で、秒以下の微細な時間(ミリ秒やマイクロ秒)を記録するためのフィールド
⑤Time Stampの時間変更が必要であることが④で確認できたため、
変更するための情報を収集する。
⑥Stringsコマンドを使用してバイナリデータを確認
確認した結果からUNIXタイムスタンプであることが判明
※参考
UNIXタイムスタンプとは
UNIX系のシステムで使用される日付と時刻を表す形式で、「1970年1月1日00:00:00 UTC(協定世界時)」からの経過秒数で表現される。この「1970年1月1日00:00:00 UTC」をUNIXエポックと呼び、UNIXタイムスタンプはエポックからの経過秒数を整数値で示している。
今回の問題はUNIXエポックの時間に変更させようとしていることがわかる。
⑦バイナリエディタ等でUNIXタイムスタンプの値を、
1700513181420から0000000000001に変更する。
※すべて0にするとフラグが取得できない。
※バイナリエディタはImHexを使用
※ctrl+Fで1700513181420を検索し、0000000000001に変更