对于复合文档的结构了解后,打算做一些碎片提取的实验,以下为两个文件的记录
第一个文件:
头起始于:7247664SEC (451730簇)
头的参数:
SAT个数:2
目录起始SID:251  物理位置:252
SSAT个数:无
附加MSAT:无
MSAT起始SID:249,250 物理位置:250,251

目录SAT:251,-2
目录图
ROOT-----> SummaryInformation-----> Workbook……>DocumentSummaryInformation
DID2       左节点1  右节点3        
block      block                    block        block
           4096B                    119181B      4096B
           SAT:233-240                  SAT:0-232    SAT:241-248
SAT和目录发现于:420360簇
                
SummaryInformation发现于:420359簇
420358、420357、420356、
451730、451731、451732、451733、451734、451735
第二个文件:
每簇SEC数:16
头所在位置:1921328   118834簇
头参数:
SAT个数:72
目录SID:9147
SSAT个数:无
附加MSAT:无
MSAT起始SID:9075-9146 72个SEC                                                     9072     118846
FDFFFFF位于偏移:460处
在位于129337,129336-128335簇处找到SAT,
目录SAT:9147,-2
目录关系图:
ROOT------>SummaryInformation ……………………>Workbook………………………………>DocumentSummaryInformation
DID2       左节点1   右节点3                   无                               无
block      block                               block                            block
           大小:4096B                         大小:4638200                    大小:4096B
           SAT:9059~9066                      SAT:0~9058                       SAT:9067~9075
文件大小为:4646392BYTE 应为:568簇
workbook:0-174,+4  179个
          118846
SAT处被分段存储,在位于129336簇在往上在位于128337簇找到。
该文件在位于128337簇第一次分段,128337----129336,129337
SAT所在簇连为:     128335,128336,128337---129336,129337
而文件从118834簇开始,现在假设该文件只分了一次,那么簇链应该为118834-128337,,,,129336-129337,很明显是不正确的,那么该文件可能分过多次段

经过对内容的判断从118834,118835,118836,118837,118838,118839,118840,118841,118842,118843,118844肯定是该文件的内容,11个簇.而WORKBOOK是从
SID0开始的,11个簇也就是11*16-1=175SEC,也就是WORKBOOK的前175个已经确认,而该文件的尾部有四个扇区为WORKBOOK内容,那么已经有175+4=179个扇区得到
确认!
 
第一个文件由于只有两个碎片所以提取比较简单,重新组合后恢复正常。而对于第二个文件由于文件碎片过多(可能有10多个),而且大部分分段处基本上位于数据区,而数据区没有太多的特征所以不好对接,这也是目前遇到的比较麻烦的问题,因为这类文件根本不是顺序存放(有的文件碎片虽多但是基本上处于由上而下的存入,如头开始于0簇,可能的簇链为0,1,2,3,15,16,-2),对于这种不按套路存放的碎片如何提取,现在根本没有办法,一团糟!!!
我试过新建一个空的EXCEL文档并提取WORKBOOK和有数据的WORKBOOK做对比,但是好像没有什么发现。
是不是该停下来休息一下了,这两天可能研究的过于多,钻了牛角尖!