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

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

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

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

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

Дата создания документа

  • Автор темы 1KIA
  • Дата начала
Статус
Закрыто для дальнейших ответов.
1

1KIA

скажите, а где (в каком поле) хранится дата создания присланного документа?
 
1

1KIA

а скажите эту дату вообще можно программно поменять?
 
N

nvyush

а можно хоть чуть-чуть подробней...
Экспортировать документ в DXL (domino xml), установить нужную дату, не забыв про поля с датами, например, $Revisions, импортировать обратно. Полагаю, что подпись документа при этом нарушится.
Смотрите в справке NotesDXLExporter, NotesDXLImporter, на форуме поищите по DXL*.
 
N

nvyush

Другой "дикий" способ пришёл в голову — создаём локальную реплику, переходим в автономный режим, переводим часы назад, запоминаем юнид документа, создаём его копию, удаляем документ, копии присваиваем юнид, корректируем поля времени ($Revisions и т.п.) сохраняем (в итоге получим "новый" "старый" документ), удаляем копию, возвращаем часы в исходное, переходим в он-лайн режим, реплицируемся. Чтобы не было мучительно больно, я б сперва поэкспериментировал на к-либо "учебном" документе.
А вообще-то согласен с alik86, попахивает "подделкой документов".
 

dimat

Well-known member
31.07.2008
508
0
BIT
0
Другой "дикий" способ пришёл в голову — создаём локальную реплику, переходим в автономный режим, переводим часы назад, запоминаем юнид документа, создаём его копию, удаляем документ, копии присваиваем юнид, корректируем поля времени ($Revisions и т.п.) сохраняем (в итоге получим "новый" "старый" документ), удаляем копию, возвращаем часы в исходное, переходим в он-лайн режим, реплицируемся. Чтобы не было мучительно больно, я б сперва поэкспериментировал на к-либо "учебном" документе.А вообще-то согласен с alik86, попахивает "подделкой документов".

Возникла такая же необходимость поменять дату создания.

Делаю все так как сказал nvy

Работаю с лок репликой выставил нужную мне дату на компе, уже даже шнур сети выдернул, но все равно ставит сегодняшнюю дату при создании документа.
Вопрос откуда он эту дату берет?
 

dimat

Well-known member
31.07.2008
508
0
BIT
0
Видимо он текущую дату где то кешировал, после перезапуска клиента стало все ок
 
Y

yerke

а скажите эту дату вообще можно программно поменять?
лови
но подделовать не есть хорошо )))
меняя юнид дока ты можешь поменять дату создания
то есть юнид содержит время создания
Код:
Sub Initialize

Dim ss As String
Dim dt As NotesDateTime
Dim mydate As Variant
Dim mytime As Variant
Dim ses As New NotesSession
Dim cdb As NotesDatabase
Dim dcol As NotesDocumentCollection
Dim doc As NotesDocument
Dim unid As String
Dim DateOffSet As Integer
Dim nextdoc As NotesDocument
Dim oldunid As String
Dim tdoc As NotesDocument
Dim tdt As New NotesDateTime(Now)

ss = Trim(Inputbox$({Вводить в формате "04.01.2013 08:40:51 ZE5" или "15.03.1984 16:15:39 GMT":}, "Введите новое время создания документа", tdt.LocalTime))
If ss = "" Then Exit Sub

'=yerke 2013-01-04
'1)	Hеобходимо реализовать функционал перепривязывающий респонсы со старого дока на новый. 
'2)	На респонсах обновить все поля, содержащие юнид основного дока (или линк), для корректной работы на ембеддед вьюшках, например.
'3)	При этом учитывать дату создания респонсов, может получиться так что, респонс создался раньше основного дока.
'4) Если некорректно задано новое время создания документа, то оно принимает значение "30.12.1899 06:00:00 ZE<регионал>"

Set dt = New NotesDateTime(ss)
DateOffSet = Abs(Cint(Datevalue(dt.LSLocalTime) <> Datevalue(dt.LSGMTTime)))
mydate = Right$("00000000" + Hex$(2415019 + Datevalue(dt.LSLocalTime) + DateOffSet), 6)
mytime = Right$("00000000" + Hex$(Round((Cdbl(dt.LSGMTTime) - Datevalue(dt.LSLocalTime) - DateOffSet) * 24 * 60 * 60 * 100, 0)), 8)		
'=
Set cdb = ses.CurrentDatabase
Set dcol = cdb.UnprocessedDocuments
Set doc = dcol.GetFirstDocument
Do While Not doc Is Nothing
'=
Set nextdoc = dcol.GetNextDocument(doc)
'=
oldunid = doc.UniversalID
unid = doc.UniversalID
Mid$(unid, 19, 6) = mydate
Mid$(unid, 25, 8) = mytime
'=
doc.UniversalID = unid
doc.ReplaceItemValue "$Created$", doc.Created
doc.Save True, True, True
'=пока отключаю
Set tdoc = cdb.GetDocumentByUNID(oldunid)
tdoc.Remove True
'=
Set doc = nextdoc
Loop

End Sub
 

Мыш

Lotus Team
12.02.2008
1 213
29
BIT
43
Поле $Created, кажется, подделывало дату создания. Проверьте, если интересно...
 
Y

yerke

Поле $Created, кажется, подделывало дату создания. Проверьте, если интересно...

не понял мысли
это поле просто для того чтобы запомнить реалное (изначальное) время создания документа.
можете даже закомментить эту строчку, если не интересует изначальная дата

а дату подделовает измененный юнид.
 

Мыш

Lotus Team
12.02.2008
1 213
29
BIT
43
не понял мысли
это поле просто для того чтобы запомнить реалное (изначальное) время создания документа.
Нет, не просто. Это сиcтемное поле (доллар в названии ни о чем не говорит, не?).
 
Y

yerke

Нет, не просто. Это сиcтемное поле (доллар в названии ни о чем не говорит, не?).

кажется мы говорим о разных полях

мое поле "$Created$" - которое будет хранить (если я захочу этого) изначальное время создания.
а поле "$Created"...может быть есть служебное такое поле лотуса.
даже если б оно было, то все равно бы не хранил время создание, а просто показывал бы его из юнида (computed for display)
 
N

nvyush

даже если б оно было, то все равно бы не хранил время создание, а просто показывал бы его из юнида (computed for display)
Пользователи время создания обычно смотрят в свойствах документа. Искать его в UNID — это для ооочень продвинутых.
 

Мыш

Lotus Team
12.02.2008
1 213
29
BIT
43
кажется мы говорим о разных полях
Млин, создайте такое поле (Имя - $Created, Тип - Дата) и посмотрите, устраивает ли оно Вас. Неужели так сложно проверить?
 
Y

yerke

Млин, создайте такое поле (Имя - $Created, Тип - Дата) и посмотрите, устраивает ли оно Вас. Неужели так сложно проверить?

и что ???
создав на форме поле $Created с типом дэйттайм
создав по этой форме док и указав в поле $Created нужную дату
вы сможете изменить дату создания документа?
а фиг.

задача стояла как? изменить программно время создания дока, так чтобы поддельное время отражался на свойствах документа.
этого можно добиться только поменять юнид дока, что указан высше на листинге.
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

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