未修改表格内容,哈希值为何变了?一次 XLS 文件变化的排查与分析 作者:奇安信洞鉴 发布:2026-11-12 17:30 收录:2026-11-12 21:01 2 次阅读 约 2099 字 摘要:🔬 本期技术实战,拆解哈希变化背后的原因,以及电子数据取证中容易忽视的操作风险。 推荐理由:本文围绕「取证」、「Windows」等主题展开。 01案件背景按照以往的经验,文件只要不修改,或者修改后不保存,哈希值就不会变化。但本文要说明的是,这个经验并不成立。在一次现场取证中,取证人员在录像过程中从网络下载了一个XLS文件;录像结束后,他将文件复制到移动存储设备,随后离开现场。回到办公场所后,他又将文件复制到办公电脑,打开进行数据统计,其间没有对文件内容做任何修改。就在这时,他发现文件的哈希值与录像时计算的结果不一致。所幸,移动存储中还保留着原始副本,该副本的哈希值与录像时的计算结果一致。02原因分析那么,造成这一结果的原因是什么?我们用Beyond Compare对两个文件做字节级比较,定位发生变化的位置。从对比结果可以看到两处差异。经查证,第一处是CFB(复合文档二进制格式)根目录项中的Modified Time(修改时间),第二处是BIFF工作簿中的WriteAccess用户名。下面简要介绍 XLS 的结构。传统XLS文件通常采用OLE复合文档格式,即CFB(Compound File Binary)。可以把它理解为一个容器:容器中包含名为Workbook或Book的流,流中再存放BIFF工作簿记录。CFB的目录项(Directory Entry)固定为128字节,根目录项名为Root Entry,其字段布局如下:其中,Modified Time占8字节,采用Windows FILETIME格式,表示自1601年1月1日UTC起累计的100纳秒间隔数,以小端序存储。该字段在Root Entry目录项中的位置如下:相对Root Entry目录项起始位置的偏移:0x6C长度:8字节编码:64位无符号整数形式的 Windows FILETIMEWriteAccess是BIFF工作簿流中的一条记录。微软MS-XLS规范第2.4.349节规定,该记录用于指定最近创建、打开或修改文件的用户名。它位于CFB内部的Workbook或Book流中。把这两个字段放在一起看:这两个字段的共同点是:都可能在工作表可见内容不变的情况下发生变化,但二者所属的结构层级不同。Modified Time变化,意味着变化发生在CFB目录项的时间字段WriteAccess变化,意味着变化发生在BIFF工作簿流的这条记录二者都不直接证明单元格值、公式或工作表内容发生了变化二者中任意一个发生变化,都足以改变整个XLS文件的SHA-256通过脚本读取文档的信息字段,并把时间戳转换为可读时间,可以看到两个文件的差别:为查明触发条件,我做了复现实验。在本次测试环境中,Microsoft Office与WPS Office对XLS文件的处理并不完全一致。实验观察到:用Microsoft Office打开XLS文件,即使不做任何修改,关闭时也会更新 Modified Time,无论当前计算机用户名与原文件中记录的用户名是否一致,文件哈希都会随之改变。而用WPS Office打开时,如果当前计算机用户名与文件中记录的用户名一致,关闭后通常不会引起哈希变化;如果用户名不同,则会同时修改Modified Time和WriteAccess中的用户名,同样导致哈希改变。由此可以推断,办公软件在打开、关闭或处理XLS文件的过程中,会按照自身的文件管理机制更新部分元数据或工作簿记录。不同软件对这些字段的处理策略不同,因此同一文件在不同软件、不同用户环境下会呈现不同的哈希变化结果。03拓展在电子数据取证中,除了前文提到的传统XLS文档,数据库文件也是极易因“仅打开”而导致哈希变化的典型场景。下面看两个典型情况:1.从手机文件系统中提取WAL模式的SQLite文件,用数据库工具打开查看后关闭。关闭时发生checkpoint,WAL中已提交的事务被回写合并到主数据库文件,WAL/SHM文件随之变化,导致文件哈希改变。2.用高版本Access(本例为Access 2016)打开低版本MDB文件时,Access会向文件中写入原本不存在的VBA工程数据(Access 2007+的AcessVBAData存储机制),并同步更新系统表时间戳、数据库属性和页分配位图。这些写入复用了原库中的空闲页,因此文件大小未变,但字节内容和哈希已经改变。04小结本案中取证人员的操作虽然没有造成严重后果,但其中的教训值得重视。过去我们往往默认,只要没有修改文件内容,哈希就不会变化;而本文的案例说明,这条经验并不总是成立。即使没有修改表格的可见内容,仅仅打开查看,也可能导致整个文件的哈希发生变化。为降低类似风险,建议在取证和检验中注意以下几点:及时固定并校验原始电子数据。获取文件后应尽快计算哈希值,并结合取证记录、录像等材料,记录文件的获取方式、存储位置和固定情况。对于需要长期保存的原始文件,应采取适当的保护措施,避免后续操作对其造成影响。坚持原始数据与分析操作相分离。完成原始文件固定后,应优先制作工作副本,在副本上开展打开、浏览、统计、转换等操作,不应把已固定的原始文件直接作为日常分析对象。确需查看文件时,优先采用只读或专用解析方式。可根据检材类型和实际条件,通过写保护或专用解析工具降低文件被意外改写的风险。但要注意,只读打开、文件系统写保护和专用解析的保护范围并不完全相同,不能仅凭软件界面显示为只读,就认定文件不会发生任何变化。电子数据取证的可靠性,不仅取决于工具和技术方法,也取决于每个操作环节是否规范。一次看似普通的打开操作,也可能给后续检验和证据说明带来不必要的麻烦。先固定、后分析,原始数据与工作副本分离,并对关键操作和数据变化做好记录,应当成为电子数据取证工作的基本习惯。奇安信集团旗下有北京、上海、西安三家司法鉴定所:北京网神洞鉴科技有限公司司法鉴定所、上海盘石洞鉴科技有限公司司法鉴定所与陕西西安洞鉴云侦声像资料司法鉴定所。其中,上海所是上海第一家通过 CNAS 认证认可的民营计算机类司法鉴定机构。三所均通过了CMA资质认定,是目前国内少数能够通过自主研发软件进行取证与分析的电子数据司法鉴定机构,具有独立的实验室场所,其中包括:案件受理区、数据恢复区、手机取证区、计算机取证区、屏蔽室、无尘工作间和物证室,并配备多种国内外先进的技术检验及辅助设备。经过多年的时间积累和发展,现拥有一批胜任鉴定工作的专业技术人员,以专业的技能和丰富的经验,来开展声像资料和电子数据司法鉴定工作。开展的鉴定服务范围包括:声像资料鉴定、电子数据司法鉴定、计算机证据固定和获取、手机终端取证与分析、数据恢复、密码破解以及涉及电子设备的民事调查等。 转载声明:本文转载自原发布平台 (作者:奇安信洞鉴), 原文标题《未修改表格内容,哈希值为何变了?一次 XLS 文件变化的排查与分析》, 查看原文。 版权归原作者及原发布平台所有,本站仅作收录与展示,未对正文内容作实质性修改; 若涉及侵权请联系本站处理。 ← 【扫黑除恶在行动】靶向深挖,大连公安精准攻坚除恶 SDC2026议题回顾 | AI Agent 攻防下的代 →