我从客户端获得了一个硬盘驱动器的映像文件,该驱动器需要从中提取数据库。除了数据库曾经安装在创建映像的服务器上之外,客户端不知道任何细节。
我发现它是安装了Informix DBS的UNIX系统,但我找不到任何数据库文件。我不确定Informix的版本,但它似乎是在大约15年前安装的。
我无法从图像启动。我只是查看文件。
informix数据库文件是否有扩展名,它可能是什么?如何识别数据库文件的其他任何提示?
答案 0 :(得分:2)
您是否知道数据库是Informix标准引擎(SE)还是Informix(Informix Dynamic Server - IDS - 或多年来其众多同名公司之一)?
如果是SE,则数据库文件位于目录database.dbs
中,包含表的索引和数据的文件具有扩展名.idx
和.dat
。这非常固定且非常简单。文件和目录应属于组informix
;所有者将是在数据库中创建数据库或表的任何人。
如果是IDS,则没有保证的命名约定,Informix甚至不推荐使用。根据磁盘的状态,我会查找由用户informix
拥有并属于组informix
且拥有660
(-rw-rw----
)的大型文件权限。文件将具有结构,但不容易识别它。
例如,我有根dbspace的' chunk 0'在文件toru_31.rootdbs.c0
中(服务器名称toru_31
- 我在系统上强加的命名标准)。它始于:
0x0000: 00 00 00 00 01 00 AB 89 03 00 00 18 30 01 C0 06 ............0...
0x0010: 00 00 00 00 00 00 00 00 49 42 4D 20 49 6E 66 6F ........IBM Info
0x0020: 72 6D 69 78 20 44 79 6E 61 6D 69 63 20 53 65 72 rmix Dynamic Ser
0x0030: 76 65 72 20 43 6F 70 79 72 69 67 68 74 20 32 30 ver Copyright 20
0x0040: 30 31 2C 20 32 30 31 31 20 20 49 42 4D 20 43 6F 01, 2011 IBM Co
0x0050: 72 70 6F 72 61 74 69 6F 6E 2E 00 00 00 00 00 00 rporation.......
0x0060: 00 00 00 00 00 00 00 00 00 00 03 00 00 08 00 00 ................
0x0070: BA 2D CC 50 1A 00 00 00 00 00 00 00 C8 00 00 00 .-.P............
0x0080: 31 31 37 33 05 00 00 00 00 00 00 00 00 00 00 00 1173............
0x0090: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
但是,根数据库空间的'第1块' (文件toru_31.rootdbs.c1
)开始:
0x0000: 00 00 00 00 02 00 F1 C6 00 00 00 18 18 00 E4 07 ................
0x0010: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ................
* (125)
0x07F0: 00 00 00 00 00 00 00 00 00 00 00 00 61 C6 92 00 ............a...
0x0800: 69 6E 66 6F 72 6D 69 78 69 6E 66 6F 72 6D 69 78 informixinformix
* (127)
0x1000: 02 00 00 00 02 00 BE B6 06 00 08 08 20 00 D8 07 ............ ...
0x1010: 00 00 00 00 00 00 00 00 10 06 00 00 01 00 00 00 ................
0x1020: EA 06 00 00 03 00 00 00 75 08 00 00 08 00 00 00 ........u.......
0x1030: A1 08 00 00 08 00 00 00 B5 0A 00 00 30 03 00 00 ............0...
那里有很少的信息可以让游戏消失。虽然informix
(包含informix
两次的128行)的外观看起来像一个告诉标志,但它不是 - 我用一个写informix
的程序创建了一个块磁盘空间。它只显示服务器尚未将数据写入此块的位置。
您可以查找$INFORMIXDIR
。实际上,如果有目录/INFORMIXTMP
,您可以查看文本文件/INFORMIXTMP/.infxdirs
以查看Informix的安装位置。从这些目录中,您可以在$INFORMIXDIR/etc
中查找onconfig
个文件 - 它们是包含条目ROOTPATH
的文本文件,该条目是根dbspace的块0的路径名 - 基本上,整个系统的起点。通常是onconfig.std
,这是一个模板;虽然我总是使用onconfig.servername
(因此toru_31
的配置文件是onconfig.toru_31
),但命名约定并未得到明确解决。您还可以在$INFORMIXDIR/etc
中找到其他文件。例如,有一个文件oncfg_toru_31.31
(前缀oncfg_
,后跟服务器名称toru_31
后跟点和服务器编号31
),其中包含有关块的信息和服务器使用的其他磁盘空间等。您可能还会看到类似于.conf.toru_31
和.infos.toru_31
的二进制文件 - .infos
文件通常仅在服务器启动但.conf
文件仍然存在时才存在。这些文件中包含一些有限的信息,最明显的是onconfig
文件的名称。
如果您可以在磁盘上找到这些文件,那么您可以继续识别数据存储在磁盘上的位置。