挂载旧的软盘映像文件(.ima格式)-难度有多大?


10

我试图在ArchLinux上mount访问.ima格式的软盘映像文件(原始转储到软盘,类似于.img)。

该文件是30个文件集的一部分。它不是可引导文件,而是文件集的延续。目的不是为了安装或克隆而进行的操作。我对磁盘上其他数据所包含的文档感兴趣。

图像文件信息

这是有关此图像文件的一些信息:

# file U19.IMA
U19.IMA: PC formatted floppy with no filesystem

# fdisk -lu U19.IMA
Disk U19.IMA: 1.4 MiB, 1474560 bytes, 2880 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

(parted) print
Error: /home/meh/Downloads/U19.IMA: unrecognised disk label
Model: (file)
Disk /home/meh/Downloads/U19.IMA: 1475kB
Sector size (logical/physical): 512B/512B
Partition Table: unknown
Disk Flags:

挂载失败

这是一般错误消息:

mount -o ro,loop U19.IMA /mnt/cd/
mount: wrong fs type, bad option, bad superblock on /dev/loop0,
missing codepage or helper program, or other error

我尝试了许多组合,尝试用-t指定类型,即ntfs,msdos,iso9660,vfat,并且总是得到相同的错误。我以为这可能是某种ntfs文件格式,但是ntfs-3G并没有做的更好,所以不是:

# ntfs-3g -o loop U19.IMA /mnt
NTFS signature is missing.
Failed to mount '/home/meh/Downloads/U19.IMA': Invalid argument
The device '/home/meh/Downloads/U19.IMA' doesn't seem to have a valid NTFS.
Maybe the wrong device is used? Or the whole disk instead of a
partition (e.g. /dev/sda, not /dev/sda1)? Or the other way around?

# ntfsclone -r -o file.img U19.IMA
ntfsclone v2013.1.13 (libntfs-3g)
ERROR: Input file is not an image! (invalid magic)

有人建议使用Minix fs。虽然目前尚不清楚我是否可以使用当前配置真正挂载这样的文件系统,但还是尝试了:

mount -t minix -o loop U19.IMA /mnt/cd
which gave the generic error but there was this at the bottom of the log:
VFS: Can't find a Minix filesystem V1 | V2 | V3 on device loop0.

似乎这不是结论性的,因为当您指定文件系统的特定类型时,日志中将出现特定类型的错误。还尝试了[fuseiso][2]

# fuseiso U19.IMA /mnt/cd
init: wrong standard identifier in volume descriptor 0, skipping..
init: wrong standard identifier in volume descriptor 1, skipping..
init: wrong standard identifier in volume descriptor 2, skipping..
init: wrong standard identifier in volume descriptor 3, skipping..
init: wrong standard identifier in volume descriptor 4, skipping..
init: wrong standard identifier in volume descriptor 5, skipping..
init: wrong standard identifier in volume descriptor 6, skipping..
init: wrong standard identifier in volume descriptor 7, skipping..
init: wrong standard identifier in volume descriptor 8, skipping..
init: wrong standard identifier in volume descriptor 9, skipping..
init: wrong standard identifier in volume descriptor 10, skipping..
init: wrong standard identifier in volume descriptor 11, skipping..
init: wrong standard identifier in volume descriptor 12, skipping..
init: wrong standard identifier in volume descriptor 13, skipping..
init: wrong standard identifier in volume descriptor 14, skipping..
init: wrong standard identifier in volume descriptor 15, skipping..
init: wrong standard identifier in volume descriptor 16, skipping..
init: wrong standard identifier in volume descriptor 17, exiting..

在哪里可以看到这样的事情dmesg

[ 5316.082629] FAT-fs (loop0): invalid media value (0xf6)
[ 5316.082644] FAT-fs (loop0): Can't find a valid FAT filesystem

另外,lsmod | grep loop

loop 18511 0

没有任何替代的超级块

# mkfs -n U19.IMA
mke2fs 1.42.8 (20-Jun-2013)
U19.IMA is not a block special device.
Proceed anyway? (y,n) y
Filesystem label=
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
Stride=0 blocks, Stripe width=0 blocks
184 inodes, 1440 blocks
72 blocks (5.00%) reserved for the super user
First data block=1
Maximum filesystem blocks=1572864
1 block group
8192 blocks per group, 8192 fragments per group
184 inodes per group

与我所读到的许多情况相反,这里似乎不需要指定任何偏移量,因为映像中没有内置分区。在这种情况下,有时会dd使用允许安装的偏移值将命令用于将内容传输到相似的图像。这似乎与mount直接指定命令的偏移量相同。但是,这应该是很容易,像在其中一个简单的另一种情况下losetup被使用,并且然后循环装置被安装。我可以将.ima文件与lostup链接起来,但是当我尝试安装循环设备时,我收到了最初的错误消息。

数据的完整性

最后,safecopy --stage1不报告任何数据问题,直到第3阶段的输出都相同,并产生相同的错误:

# safecopy U19.IMA test.img --stage1
Low level device calls enabled mode: 2
Reported hw blocksize: 4096
Reported low level blocksize: 4096
File size: 1474560
Blocksize: 4096
Fault skip blocksize: 147456
Resolution: 147456
Min read attempts: 1
Head moves on read error: 0
Badblocks output: stage1.badblocks
Marker string: BaDbLoCk
Starting block: 0
Source: U19.IMA
Destination: test.img
. ;-} 100%
Done!
Recovered bad blocks: 0
Unrecoverable bad blocks (bytes): 0 (0)
Blocks (bytes) copied: 360 (1474560)

这是文件的顶部,内容似乎完整无缺:

dd if=U19.IMA | hexdump -C | head -n 10
00000000 f6 f6 f6 f6 f6 f6 f6 f6 f6 f6 f6 f6 f6 f6 f6 f6 |................|
*
00004600 34 2e 30 2e 32 20 33 38 36 75 6e 69 78 20 46 6e |4.0.2 386unix Fn|
00004610 64 20 53 65 74 20 35 20 6f 66 20 31 30 0a 00 00 |d Set 5 of 10...|
00004620 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|

“取证”

由于原始映像由源介质的逐个扇区的二进制副本组成,因此文件内容的实际格式将取决于创建映像的磁盘的文件系统(例如FAT版本)。 [...]由于IMG文件不包含磁盘内容之外的其他数据,因此只能由能够检测其文件系统的程序来处理这些文件。

根据建议,我着手分析了set(30)中的其他一些图像文件:

fdisk -lu U14.IMA
Disk U14.IMA: 1.4 MiB, 1474560 bytes, 2880 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x00000000
This doesn't look like a partition table. Probably you selected the wrong device.

Device Boot Start End Blocks Id System
U14.IMA1   3840       11519      3840       0  Empty
U14.IMA2   2425393152 4850786447 1212696648 0  Empty
U14.IMA3 ? 2425393296 4850786591 1212696648 90 Unknown
U14.IMA4 ? 2425393296 4850786591 1212696648 90 Unknown

抱歉,它的确看起来像分区表,但这并不常见。它包含id 90 属性

90h     MBR, EBR    CHS, LBA    x86, 68000, 8080/Z80    Hidden, Filesystem  FreeDOS     Free FDISK  Hidden FAT16 (corresponds with 04h i.e. MS Fat16 DOS 3.0+ < 65536 sectors)

因此,尝试挂载图像我得到:

# mount -t auto U14.IMA /mnt/cd
mount: unknown filesystem type 'sysv'  <-----

正如某人所暗示的那样,您需要在内核编译诸如“ System V和Coherent文件系统支持 ”之类的特定内容,才能使用诸如之类的内容。sysv字符串不是很令人惊讶,因为它是AT&T UNIX System V / 386 Release 4 Version 2.1安装介质的一部分(Sun 一直支持到2006年是该端口),而这些映像最终在2007年大放异彩。与映像捆绑在一起的文件表明,由于引导扇区的性质和所使用的格式,安装它们是必需的。有迹象表明该材料最初是Teledisk(TD0)格式mount -t sysv。我想在此强调,这不是原始材料。无论如何,我实际上无法像问题中所解释的那样计算偏移量-要么我在除以512时就不会以整数结尾,即使我尝试似乎也找不到合适的偏移量- dd: cannot skip to specified offset, 0 writes等等。在这一点上,答案是关于取证,而不再是图像文件。

使用qemu进行快速历史图像源OS仿真

AT&T UNIX System V Release 4版本2.1

                          LABEL             Version         X of X
  AT&T UNIX SVR4.0 2.1 --------------------------------------------------

  U01.IMA                 Maintanace Disk1  2.1             2 of 2
  U02.IMA                 Remote Terminal   2.1             1 of 1
                          Package
  U03.IMA                 BSD Comp. Pkg.    2.1             1 of 2
  U04.IMA                 BSD Comp. Pkg.    2.1             2 of 2
  U05.IMA                 Networking Supp.  2.1             1 of 1
                          Util. Pkg.
  U06.IMA                 Xenix Comp. Pkg   2.1             1 of 1
  U07.IMA                 FACE Pkg.         2.1             1 of 1
  U08.IMA                 FMLI Pkg.         2.1             1 of 1
  U09.IMA                 Editing Utils.    2.1             1 of 1
  U10.IMA                 OA&M Basic & Ext. 2.1             1 of 3
  U11.IMA                 OA&M Basic & Ext. 2.1             2 of 3
  U12.IMA                 OA&M Basic & Ext. 2.1             3 of 3
  U13.IMA                 Foundation Set    2.1             1 of 10
                          Base System Pkg.
                          2 User System
  U14.IMA                 Base              2.1a            1 of 10
  U15.IMA                 Base              2.1             2 of 10
  U16.IMA                 Base              2.1a            2 of 10
  U17.IMA                 Base              2.1             3 of 10
  U18.IMA                 Base              2.1             4 of 10
  U19.IMA                 Base              2.1             5 of 10
  U20.IMA                 Base              2.1             6 of 10
  U21.IMA                 Base              2.1             7 of 10
  U22.IMA                 Base              2.1             8 of 10
  U23.IMA                 Base              2.1             10 of 10
  U24.IMA                 Maintanance 1     2.1             1 of 2
  U25.IMA                 Base              2.1             9 of 10
  U26.IMA                 Printer Pkg       2.1             3 of 3
  U27.IMA                 Printer Pkg       2.1             2 of 3
  U28.IMA                 Printer Pkg       2.1             1 of 3
  U29.IMA                 16 to unlimited   2.1             1 of 1
                          User License
  U30.IMA                 2 to 16 User      2.1             1 of 1
                          License

正如建议的那样,我是从该集中的先前映像安装的。它涉及使用qemu 像这里说明的那样,基本上从映像14开始(首先losetup /dev/loop0 U14.IMA是一个简单的qemu-system-x86_64 -m 256 -hda test.img -fda /dev/loop0 -boot a),因为U19无法启动。这样做的好处是您不必在操作系统本身中挂载/卸载映像,您只需ctrl-alt-2在qemu中使用或1来访问或离开监视器,就可以使用它list blocks来查看已挂载的内容并change floppy0 imagename在该界面中更改映像。文件,例如在安装过程中。

我必须在安装过程中提供U19.IMA(磁盘5)(有关安装的文本日志,请参阅 -重点是对MS-DOS的引用!),最后我得到了这个,即正确安装的AT&T UNIX Sys V 386 OS,因此几乎可以确认U19.IMA是工作磁盘映像:

在此处输入图片说明

默认情况下,/ dev / fd安装在/ dev / fd上,并且还可以通过块(/ dev / dsk / f0)和原始(/ dev / dsk / f0)设备进行软盘访问。将目录更改为软盘仅显示编号从1到23的文件(这只是我猜想的字符设备的结构)。您还可以cat使用裸设备和块设备,并查看软盘数据,但是就可以了。

我已经注意到,在该操作系统中,您不会通过从软盘上的目录启动一些脚本来从软盘上安装东西,例如,就像对解压缩的二进制文件一样,在这里使用pkgadd -d diskette1(请确保最后一个词是一些别名,但是我在SCO资料中找到了对pkgadd(1M)的-d开关的引用通常在商业Unix中经常出现(Oracle,HP共享pkgadd(1M))。发出命令将启动一个例程,在该例程中您将提供软盘,并且您没有控制权,只是在例程找出驱动器中的内容之后说“ no”。对于开始安装序列的磁盘(U03,U05等),将先安装磁盘,然后要求下一张软盘,直到软件包安装完成。如果您放置的软盘不是集合的开始,那么它基本上什么也找不到,但是会告诉您也许必须使用installpkg命令。

我将在我的设备中安装物理软盘驱动器以访问该映像文件中的数据吗?


只是一个猜测:它可能是Minix文件系统。您可能需要重新编译内核以支持它。安装物理软盘驱动器无济于事。图像文件有多大?如果您的文件只是原始映像,则它肯定不包含您尝试过的任何(当前/现代)文件系统。看来它无法在i386系统上启动。
jofel 2013年

@jofel文件大1475k。如果我尝试像这样挂载它mount -t minix -o loop U19.IMA /mnt/cd并得到一般错误,但是这落在dmesg中,VFS: Can't find a Minix filesystem V1 | V2 | V3 on device loop0.这是否表明内核已经有了它或我不能依靠它?无论如何,我会调查你说的。我知道它不可启动,但是我想访问其中的内容。谢谢。

的输出file表明映像上没有文件系统。您确定数据确实存在吗?听起来您正在尝试挂载没有分区和文件系统的原始驱动器的映像。
terdon

@terdon这正是我确实想要做的。这是逻辑上的失败吗?这是一个安装集。我希望找到“文件”,包括文档。我可以在安装整个程序之外访问它吗?

2
如果它是安装磁盘,则可能只有第一个磁盘包含文件系统/是可引导的。其他磁盘可能仅包含自定义格式的数据,而没有任何文件系统开销。
jofel 2013年

Answers:


4

如果您无法挂载映像,在某些情况下,您仍然可以使用来“流式处理”其某些数据cpio

确定图像是否为:

  • 使用受支持的文件系统和分区的图像-> mount
  • 使用支持的文件系统和多个分区->的映像 mount with offset,或用于dd提取具有偏移量的分区,然后仅挂载该分区或使用类似kpartx
  • 不使用支持的文件系统或根本不使用文件系统的映像->内核支持和进一步调查...

您可以使用hexdumpstrings实用程序尝试分析标题,并从图像中提取文本字符串,并获取有关图像文件及其结构的更多信息。


一些事情引起了我的兴趣:

@(#)/usr/bin/echo.sl 1.1 4.0 10/01/90 16865 AT&T-SF

图像中的每个二进制文件都有一条这样的行,因此您有点了解其中的内容。同样,在这种情况下,当您使用仔细查看安装过程如何在原始平台上进行时installpkg,您会发现:

将软件从软盘传输到UNIX System V / 386硬盘的基本机制是cpio。

基本上,将数据提取cpio到/ usr / tmp / install中,并且此文件附带了一系列文件(安装,ascii,文件,名称和大小文件)。此命令在此发生:

cat U19.IMA | cpio -imdv

首先输出格式错误的数字错误,然后使用图像内容创建一个/ usr / bin文件夹!在tr我一直在寻找有:

#file tr
tr: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), stripped.

首先尝试cpio不会受伤!


请注意-d选项和cpio。我似乎记得此尝试直接提取到我的根驱动器!
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.