46 lines
1.9 KiB
Markdown
46 lines
1.9 KiB
Markdown
+++
|
|
date = "2016-09-03"
|
|
tags = ["pc"]
|
|
title = "filestamp-ctime"
|
|
slug = "filestamp-ctime"
|
|
+++
|
|
|
|
タイムスタンプは基本的なものでmtime, atime, ctimeという感じのものがあります。調べてませんし、適当なのでまあそんな感じのものが3つあるということです。作成日時、最終アクセス、更新日時みたいな内容だった記憶ですが、今回はそれらを改竄する方法についてです。
|
|
|
|
タイムスタンプは`ls`や`exiftool`から簡単に確認できます。
|
|
|
|
```bash
|
|
$ ls -l
|
|
$ ls -lc
|
|
$ ls -lu
|
|
$ exiftool $file
|
|
```
|
|
|
|
タイムスタンプにはこれらの3つ以外にも独自フォーマットで保存される事が多く、通常、何らかのソフトを使ってファイルを作成すると、上記以外のタイムスタンプが保存されることがあります。
|
|
|
|
もし完璧にタイムスタンプの偽装をしたければ、ソフトごとに異なるタイムスタンプにも注意を払わなければなりません。
|
|
|
|
しかし、ここで紹介するのは、LinuxやUnixで一般的に使われているもののみです。注意してください。
|
|
|
|
mtime, atimeは簡単に偽装できます。
|
|
|
|
```bash
|
|
$ touch -d 201601010000 *
|
|
```
|
|
|
|
ただ、`ctime`は少し厄介です。`touch`では偽装できません。`ctime`の書き換え方法として一般的に知られているやり方はディスク操作が必要になります。
|
|
|
|
しかし、ここでは最も簡単なハックのみ紹介します。
|
|
|
|
```bash
|
|
$ export now=$(date +"%Y-%m-%d %H:%M:%S")
|
|
$ echo $now
|
|
$ sudo date --set="2016-01-01 00:00:00.00"
|
|
$ chmod -R 777 .
|
|
$ sudo date --set="$now"
|
|
```
|
|
|
|
`ctime`の偽装はこんな感じです。
|
|
|
|
このやり方では、ファイル数によっては多少設定時刻がズレるのですが、時刻サーバーから取得して修正すれば直ると思います。
|