【发布时间】:2023-03-20 14:58:01
【问题描述】:
所以我制作了一个简短的 Python 脚本,通过首先检查 magic number/file signature 来在 Windows 中启动具有模糊扩展名的文件:
我想将它编译为 .exe 以使关联更容易(使用 bbfreeze 或用 C 重写),但我需要某种用户友好的配置文件来指定匹配的字节字符串和程序路径。基本上我想以某种方式将此信息放入纯文本文件中:
magic_numbers = {
# TINA
'OBSS': r'%PROGRAMFILES(X86)%\DesignSoft\Tina 9 - TI\TINA.EXE',
# PSpice
'*version': r'%PROGRAMFILES(X86)%\Orcad\Capture\Capture.exe',
'x100\x88\xce\xcf\xcfOrCAD ': '', #PSpice?
# Protel
'DProtel': r'%PROGRAMFILES(X86)%\Altium Designer S09 Viewer\dxp.exe',
# Eagle
'\x10\x80': r'%PROGRAMFILES(X86)%\EAGLE-5.11.0\bin\eagle.exe',
'\x10\x00': r'%PROGRAMFILES(X86)%\EAGLE-5.11.0\bin\eagle.exe',
'<?xml version="1.0" encoding="utf-8"?>\n<!DOCTYPE eagle ': r'%PROGRAMFILES(X86)%\EAGLE-5.11.0\bin\eagle.exe',
# PADS Logic
'\x00\xFE': r'C:\MentorGraphics\9.3PADS\SDD_HOME\Programs\powerlogic.exe',
}
(十六进制字节只是任意字节,而不是 Unicode 字符。)
我猜这种格式的 .py 文件可以工作,但我必须不编译它,并以某种方式仍将其导入到编译后的文件中,并且还有一堆无关的内容,如 { 和 , 被混淆通过/搞砸。
我查看了 YAML,它会很棒,只是它首先需要 base64 编码的二进制内容,而这并不是我真正想要的。我希望配置文件包含字节的十六进制表示。还有 ASCII 表示,如果这就是文件签名的全部内容的话。也许还有正则表达式。 :D(例如,如果基于 XML 的格式可以用不同数量的空格编写)
有什么想法吗?
【问题讨论】:
-
你看过python-magic吗?
-
@jterrace:不,但是 1. 如果您只处理一个文件扩展名,这可能是矫枉过正? 2. libmagic 可能无法识别我关心的格式?不过,Their file format 似乎很相关。我没有意识到他们也处理正则表达式。
-
libmagic 的好处在于您可以添加自己的自定义格式,因此您可以轻松地用自己的格式扩展它
-
@jterrace:是的,确认file command 只是说这些是“数据”并且不知道更多。可以添加自定义格式,但我只是在完成我已经完成的事情。
-
是的,我想我会解耦这两个配置文件:一个用于将幻数与 mimetypes 关联,另一个用于将 mimetypes 与启动器路径关联
标签: python configuration-files binary-data magic-numbers