解析windows预取文件的python脚本
windowsprefetch的Python项目详细描述
创建用于分析Windows预取文件的Python脚本:支持XP-Windows 10预取文件
说明
Windows应用程序预取机制是为了在启动应用程序时提供性能优势而设置的。这恰好是一个更有益的法医文物证据应用于执行以及。prefetch.py提供分析当前所有预取文件版本(17、23、26和30)的预取文件的功能。
功能
- 指定单个预取文件或预取文件的目录
- CSV输出支持
- (有限)Windows 10支持-必须从Windows 8+工作站分析Windows 10预取文件
- 按所有执行时间戳对预取文件的目录进行排序
命令行选项
目前,prefetch.py需要两个命令行选项之一:--file指定要指向脚本的单个预取。--directory指定将被解析并打印到stdout的整个预取文件目录。当使用--directory / -d时,请记住包含尾随斜杠:
dev@computer:~$ ./prefetch.py -h usage: prefetch.py [-h] [-c] [-d DIRECTORY] [-e EXECUTED] [-f FILE] optional arguments: -h, --help show this help message and exit -c, --csv Present results in CSV format -d DIRECTORY, --directory DIRECTORY Parse all PF files in a given directory -e EXECUTED, --executed EXECUTED Sort PF files by ALL execution times -f FILE, --file FILE Parse a given Prefetch file
–文件
将--file / -f开关与一个预取文件一起使用会导致以下输出:
dev@computer:~$ python prefetch.py -f CMD.EXE-4A81B364.pf ===================== CMD.EXE-4A81B364.pf ===================== Executable Name: CMD.EXE Run count: 2 Last Executed: 2016-01-16 20:26:42.515108 Volume Information: Volume Name: \DEVICE\HARDDISKVOLUME2 Creation Date: 2016-01-16 21:15:18.109374 Serial Number: 88008c2f Directory Strings: \DEVICE\HARDDISKVOLUME2\WINDOWS \DEVICE\HARDDISKVOLUME2\WINDOWS\BRANDING \DEVICE\HARDDISKVOLUME2\WINDOWS\BRANDING\BASEBRD \DEVICE\HARDDISKVOLUME2\WINDOWS\GLOBALIZATION \DEVICE\HARDDISKVOLUME2\WINDOWS\GLOBALIZATION\SORTING \DEVICE\HARDDISKVOLUME2\WINDOWS\SYSTEM32 Resources loaded: 1: \DEVICE\HARDDISKVOLUME2\WINDOWS\SYSTEM32\NTDLL.DLL 2: \DEVICE\HARDDISKVOLUME2\WINDOWS\SYSTEM32\KERNEL32.DLL 3: \DEVICE\HARDDISKVOLUME2\WINDOWS\SYSTEM32\APISETSCHEMA.DLL 4: \DEVICE\HARDDISKVOLUME2\WINDOWS\SYSTEM32\KERNELBASE.DLL 5: \DEVICE\HARDDISKVOLUME2\WINDOWS\SYSTEM32\LOCALE.NLS 6: \DEVICE\HARDDISKVOLUME2\WINDOWS\SYSTEM32\CMD.EXE 7: \DEVICE\HARDDISKVOLUME2\WINDOWS\SYSTEM32\MSVCRT.DLL 8: \DEVICE\HARDDISKVOLUME2\WINDOWS\SYSTEM32\WINBRAND.DLL 9: \DEVICE\HARDDISKVOLUME2\WINDOWS\SYSTEM32\USER32.DLL 10: \DEVICE\HARDDISKVOLUME2\WINDOWS\SYSTEM32\GDI32.DLL 11: \DEVICE\HARDDISKVOLUME2\WINDOWS\SYSTEM32\LPK.DLL 12: \DEVICE\HARDDISKVOLUME2\WINDOWS\SYSTEM32\USP10.DLL 13: \DEVICE\HARDDISKVOLUME2\WINDOWS\SYSTEM32\IMM32.DLL 14: \DEVICE\HARDDISKVOLUME2\WINDOWS\SYSTEM32\MSCTF.DLL 15: \DEVICE\HARDDISKVOLUME2\WINDOWS\BRANDING\BASEBRD\BASEBRD.DLL 16: \DEVICE\HARDDISKVOLUME2\WINDOWS\GLOBALIZATION\SORTING\SORTDEFAULT.NLS
–目录
通过调用--directory / -d标志,分析员可以一次解析整个预取文件目录。
–已执行
按执行时间对预取文件的目录进行排序。此排序将包括Windows 8+预取文件中的所有时间戳(每个文件最多8个):
dev@computer:~$ python prefetch.py -e Prefetch/ Execution Time, File Executed 2015-11-15 00:02:39.781250, WUAUCLT.EXE-399A8E72 2015-11-15 00:02:26.281250, VERCLSID.EXE-3667BD89 2015-11-15 00:02:24.343750, WMIPRVSE.EXE-28F301A9 2015-11-15 00:02:07.453124, RUNDLL32.EXE-451FC2C0 2015-11-15 00:01:50.765626, GOOGLEUPDATE.EXE-1E123D86 2015-11-15 00:01:08, NTOSBOOT-B00DFAAD ... ... ...
–csv
使用--csv / -c标志将提供csv格式的结果:
Last Executed, Executable Name, Run Count 2016-01-20 16:01:27.680128, ADOBEIPCBROKER.EXE-c8d02fab, 1 2016-01-20 16:59:42.077480, CREATIVE CLOUD UNINSTALLER.EX-216b8ea8, 1 2016-01-19 18:07:18.101626, MSIEXEC.EXE-a2d55cb6, 37237 2016-01-20 16:11:15.818394, ACRODIST.EXE-782bc2b2, 1
测试
已成功完成以下预取文件类型的测试:
- Windows XP(版本17)
- Windows 7(版本23)
- Windows 8.1(版本26)
- Windows 10(版本30)
参考文献
如果没有比我聪明得多的其他人的工作,这个项目是不可能的。预取文件格式不是由微软正式记录的,已经通过逆向工程和反复试验来理解。
此外,如果没有弗朗西斯科·毕加索在理解windows 10预取压缩方法方面的出色工作,我将无法在这里解析windows10。我在prefetch.py中使用了他的解压脚本的修改版本。弗朗西斯科的原始脚本可以在下面的链接中找到:
为了更好地理解预取文件格式,请查看以下资源;它们都用作创建脚本的参考:
python需求
- 从argparse导入argumentparser
- 导入Binasci
- 导入集合
- 导入cTypes
- 从日期时间导入日期时间,时间增量
- 导入json
- 导入操作系统
- 导入结构
- 导入系统
- 导入临时文件