Word8.0加密编制: Office 97,2000,XP,2003
(1)将最多15字节的口令->Unicode->md5
(2)取前5字节+16字节随机数a1=21字节,反复16次得336字节->md5
(3)取前5字节+4字节计数器(初始0)共9字节->md5后作为RC4的密钥对文档进行加密.每加密512字节计数器+1后重复(3),即第6字节顺序变化
(4)另取随机数a2->md5得b,a2和b用RC4的第一次密钥加密后的32字节AB存放文档特定位置:i=(*((int *)(data+0x240))+0x200);i-=i%512
从i处开始每512字节找01 00 01 00,其后的48字节就是a1和AB
说明:
(1)0x200处标志码 \xEC\xA5\xC1\x00
(2)0x20B字节低位为1表示加密(52明,53密)
(3)0x20E处为34表示采用默认加密方式
(4)AB所在段偏移69处暴露rc4乱数5字节R[69-73],即对应的明文此处为5个0
(5)随机数a1在明文第一次被加密时生成,以后修改文件和密码时都不变
(6)AB所在段和0x244处所用乱数相同