第一次软件安全实验课,收获了很多。 先总结一下
研究磁盘的构造
可以看到最上面是三个分区项。
![10651191-6ad1b0b4bfb284c1.png](https://i-blog.csdnimg.cn/blog_migrate/69b4a125c1429de1eea649e1d25b6d13.png)
这三个分区项是与底下的分区表记录是对照的。
![10651191-614e0d97b626e91e.png](https://i-blog.csdnimg.cn/blog_migrate/9bd99fae7b10ca23ccfc9bf656d48dff.png)
![10651191-87efec29daa07ced.png](https://i-blog.csdnimg.cn/blog_migrate/59ba2dbcd3de407b613bd07afd8e8be8.png)
注意在计算的时候要切换成科学
如果是在程序员中去计算就会出现舍入的问题
![10651191-fc6fec8d4b4e4917.png](https://i-blog.csdnimg.cn/blog_migrate/22fc84e6eafaa835453c37fc906b392b.png)
其中07是NTFS分区, 0B是FAT32分区, 0F是扩展分区的意思
![10651191-bb81accc04d23f15.png](https://i-blog.csdnimg.cn/blog_migrate/fe4dc2cd0ac8fa9b67d31c06f69c7165.png)
我们可以通过磁盘的分区记录直接计算出各个分区的大小。
如图其实很清楚的看出D盘式C盘的一半,而G盘和F盘之前已经计算过了, 大小大概就是23GB。
扩展分区
我们看到0F标记的分区记录项就是扩展分区, 它的开始位置就是 04 80 00 3FH
![10651191-21e13ab7d3729834.png](https://i-blog.csdnimg.cn/blog_migrate/c56c5e4e2a91a61e9946dd40945af77b.png)
这就说明扩展分区开始前共有75497535个扇区。
Ctrl + G 转到某个扇区, 这里是 75497535个扇区
![10651191-7311480e3a4d6321.png](https://i-blog.csdnimg.cn/blog_migrate/38b7735842a4897ed8d47127852e4c16.png)
![10651191-01761a0e82f58c95.png](https://i-blog.csdnimg.cn/blog_migrate/1736e63a8012fe0e3b1c031ff402c968.png)
这里是G盘和H盘的分区记录了
H盘的大小是:
![10651191-994f28a2f9c49b2b.png](https://i-blog.csdnimg.cn/blog_migrate/6f68d79ab9afccc79db01bb99ec80f44.png)
![10651191-c3f8cd07a4359fe4.png](https://i-blog.csdnimg.cn/blog_migrate/e4a49da0c77f003ba028ce0fab18941e.png)
H盘是13个GB多一点
FAT32文件系统
![10651191-60ea05d87ea709d3.png](https://i-blog.csdnimg.cn/blog_migrate/b2b463a3cdd53fef6a392e0a95cb9a88.png)
需要注意这里我们是从菜单栏中的工具去打开F这个逻辑磁盘, 而不是通过打开物理磁盘然后点击第二个分区表进入。
第一行偏移 0DH 处 20 代表每一个簇的大小是 16KB
然后剩余空间是 6GB
A= 6*1024*1024 / 16 个簇, 然后计算FAT1的大小, A*4/1024/1024, 相当于 6*4/16 = 1.5MB
需要注意的是每个分区中一个簇所占用的扇区数目不是固定的, 具体的要看分区是怎么约定的
![10651191-f020a4758d39c12d.png](https://i-blog.csdnimg.cn/blog_migrate/4f72b8ad873f5fe4661f1169b65bbef3.png)
这里可以看除很多的信息, 比如:
00 00 00 0B 是首簇
00 01 28 7C 是文件的大小
![10651191-50375147b602c0e4.png](https://i-blog.csdnimg.cn/blog_migrate/1150b4841df2a77b504d3fd6dde09f5c.png)
文件究竟占用了多少个簇是可以计算出来的。
因为这个逻辑磁盘是一个簇16KB, 所以60KB左右的文件大概是占用了5个簇。
![10651191-07ceef97f40db567.png](https://i-blog.csdnimg.cn/blog_migrate/a40e4b781bf710fb1e385c1902e38ce8.png)
![10651191-6c0cbe93859ac17b.png](https://i-blog.csdnimg.cn/blog_migrate/5846318fb3fb427ecd419f15b78c7fe0.png)
所以这里是74KB多, 自然就是占用了5个簇了
补充一下
20H
也就是 一个簇32个扇区, 然后16KB大小(每个簇)
我们在恢复文件的时候一般要估计出这个文件占用了多少个簇, 然后才能开始恢复
之后就是一个恢复一个学号命名文件的实验了。 步骤都差不多,就不用写了
一些疑惑
FAT32 对于8.3的文件名是直接存储在目录项中的
然而对于不是文件名稍微长一点的呢??NTFS文件系统又是如何组织的呢。为什么说NTFS文件系统会比FAT32文件系统更好呢??
分析自己的U盘
![10651191-e5b625407d13089a.png](https://i-blog.csdnimg.cn/blog_migrate/163b15506867ae2f471edf69d1ad17e9.png)
这个U盘很神奇, 在分区之前居然有 0x 00 00 08 00 个扇区。。
然后总大小是 0x 03 9D 78 00
![10651191-1b295f91d71cdfdb.png](https://i-blog.csdnimg.cn/blog_migrate/836c6744a4f4e98ad7973ef754671907.png)
正好是这个数字
![10651191-93e498220c5e148e.png](https://i-blog.csdnimg.cn/blog_migrate/b156650ef84da2f00bfa9ba96eaedfcc.png)
从分区模板中也可以看到在parition1 之前是有 2048个扇区的
![10651191-7192d52333a02c07.png](https://i-blog.csdnimg.cn/blog_migrate/8a83f20f8a7c127f44444a0a504f49df.png)
这里再解释一下DBR和MBR之间的区别
MBR记录的是主引导记录
DBR是在每个分区开始的第一个扇区所记录的内容
![10651191-a1f52c4b8f935a9c.png](https://i-blog.csdnimg.cn/blog_migrate/8c966e58b3bc823d1eef35d52bf62e4b.png)
![10651191-b6b051f40adf3274.png](https://i-blog.csdnimg.cn/blog_migrate/beb5817123a3e30f75cfae5b80577121.png)
分析自己的磁盘
![10651191-7a2e04080d913d46.png](https://i-blog.csdnimg.cn/blog_migrate/38760a52a677358d3a3280056cf6cd5a.png)
![10651191-8ee65318819bd5aa.png](https://i-blog.csdnimg.cn/blog_migrate/d2bfaa4afdd1b1a7af12718f1ad93433.png)