读取引导磁盘上的扇区

时间:2008-12-04 21:03:27

标签: filesystems dd sector

这是关于reading the superblock的问题的延续。

假设我想在Mac OS X中定位HFS +文件系统。我怎么能读取启动盘的第2扇区?据我所知,Unix只提供系统调用来读取文件,这些文件从不存储在那个位置。

这是否需要1)运行内核模式的程序,或者2)要在Assembly中编写的程序?我宁愿避免这些限制,尤其是后者。

4 个答案:

答案 0 :(得分:6)

我自己在Mac上完成了这项工作,请参阅我的磁盘编辑器工具:http://apps.tempel.org/iBored

您可以使用/ dev / diskN或/ dev / rdiskN打开驱动器(N是从0开始的磁盘索引号)。然后你可以使用lseek(确保使用64位范围版本!)和打开文件的读/写调用。

另外,使用shell命令“ls / dev / disk *”查看当前存在哪些驱动器。请注意,驱动器也存在“sM”扩展名,其中M是分区号。这样,也可以直接读取分区。

或者,您可以使用shell工具“xxd”或“dd”来读取数据,然后使用它们的输出。可能会更容易。

除非以root用户身份运行,否则您将无法读取根磁盘和其他内部磁盘。只要用户安装了其他驱动器,或者禁用了其权限,您就可以访问其他驱动器。但您可能还需要先卸载驱动器的卷。在shell命令“diskutil”中查找unmount命令。

希望这有帮助。

2017年更新:在OS X 10.11及更高版本SIP上也可能阻止您直接访问磁盘扇区。

答案 1 :(得分:5)

在Linux中,您可以从特殊设备文件/dev/sda中读取,假设您要读取的硬盘驱动器是第一个。你需要root才能读取这个文件。要读取扇区2,您只需要寻找偏移2*SECTOR_SIZE并读入SECTOR_SIZE个字节。

我不知道此设备文件是否在OS X上可用。检查/dev下的有趣命名文件,例如/dev/sda/dev/hda

答案 2 :(得分:1)

我还建议点击卷的/ dev / device文件,但你可能想联系Amit Singh,他写了hfsdebug utility并且可能已经做了你想做的事。

答案 3 :(得分:0)

这在权限方面如何运作?不会从/ dev / ...读取是不安全的,因为如果你读得足够远,你将能够读取你没有读取权限的文件吗?