1. Администрация SafeZone приветствует вас на нашем форуме!
    Если вы больше не желаете видеть рекламу при просмотре тем и сообщений - то достаточно просто зарегистрироваться. Для зарегистрированных пользователей реклама не отображается.
    Если у вас возникли проблемы с регистрацией на форуме - то вы можете сообщить об этом с помощью этой формы без авторизации,администрация форума обязательно отреагирует на вашу проблему.
    Скрыть объявление

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

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

  1. SENSORED

    SENSORED Новый пользователь

    Сообщения:
    8
    Симпатии:
    10
    Доброго времени суток уважаемые!
    В разделе реестра HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\NetworkList\Profiles содержится информация о сетевых подключениях.
    Интересует данные по "DateCreated'' и ''DateLastConnected'', как выяснить дату создания и подключения по имеющейся в них информации (вопрос расследования инцидента информационной безопасности). Т.е. по сути интересуют любые сведения подтверждающие несанкционированное подключение к сетям (беспроводным, внутренним, "Интернет").
    Заранее благодарен!!!!
     
  2. regist

    regist гоняюсь за туманом Ассоциация VN/VIP VIP Разработчик

    Сообщения:
    11.989
    Симпатии:
    5.580
    Так выше же сами всё написали. Там данные просто в бинарном формате, сконвертировать надо.
     
  3. Кирилл

    Кирилл Команда форума Администратор

    Сообщения:
    13.136
    Симпатии:
    5.537
    SENSORED, здравствуйте!
    Переводим бинарное значение в шестнадцатиричное,а его - в десятичное.
    Например:
    Код (Text):
    e0,07,04,00,03,00,14,00,06,00,2b,00,3a,00,33,01
    Переводим:
    Код (Text):
    07e0 0004 0003 0014 0006 002b 003a 0133

    Получаем:
    2016.04.03
    Это дата.
     
    shestale нравится это.
  4. Dragokas

    Dragokas Very kind Developer Команда форума Супер-Модератор Разработчик Клуб переводчиков

    Сообщения:
    5.147
    Симпатии:
    5.030
    неправильно.

    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 = 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.
    Вам необходимо дополнительно провести перерасчёт, учитывая часовой пояс на системе, откуда эта запись была прочитана.
     
    Кирилл, akok и shestale нравится это.
  5. Dragokas

    Dragokas Very kind Developer Команда форума Супер-Модератор Разработчик Клуб переводчиков

    Сообщения:
    5.147
    Симпатии:
    5.030
    Для удобства написал скрипт, с помощью которого можно легко преобразовать SYSTEMTIME в привычную дату.
     

    Вложения:

    shestale и Кирилл нравится это.
  6. shestale

    shestale Ассоциация VN/VIP Преподаватель

    Сообщения:
    9.060
    Симпатии:
    4.823
    :Good:
    --- Объединённое сообщение, 20 апр 2017, Дата первоначального сообщения: 20 апр 2017 ---
    Проверил сейчас у себя дату и время последнего коннекта, всё соответствует моему UTC+7 и поправки ни какой делать не пришлось.
    Screenshot_1.
     
    SENSORED нравится это.
  7. SENSORED

    SENSORED Новый пользователь

    Сообщения:
    8
    Симпатии:
    10
    тысячекратное спасибо!!!
     
  8. SENSORED

    SENSORED Новый пользователь

    Сообщения:
    8
    Симпатии:
    10
    Спрошу попутно, в разделах реестра 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), что он показывает??? (заранее спасибо)
     
  9. Dragokas

    Dragokas Very kind Developer Команда форума Супер-Модератор Разработчик Клуб переводчиков

    Сообщения:
    5.147
    Симпатии:
    5.030
    shestale, значит для каждого параметра следует индивидуально перепроверять, пишет система с поправкой или без, если это важно для расследования инцидента.

    SENSORED, 8-байтовые значения отображают дату в формате FILETIME.
    Это число - кол-во 100 наносекундных промежутков времени, которые прошли с момента даты 1 января 1601 года (так называемое время UTC, начало эпохи, или 1-й день 17 столетия).
    Код (C++):

    typedef struct _FILETIME {
      DWORD dwLowDateTime;
      DWORD dwHighDateTime;
    } FILETIME, *PFILETIME;
     
    Код (Text):

    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
     
    Последнее редактирование: 20 апр 2017
    Кирилл нравится это.
  10. Dragokas

    Dragokas Very kind Developer Команда форума Супер-Модератор Разработчик Клуб переводчиков

    Сообщения:
    5.147
    Симпатии:
    5.030
    Пользователь Dragokas разместил новый ресурс:

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

    Узнать больше об этом ресурсе...
     
    shestale, Кирилл и dzu нравится это.
Загрузка...
Похожие темы - раскодировать дату DateCreated
  1. Dragokas
    Ответов:
    3
    Просмотров:
    4.167

Поделиться этой страницей