当前位置: 首页 > article >正文

电子取证新视角:Windows系统中文用户输入痕迹信息提取方法研究与实现

引言

当今信息化时代下,存在于各类计算机设备中的数据信息已成为越来越多刑事案件侦查的线索来源。Windows操作系统作为当今全球计算机使用率最高的操作系统,针对Windows操作系统的电子数据取证一直是电子数据取证领域研究的重点之一例,其中针对Windows操作系统中用户常用应用软件的行为取证分析,已成为近年来公安机关取证人员获取案件侦查线索的途径之—。

中文输入法作为Windows中文操作系统必备的一款应用程序,不仅支持中文文字编码和输入的功能,还具有自定义、自学习用户词库功能,这一功能将系统用户常用或者符合用户用语习惯的字词句以一种特定的结构形式存储成独立的词库数据集文件,以方便后期提高输入效率。

这类用户词库文件留存了大量的与系统用户直接相关的输入痕迹信息,如目标姓名、地址、谈话内容等关键词,都能在输入法用户词库中有所体现,但用户词库中所存储的这些信息往往被取证人员忽略。

虽然,目前已有研究者通过对用户输入行为日志的研究来改善输入法软件性能和提升用户体验,或者利用中文拼音输入法数据对方言词汇进行自动识别,也有研究者对中文输入法用户词库的提取进行研究,但其研究对象主要集中于第三方输入法,缺乏对Windows操作系统自带输入法用户词库的研究。

尤其,对于适用对象更为广泛的Win10/11操作系统,其自带的中文输入法更是成为大量Win10用户的默认首选,但由于对Win10系统中用户输入信息的存储文件数据结构不明确,尚未有合适的方法用于对输入痕迹信息的提取。

因此,本文以Win10操作系统自带的中文输入法作为研究对象,采用基于数据流的逆向分析方法,对其相应词库文档结构及协议进行分析,发现数据的存储结构,从而提取用户输入痕迹信息。

用户输入信息存储结构分析

通过对Win10系统自带中文输入法程序运行进程的分析,发现与中文输入法相关的用户词库文件主要存储在以下路径:

C:\Users\<用户名>\AppData\Roaming\Microsoft\InputMethod\Chs\

在这个路径中,<用户名>是你的Windows账户名。你可以通过资源管理器进入这个路径,查看是否能找到这两个文件。如果你在找文件时遇到问题,可以尝试显示隐藏文件夹,因为 AppData 文件夹是隐藏的。

可以使用16进制编辑器打开 ChsPinyinIH.datChsPinyinUDL.dat 文件

提取代码示例

可以通过代码快速、完整地提取出用户所有的输入痕迹。同时,利用词云图方式对提取结果进行整理并呈现

以下是提取用户输入记录的Python代码示例:

import os

# 提取中文词汇
with open(r"ChsPinyinUDL.dat", "rb") as f:  # 使用完整的文件路径
    data = f.read()
    data = data[5120:]  # 跳过前5120字节

# 第一部分
i = 60
n = 1
while True:
    chunk = n * i
    if chunk + 12 + 48 > len(data):  # 检查下一个块是否超出数据长度
        break
    chunk_len = data[chunk + 12:chunk + 12 + 48]
    print(chunk_len.decode("utf-16", errors="ignore"))  # 忽略解码错误
    n += 1

# 第二部分
i = 60
n = 1
while True:
    chunk = n * i
    if chunk + 12 + data[chunk] * 2 > len(data):  # 检查下一个块是否超出数据长度
        break
    unicode_chunk = data[chunk + 12:chunk + 12 + data[chunk] * 2]
    print(unicode_chunk.decode("utf-16", errors="ignore"))  # 忽略解码错误
    n += 1

运行后成功显示出常用词库,可以明显发现很多如地名、机构、姓名、惯用语句等具有明确意义和指向性的关键词或短语

结语

侦查人员在对电子设备的电子数据分析过程中,有效提取操作系统内自带输入法的用户词库信息,可得到系统用户的输入痕迹信息,便于掌握计算机用户的行为特征,拓展案件侦查线索的渠道。


http://www.kler.cn/news/343168.html

相关文章:

  • 使用Qt Creator创建项目
  • 腾讯云SDK用量统计
  • SpringBoot开发——整合Actuator监控和管理Spring Boot 应用
  • vuex安装报错
  • v-html里面的标签设置样式没有用怎么办?
  • 尚硅谷rabbitmq 2024第30-33节 死信队列 答疑
  • Linux:进程调度算法和进程地址空间
  • No.9 笔记 | PHP学习指南:从入门到精通的要点总结
  • 关于Integer和int的拆箱和装箱
  • HiRT | 异步控制策略,告别VLA时延问题
  • 【RPC】—Thrift协议 VS Protobuf
  • StringEntity 用于将字符串内容作为 HTTP 请求实体(请求体)
  • docker+mysql创建用户名密码_docker里面的mysql 更换密码
  • Linux与RTOS的区别
  • SQL第13课——创建高级联结
  • Spring Security之RememberMe
  • 美发店管理革新:SpringBoot系统的应用
  • 【低代码】前端低代码开发日记2_遇到的问题(2)变量绑定
  • python 实现BFS判断是否是二分图Bipartite算法
  • 机器学习和深度学习的差别