• Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

  • CTF с учебными материалами Codeby Games

    Обучение кибербезопасности в игровой форме. Более 200 заданий по Active Directory, OSINT, PWN, Веб, Стеганографии, Реверс-инжинирингу, Форензике и Криптографии. Школа CTF с бесплатными курсами по всем категориям.

Как выдрать картинку из RichText

  • Автор темы CodeGuy
  • Дата начала
Y

yerke

у меня возник вопрос
допустим инлайн картинку в ричтексте
экпортнули с помощью DXL инструментов
с новоиспеченного XML-а получили код картинки

а как этот полученный код превратить в JPEG файл?
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 927
608
BIT
150
у меня возник вопрос
допустим инлайн картинку в ричтексте
экпортнули с помощью DXL инструментов
с новоиспеченного XML-а получили код картинки

а как этот полученный код превратить в JPEG файл?
а код приложенный выше слабо псмотреть :) ? Там все уже сделано...
и Base64 библа, на джаве, приложена..., лень джаву "мучать", берите бридж LS2J и оборачивайте упомянутый класс
как высказался предыдущий коллега - чисто LS решение - медленное (LS "плохо" работает со стрингами)
 
A

Akupaka

если интересно как устроен dxl, то смотрите его dtd!
для каждой версии нотеса есть свой, все лежат в папке (по-умолчанию) notesdirectory\xmlschemas
например, D:\lotus\notes702\xmlschemas\domino_7_0_2.dtd

к стати, в каждой новой версии лежат все предыдущие. стоит обращать внимание на комменты! некоторые элементы устаревают, это описано в комментах.
 
O

Omh

Декоднуть Base64 можно и на LS с помощью NotesMimeEntity
Примерно так:
Код:
Dim Stream As NotesStream
Set Stream = Session.CreateStream
Call Stream.WriteText(B64Data)

session.ConvertMime = False

Dim Body As NotesMimeEntity
Set Body = doc.CreateMIMEEntity
Call Body.SetContentFromText(Stream, Header, ENC_BASE64)	

Call Body.DecodeContent
rv = body.ContentAsText

session.ConvertMime = True
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 927
608
BIT
150
выше, этот способ описан последним
конверт майм фался - это (по-моему) для случая уже сущ. РТ поля с именем body
т.е. для временного дока (в случ. тупого декидирования) - не нужно
 
P

PaKo

получил в txt файл содержимое картинки. Получал при помощи NotesDXLExporter и NotesSAXParser

Искал содержимое по "notesbitmap" в свойствах атрибута, как теперь преобразовать данный текст в картинку?
Зачем надо декодировать Base64?

P.S. все пока сделано на LS
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 927
608
BIT
150
notesbitmap - я не знаю способов декодирования, но в экспортере вы можете установить опцию конвертировать в ГИФ, кот. потом и получите
Base64 (все бинарники в него заенкодены) - это текст, кот может быть преобразован к бинарному виду
вы почитайте википедию - зачем это нужно
яж указал две готовые базы - кот. дергают картинки и файлы (VTD - только файлы, картинки не написал - лень)
 
P

PaKo

notesbitmap - я не знаю способов декодирования, но в экспортере вы можете установить опцию конвертировать в ГИФ, кот. потом и получите
Base64 (все бинарники в него заенкодены) - это текст, кот может быть преобразован к бинарному виду
вы почитайте википедию - зачем это нужно
яж указал две готовые базы - кот. дергают картинки и файлы (VTD - только файлы, картинки не написал - лень)
Опция конвертации в Gif стоит.
Про базы - посмотрел обе. Только там на java, а это займет больше времени (вспомнить java) чем попробовать написать на LS. Хотя...
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 927
608
BIT
150
для манипуляции XML в LS - есть DOM и примеры есть на интертрасте...
но LS медленно работает со строками и DOM строить - тоже не эффективно (особ. на больших файлах)
 
P

PaKo

Победил. На LS. Правда не до конца. DXL+SAX+Encode
Теперь задача следующая - как картинку приаттачить без сохранения в файл? На одном сервере это еще сойдет, а вот на 5-ти сложновато. Т.к. необходимо каждый раз держать в голове имя диска для каждого сервера.
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 927
608
BIT
150
вот LAX - это более простой SAX

что значит приаттачить?
вставить в тело - аналогичный тег и опятьже DOM, на основе шаблона (шаблонный док - замена тега)
ежели файло именно аттачить - тег <filedata> содержит тело в Base64 (опятьже - проще на основе шаблонного дока)

Нотусёвый стрим необязательно сохранять в файл... если внимательно посмотреть мой код (на java) в верхнем посте - там видна работа с ним...
его можно читать в стринг, в него можно писать, его можно обнулить

ЗЫ: я понимаю, почему людипользуют LS - IBM не потрудилось сделать нормально ИДЕ (в нотусах), и особливо это проявляется для java. Но java удобней в программировании и под неё есть библиотеки на любую похотелку ( и бридж под нативную платформу - JNI)
 

lmike

нет, пердело совершенство
Lotus Team
27.08.2008
7 927
608
BIT
150
никак не управлять - их там нет
если ничё спец. "не портили"

кстати, в джава я делал такие финты:
String dxlOut=exporter.exportDxl(doc);
ByteArrayInputStream in = new ByteArrayInputStream(dxlOut.getBytes("UTF-8"));
 
A

avkozak

При Вложении картинки в RT поле выгребал его через DXL. Однако после влечения DAOS и еще чего то. Картинка стала добавляться в РТ поле по другому. В РТ поле создается линк, содержимое выгладит так (картинку неполучилось загрузить):
Graphic
Storage link

а сама картинка сохраняется в поле $File. При этом для одних документов работает по старому, а для других по новому.
При вырезании картинки старым методом через DXL получается ерунда. Взять картинку как вложение через EmbeddedObjects, при эксполе вложения получется ошибка: «Cannot extract objects or objectlinks».
Подкажите что делать?
 

savl

Lotus Team
28.10.2011
2 591
309
BIT
138
Graphic
Storage link
а сама картинка сохраняется в поле $File.
Такое ощущение, что картинка стала не in-line, а файл.
Будто приложили...
Может DAOS именно так работает... Надо почитать...
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!