Registry Time Decoder

Статья Как раскодировать дату в DateCreated параметре реестра. 2.3

SENSORED

Новый пользователь
Сообщения
8
Реакции
11
Доброго времени суток уважаемые!
В разделе реестра HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkList\Profiles содержится информация о сетевых подключениях.
Интересует данные по "DateCreated'' и ''DateLastConnected'', как выяснить дату создания и подключения по имеющейся в них информации (вопрос расследования инцидента информационной безопасности). Т.е. по сути интересуют любые сведения подтверждающие несанкционированное подключение к сетям (беспроводным, внутренним, "Интернет").
Заранее благодарен!!!!
 
Так выше же сами всё написали. Там данные просто в бинарном формате, сконвертировать надо.
 
SENSORED, здравствуйте!
Переводим бинарное значение в шестнадцатиричное,а его - в десятичное.
Например:
Код:
e0,07,04,00,03,00,14,00,06,00,2b,00,3a,00,33,01
Переводим:
Код:
07e0 0004 0003 0014 0006 002b 003a 0133


Получаем:
2016.04.03
Это дата.
 
Получаем:
2016.04.03
неправильно.

SENSORED, это структура SYSTEMTIME.
C++:
typedef struct _SYSTEMTIME {
  WORD wYear;
  WORD wMonth;
  WORD wDayOfWeek;
  WORD wDay;
  WORD wHour;
  WORD wMinute;
  WORD wSecond;
  WORD wMilliseconds;
} SYSTEMTIME, *PSYSTEMTIME;
e0,07,04,00,03,00,14,00,06,00,2b,00,3a,00,33,01
Берёте каждые два байта и переворачиваете их, например,
e0,07 = 07e0 = 2016 (год)
04,00 = 0004 = 4 (месяц)
03,00 = 0003 = 3 (день недели)
14,00 = 0014 = 20 (день)
06,00 = 0006 = 6 (часы)
2b,00 = 002b = 43 (минуты)
3a,00 = 003a = 58 (секунды)
33,01 = 0133 = 307 (миллисекунды)

Учтите, что такой формат записывается обычно по отношению к временному смещению UTC+0.
Вам необходимо дополнительно провести перерасчёт, учитывая часовой пояс на системе, откуда эта запись была прочитана.
 
Для удобства написал скрипт, с помощью которого можно легко преобразовать SYSTEMTIME в привычную дату.
 

Вложения

  • SystemTime_to_Date.zip
    1.1 KB · Просмотры: 40
Для удобства написал скрипт
:Good:
Учтите, что такой формат записывается обычно по отношению к временному смещению UTC+0.
Проверил сейчас у себя дату и время последнего коннекта, всё соответствует моему UTC+7 и поправки ни какой делать не пришлось.
Screenshot_1.jpg
 
Спрошу попутно, в разделах реестра CurrentControlSet001, CurrentControlSet002, CurrentControlSet001 (HKEY_LOCAL_MACHINE\SYSTEM\) имеется информация о подключаемых USB-устройствах. Есть ли параметр отражающий дату подключения? Нашел в разделе [HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\Class\ параметр "DriverDateData" ( конкретно у меня для одного из USB-устройств hex:00,80,8c,a3,c5,94,c6,01), что он показывает??? (заранее спасибо)
 
shestale, значит для каждого параметра следует индивидуально перепроверять, пишет система с поправкой или без, если это важно для расследования инцидента.

SENSORED, 8-байтовые значения отображают дату в формате FILETIME.
Это число - кол-во 100 наносекундных промежутков времени, которые прошли с момента даты 1 января 1601 года (так называемое время UTC, начало эпохи, или 1-й день 17 столетия).
C++:
typedef struct _FILETIME {
  DWORD dwLowDateTime;
  DWORD dwHighDateTime;
} FILETIME, *PFILETIME;
Код:
hex:00,80,8c,a3,c5,94,c6,01
Группы байтов берём в том же порядке, в котором они указаны в структуре (DWORD - это 4 байта).
При этом байты читаем в обратном порядке:
dwLowDateTime - hex:00,80,8c,a3 -> 0x a38c8000
dwHighDateTime - hex:c5,94,c6,01 -> 0x 01c694c5

В виде обычного числа это записывается как
dwHighDateTime, dwLowDateTime = 0x 01c694c5a38c8000 = 127953216000000000.

1 нс = 10 сек. в -9 степени. 100 нс интервал = 1 сек. в -7 степени.
Соответственно 127953216000000000 100-нс. инт. = 12795321600 сек. + 1 января 1601 года = 21.06.2006
(если считать примерно, то 12795321600 / 60 / 60 / 24 / 365 = 405 + 1601 = 2006).

------------------
Также, ещё один распространённый тип кодирования даты, который вы можете встретить в реестре, это Unix-time, 4-байтовое значение.
Оно представляет собой кол-во секунд, прошедших с момента даты 01.01.1970.

Пример такого параметра:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion => InstallDate
 
Последнее редактирование:
Пользователь Dragokas разместил новый ресурс:

Registry Time Decoder - Конвертирует дату из форматов FILETIME, SYSTEMTIME, UNIX-TIME, которая обычно встречается в реестре

Консольный VBS скрипт.

Позволяет увидеть в привычном формате DD.MM.YYYY hh:mm:ss даты, которые указаны в реестре в бинарном формате или в виде 16-ричного значения.

Можно указывать на выбор:
  • бинарную строку
  • 16-ричное число
  • путь к параметру реестра
Поддерживаемые форматы:
  • Unix-Time (4 байта)
  • FILETIME (8 байт)
  • SYSTEMTIME (16 байт)
Фейс:

Посмотреть вложение 34816

Узнать больше об этом ресурсе...
 
Для удобства написал скрипт, с помощью которого можно легко преобразовать SYSTEMTIME в привычную дату.
Слушай, что это за формат ты имеешь ввиду «в формате Улей\Ключ\Параметр»??!
Вот, в редакторе реестра вверху есть "адресная строка". В ней у меня сейчас вот такой путь:
Компьютер\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkList\Profiles\{F81D44F6-EAA8-46BD-83CE-C35F8C6CBC8B}
И Параметр, содержащий "кодированную" дату называется
DateLastConnected
Ну, и я вставляю в окошко запроса твоего скрипта это всё в виде
Компьютер\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkList\Profiles\{F81D44F6-EAA8-46BD-83CE-C35F8C6CBC8B}\DateLastConnected
и.. получаю ошибку «Указанного параметра нет, неверный формат параметра, либо нужно запустить этот скрипт от имени администратора!»
Запустить от имени Администратора? - Не вижу такого пункта в меню-по-правой-кнопке-мыши.
Неверный формат пути? - А какой он должен быть??
((((///
 

Вложения

  • sample.png
    sample.png
    22.2 KB · Просмотры: 15
Слушай, что это за формат ты имеешь ввиду «в формате Улей\Ключ\Параметр»??!
Вот, в редакторе реестра вверху есть "адресная строка". В ней у меня сейчас вот такой путь:
Компьютер\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkList\Profiles\{F81D44F6-EAA8-46BD-83CE-C35F8C6CBC8B}
И Параметр, содержащий "кодированную" дату называется
DateLastConnected
Улей - это часть, которая начинается с HK*. Остальное - приколы виндового редактора реестра.
Можно, конечно добавить поддержку и такой разновидности, чтобы не возникали вопросы...
Вот так должно выглядеть для ввода в скрипт:
Код:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkList\Profiles\{F81D44F6-EAA8-46BD-83CE-C35F8C6CBC8B}\DateLastConnected

и.. получаю ошибку «Указанного параметра нет, неверный формат параметра, либо нужно запустить этот скрипт от имени администратора!»
Запустить от имени Администратора? - Не вижу такого пункта в меню-по-правой-кнопке-мыши.
Там же в этом окне две кнопки "Да" или "Нет". Выбираете "Да", и он сам перезапустит.
 
Последнее редактирование:
Не работает ваш скрипт не под win 10, 11, с антивирусом и без. При вводе 16-го значения просто исчезает окно, ни ошибок ничего. Запускал и из cmd: cscript //H:CScript ВАШ.vbs также не работает!
 
Dragokas обновил(а) ресурс Registry Time Decoder новой записью:

Обновление

2.3
- Исправлено ухудшение из предыдущей сборки
- Добавлена поддержка ОС с разделителем "." для дробной части (англоязычные системы)
- Детализация некоторых сообщений об ошибках
- Скрипт больше не запрашивает дважды элевацию
- Скрипт теперь всегда запрашивает повторный ввод при некорректных данных
- 8-байтное значение, введенное без префикса 0x, теперь интерпретируется дважды: в обратном и прямом направлении байтов, и выводится 2 результата

Узнать больше об этом обновлении...
 
Дак есть специальньіе проги, которьіе...
У нас на работу лет 5 назад приезжала какая то проверка - включили прогу и получили отчет, что и когда подключалось.
Исполняющий обязанности сисадмина долго розбирался как чистить реестр от єтой инфьі и перед очередной проверкой прочистил... а те приехали, включили прогу и все равно нашли все что надо - оштрафовали начальника (штраф не подействовал - перед сдедующей проверкой просто переустанавливали винду).
 
Назад
Сверху Снизу