westlife
Advanced Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Много не буду расписывать. При установке хэша через SetUserFTA.exe назначение всегда легетимно и не сбрасывает его. Через тот метод генерации хэша на PS, сбрасывает, иногда 1 иногда 2 из 15. Однажды после загрузки винды что то сброшено, при использовании обновления параметров, сразу либо после открытия папки с этим набором расширений. Я тестировал на фото файлах 15 расширений: Код: $SetExtensions = 'jpg', 'jpe', 'jpeg', 'jfif', 'bmp', 'dib', 'wdp', 'jxr', 'png', 'tiff', 'tif', 'nef', 'orf', 'arw', 'cr2' | Но что то может и после сбросить, так как метод не точный. После второго или третьего раза не сбрасывает сразу, или может сбросить другой, а предыдущий применить. Через прокмон при установке параметров есть разница - утилита дополнительно ставит метку какую то на раздел после создания: Код: SetUserFTA.exe RegSetInfoKey HKCU\....\UserChoice SUCCESS KeySetInformationClass: KeySetHandleTagsInformation, Length: 0 SetUserFTA.exe RegQueryKey HKCU\...\UserChoice SUCCESS Query: HandleTags, HandleTags: 0x400 | В описании от того чела, который сделал утилиту, часть инфы: Цитата: extension = “.txt”; the file extension sid = “S-1-5-21-463486358-3398762107-1964875780-1001” ; the SID of the current user progid = “txtfile”; the ProgId of the desired association regdate = “01d3442a29887400”; timestamp of the UserChoice registry key experience = “a microsoft secret string”; a static string (this is a dummy example, not the real string hash = Base64(MicrosoftHash(MD5(toLower(extension, sid, progid, regdate, experience)))) | Суть играет роль метка времени на разделе реестра, но я думаю там не метка времени, а что то другое, про что он не сказал. Нашёл c# код установки и проверки даты на разделе, это недокументированная возможность. Метод установки и проверки даты работает. Генерация самого хеша и через PS и через утилиту одинаковая, то есть в этом месте все верно. Пробовал кучу разных вариантов записи параметров реестра, это не имеет значения. Установка даты на раздел, методом выше, так как после внесения параметра в раздел дата изменяется, дату ставил после, тоже не помогает. Но и такая запись даты в прокмоне отличается: Код: PowerShell_ISE.exe RegSetInfoKey HKCU\....\UserChoice SUCCESS KeySetInformationClass: KeyWriteTimeInformation, Length: 8, LastWriteTime: 08.03.2021 22:44:00 | Время на разделе реестра после утилиты, не то что для генерации хэша! Значит дело не во времени или в чем то другом! так как время на разделе сохраняется и первое и последнее, возможно суть в метке первого времени, которое не известно как получить. В общем нужно добавить в тот код на c# запись HandleTags вместо времени на раздел, как делает утилита, это недокументированная возможность, и нужно ее найти. Возможно из метода выше можно переделать в такую запись, но надо понимать этот код, я не могу. Можешь написать тому челу по этой теме, может он разберется, я так понял они понимают c#. Этот момент критично важен и является необходимой частью хитрости MS по хэшу. |