我试图从磁盘中获取从特定地址开始的特定数据(不知道它是否是物理地址,例如:0x00000000DA88FFFF,大小为 0x5776)。实际上,我对磁盘映像器和这些东西还不熟悉,我发现日命令适合制作磁盘映像,但我找不到任何与从特定地址以特定大小启动映像相关的内容,有什么办法吗?我想从磁盘中提取特定信息。
答案1
日有一个skip
参数允许您跳过输入开始时的某个部分。
问题是,dd 一次读取一个块,将一个块读入内存,然后将该块写入输出,然后重复。如果您要跳过的字节数不是默认块大小 (512) 的倍数,则需要设置块大小。以下方法可行:
dd if=/dev/sda1 bs=1 skip=3666411519 count=22390 of=/some/file
在这种情况下,您将块大小设置为单个字节(因为您的跳过值是任意的,而不是任何特定值的倍数)。
使用 1 字节的块大小会相对较慢,但如果您只读取大约 22kB,那就不是什么大问题了。
答案2
dd
有一个skip
标志:
skip=N skip N ibs-sized blocks at start of input
但地址必须是 N*ibs。但 0x00000000DA88FFFF = 3×1222137173,这似乎不是一个合理的起点。一般来说,你可以这样做:
dd ibs=X start=Y count=Z if=/some/disk
复制Z*X
从 开始的字节Y*X
。