Windows快捷方式文件(LNK)分析器

LnkParse3的Python项目详细描述


lnkparse

Windows快捷方式文件(LNK)分析器

这是lnkfile的叉,可用here

改进:

  • 迁移到python 3
  • 更多提取的数据
  • 许多错误修复

参见LNK格式:https://msdn.microsoft.com/en-us/library/dd871305.aspx

安装: pip install LnkParse3

示例:

cli工具

$ python lnkparser.py -f tests/microsoft_example.lnk
Windows Shortcut Information:
	Link Flags: HasLinkInfo | EnableTargetMetadata | HasWorkingDir | IsUnicode | HasTargetIDList | HasRelativePath - (524443)
	File Flags: FILE_ATTRIBUTE_ARCHIVE - (32)

	Creation Timestamp: 2008-09-12 22:27:17
	Modified Timestamp: 2008-09-12 22:27:17
	Accessed Timestamp: 2008-09-12 22:27:17

	File Size: 0 (r: 459)
	Icon Index: 0 
	Window Style: SW_NORMAL 
	HotKey: UNSET -  {0x0000} 

	relativePath: .\a.txt
	workingDirectory: C:\test

	EXTRA BLOCKS:
		DISTRIBUTED_LINK_TRACKER_BLOCK
			[size] 96
			[length] 88
			[version] 0
			[machine_identifier] chris-xps
			[droid_volume_identifier] 4078c79447fac746b3565c2dc6b6d115
			[droid_file_identifier] ec46cd7b227fdd11949900137216874a
			[birth_droid_volume_identifier] 4078c79447fac746b3565c2dc6b6d115
			[birth_droid_file_identifier] ec46cd7b227fdd11949900137216874a

PIP包

>>> import LnkParse3
>>> indata = open('tests/microsoft_example.lnk', 'rb')
>>> x = LnkParse3.lnk_file(indata)
>>> x.print_lnk_file()
Windows Shortcut Information:
	Link Flags: HasLinkInfo | EnableTargetMetadata | HasWorkingDir | IsUnicode | HasTargetIDList | HasRelativePath - (524443)
	File Flags: FILE_ATTRIBUTE_ARCHIVE - (32)

	Creation Timestamp: 2008-09-12 22:27:17
	Modified Timestamp: 2008-09-12 22:27:17
	Accessed Timestamp: 2008-09-12 22:27:17

	File Size: 0 (r: 459)
	Icon Index: 0 
	Window Style: SW_NORMAL 
	HotKey: UNSET -  {0x0000} 

	relativePath: .\a.txt
	workingDirectory: C:\test

	EXTRA BLOCKS:
		DISTRIBUTED_LINK_TRACKER_BLOCK
			[size] 96
			[length] 88
			[version] 0
			[machine_identifier] chris-xps
			[droid_volume_identifier] 4078c79447fac746b3565c2dc6b6d115
			[droid_file_identifier] ec46cd7b227fdd11949900137216874a
			[birth_droid_volume_identifier] 4078c79447fac746b3565c2dc6b6d115
			[birth_droid_file_identifier] ec46cd7b227fdd11949900137216874a

>>> x.print_json()
{
	"header": {
		"guid": "0114020000000000c000000000000046",
		"r_link_flags": 524443,
		"r_file_flags": 32,
		"creation_time": "2008-09-12 22:27:17",
		"accessed_time": "2008-09-12 22:27:17",
		"modified_time": "2008-09-12 22:27:17",
		"file_size": 0,
		"r_file_size": "00000000",
		"icon_index": 0,
		"windowstyle": "SW_NORMAL",
		"hotkey": "UNSET - UNSET {0x0000}",
		"r_hotkey": 0,
		"link_flags": [
			"HasTargetIDList",
			"HasLinkInfo",
			"HasRelativePath",
			"HasWorkingDir",
			"IsUnicode",
			"EnableTargetMetadata"
		],
		"file_flags": [
			"FILE_ATTRIBUTE_ARCHIVE"
		]
	},
	"data": {
		"relative_path": ".\\a.txt",
		"working_directory": "C:\\test"
	},
	"target": {
		"items": []
	},
	"link_info": {
		"link_info_flags": 1,
		"local_base_path": "C:\\test\\a.txt",
		"location": "Local",
		"location_info": {
			"volume_id_size": 17,
			"r_drive_type": 3,
			"drive_serial_number": "0x307a8a81",
			"volume_label_offset": 16,
			"drive_type": "DRIVE_FIXED",
			"volume_label": ""
		}
	},
	"extra": {
		"DISTRIBUTED_LINK_TRACKER_BLOCK": {
			"size": 96,
			"length": 88,
			"version": 0,
			"machine_identifier": "chris-xps",
			"droid_volume_identifier": "4078c79447fac746b3565c2dc6b6d115",
			"droid_file_identifier": "ec46cd7b227fdd11949900137216874a",
			"birth_droid_volume_identifier": "4078c79447fac746b3565c2dc6b6d115",
			"birth_droid_file_identifier": "ec46cd7b227fdd11949900137216874a"
		}
	}
}

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
如何用java表示这个数学函数的算法   Java/Stream帮助:仅使用streams将嵌套的映射列表转换为映射   使用Selenium连接到数据库时发生java未知主机异常   java如何了解jvm内存使用:“堆内存”和“堆外内存”   java Oracle BI报告导入模板   java如何使用Spring将xml转换为bean?   java线程。join()以保证执行顺序   java从THINGSPEAK到ANDROID应用程序获取JSON数据   使用Java的stanford库中的异常   java正确使用来自其他类文件的方法   如果集合中的元素类型为接口类型,如何填充集合?(爪哇)   记录java。util。记录器创建的文件超过了应有的数量   类Java对象uniq值   尝试调用无法应用于()的方法时出现java错误