Как я могу исправить поврежденный / поврежденный файл ISO? [dубликат]

Этот оператор отключает первые 3 символа переменной TEMP и присваивает остальные переменной VAR.

28
задан 3 June 2011 в 01:45

8 ответов

Мастер ISO

Я уже использовал Мастер ISO для добавления файлов в ISO. Он подходит для того, что вам нужно, потому что он сохраняет состояние того, является ли ISO загрузочным. Я использовал его в прошлом, чтобы добавить другой контент (например, музыку) на живой диск. Обратите внимание, однако, что после внесения изменений в файл ISO вы можете только «Сохранить как», то есть будет создан другой файл ISO, поэтому убедитесь, что у вас достаточно свободного места на диске.

38
ответ дан 25 July 2018 в 21:30

Мастер ISO

Я уже использовал Мастер ISO для добавления файлов в ISO. Он подходит для того, что вам нужно, потому что он сохраняет состояние того, является ли ISO загрузочным. Я использовал его в прошлом, чтобы добавить другой контент (например, музыку) на живой диск. Обратите внимание, однако, что после внесения изменений в файл ISO вы можете только «Сохранить как», то есть будет создан другой файл ISO, поэтому убедитесь, что у вас достаточно свободного места на диске.

38
ответ дан 2 August 2018 в 03:08

Мастер ISO

Я уже использовал Мастер ISO для добавления файлов в ISO. Он подходит для того, что вам нужно, потому что он сохраняет состояние того, является ли ISO загрузочным. Я использовал его в прошлом, чтобы добавить другой контент (например, музыку) на живой диск. Обратите внимание, однако, что после внесения изменений в файл ISO вы можете только «Сохранить как», то есть будет создан другой файл ISO, поэтому убедитесь, что у вас достаточно свободного места на диске.

38
ответ дан 4 August 2018 в 19:00

Мастер ISO

Я уже использовал Мастер ISO для добавления файлов в ISO. Он подходит для того, что вам нужно, потому что он сохраняет состояние того, является ли ISO загрузочным. Я использовал его в прошлом, чтобы добавить другой контент (например, музыку) на живой диск. Обратите внимание, однако, что после внесения изменений в файл ISO вы можете только «Сохранить как», то есть будет создан другой файл ISO, поэтому убедитесь, что у вас достаточно свободного места на диске.

38
ответ дан 6 August 2018 в 03:20

Мастер ISO

Я использовал Мастер ISO для добавления файлов в ISO до этого. Он подходит для того, что вам нужно, потому что он сохраняет состояние того, является ли ISO загрузочным. Я использовал его в прошлом, чтобы добавить другой контент (например, музыку) на живой диск. Обратите внимание, однако, что после внесения изменений в файл ISO вы можете только «Сохранить как», то есть будет создан другой файл ISO, поэтому убедитесь, что у вас достаточно свободного места на диске.

isomaster [!d3]

38
ответ дан 7 August 2018 в 21:06

Мастер ISO

Я использовал Мастер ISO для добавления файлов в ISO до этого. Он подходит для того, что вам нужно, потому что он сохраняет состояние того, является ли ISO загрузочным. Я использовал его в прошлом, чтобы добавить другой контент (например, музыку) на живой диск. Обратите внимание, однако, что после внесения изменений в файл ISO вы можете только «Сохранить как», то есть будет создан другой файл ISO, поэтому убедитесь, что у вас достаточно свободного места на диске.

isomaster [!d3]

38
ответ дан 10 August 2018 в 09:25

Мастер ISO

Я использовал Мастер ISO для добавления файлов в ISO до этого. Он подходит для того, что вам нужно, потому что он сохраняет состояние того, является ли ISO загрузочным. Я использовал его в прошлом, чтобы добавить другой контент (например, музыку) на живой диск. Обратите внимание, однако, что после внесения изменений в файл ISO вы можете только «Сохранить как», то есть будет создан другой файл ISO, поэтому убедитесь, что у вас достаточно свободного места на диске.

isomaster [!d3]

38
ответ дан 13 August 2018 в 12:49

Общий ответ на этот вопрос - распаковать файл iso, изменить его и снова упаковать. Похоже, что «Мастер ISO», как упоминается в ответе dv3500ea, является хорошим интерфейсом для этого.

Если:

  • , вам не хватает места для этого
  • вы хотите только сделать хирургическую модификацию, а не переписывать все это
  • , вы хотите изменить устройство хранения, содержащее файловую систему isofs (aka iso9660) без копирования всего устройство или
  • , если вы считаете, что эта распаковка / переупаковка - это , просто недостаточно хаки

Тогда этот ответ для вас!

Итак, мы заменим существующий файл в файловой системе isofs на наш желаемый файл. Наш желаемый файл должен быть меньше, чем существующий (целевой) файл, а конечный пробел (или мусор) должен быть приемлемым. Это фактически требует только двух команд, но будьте осторожны: опечатка может полностью уничтожить целевую файловую систему или даже перезаписать исходный файл. Резервные копии - ваш друг!

В моем случае я хотел сохранить скрипт в реальном времени, поэтому мне не нужно его повторять каждый раз. Сценарий находится в script.py, а моя цель (USB-накопитель) находится на /dev/sdc. Размер скрипта составляет 202 байта, поэтому наш первый шаг - найти файл размером более 202 байта, чтобы мы могли его перезаписать. После установки в /mnt я нашел подходящий файл в /mnt/info.txt.

Мы не можем просто перезаписать info.txt на точке монтирования, он будет жаловаться, что это файловая система только для чтения. Однако мы корень, поэтому давайте покажем им, что это значит! Нам нужно выяснить, где info.txt находится в файловой системе. Найдите некоторую строку, которая (вероятно) уникальна для info.txt, например This is the official distribution CD of X., и найдите ее на диске:

$ sudo strings -a -t d /dev/sdc | grep 'CD of X.'
2573588480 This is the official distribution CD of X. See INSTALL for how to [...]

В качестве альтернативы это также можно сделать с помощью grep, который намного быстрее, но тогда вам нужно указать его с самого начала: $ sudo grep -oba 'This is ...' /dev/sdc.

Теперь, когда мы знаем, где это, нам просто нужно заменить эти байты нашим файлом:

$ sudo dd if=script.py of=/dev/sdc conv=notrunc bs=1 seek=2573588480 count=202

Эта строка:

  • копирует байты из входного файла (if) в выходной файл (of), и ему все равно, что выходной файл на самом деле устройство, потому что «все это файл».
  • conv=notrunc говорит, что он не усекает выходной файл, потому что мы хотим только перезаписать несколько байтов, а не переписывать файл с определенной точки дальше.
  • bs=1 устанавливает размер блока равным 1. Обычно вам нужен размер блока 4k или выше, но это позволяет избежать необходимости делать (встроенную) математику и позволяет указать точное местоположение для байта.
  • seek=N ищет определенную точку в выходном файле (обратите внимание, что seek=N отличается от skip=N, потому что skip пропускает байты из входного файла!). Мы установили его, конечно, где целевой текст.
  • count=N копирует только это много байтов. Я думаю, что это можно опустить, потому что он увидит конец входного файла, но я оставил его, чтобы быть уверенным.

И воела, файл перезаписан!

Но подождите, целевой файл был больше, чем наш скрипт, поэтому на USB-накопителе файл теперь выглядит примерно так: «while do if run () blah; blah (); yright 2007 X Inc.». Есть хвостовой мусор. Два способа исправить это: сделать наш входной файл более длинным (добавить пробелы) или добавить символ комментария в конце. Обратите внимание, что многие редакторы добавляют новую строку в конце, поэтому вы можете установить count= на N-1 байты (если ваш файл теперь составляет 203 байта, и вы заметили, что последний байт является новой линией, установите значение 202) , Вы можете проверить файл для строк новой строки с помощью xxd script.py | tail и проверить, является ли последний байт 0a (или в странных случаях 0d).

Процесс идентичен для параметра .iso файл, просто мысленно замените /dev/sdc на your.iso.

Обратите внимание, что когда вы проверяете цель на своей точке монтирования, чтобы увидеть, сработала ли она, вам может понадобиться снова использовать strings (на этот раз поиск ваш скрипт), поскольку файл, вероятно, все еще находится в кэше чтения.

0
ответ дан 9 October 2018 в 10:32

Другие вопросы по тегам:

Похожие вопросы: