Анализ реестра Windows –

Hkey_local_machine

Здесь хранятся все общесистемные настройки, и обычно он обозначается аббревиатурой HKLM. В основном вы будете использовать ключ HKLMSoftware для проверки общесистемных настроек.

HKEY_LOCAL_MACHINE, часто сокращённо пишется как HKLM, является одним из нескольких кустов реестра, составляющих реестр Windows. Этот конкретный куст содержит большую часть информации о конфигурации установленного вами программного обеспечения, а также самой операционной системы Windows.


Помимо данных о конфигурации программного обеспечения, куст HKEY_LOCAL_MACHINE также содержит много ценной информации об обнаруженном оборудовании и драйверах устройств.

В Windows 10, Windows 8, Windows 7 и Windows Vista информация о конфигурации загрузки вашего компьютера также включена в этот куст.

Подразделы реестра в HKEY_LOCAL_MACHINE

Следующие разделы реестра находятся в кусте HKEY_LOCAL_MACHINE:

  • HKEY_LOCAL_MACHINEBCD00000000
  • HKEY_LOCAL_MACHINECOMPONENTS
  • HKEY_LOCAL_MACHINEDRIVERS
  • HKEY_LOCAL_MACHINEHARDWARE
  • HKEY_LOCAL_MACHINESAM
  • HKEY_LOCAL_MACHINESchema
  • HKEY_LOCAL_MACHINESECURITY
  • HKEY_LOCAL_MACHINESOFTWARE
  • HKEY_LOCAL_MACHINESYSTEM

Ключи, расположенные в разделе HKEY_LOCAL_MACHINE на вашем компьютере, могут несколько отличаться в зависимости от вашей версии Windows и конкретной конфигурации вашего компьютера. Например, более новые версии Windows не включают ключ HKEY_LOCAL_MACHINECOMPONENTS.

Раздел SOFTWARE является наиболее часто используемым из кустов HKLM. Он организован в алфавитном порядке по поставщикам программного обеспечения, и именно здесь каждая программа записывает данные в реестр, чтобы при следующем открытии приложения его конкретные настройки можно было применить автоматически, чтобы вам не приходилось перенастраивать программу каждый раз, когда она используется. Это также полезно при поиске SID пользователя.

Подраздел SOFTWARE также содержит подраздел Windows, который описывает различные детали пользовательского интерфейса операционной системы, подраздел Classes, детализирующий, какие программы связаны с какими расширениями файлов, и другие.

HKLMSOFTWAREWow6432Node встречается в 64-битных версиях Windows, но используется 32-битными приложениями. Это эквивалент HKLMSOFTWARE, но не совсем то же самое, поскольку он выделен с единственной целью предоставления информации 32-битным приложениям в 64-битной ОС. WoW64 показывает этот ключ 32-битным приложениям как «HKLMSOFTWARE».

Скрытые подразделы в HKLM

В большинстве конфигураций следующие подразделы являются скрытыми ключами, поэтому их нельзя просматривать, как другие разделы куста реестра HKLM:

  • HKEY_LOCAL_MACHINESAM
  • HKEY_LOCAL_MACHINESECURITY


В большинстве случаев эти ключи выглядят пустыми, когда вы их открываете, и/или содержат пустые подключи.

Подраздел SAM относится к информации о базах данных Security Accounts Manager (SAM) для доменов. В каждой базе данных есть псевдонимы групп, пользователи, гостевые учётные записи и учётные записи администраторов, а также имя, используемое для входа в домен, криптографические хэши пароля каждого пользователя и многое другое.

Подраздел SECURITY используется для хранения политики безопасности текущего пользователя. Он связан с базой данных безопасности домена, в котором пользователь вошёл в систему, или с кустом реестра на локальном компьютере, если пользователь вошёл в домен локальной системы.

Чтобы увидеть содержимое ключа SAM или SECURITY, редактор реестра должен быть открыт с использованием системной учётной записи, которая имеет более широкие права, чем любой другой пользователь, даже пользователь с правами администратора. Как это сделать, будет показано ниже.


После открытия редактора реестра с соответствующими разрешениями ключи HKEY_LOCAL_MACHINESAM и HKEY_LOCAL_MACHINESECURITY могут быть исследованы, как и любой другой ключ в кусте.

Некоторые бесплатные служебные программы, такие как PsExec от Microsoft, могут открывать редактор реестра с соответствующими разрешениями для просмотра этих скрытых ключей.

Подробнее о HKEY_LOCAL_MACHINE

Может быть интересно узнать, что HKEY_LOCAL_MACHINE на самом деле нигде на компьютере не существует, а вместо этого является просто контейнером для отображения фактических данных реестра, загружаемых через подключи, расположенные в кустах, перечисленных выше.

Другими словами, HKEY_LOCAL_MACHINE действует как ярлык для ряда других источников данных о вашем компьютере.

Из-за того, что HKEY_LOCAL_MACHINE не существует, ни вы, ни какая-либо установленная вами программа не может создавать дополнительные ключи в HKEY_LOCAL_MACHINE.

Joda time

Avro 1.8.2 использует Joda Time библиотеку для работы с полями дат и времени. А мы пишем на Java 8 и используем нативные классы для работы с датами.

В процессе разработки был составлен класс утилитных методов для конвертаций дат. Мы нашли это наименьшей головной болью при передаче дат с часовым поясом с помощью Avro по Kafka.

Вот так мы, например, конвертируем даты перед отправкой:

convertDate(model.getBeginDate()).ifPresent(builder::setBeginDate)
convertLocalDateToJodaDateTime(model.getPaymentDate()).ifPresent(builder::setPaymentDate);

А вот так, например, принимаем:

convertToLocalDateTime(message.getLastUpdate()).ifPresent(model::setLastUpdate);
Привожу класс целиком, собрали методы из разных уголков вселенной
/**
 * Класс с утилитными методам для конвертации типов
 */
public final class MessageUtils {

    /** Кол-во наносекунд в миллисекунде */
    private static final int NANO_SECONDS_IN_MILLISECOND = 1_000_000;

    /** Кол-во миллисекунд в секунде */
    private static final int MILLISECONDS_IN_SECONDS = 1000;

    /**
     * Запрещаем создание
     */
    private MessageUtils() {
    }

    /**
     * Конвертирует Joda {@link DateTime} в Java 8 {@link ZonedDateTime}
     * @param dateTime дата в формате Joda {@link DateTime}
     * @return {@link ZonedDateTime}
     */
    public static Optional<ZonedDateTime> convertToZonedDateTime(DateTime dateTime) {
        return Optional.ofNullable(dateTime).map(dt -> {
            DateTime localDateTime = dateTime.withZone(DateTimeZone.getDefault());
            return ZonedDateTime.ofLocal(
                    LocalDateTime.of(
                            localDateTime.getYear(),
                            localDateTime.getMonthOfYear(),
                            localDateTime.getDayOfMonth(),
                            localDateTime.getHourOfDay(),
                            localDateTime.getMinuteOfHour(),
                            localDateTime.getSecondOfMinute(),
                            localDateTime.getMillisOfSecond() * NANO_SECONDS_IN_MILLISECOND),
                    ZoneId.of(localDateTime.getZone().getID(), ZoneId.SHORT_IDS),
                    ZoneOffset.ofTotalSeconds(localDateTime.getZone().getOffset(localDateTime) / MILLISECONDS_IN_SECONDS));
        });
    }

    /**
     * Конвертирует Joda {@link DateTime} в Java 8 {@link LocalDateTime}
     * @param dateTime дата в формате Joda {@link DateTime}
     * @return {@link LocalDateTime}
     */
    public static Optional<LocalDateTime> convertToLocalDateTime(DateTime dateTime) {
        return convertToZonedDateTime(dateTime).map(ZonedDateTime::toLocalDateTime);
    }

    /**
     * Конвертирует Joda {@link DateTime} в Java 8 {@link LocalDate}
     * @param dateTime дата в формате Joda {@link DateTime}
     * @return {@link LocalDate}
     */
    public static Optional<LocalDate> convertToLocalDate(DateTime dateTime) {
        return convertToZonedDateTime(dateTime).map(ZonedDateTime::toLocalDate);
    }

    /**
     * Конвертирует {@link LocalDate} в {@link org.joda.time.LocalDate}
     * @param ld {@link LocalDate}
     * @return {@link org.joda.time.LocalDate}
     */
    public static Optional<org.joda.time.LocalDate> convertLocalDateToJodaLocalDate(LocalDate ld) {
        return Optional.ofNullable(ld).map(date -> new org.joda.time.LocalDate(date.getYear(), date.getMonthValue(), date.getDayOfMonth()));
    }

    /**
     * Конвертирует {@link org.joda.time.LocalDate} в {@link LocalDate}
     * @param ld {@link org.joda.time.LocalDate}
     * @return {@link LocalDate}
     */
    public static Optional<LocalDate> convertJodaLocalDateToLocalDate(org.joda.time.LocalDate ld) {
        return Optional.ofNullable(ld).map(date -> LocalDate.of(date.getYear(), date.getMonthOfYear(), date.getDayOfMonth()));
    }

    /**
     * Конвертирует {@link LocalDateTime} в Joda {@link DateTime}
     * @param ldt дата в формате {@link LocalDateTime}
     * @return дата в формате Joda {@link DateTime}
     */
    public static Optional<DateTime> convertLocalDateTimeToJodaDateTime(LocalDateTime ldt) {
        return Optional.ofNullable(ldt)
                .map(date -> new org.joda.time.LocalDateTime(date.atZone(ZoneId.systemDefault()).toInstant().toEpochMilli()).toDateTime());
    }

    /**
     * Конвертирует {@link LocalDate} в Joda {@link DateTime}
     * @param ld дата в формате {@link LocalDate}
     * @return дата в формате Joda {@link DateTime}
     */
    public static Optional<DateTime> convertLocalDateToJodaDateTime(LocalDate ld) {
        return Optional.ofNullable(ld)
                .map(date ->
                        new org.joda.time.LocalDate(date.getYear(), date.getMonthValue(), date.getDayOfMonth()).toDateTimeAtStartOfDay());
    }
}

Reg quer — отображение значения параметра реестра

Использование:

REG QUERY имя_раздела [/v [имя_параметра] | /ve] [/s]
          [/f данные [/k] [/d] [/c] [/e]] [/t тип] [/z] [/se разделитель]
          [/reg:32 | /reg:64]

Опции:

  имя_раздела [\компьютер]полное_имя_раздела
              компьютер          — имя удаленного компьютера, по умолчанию
                                   используется текущий компьютер.
                                   На удаленных компьютерах доступны только
                                   разделы HKLM и HKU
              полное_имя_раздела — путь в форме корневой_разделподраздел
                 корневой раздел — [ HKLM | HKCU | HKCR | HKU | HKCC ]
                 подраздел       — полное имя раздела реестра в указанном
                                   корневом_разделе

  /v          Запросы требуемых параметров в указанном разделе реестра.
              Если не указано, запрашиваются все параметры раздела.

              Аргумент этого параметра может быть необязательным, только если
              задан параметр /f. Это указывает на поиск только в именах
              параметров реестра.

  /ve         Запросы параметра по умолчанию или с пустым именем (по
              умолчанию).

  /s          Запрос всех вложенных подразделов и их параметров (аналогично
              команде dir /s).

  /se         Указание разделителя (длиной в 1 знак) в строке данных для
              REG_MULTI_SZ. По умолчанию в качестве разделителя используется
              "".

  /f          Данные или шаблон для поиска.
           Если строка содержит пробелы, заключайте ее в кавычки.
              Значение по умолчанию: "*".

  /k          Указывает на поиск только в именах разделов.

  /d          Указывает на поиск только в данных.

  /c          Указывает на учет регистра знаков при поиске.
                По умолчанию при поиске регистр знаков не учитывается.

  /e          Указывает на возврат только точных совпадений.
                По умолчанию возвращаются все совпадения.

  /t          Указывает тип данных параметра реестра.
              Допустимые типы:
                REG_SZ, REG_MULTI_SZ, REG_EXPAND_SZ,
                REG_DWORD, REG_QWORD, REG_BINARY, REG_NONE
              По умолчанию будут использоваться все типы.

  /z          Подробности: отображение числового кода типа имени значения.

  /reg:32  Указывает, что к разделу реестра следует обращаться с помощью
           представления для 32-разрядных приложений.

  /reg:64  Указывает, что к разделу реестра следует обращаться с помощью
           представления для 64-разрядных приложений.


Примеры:

Отображение значения параметра реестра Version:

REG QUERY HKLMSoftwareMicrosoftResKit /v Version

Отображение всех подразделов и их параметров в разделе реестра Setup удаленного компьютера ABC:

REG QUERY \ABCHKLMSoftwareMicrosoftResKitNtSetup /s

Отображение всех подразделов и параметров со знаком “#” в качестве разделителя для всех параметров типа REG_MULTI_SZ:

REG QUERY HKLMSoftwareMicrosoftResKitNtSetup /se #


Отображение раздела, параметра и данных с учетом реестра букв для точных совпадений с “SYSTEM” типа REG_SZ из корневого раздела HKLM:

REG QUERY HKLM /f SYSTEM /t REG_SZ /c /e

Отображение раздела, параметра и данных для совпадений с “0F” типа REG_BINARY среди данных в корневом разделе HKCU:

REG QUERY HKCU /f 0F /d /t REG_BINARY

Отображение параметра и данных для пустого значения (по умолчанию) в разделе HKLMSOFTWARE:

REG QUERY HKLMSOFTWARE /ve

Hkey_classes_root

HKEY_CLASSES_ROOT, часто сокращённо HKCR, представляет собой куст реестра в реестре Windows и содержит информацию об ассоциации расширения файла, а также данные программного идентификатора (ProgID), идентификатора класса (CLSID) и идентификатора интерфейса (IID). Этот ключ на самом деле просто ссылка на HKLMSoftwareClasses.


Проще говоря, куст реестра HKEY_CLASSES_ROOT содержит необходимую информацию, чтобы Windows знала, что делать, когда вы просите её сделать что-то, например, просмотреть содержимое диска или открыть файл определённого типа и т. д.

Вы также можете использовать этот раздел, если хотите настроить контекстное меню для определённого типа файла.

Подразделы реестра в HKEY_CLASSES_ROOT

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

:/>  Параметры конфигурации TCP/IP и NBT для Windows XP. Настройка TCP/IP. Системный реестр Windows. Оптимизация и настройка реестра

Вот некоторые из многих ключей ассоциации расширений файлов, которые вы найдёте в кусте HKEY_CLASSES_ROOT, большинство из которых начинаются с точки:

  • HKEY_CLASSES_ROOT.avi
  • HKEY_CLASSES_ROOT.bmp
  • HKEY_CLASSES_ROOT.exe
  • HKEY_CLASSES_ROOT.html
  • HKEY_CLASSES_ROOT.pdf
  • HKEY_CLASSES_ROOTAudioCD
  • HKEY_CLASSES_ROOTdllfile

Каждый из этих разделов реестра хранит информацию о том, что Windows должна делать при двойном щелчке или двойном касании файла с этим расширением. Он может включать в себя список программ, которые можно найти в разделе «Открыть с помощью…» при щелчке/касании файла правой кнопкой мыши, а также путь к каждому из перечисленных приложений.

Например, на вашем компьютере, когда вы открываете файл с именем draft.rtf, этот файл может открываться с помощью программы WordPad. Данные реестра, которые отвечают за это, хранятся в ключе HKEY_CLASSES_ROOT.rtf, который определяет WordPad как программу, которая должна открывать файл RTF.

HKCR и CLSID, ProgID и IID

Остальные ключи в HKEY_CLASSES_ROOT — это ключи ProgID, CLSID и IID. Вот несколько примеров каждого из них:

Ключи ProgID расположены в корне HKEY_CLASSES_ROOT вместе с описанными выше ассоциациями расширений файлов:

  • HKEY_CLASSES_ROOTFaxServer.FaxServer
  • HKEY_CLASSES_ROOTJPEGFilter.CoJPEGFilter
  • HKEY_CLASSES_ROOTWindowsMail.Envelope


Все ключи CLSID находятся в подразделе CLSID:

  • HKEY_CLASSES_ROOTCLSID{00000106-0000-0010-8000-00AA006D2EA4}
  • HKEY_CLASSES_ROOTCLSID{06C792F8-6212-4F39-BF70-E8C0AC965C23}
  • HKEY_CLASSES_ROOTCLSID{FA10746C-9B63-4b6c-BC49-FC300EA5F256}

Все ключи IID расположены в подразделе Интерфейс:

  • HKEY_CLASSES_ROOTInterface{0000000d-0000-0000-C000-000000000046}
  • HKEY_CLASSES_ROOTInterface{00000089-0000-0010-8000-00AA006D2EA4}
  • HKEY_CLASSES_ROOTInterface{00000129-0000-0000-C000-000000000046}

Hkey_current_config

Хранит всю информацию о текущей конфигурации оборудования. Он используется не очень часто, и это просто ссылка на HKLMSYSTEMCurrentControlSetHardware ProfilesCurrent.

HKEY_CURRENT_CONFIG, иногда сокращенно HKCC, представляет собой куст реестра, который является частью реестра Windows. Сам он не хранит никакой информации, а вместо этого действует как указатель или ярлык для раздела реестра, в котором хранится информация об используемом в данный момент профиле оборудования.

HKEY_CURRENT_CONFIG — это ярлык для улья HKEY_LOCAL_MACHINE. В частности, в раздел реестра SYSTEMCurrentControlSetHardware ProfilesCurrent этого куста. Именно там информация действительно хранится — HKEY_CURRENT_CONFIG просто предоставляет быстрый способ добраться туда.

Следовательно, HKEY_CURRENT_CONFIG действительно существует просто для удобства. Легче получить доступ к данным в другом разделе реестра — просмотреть и изменить его, просто перейдя в HKEY_CURRENT_CONFIG. Поскольку они содержат одинаковую информацию и всегда связаны друг с другом, вы можете вносить изменения в любом месте, чтобы получить одинаковые результаты.

Подразделы реестра в HKEY_CURRENT_CONFIG

Два ключа реестра, которые вы найдёте в кусте HKEY_CURRENT_CONFIG:

  • HKEY_CURRENT_CONFIGSoftware
  • HKEY_CURRENT_CONFIGSystem

Подробнее о HKEY_CURRENT_CONFIG

Как мы уже говорили выше, HKEY_CURRENT_CONFIG реплицирует всё, что находится в HKEY_LOCAL_MACHINESYSTEMCurrentControlSetHardware ProfilesCurrent. Это означает, что если вы измените что-либо в первом разделе реестра, это будет отражено во втором, и наоборот.

Например, если вы добавляете, редактируете, удаляете или переименовываете что-либо в разделе HKEY_LOCAL_MACHINESYSTEMCurrentControlSetHardware ProfilesCurrentSoftware, а затем выйдите из редактора реестра и повторно откройте его (или обновите его с помощью клавиши F5), вы увидите что изменение произошло немедленно в ключе the HKEY_CURRENT_CONFIGSoftware.

Вы можете заметить, что внутри HKLMSYSTEMCurrentControlSetHardware Profiles есть несколько ключей реестра. Это потому, что этот раздел реестра используется для хранения всех профилей оборудования для всего компьютера. Причина, по которой вы видите только один профиль оборудования в ключе HKEY_CURRENT_CONFIG, заключается в том, что он указывает только на один из этих профилей оборудования, в частности, на тот, который относится к пользователю, который в данный момент вошёл в систему.

В некоторых версиях Windows вы можете создать дополнительные профили оборудования, щёлкнув ссылку «Система» на панели управления. Щёлкните или коснитесь вкладки «Оборудование», а затем «Профили оборудования».

Reg compare — сравнение разделов и значений


Использование:

REG COMPARE <имя_раздела_1> <имя_раздела_2> [/v  | /ve]
            [вывод] [/s]
            [/reg:32 | /reg:64]

Опции:

  имя_раздела      [\]<раздел>
    компьютер      Имя удаленного компьютера, если оно опущено, по умолчанию
                   используется локальный компьютер. На удаленном компьютере
                   можно использовать только корневые разделы HKLM и HKU.
    имя_раздела    КОРЕНЬ<подраздел>
                   Если имя раздела 1 не указано, то имя раздела 2 равно имени
                   раздела 1.
    КОРЕНЬ         [ HKLM | HKCU | HKCR | HKU | HKCC ]
    подраздел      Полное имя подраздела реестра в одном из выбранных корневых
                   разделов.

  имя_параметра    Имя параметра в выбранном разделе, подлежащее сравнению.
                   Если опущено, то сравниваются все параметры в разделе.

  /ve              Сравнение параметров раздела с пустым именем (по умолчанию).

  /s               Сравнение всех подразделов и параметров.

  /reg:32    Указывает, что к разделу реестра следует обращаться с помощью
             представления для 32-разрядных приложений.

  /reg:64    Указывает, что к разделу реестра следует обращаться с помощью
             представления для 64-разрядных приложений.

  Вывод            [/oa | /od | /os | /on]
                   Если опущен, то выводятся только различия.
    /oa            Вывод всех различий и совпадений.
    /od            Вывод только различий.
    /os            Вывод только совпадений.
    /on            Без вывода.

Код возврата:

  0 - Успешно, сравниваемые данные идентичны
  1 - При обработке произошла ошибка
  2 - Успешно, сравниваемые данные отличаются

Примечание:
  Символы в начале каждой строки читаются следующим образом:
  = данные FullKey1 равны данным FullKey2
  < относится к данным FullKey1, если они отличаются от данных FullKey2
  > относится к данным FullKey2, если они отличаются от данных FullKey1

Примеры:


Сравнивает все значения в разделе MyApp со значениями раздела SaveMyApp:

REG COMPARE HKLMSoftwareMyCoMyApp HKLMSoftwareMyCoSaveMyApp

Сравнивает значения Version в разделах MyCo и MyCo1:

REG COMPARE HKLMSoftwareMyCo HKLMSoftwareMyCo1 /v Version

Сравнивает все подразделы и значения параметров в разделе HKLMSoftwareMyCo реестра на компьютере ZODIAC с аналогичным разделом на текущем компьютере:

REG COMPARE \ZODIACHKLMSoftwareMyCo \. /s

Reg add — добавление разделов и параметров в реестр


Использование:

REG ADD <имя_раздела> [/v  | /ve] [/t ] [/s ]
        [/d ] [/f]
        [/reg:32 | /reg:64]

Опции:

  имя_раздела  [\]<раздел>

       Компьютер — имя удаленного компьютера. Если оно опущено, то по
                   умолчанию используется локальный компьютер. На удаленном
                   компьютере доступны только корневые разделы HKLM и HKU.

       Раздел —    КОРЕНЬ<подраздел>

       КОРЕНЬ —    [ HKLM | HKCU | HKCR | HKU | HKCC ]

       Подраздел — полное имя подраздела реестра в указанном корневом разделе.

  /v   Имя параметра, добавляемого в выбранный раздел.

  /ve  Добавление параметра с пустым именем (по умолчанию) в этот раздел.

  /t   Тип данных
       [ REG_SZ    | REG_MULTI_SZ | REG_EXPAND_SZ |
         REG_DWORD | REG_QWORD    | REG_BINARY    | REG_NONE ]
        Если не указывается, то по умолчанию используется REG_SZ.

  /s   Символ, используемый в качестве разделителя данных для параметров
       типа REG_MULTI_SZ. Если не указан, то в качестве разделителя
       используется "".

  /d       Значение, присваиваемое добавляемому параметру реестра.

  /f       Принудительно перезаписывает существующую запись реестра без
           запроса подтверждения.

  /reg:32  Указывает, что к разделу реестра следует обращаться с помощью
           представления для 32-разрядных приложений.

  /reg:64  Указывает, что к разделу реестра следует обращаться с помощью
           представления для 64-разрядных приложений.

Примеры:


Добавляет раздел HKLMSoftwareMyCo на удаленном компьютере ABC:

REG ADD \ABCHKLMSoftwareMyCo

Добавляет параметр (имя: Data, тип: REG_BINARY, данные: fe340ead):

REG ADD HKLMSoftwareMyCo /v Data /t REG_BINARY /d fe340ead

Добавляет параметр (имя: MRU, тип: REG_MULTI_SZ, данные: faxmail):

REG ADD HKLMSoftwareMyCo /v MRU /t REG_MULTI_SZ /d faxmail


Добавляет параметр (имя: Path, тип: REG_EXPAND_SZ, данные: %systemroot%) Примечание. В расширяемой строке используйте знак вставки ( ^ ):

REG ADD HKLMSoftwareMyCo /v Path /t REG_EXPAND_SZ /d ^%systemroot^%

Программы для просмотра кукиз (chromecookiesview, iecookiesview, mzcookiesview, edgecookiesview)

Как вы уже поняли, ChromeCookiesView, IECookiesView, MZCookiesView, EdgeCookiesView используются для просмотра кукиз в различных веб-браузерах.

На самом деле, выделение раздела программ для IT криминалистики, на мой взгляд, довольно условно – там все программы в той или иной мере предназначены для цифрового форенсиса. Особенно это касается программ для извлечения сохранённых на компьютер паролей – кстати, перейдём теперь к ним.

EdgeCookiesView — это инструмент для Windows, который отображает файлы cookie, хранящиеся в более новых версиях веб-браузера Microsoft Edge и IE11 (начиная с Fall Creators Update 1709 для Windows 10). Он также позволяет вам выбрать один или несколько файлов cookie, а затем экспортировать их в файл с разделителями табуляции, файл csv, файл html или файл в формате cookie.txt.

Примечание. Новая версия Edge теперь основана на Chromium, поэтому вы можете использовать инструмент ChromeCookiesView для просмотра файлов cookie этого нового веб-браузера Edge.

EdgeCookiesView и IECookiesView

IECookiesView — очень старый инструмент, изначально разработанный в 2002 году (!), И он до сих пор работает с более ранними версиями веб-браузера Edge, которые хранят файлы cookie в текстовых файлах, точно так же, как Internet Explorer. Но начиная с Fall Creators Update 1709 для Windows 10 файлы cookie веб-браузера Microsoft Edge хранятся в базе данных WebCacheV01.dat вместе с историей и информацией кеша, поэтому IECookiesView больше не может читать файлы cookie Edge.


EdgeCookiesView — это новый инструмент, предназначенный для чтения файлов cookie из базы данных WebCacheV01.dat.

Что? почему? зачем?

А вот то, что мы выбрали осознанно, так это использование Apache Avro как систему сериализации данных. Почему мы выбрали Apache Avro?

Если кратко, то это:

Этих пунктов хватило, чтобы выбрать Avro как схему данных. А версию взяли 1.8.2, которая вышла в мае 2022 года.

Последняя релизная версия Avro- 1.10.1 от декабря 2020-го. В ней решены некоторые проблемы, которые нам пришлось чинить костылями, но взять ее мы не могли по определенным причинам (так как в одном из сервисов для сериализации ответа внешней системе используется схема версии 1.8.2 и поднятие версии может привести к нарушению этого взаимодействия)

До версии 1.9 в Avro используется библиотека Joda Time для обработки логических типов, связанных с датой и временем. А начиная с версии 1.9 для этого используются нативные Java 8 библиотеки.

Перед непосредственно разработкой функциональности мы все-таки попробовали новую версию Avro, но испытали проблемы и конверсиями дат (например, сериализатор не смог корректно обработать LocalDateTime). Точных примеров я не вспомню, но нам нужно было очень аккуратно передавать время в разных временных зонах, а это не самая простая часть для конвертации.

:/>  Программы для FB2 скачать бесплатно на русском языке

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

Итак, с системой сериализации определились.

Далее речь пойдет о реестре схем данных.

Реестр схем данных, или The Confluent Schema Registry for Kafka. Благодаря SR можно обеспечить совместимость схем данных между продюсером и консьюмером Kafka. И, чего нам очень хотелось, SR поможет не потерять сообщения из-за ошибок сериализации и десериализации во время эволюции схемы данных.

В процессе настройки и при тестовых прогонах мы выявили некоторые, скажем так, особенности использования SR, о которых я хочу рассказать вам и попытаюсь собрать все неувязки в одном месте.

Создание новых ключей и значений

Щелчок правой кнопкой мыши по любой клавише в левой части окна предоставит вам набор параметров, большинство из которых довольно просты и легки для понимания.

Вы можете создать новый ключ, который будет отображаться как папка с левой стороны, или новое значение, которое будет отображаться с правой стороны. Эти значения могут немного сбивать с толку, но на самом деле есть только пара значений, которые используются регулярно.

  • Строковый параметр (REG_SZ) — содержит всё, что вписывается в обычную строку. В подавляющем большинстве случаев вы можете редактировать строки, читаемые человеком, не нарушая при этом ничего.
  • Двоичный параметр (REG_BINARY) — это значение содержит произвольные двоичные данные, и вы почти никогда не захотите пытаться редактировать один из этих ключей.
  • Параметр DWORD (32 бита) (REG_DWORD) — они почти всегда используются для обычного целочисленного значения, будь то просто 0 или 1, или числа от 0 до 4 294 967 295.
  • Параметр QWORD (64-битное) (REG_QWORD) — они не очень часто используются для работы с реестром, но в основном это 64-битное целочисленное значение.
  • Мультистроковый параметр (REG_MULTI_SZ) — эти значения довольно необычны, но работают в основном как окно блокнота. Вы можете ввести многострочную текстовую информацию в такое поле.
  • Расширяемый строковый парамер (REG_EXPAND_SZ) — эти переменные имеют строку, которая может содержать переменные среды и часто используется для системных путей. Таким образом, строка может быть %SystemDrive%Windows, которая разворачивается в C:Windows. Это означает, что, когда вы найдёте значение в реестре, которое настроено на этот тип, вы можете изменить или вставить переменные среды, и они будут «расширены» перед использованием строки.

Интересный факт: DWORD — это сокращение от «двойного слова», потому что «слово» — это термин для единицы данных по умолчанию, используемой процессором, и когда была создана Windows, это было 16 бит. Таким образом, «слово» – это 16 бит, а «двойное слово» — 32 бита. Хотя все современные процессоры являются 64-битными, реестр по-прежнему использует старый формат для совместимости.

Иерархическая структура реестра

Структура реестра похожа на структуру хранилища файлов.

Возможно, вам будет проще использовать терминологию реестра, обратившись к древовидным форматам или хранилищам файлов. Аналогия с файлами особенно уместна, потому что раньше Windows настраивалась из файлов .INI. В частности, сами ключи используют соглашения об именах файлов.

Это удобная функция, поскольку Windows может управлять объектами реестра так же, как файловыми объектами. У кустов реестра есть символические ссылки, которые похожи на сопоставления виртуальных путей в файловой системе. Подразделы реестра также имеют владельцев и разрешения, как каталоги и папки.

Таблица «Терминология реестра»

РеестрДругие деревьяФайловое хранилище
Куст (Hive) Дерево Файловая система
Ключ Узел Директория или папка
Подключ Подузел Поддиректория или подпапка
Значение Ключ Файл
Тип Тип Тип файла
Данные Значение Содержимое файла

Обратите внимание, что ключ может содержать подразделы или значения. Подраздел может иметь другой подраздел, поэтому ключ и подраздел обычно взаимозаменяемы так же, как каталог и подкаталог или папка и подпапка. Ключ без значения может хранить данные в так называемом значении по умолчанию.

Краткий перечень терминов

Давайте, буквально в двух словах, повторим только что представленные вам термины:

Механизмы Docker:

  1. Платформа Docker — ПО, благодаря которому можно работать с контейнерами.
  2. Движок Docker — клиент-серверное приложение (CE или Enterprise).
  3. Клиент Docker — программа, которая позволяет взаимодействовать с демоном Docker посредством CLI.
  4. Демон Docker — сервер Docker, отвечающий за управление ключевыми механизмами системы.
  5. Тома Docker — хранилище информации, используемое в контейнерах.
  6. Реестр Docker — удалённое хранилище образов.
  7. Хаб Docker — самый крупный реестр Docker, используемый по умолчанию.
  8. Репозиторий — коллекция образов Docker с одним и тем же именем.

Масштабирование:

  1. Сетевая подсистема Docker — среда, которая позволяет организовывать взаимодействие контейнеров.
  2. Docker Compose — технология, упрощающая работу с многоконтейнерными приложениями.
  3. Docker Swarm — средство для управления развёртыванием контейнеров.
  4. Сервисы Docker — контейнеры в продакшне.

Выше мы говорили о том, что рассмотрим дюжину терминов экосистемы Docker, сравнивая их с дюжиной пончиков. Мы рассмотрели уже 12 терминов, и, казалось бы, на этом можно и остановиться. Но мы,

, добавим в наш список ещё один термин.

Вот, на всякий случай, ещё один пончик

Этот термин относится не к самой платформе Docker, а к технологии, которая очень часто используется совместно с Docker.

Извлечение кустов реестра windows из виртуальных машин

С помощью утилиты virt-win-reg, входящий в пакет libguestfs, можно извлекать кусты реестра Windows напрямую из виртуальных дисков даже не запуская виртуальные машины. Подробности о libguestfs смотрите в разделе «Доступ к содержимому образов виртуальных машин и их изменение».

Программа virt-win-reg позволяет извлекать кусты реестра Windows, в том числе те, которые доступны только для учётной записи System.


Общий вид команды:

virt-win-reg '/ПУТЬ/ДО/ВИРТУАЛЬНОГО/ДИСКА' 'ИМЯКУСТА'

По умолчанию содержимое будет выведено на экран, поэтому для сохранения данных в файл нужно воспользоваться перенаправлением вывода.

Например, команда для извлечения куста HKEY_LOCAL_MACHINESYSTEM из операционной системы Windows, чей виртуальный диск расположен в /mnt/disk_d/Виртуальные машины/Windows 10 (en).vdi и сохранение полученных данных в файл SYSTEM.reg:

virt-win-reg '/mnt/disk_d/Виртуальные машины/Windows 10 (en).vdi' 'HKEY_LOCAL_MACHINESYSTEM' > SYSTEM.reg


Ещё один пример, извлечение куста реестра HKEY_LOCAL_MACHINESAM из образа диска /mnt/disk_d/Виртуальные машины/Windows Server 2022.vdi и сохранение данных в файл SAM.reg:

virt-win-reg '/mnt/disk_d/Виртуальные машины/Windows Server 2022.vdi' 'HKEY_LOCAL_MACHINESAM' > SAM.reg

Reg delete — удаление раздела или параметра реестра

Использование:

REG DELETE <имя_раздела> [/v  | /ve | /va] [/f]
           [/reg:32 | /reg:64]

Опции:

  имя_раздела  [\]<раздел>
    компьютер  Имя удаленного компьютера; если оно опущено, по умолчанию
               используется локальный компьютер. На удаленном компьютере можно
               использовать только корневые разделы HKLM и HKU.
    раздел     КОРЕНЬподраздел
    КОРЕНЬ     [ HKLM | HKCU | HKCR | HKU | HKCC ]
    подраздел  Полное имя подраздела реестра в одном из выбранных корневых
               разделов.

 имя_параметра Имя параметра, удаляемого из выбранного раздела. Если оно
               опущено, удаляются все подразделы и значения указанного раздела.

  /ve          Удаляет пустое имя параметра (по умолчанию).

  /va          Удаляет все параметры в указанном разделе.

  /f           Выполняет принудительное удаление без запроса подтверждения.

  /reg:32      Указывает, что к разделу реестра следует обращаться с помощью
               представления для 32-разрядных приложений.

  /reg:64      Указывает, что к разделу реестра следует обращаться с помощью
               представления для 64-разрядных приложений.


Примеры:

Удаляет раздел реестра Timeout и все его подразделы и параметры:

REG DELETE HKLMSoftwareMyCoMyAppTimeout

Удаляет параметр реестра MTU из раздела MyCo на компьютере ZODIAC:

REG DELETE \ZODIACHKLMSoftwareMyCo /v MTU

Dockerfile

Dockerfile — это инструкция для сборки образа. Это простой текстовый файл, содержащий по одной команде в каждой строке. В нем указываются все программы, зависимости и образы, которые нужны для разворачивания образа.

Для примера рассмотрим Dockerfile, который мы будем использовать далее в этой статье чтобы развернуть собственное приложение:

FROM python:3 
COPY main.py /
CMD [ "python", "./main.py" ]

Первая строчка означает, что за основу мы берем образ с названием python версии 3 это называется базовый образ. Docker найдет его в docker registry, скачает и будет использовать за основу. Вторая строчка означает, что нужно скопировать файл main.py в корень файловой системы контейнера.

Далее рассмотрим примеры нескольких команд докер и что происходит, когда мы их выполняем.

Все эти команды выполняются в Docker client, который отправляет их в Docker daemon:

  • Команда docker build (зеленая стрелка) читает dockerfile и собирает образ.
  • Команда docker pull (красная стрелка) скачивает образ из docker registry. По умолчанию docker скачивает образы из публичного репозитория Docker Hub. Но можно создать свой репозиторий и настроить докер, чтобы он работал с ним.
  • Команда docker run (черная стрелка) берет образ и запускает из него контейнер.

Создаем виртуальную машину для работы с docker

Перейдем к практической части. Мы установим докер, создадим приложение, обернем его в контейнер и запустим. Мы для примера будем использовать виртуальную машину на платформе Selectel.

В панели управления заходим в раздел «Облачная платформа» — «Серверы», нажимаем кнопку «Создать сервер».

На следующем экране выбираем параметры сервера: имя, регион, ОС, параметры производительности и так далее. Сейчас для нас важны параметры «Источник» — выбираем ОС Ubuntu 20.04 и «Конфигурация» — выбираем 2 vCPU и 8 ГБ оперативной памяти.

Далее обратите внимание на разделы Сеть и Доступ. В разделе Сеть нужно выбрать подсеть с публичным адресом, чтобы к виртуальной машине можно было подключаться из интернета. В разделе Доступ будет указан пароль для root-пользователя, а также необходимо загрузить SSH-ключ, чтобы подключаться к виртуальной машине. Подробную инструкцию о подключении смотрите в базе знаний.

:/>  Как сбросить пароль администратора в Windows XP - GuidesGame

После этого внизу страницы нажимаем кнопку «Создать». Виртуальная машина создается за несколько минут, и после того, как она перейдет в статус ACTIVE, к ней можно подключаться по SSH.

Как получить доступ к закрытым частям реестра sam и security

Как уже было сказано, разделы реестра

  • HKEY_LOCAL_MACHINESAM
  • HKEY_LOCAL_MACHINESECURITY

не показываются в программе «Редактор реестра»:


Чтобы их увидеть необходимо открыть программу regedit с правами уровня аккаунта System. Дело в том, что права Администратора не являются самыми высокими в Windows. Наивысшие права у System.

Открыть любую программу с правами System можно с помощью утилиты PsExec. Эта утилита входит в PSTools от SysInternals. Если коротко, это официальная утилита Microsoft. Подробности и ссылку на скачивания вы найдёте в статье «Что такое инструменты SysInternals и как их использовать?».

После того как скачали и распаковали архив PSTools, необходимо в командной строке перейти в папку с программой. Помните, что запустить программу с правами аккаунта System можно только если командная строка открыта с правами администратора! Для этого нажмите Win x и выберите «Windows PowerShell (администратор)».

С помощью cd перейдите в папку с распакованными утилитами SysInternals, например:

Reg copy — копирование подразделов и параметров


Использование:

REG COPY <раздел1> <раздел2> [/s] [/f] [/reg:32 | /reg:64]

Опции:

  раздел       Имя раздела в формате: [\Компьютер]Путь
    компьютер  Имя удаленного компьютера: если оно опущено, то по умолчанию
               считается равным имени локального компьютера. Для удаленных
               компьютеров доступны только HKLM и HKU.
    путь       Полный путь к разделу реестра в виде: КОРЕНЬПодраздел.
    КОРЕНЬ     Корневой раздел. Значения: [ HKLM | HKCU | HKCR | HKU | HKCC ].
    подраздел  Полный путь к разделу реестра в выбранном корневом разделе.

  /s           Копирование всех подразделов и параметров.

  /f           Принудительное копирование без дополнительного предупреждения.

  /reg:32      Указывает, что к разделу реестра следует обращаться с помощью
               представления для 32-разрядных приложений.

  /reg:64      Указывает, что к разделу реестра следует обращаться с помощью
               представления для 64-разрядных приложений.

Примеры:

Копирует все подразделы и параметры раздела MyApp в раздел SaveMyApp:

REG COPY HKLMSoftwareMyCoMyApp HKLMSoftwareMyCoSaveMyApp /s


Копирует все параметры раздела MyCo с компьютера ZODIAC в раздел MyCo1 на локальном компьютере:

REG COPY \ZODIACHKLMSoftwareMyCo HKLMSoftwareMyCo1

Что такое контейнеры

Прежде чем рассказывать про Docker, нужно сказать несколько слов о технологии контейнеризации.

Контейнеры — это способ стандартизации развертки приложения и отделения его от общей инфраструктуры. Экземпляр приложения запускается в изолированной среде, не влияющей на основную операционную систему. 

Разработчикам не нужно задумываться, в каком окружении будет работать их приложение, будут ли там нужные настройки и зависимости. Они просто создают приложение, упаковывают все зависимости и настройки в некоторый единый образ. Затем этот образ можно запускать на других системах, не беспокоясь, что приложение не запустится.

Docker — это платформа для разработки, доставки и запуска контейнерных приложений. Docker позволяет создавать контейнеры, автоматизировать их запуск и развертывание, управляет жизненным циклом. Он позволяет запускать множество контейнеров на одной хост-машине.

Контейнеризация похоже на виртуализацию, но это не одно и то же. Виртуализация запускает полноценный хост на гипервизоре со своим виртуальным оборудованием и операционной системой. При этом внутри одной ОС можно запустить другую ОС. В случае контейнеризации процесс запускается прямо из ядра основной операционной системы и не виртуализирует оборудование.

Specific.avro.reader

Мы захотели использовать типы BigDecimal и Timestamp в моделях. Чтобы такие типы корректно сериализовать и десериализовать, следует добавить это свойство:

put(KafkaAvroDeserializerConfig.SPECIFIC_AVRO_READER_CONFIG, true);

А так же добавить в класс SpecificData при запуске приложения нужные конверторы, например, так:

static {
  SpecificData.get().addLogicalTypeConversion(new Conversions.DecimalConversion());
  SpecificData.get().addLogicalTypeConversion(new TimeConversions.TimestampConversion());
}

После этого, если ваши модели данных наследуются от SpecificRecordBase (что по умолчанию при типе записи record) – данные будут корректно сериализовываться и десериализовываться.

Вот пример описания модели с такими логическими типами:

{
  "type": "record",
  "name": "SomePaymentInfoModel",
  "namespace": "com.trthhrts",
  "fields": [
    {
      "name": "paymentDate",
      "type": [
        "null",
        {
          "type": "long",
          "logicalType": "timestamp-millis"
        }
      ],
      "default": null
    },
    {
      "name": "amount",
      "type": [
        "null",
        {
          "type": "bytes",
          "logicalType": "decimal",
          "precision": 9,
          "scale": 2
        }
      ],
      "default": null
    }
  ]
}

Regripper

RegRipper — это инструмент с открытым исходным кодом, написанный на Perl, для извлечения/анализа информации (ключей, значений, данных) из реестра и представления её для анализа.

RegRipper состоит из двух основных инструментов, каждый из которых обеспечивает схожие возможности. Графический интерфейс RegRipper позволяет аналитику выбрать куст реестра для анализа, выходной файл для результатов и профиль (список подключаемых модулей) для работы с кустом.

Когда аналитик запускает инструмент в отношении куста реестра, результаты попадают в файл, указанный аналитиком. Если аналитик решит проанализировать куст System, он также может отправить результаты в system.txt. Инструмент с графическим интерфейсом пользователя также создаст журнал своей активности в том же каталоге, что и выходной файл, используя то же имя файла, но с расширением .log (то есть, если выходные данные записываются в system.txt, журнал будет записан в system.log).

RegRipper также включает инструмент командной строки (CLI) под названием rip. Rip может быть направлен для анализа куста и может запускать либо профиль (список плагинов), либо отдельный плагин для этого куста, с отправкой результатов в STDOUT. Rip можно включать в пакетные файлы, используя операторы перенаправления для отправки вывода в файл. Rip не ведёт журнал своей деятельности.

Установка и запуск в Linux

Regrippy (regrip.py)

RegRippy — это платформа для чтения и извлечения полезных данных для судебной экспертизы из кустов реестра Windows.

Установка в Kali Linux

sudo apt install python3-pip
sudo pip3 install regrippy

Установка в BlackArch

sudo pacman -R regrippy python-enum-compat python-python-registry python-unicodecsv
sudo pip3 install regrippy


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

Пример команды, которая получает имя компьютера (compname), которому принадлежит куст реестра, расположенный по пути /mnt/disk_d/Share/config/SYSTEM (–system /mnt/disk_d/Share/config/SYSTEM):

regrip.py compname --system /mnt/disk_d/Share/config/SYSTEM

Пример вывода:

HACKWARE-MIAL

Пример команды, которая выводит информацию о пользователе, выполнившем последний вход (lastloggedon) используя куст реестра SOFTWARE (–software /mnt/disk_d/Share/config/SOFTWARE):

regrip.py lastloggedon --software /mnt/disk_d/Share/config/SOFTWARE


Пример вывода:

Что такое реестр windows?

Реестр Windows — это иерархическая база данных, которая содержит все конфигурации и настройки, используемые компонентами, службами, приложениями и почти всем в Windows.

В реестре есть две основные концепции, о которых нужно знать: ключи и значения. «Ключи реестра» — это объекты, которые в основном являются папками и даже выглядят в интерфейсе Редактора реестра точно так же как папки. «Значения реестра» немного похожи на файлы в папках, и они содержат фактические настройки.

Когда вы открываете редактор реестра в первый раз, вы увидите древовидную структуру на левой панели, которая содержит все ключи со значениями в правой части. В целом это напоминает файловый менеджер с вложенными папками и подпапками, в некоторых из которых размещены файлы.

В первую очередь обратим внимание на ключи корневого уровня, которые вы видите в левой части снимка экрана, поскольку в них содержатся все данные. В каждом из них хранится разный набор информации, поэтому в зависимости от того, что вы пытаетесь сделать, вам нужно будет знать, в какой раздел перейти.

Интересная вещь, о которой не знает большинство людей, – это то, что трёх из пяти элементов на корневом уровне на самом деле не существует… они просто связаны с элементами, расположенными ниже в одном из других ключей. То есть некоторые из ключей корневого уровня являются просто ссылками на часть реестра, расположенную в глубине другого корневого ключа.

Creddump

creddump — это инструмент Python для извлечения различных учётных данных и секретов из кустов реестра Windows. В настоящее время он извлекает:

  • LM и NT хеши (защищены SYSKEY)
  • Кешированные пароли домена
  • Секреты LSA

Программа предустановлена в Kali Linux.


Установка в BlackArch:

sudo pacman -S creddump

Пример команды, которая выводит хеши локальных паролей, кусты реестра расположены в файлах /mnt/disk_d/Share/config/SYSTEM и /mnt/disk_d/Share/config/SAM:

python2 ./pwdump.py /mnt/disk_d/Share/config/SYSTEM /mnt/disk_d/Share/config/SAM

Пример вывода:

Администратор:500:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
Гость:501:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
DefaultAccount:503:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
WDAGUtilityAccount:504:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
MiAl:1001:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::
Tester:1002:aad3b435b51404eeaad3b435b51404ee:31d6cfe0d16ae931b73c59d7e0c089c0:::

Chntpw

chntpw — эта небольшая программа позволяет просматривать информацию и изменять пароли пользователей в файле базы данных пользователей Windows NT/2000. Старые пароли не нужно знать, поскольку они будут перезаписаны. Кроме того, она также содержит простой редактор реестра (запись данных того же размера) и шестнадцатеричный редактор, который позволяет вам возиться с битами и байтами в файле по своему усмотрению.


Установка chntpw

Программа предустановлена в Kali Linux.

Установка в BlackArch

sudo pacman -S chntpw

Примеры команд:


Сброс пароля пользователя ShareOverlord (-u ShareOverlord), когда куст реестра расположен по пути /mnt/windows/Windows/System32/config/SAM:

sudo /usr/sbin/chntpw /mnt/windows/Windows/System32/config/SAM -u ShareOverlord

Разблокировка пользователя Администратор:

sudo /usr/sbin/chntpw /mnt/windows/Windows/System32/config/SAM -u Администратор

Инструкция: Как сбросить пароль Windows

Настройка использования schema registry

Чтобы использовать SR, достаточно добавить свойство с URL подключения к SR и назначить в качестве сериализатора и десериализатора соответствующие классы: KafkaAvroSerializer и KafkaAvroDeserializer

props.put(AbstractKafkaAvroSerDeConfig.SCHEMA_REGISTRY_URL_CONFIG, schemaRegistryUrl);
props.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, KafkaAvroSerializer.class);

И для консьюмера, например, так:

    @Bean
    public ConcurrentKafkaListenerContainerFactory<String, ? extends SpecificRecordBase> kafkaListenerContainerFactory() {
        ConcurrentKafkaListenerContainerFactory<String, ? extends SpecificRecordBase> factory = new ConcurrentKafkaListenerContainerFactory<>();
        factory.setConsumerFactory(new DefaultKafkaConsumerFactory<>(kafkaConfigs(), new StringDeserializer(), deserializer()));
        factory.setErrorHandler(errorHandler());
        return factory;
    }

    private KafkaAvroDeserializer deserializer() {
        KafkaAvroDeserializer deserializer = new KafkaAvroDeserializer();
        deserializer.configure(kafkaConfigs(), false);
        return deserializer;
    }

Оставьте комментарий

Adblock
detector