有没有办法从命令行更改.iso文件卷ID?

Modified on: Wed, 26 Jun 2019 09:00:02 +0800

我在linux下有一个.iso文件,并且一直试图找到一种方法来更改卷ID而无需重新创建.iso文件。大多数创作工具(例如mkisofs)都提供了一个用于设置音量(-V)的开关。但是,我无法弄清楚如何在预先存在的.iso文件中更改它。

为了澄清,我想要改变的是这个Volume id:字符串。这是来自isoinfo命令的示例转储。

% isoinfo -d -i /usr/share/virtualbox/VBoxGuestAdditions.iso 
CD-ROM is in ISO 9660 format
System id: Win32
Volume id: VBOXADDITIONS_4.1.8_75467
Volume set id: 
Publisher id: 
Data preparer id: 
Application id: MKISOFS ISO 9660/HFS FILESYSTEM BUILDER & CDRECORD CD-R/DVD CREATOR (C) 1993 E.YOUNGDALE (C) 1997 J.PEARSON/J.SCHILLING
Copyright File id: 
Abstract File id: 
Bibliographic File id: 
Volume set size is: 1
Volume set sequence number is: 1
Logical block size is: 2048
Volume size is: 22203
Joliet with UCS level 3 found
Rock Ridge signatures version 1 found
作者:slm

最佳答案

卷ID始终存储在偏移量0x8028处,为32字节ASCII字符串。编辑它。

#!/usr/bin/perl use strict; use warnings; die "Use: $0 <iso_file> <new volume id>\n" unless @ARGV == 2; open my $file, "+<", $ARGV[0] or die "Cannot open: $!"; seek $file, 0x8028,0; printf $file "%-32.32s", uc($ARGV[1]);

测试 - (isovolid.pl是上述脚本的名称):

#!/usr/bin/perl
use strict;
use warnings;

die "Use: $0 <iso_file> <new volume id>\n" unless @ARGV == 2;
open my $file, "+<", $ARGV[0] or die "Cannot open: $!";
seek $file, 0x8028,0;
printf $file "%-32.32s", uc($ARGV[1]);
作者:,kupson

相关问答

添加新评论