Я использую rtfobj
, который является частью oletools
для python, чтобы извлечь внедренный файл из файла RTF.
for start_offset, len, _, buff in rtfobj.rtf_iter_objects(rtf_file_path):
temp = NamedTemporaryFile(delete=False)
temp.write(buff)
temp.flush()
f = OleFileIO(temp.name)
streams = [x for x in f.listdir() if 'Package' in x or 'CONTENTS' in x]
stream_buffers = [f.openstream(stream).getvalue() for stream in streams]
for stream in stream_buffers:
with open("embedded_file", "wb") as f:
f.write(stream)
Работает хорошо. Встроенный файл сохранен и открывается просто отлично.
Мой вопрос: как я могу получить имя файла? Я знаю, что эти данные где-то там, потому что, когда я открываю файл rtf в Office (например), он показывает мне внутренний файл с его именем, но я не могу найти способ получить имя с помощью кода Python ..
Спасибо