windows 10自带输入法
Sun 04 April 2021
win10 默认输入法会记录下词频和一些语句信息。 详细可以参考文章: 输入法取证:一种 Windows8/10 中文用户输入痕迹信息 文章地址很容易失效,我就提供标题了。 总之就是在
C:\Users\username\AppData\Roaming\Microsoft\InputMethod\Chs 下有两个 ChsPinyinUDL.dat 和 ChsPinyinIH.dat 文件里面有记录词频信息。
依据上述基于数据流的逆向测试策略,对两个 DAT 用户词库文件进行结构分析,发现 ChsPinyinlH 和 ChsPinyinUDL 两个 DAT 文件存储的输入记录信息数据起始位置分别是在文件偏移地址 0x1400 处和 0x2400 处,每条用户输入记录信息的存储长度都是固定的,占用 60 个字节。
结构如下
chsPinyinIH结构.jpg chsPinyinIH结构.jpg ChsPinyinUDL结构.jpg ChsPinyinUDL结构.jpg 最后附上代码
f = open("ChsPinyinUDL.dat","rb") data = f.read() data = data[9216:] f.close() i = 60 n=1 while True: chunk = ni chunk_len = data[chunk+12:chunk+12+48] hex_chunk_len = ['%02x' % b for b in chunk_len] print(chunk_len.decode("utf-16")) n+=1 if chunk>=len(data): break ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 f = open("ChsPinyinIH.dat","rb") data = f.read() data = data[5120:] f.close() i = 60 n=1 while True: chunk = ni chunk_len = data[chunk:chunk+4] hex_chunk_len = ['%02x' % b for b in chunk_len] print(hex_chunk_len[::-1]) unicode_chunk = data[chunk+12:chunk+12+data[chunk]*2] hex_unicode = ['%02x' % b for b in unicode_chunk] print(hex_unicode[::-1]) print(unicode_chunk.decode("utf-16")) n+=1 if chunk>=len(data): break
Category: windows