大多数时候,取证要解决的无非是弄清楚什么人在什么时间在什么地方做了什么事,也就是4W(Who,When,Where,What)问题。所以时间在取证领域是非常重要的问题。
计算机中是怎么存储时间的呢?首先我们来看看Windows的安装时间。
以Windows 11为例,要查看Windows系统安装时间,我们可以打开设置,在“系统”→“系统信息”中可以看到,当前这台电脑的系统安装时间是2023年3月31日。如下图所示。
通过上述方法,我们可以得知这台电脑上当前操作系统的安装日期,那么能不能得知具体的安装时间呢?
按Win+R快捷键打开“运行”窗口,输入并执行“cmd”打开命令提示符,或输入并执行“PowerShell”打开PowerShell。我们也可以按Win键或点击开始菜单图标,然后直接输入“cmd”或“PowerShell”按屏幕提示打开命令提示符或PowerShell。
在命令提示符或PowerShell中,我们执行“systeminfo”,即可查看系统的各种信息,其中就包含操作系统的安装时间。如下图所示,此电脑的系统安装时间是2023-03-31 11:14:26。
那么,systeminfo命令又是怎么知道系统安装时间的呢?其实系统安装时间保存在注册表中。
我们按Win+R快捷键打开“运行”窗口,输入并执行“regedit”打开注册表编辑器,然后在左边的目录树展开到“计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\ CurrentVersion”,可以看到右边有个名称为“InstallDate”的记录,对应的值为0x64265012(1680232466),即用十六进制表示为64265012,对应的十进制值为1680232466。如下图所示。
我们可以用PowerShell的相关命令来解析上图的时间。
按Win+R快捷键打开“运行”窗口,输入并执行“PowerShell”打开PowerShell。在PowerShell中执行“(Get-Date -Date "1970-01-01 00:00:00Z").toUniversalTime().addSeconds(1680232466)”,即可得到可读格式。如下图所示。
上述PowerShell命令,用途是显示在UTC时间1970年1月1日00:00的基础上加上1680232466秒的时间,各函数的具体功能可以很方便地在搜索引擎中检索到。考虑计算机当前的时区是北京时间(UTC +8),上述PowerShell命令解析的时间正好与systeminfo命令得到的系统安装时间一致。
通过上述命令可以得知,注册表中保存的Windows系统安装时间实际记录的是自1970年1月1日00:00以来经过的秒数。其实,这一时间格式就是在计算机中广泛使用的Unix时间戳。
在计算机中,绝大多数时间格式都是类似的原理:①选定一个时间起点;②确定一个时间间隔单位;③记录从时间起点以来经过的时间间隔数量。
我们再看看WPS表格(Excel相同)中的时间,它们同样符合上述规律。
我们在A1单元格中输入当前的时间,例如“2023-04-16 18:35”,输入完按回车键后,我们可以注意到A1单元格中的内容自动变成了“2022/4/16 18:35”,重新点击A1单元格,则可以在编辑栏中看到“2022/4/16 18:35:00”。显然,WPS已经将我们输入的“2023-04-16 18:35”识别为了时间类型的数据并以默认的格式显示。如下图所示。
接下来,右击单元格A1选择“设置单元格格式”,或选择A1单元格后直接按Ctrl+1快捷键设置单元格格式。我们可以注意到当前数字格式为“自定义(yyyy/m/d h:mm)”。我们将其更改为“常规”,可以发现A1单元格中的数据已经变成了“45032.7743055556”。如下图所示。
我们将当前文档保存为“工作簿1.xlsx”,然后用7-Zip等软件打开(也可以将扩展名改为“zip”然后双击打开)。找到“xl”目录下的“worksheets”,此目录中保存着各工作表中的文字内容。如下图所示。
找到“worksheets”目录下的“sheet1.xml”,打开后即可找到刚刚A1单元格的数据“45032.7743055556”。如下图所示。而刚刚A1单元格默认显示的是2023年4月16日18时35分这一日期。这说明,在xlsx文件内部,日期是用数字来记录的。
我们继续测试。
打开“工作簿1.xlsx”,在A2单元格输入“45031.7743055556”,正好与A1单元格的数字小1。接下来选择A列(A:A),右击,选择“设置单元格格式”。将数字格式设置为“自定义”,并手工输入“yyyy-MM-dd hh:mm:ss”。如下图所示。
设置显示格式后,我们可以发现,A2单元格的时间为“2023-04-15 18:35:00”,正好比A1单元格早一天。如下图所示。
上述实验说明xlsx文件中的时间,基本间隔单位为1天。那么,Xlsx文件中的“时间起点”又是什么时候呢?
我们在A3输入“0”、A4单元格输入“1”,可以发现A3单元格显示的是“1900-01-00 00:00:00”,A4单元格则是“1900-01-01 00:00:00”,如下图所示。
所以,xlsx文件中时间的“起点”是1899年12月31日00:00:00。