跳至主要內容

ComputerSystems

LincZero大约 6 分钟

ComputerSystems

目录

磁盘的软件分析

用WinHex分析磁盘

话说这东西的速度快得有点不可思议

打开磁盘

打开WinHex > 菜单 > Tool 工具 > OpenDisk 打开磁盘 > 选择U盘 (注意要选择Physical Storage Drivers物理驱动器,而不要选Logical Volume/Partition逻辑驱动器,区别是看你有几块硬盘还是几个分区)

分析U盘大小

打开后一堆密密麻麻的16进制,从000000000到E6E7FFFE0行,每行32个字节, 即显示了一共E6E800000个字节 = E6E800000字节 = 61,983,424,512 字节 = 60530688 千字节 = 59112 兆字节 = 57.7265625 吉字节 而我这U盘恰好就是57.7G的或61,983,424,512字节的 (属性中可看一共多少个字节的容量,软件右侧的总容量中也可看到),完全吻合

分析U盘扇区

总扇区:

右侧可以看到总容量57.7G,每扇区字节数是512,一行是32字节,即16行一个扇区,也就是软件中的每一条横线是一个扇区 000000000是第一个扇区、000000200是第二个扇区、000000400第三个扇区,以此类推 最后是第 (E6E7FFE/2) 个扇区 = 61,983,424,512 / 512 = 121,061,376 个扇区 (1.2亿左右)

分区中的扇区:

当然是有分区信息存在的,可以在右侧看到内存的分区和相对扇区号 相对扇区号是指该分区的第几个扇区,也可以叫做逻辑扇区号,区别于物理扇区号 (图见后)

  • 初始扇区是128KB(刚好为该U盘中的1个簇),占用256个扇区,第一扇区的扇区号为0(分区不显示0,而是显示 "<0")
  • 第一扇区是总内存减去128KB的全部内存,占用121,061,376 - 256个的其余扇区,第一扇区的扇区号为256,扇区号为1 最后一个扇区:分区为1、相对扇区号为121,,061,119 = 121,061,376 - 256 -1(序列要减一),结果符合

分析U盘内容(快速格式化)

快速格式化:虽然我这里已经格式化了,但使用的是快速格式化功能,可以看到数据依然是存在的,这也就是数据恢复的基本原理。底格式化是很耗费时间的

补充:如果是Windows XP和以前的版本,去掉快速格式化的勾执行的慢速格式化只是在快速格式化之后增加了一个扫描坏扇区的过程,也就是说即使慢速格式化一百遍,数据都有可能百分之百恢复

关于底格的补充

参考:

坊间相传,由于传统的机械硬盘(HDD)是通过磁性记录数据的,即使你对硬盘进行了一次擦除(比如全盘填 0)也是可以通过特殊的设备恢复其中数据的,需要重复使用 0、1 以及随机数据填充才能确保安全删除。甚至还有「硬盘数据需要 35 次反复擦除才不能被恢复」这种说法。

然而事实是这样吗?

  • Gutmann 35 pass - the Gutmann method,即古特曼方法,覆写 35 次不同的数据来保证无法恢复。Peter Gutmann 本人就已经辟谣过
  • 填 0,填 1,还是随机数据?

image-20211109001007011

image-20211109001524403

分析U盘内容(填零格式化)

取勾快速格式化后 格式化

文件夹(隐藏的系统文件夹)

路径大小占用补充
./System Volume Information88B256KB (262144B)系统卷信息
././IndexerVolumeGuid76B128KB (131072B)
././WPSettings.dat12B128KB (131072B)

image-20211109152305606

image-20211109164753008

微软操作系统(DOS、WINDOWS等)中磁盘文件存储管理的最小单位叫做“簇”。在格式化中的分配单元大小选项应该就是指定簇的大小

磁盘右击属性中的已用空间应该是占用空间的意思,最小单位为簇,显示已经用空间768KB = 128KB x 6,即已经占用了6个簇 (后来我又格式化了一遍,这次不是右键格式化,而是在管理界面中重新创建简单卷,这次为640/128=5个簇,少了一个簇:IndexerVolumeGuid文件不见了)

初始扇区占1个簇,分区1的起始位置应该也是1个簇,默认的System Volume Information文件夹中有2个簇,共计4个簇。还缺了2个簇在哪呢?

起始扇区

只有第一个扇区存在内容,初始扇区中的其他扇区都被填0了,共计512个字节。注意:起始扇区的大小是128KB,即前256个扇区

特别注意扇区末尾为55AA

image-20211109155338472

分区1

双击分区1可单独显示逻辑硬盘中的分区1部分

下图中这里占用了3个扇区 = 3*512B = 1536B

特别注意扇区末尾为55AA

image-20211109160436190

创建个文本文件

内容所在分区物理扇区号逻辑扇区号内存
文本文件名:654321.txt分区1(找不到?)(找不到?)(找不到?)
文本内容:123456分区1793676800003C0000

文本搜索速度:大概每0.7s跑100,000个扇区,即大概每0.7s跑50MB,70MBps左右的速度,也比较符合我U盘的速度 就是我这64G的U盘还是太大了,搜索起来和做起研究起来不方便

分析分区类型(MBR,Master Boot Recode,主引导记录)

WinHex 软件左上角中可以看到分区类型为:MBR

标准MBR结构(MBR总大小:446+64+2 = 512KB)

Hex地址Oct地址Dec地址描述长度 (字节)
000000000代码区440 (最大446)
01B80670440选用磁盘标志4
01BC0674444一般为空值,0x0002
01BE0676446标准MBR分区表规划
(4个16byte的主分区表入口)
64
01FE
01FF
0776
0777
510
511
55AA h MBR有效标志:0x55AA
(二进制0101010101,可检验硬盘和磁头有效性)
2

操作过程

MBR分区存储在物理磁盘中的第0面第0道 (柱面) 1扇区,也就是初始扇区所在的位置,占用512KB字节 (应该)

每台计算机都会有一个BIOS程序,它会从硬盘的0面0道1扇区来寻找MBR

启示和bug

写入代码时不要破坏MBR结构!只能动前面的446个字节的代码区

如果破坏了需要重新格式化,这里有个奇怪的点:格式化并不会清除代码区里的内容

其他

固态硬盘用mbr guid gpt?

MBR的优势,兼容性较好。

MBR局限性,易损坏,支持硬盘容量不足,支持主分区仅为4个,当然通过其他途径可以增多。

GPT,GUID Partition Table,含义为“全局唯一标识磁盘分区表”,是一个实体硬盘的分区表的结构布局的标准,是可扩展固件接口(EFI)标准(被Intel用于替代个人计算机的BIOS)的一部分,被用于替代(MBR)分区表。

GPT的优势,相比MBR更安全,支持硬盘容量更大,支持主分区更多。

GPT劣势,由于是新技术,所以对于一些旧的储存设备和技术的兼容性还比较差