Итак, я сделал короткий скрипт на Python для запуска файлов в Windows с неоднозначными расширениями, изучив их магическое число / подпись файла first:
Я бы хотел скомпилировать его в .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',
}
(Шестнадцатеричные байты - это просто произвольные байты, а не символы Юникода.)
Я полагаю, что файл .py в этом формате работает, но я должен оставить его некомпилированным и каким-то образом импортировать его в скомпилированный файл, и есть еще куча постороннего содержимого, такого как {
и ,
, которое нужно перепутать по / винт.
Я посмотрел на YAML, и это было бы здорово, за исключением того, что сначала он требует двоичного кода в кодировке base64, а это не совсем то, чего я хочу. Я бы предпочел, чтобы файл конфигурации содержал шестнадцатеричные представления байтов. Но также представления ASCII, если это все, что подпись файла. И, возможно, также регулярные выражения. : D (Например, если формат на основе XML можно записать с разным количеством пробелов)
Есть идеи?