

Сценарий на VBScript
Напишите мне VBS скрипт, который изменит последний байт указанного мной файла на случайное ненулевое значение (от 01 до FF).
Также желательна оптимизированная реализация скрипта для больших файлов (чтобы скрипт мог обрабатывать файлы весом несколько мегабайт и при этом при выполнении не тратить на это много времени и не занимать много места в RAM).
Ответы от чатагпт не интересуют, он все равно не справится с этим, так что ответы с ним или просто с изначально нерабочим кодом буду скрывать)0
Нормальный и человеческий ответ с рабочим кодом, который будет выполнять нужную мне основную логику, выберу лучшим.
Модер удали мой вопрос
Чуваки накидайте репортов
Const adTypeBinary = 1
Const adModeReadWrite = 3
Dim filePath, newByte
' Получаем путь к файлу от пользователя
filePath = InputBox("Введите полный путь к файлу:", "Выбор файла")
If filePath = "" Then
MsgBox "Операция отменена пользователем"
WScript.Quit
End If
' Создаем объект для работы с файлом
Set objStream = CreateObject(" ADODB.Stream ")
objStream.Type = adTypeBinary
objStream.Open
' Открываем файл в режиме чтения/записи
objStream.LoadFromFile filePath
objStream.Position = objStream.Size - 1
' Генерируем случайное значение от 1 до 255
Randomize
newByte = CByte(Int(Rnd * 255) + 1)
' Записываем новый байт
objStream.Write newByte
objStream.Flush
objStream.Close
MsgBox "Последний байт успешно изменен на " & Hex(newByte)
FilePath = "C:\path\to\your\file.bin"
Function GetRandomNonZeroByte()
GetRandomNonZeroByte = Int((255 * Rnd) + 1)
End Function
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objFile = objFSO.OpenTextFile(FilePath, 2, False, -1) ' 2 = ForWriting, -1 = TristateUseDefault
FileSize = objFSO.GetFile(FilePath).Size
strFileContent = objFile.Read(FileSize)
objFile.Close
RandomByte = Chr(GetRandomNonZeroByte())
If FileSize > 0 Then
Mid(strFileContent, FileSize, 1) = RandomByte
Else
WScript.Echo
WScript.Quit
End If
Set objFile = objFSO.OpenTextFile(FilePath, 2, False, -1)
objFile.Write strFileContent
objFile.Close
WScript.Echo
Set objFile = Nothing
Set objFSO = Nothing
на Python
Randomize
Const ForReading = 1
Const ForWriting = 2
Dim objFS, objFile, fileSize, randomByte
Set objFS = CreateObject("Scripting.FileSystemObject")
Set objFile = objFS.OpenTextFile("путь_к_вашему_файлу", ForReading, False)
fileSize = objFile.Size
objFile.Close
Set objFile = objFS.OpenTextFile("путь_к_вашему_файлу", ForWriting, True)
If fileSize > 0 Then
Randomize
randomByte = Chr(Int((254 * Rnd) + 1)) ' Генерация случайного значения для последнего байта (от 01 до FE)
objFile.Write objFile.ReadAll ' Записываем все, кроме последнего байта
objFile.Write randomByte ' Записываем случайное значение для последнего байта
End If
objFile.Close
Set objFS = Nothing
Set objFile = Nothing
Прежде чем запускать скрипт, замените "путь_к_вашему_файлу" на путь к вашему файлу.
VBScript с winapi не работает, нужна внешняя библиотека типо DynamicWrapperX там и можно писать патч программы.