В настоящее время я пишу программу, которая удаляет макропароли из файлов Word, Excel и т. Д. c. Это сделано для текстовых документов без обычного стандартного пароля, но с паролем, установленным в макросах из меню Tools > Project Options > Protections
в Office.
Я использую метод 3 по ссылке ниже, чтобы удалить пароль. Однако вместо того, чтобы редактировать его вручную, как метод 3, я изменяю его через Hex в методе 2, но программно с помощью VB. Я успешно протестировал этот метод с помощью Hex-редактора и notepad ++. Однако блокнот работать не будет.
Метод удаления макропаролей
Моя идея
- Изменить имя. документ в .zip
- Извлечь содержимое Zip
- Открыть Vbaproject.bin
- Изменить значения с DPB на DPx
- Архивировать обратно
- Изменить формат обратно .docm
У меня проблемы с 4, так как он правильно меняет символы в выходном файле, однако он удаляет другое необходимое содержимое (специальные символы).
Мой vb. net код:
Public Class Form1
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Try
Dim filecontents = IO.File.ReadAllText("C:\Temp\Decrypter\Analysis\vbaProject.bin")
filecontents = filecontents.Replace(Convert.ToChar(&H44) & (Convert.ToChar(&H50) & (Convert.ToChar(&H42))), (Convert.ToChar(&H44) & Convert.ToChar(&H50) & (Convert.ToChar(&H78))))
IO.File.WriteAllText("C:\Temp\Decrypter\Analysis\vbaProject2.bin", filecontents)
Catch
MsgBox("Error")
End Try
End Sub
End Class
Этот код ищет DPB
в vbaproject.bin file (44, 50, 42)
, затем изменяет его на DPx (44, 50, 78)
. При открытии выходного документа я вижу, что изменения произошли успешно, однако при записи .bin-файла обратно в .zip и перепаковке в .docm это не сработало. Это работает вручную, когда я изменяю эти шестнадцатеричные значения через шестнадцатеричный редактор.
Я полагаю, что способ чтения и записи выходного файла устраняет все специальные символы .bin. Подобно тому, как не работает следующий процесс с блокнотом на Windows (возможно, некоторые текстовые поля не могут читать / видеть определенные символы / значения в разных форматах). Однако делать то же самое с notepad ++ работает.
Как я могу изменить свой код выше, чтобы он не удалял какие-либо специальные символы / другие форматы в файле .bin, когда я делаю изменения с DPB на DPx?
Любые идеи приветствуются!