首页 > 代码库 > linux中生成考核用的FAT32文件系统结构样例(二)
linux中生成考核用的FAT32文件系统结构样例(二)
实验FAT32-2说明:FAT32-2\目录下的xxx.tar.gz解压后是一个FAT32文件系统的分区镜像,其DBR及备份的一些参数错误,请使用winhex手工方式修复DBR,并回答修改后的DBR的md5 HASH值。
要求:
1、利用WINHEX手工方式读取。
2、不得使用WINHEX模板功能。
3、不得使用WINHEX文件系统解析功能。
4、出错部分仅为DBR保留扇区、FAT表份数、FAT表大小、文件系统扇区总数、每簇扇区数、有效结束标志,其余部分不得修改。
5、文件系统扇区总数为可利用的最大值,即整个镜像文件的扇区总数。
6、填写的MD5 HASH值全部为大写,不包括0x头标或H尾标,中间不得有任何间隔符号(包括空格、制表符、’-’等符号),以WINHEX软件运算出的HASH值为准。
实验目的:
1、理解FAT32 DBR的结构。
2、理解FAT32结构之间的组合关系。
3、学会如何通过数据区分析文件系统参数。
4、熟练使用WINHEX
题库(示例):
1、实验FAT32-2中,对镜像文件fat32-2-8.img中损坏的DBR进行修正,如果以FAT表数为2修复,则修复后DBR的MD5 HASH是___, 如果以FAT表数为1,则修复后DBR的MD5 HASH是___。////3ECB03CC3C8F3D3ED6DC4D502F1ADB31//78036840280382773A7F3C564A21A3F0//容易。。
2、实验FAT32-2中,对镜像文件fat32-2-9.img中损坏的DBR进行修正,如果以FAT表数为2修复,则修复后DBR的MD5 HASH是___, 如果以FAT表数为1,则修复后DBR的MD5 HASH是___。////30EA11DED5DA720351B8EA40603A2880//C9F6D77E941423A0900FEDDC11E43999//容易。。
... ...
附:实验环境生成脚本(python3):
#!/usr/bin/python3 import os import random import hashlib import struct r=os.system rc=random.choice ri=random.randint md5=hashlib.md5 sdata=http://www.mamicode.com/[8,16,32,64]"ls ~") #print("val") r("cd ~/FAT32-2") r("ls") fkaoti = open("FAT32-2-kaoti.txt",‘w+‘) for i in range(1,101): fd = ("fat32-2-%d.img" % i) r("qemu-img create -f raw %s %dM" % (fd,ri(10,200)+400)) r("losetup /dev/loop0 %s" % fd) r("mkfs.fat -F 32 -s %d -R %d /dev/loop0" % (rc(sdata),ri(8,128)) ) r("mount /dev/loop0 /mnt") #100 dirs for ii in range(1,100): dir1=ri(100,999999) r("mkdir /mnt/%d" % dir1) filenum=ri(10,100) for iii in range(1,filenum): file1=ri(1000000,9999999999) r("dd if=/dev/zero of=/mnt/%d/%d.txt seek=%d count=1 bs=512 2>/dev/null" % (dir1,file1,ri(8,16)) ) r("umount /dev/loop0") r("losetup -d /dev/loop0") r("cd ~/FAT32-1") #计算以两份FAT表为例的DBR HASH,用于保存答案 f = open("%s" % fd,‘rb+‘) dbr = f.read(512) pad1,SecPerClus,ResevSecs,Fats,pad2,Sectors,SecPerFat,pad3,Sign=struct.unpack(‘<13sBHB15sII470sH‘,dbr) dbrMD5 = md5(dbr) Fats_t = 1 ResevSecs_t = SecPerFat + ResevSecs dbr_1 = struct.pack(‘<13sBHB15sII470sH‘,pad1,SecPerClus,ResevSecs_t,Fats_t,pad2,Sectors,SecPerFat,pad3,Sign) dbrMD5_1 = md5(dbr_1) dbr_zero = struct.pack(‘<13sBHB15sII470sH‘,pad1,0,0,0,pad2,0,0,pad3,0) f.seek(0) f.write(dbr_zero) f.seek(6*512) f.write(dbr_zero) f.close() fkaoti.write("实验FAT32-2中,对镜像文件%s中损坏的DBR进行修正,如果以FAT表数为2修复,则修复后DBR的MD5 HASH是0x___, 如果以FAT表数为1,则修复后DBR的MD5 HASH是0x___。////%s//%s//。。\n" % (fd,dbrMD5.hexdigest().upper(),dbrMD5_1.hexdigest().upper())) fkaoti.flush() r("tar -zcf %s.tar.gz %s" % (fd[:-4],fd)) r("rm %s" % fd) f_dbr = open("%s.dbr" % fd[:-4],‘wb+‘) f_dbr.write(dbr) f_dbr.close() fkaoti.close()
注:考题生成及注意事项
1、脚本编译运行后的结果如下:
root@zhangyu-VirtualBox:~/FAT32-2# ls
fat32-2-100.dbr fat32-2-19.tar.gz fat32-2-29.dbr fat32-2-38.tar.gz fat32-2-48.dbr fat32-2-57.tar.gz fat32-2-67.dbr fat32-2-76.tar.gz fat32-2-86.dbr fat32-2-95.tar.gz
fat32-2-100.tar.gz fat32-2-1.dbr fat32-2-29.tar.gz fat32-2-39.dbr fat32-2-48.tar.gz fat32-2-58.dbr fat32-2-67.tar.gz fat32-2-77.dbr fat32-2-86.tar.gz fat32-2-96.dbr
fat32-2-10.dbr fat32-2-1.tar.gz fat32-2-2.dbr fat32-2-39.tar.gz fat32-2-49.dbr fat32-2-58.tar.gz fat32-2-68.dbr fat32-2-77.tar.gz fat32-2-87.dbr fat32-2-96.tar.gz
fat32-2-10.tar.gz fat32-2-20.dbr fat32-2-2.tar.gz fat32-2-3.dbr fat32-2-49.tar.gz fat32-2-59.dbr fat32-2-68.tar.gz fat32-2-78.dbr fat32-2-87.tar.gz fat32-2-97.dbr
fat32-2-11.dbr fat32-2-20.tar.gz fat32-2-30.dbr fat32-2-3.tar.gz fat32-2-4.dbr fat32-2-59.tar.gz fat32-2-69.dbr fat32-2-78.tar.gz fat32-2-88.dbr fat32-2-97.tar.gz
fat32-2-11.tar.gz fat32-2-21.dbr fat32-2-30.tar.gz fat32-2-40.dbr fat32-2-4.tar.gz fat32-2-5.dbr fat32-2-69.tar.gz fat32-2-79.dbr fat32-2-88.tar.gz fat32-2-98.dbr
fat32-2-12.dbr fat32-2-21.tar.gz fat32-2-31.dbr fat32-2-40.tar.gz fat32-2-50.dbr fat32-2-5.tar.gz fat32-2-6.dbr fat32-2-79.tar.gz fat32-2-89.dbr fat32-2-98.tar.gz
fat32-2-12.tar.gz fat32-2-22.dbr fat32-2-31.tar.gz fat32-2-41.dbr fat32-2-50.tar.gz fat32-2-60.dbr fat32-2-6.tar.gz fat32-2-7.dbr fat32-2-89.tar.gz fat32-2-99.dbr
fat32-2-13.dbr fat32-2-22.tar.gz fat32-2-32.dbr fat32-2-41.tar.gz fat32-2-51.dbr fat32-2-60.tar.gz fat32-2-70.dbr fat32-2-7.tar.gz fat32-2-8.dbr fat32-2-99.tar.gz
fat32-2-13.tar.gz fat32-2-23.dbr fat32-2-32.tar.gz fat32-2-42.dbr fat32-2-51.tar.gz fat32-2-61.dbr fat32-2-70.tar.gz fat32-2-80.dbr fat32-2-8.tar.gz fat32-2-9.dbr
fat32-2-14.dbr fat32-2-23.tar.gz fat32-2-33.dbr fat32-2-42.tar.gz fat32-2-52.dbr fat32-2-61.tar.gz fat32-2-71.dbr fat32-2-80.tar.gz fat32-2-90.dbr fat32-2-9.tar.gz
fat32-2-14.tar.gz fat32-2-24.dbr fat32-2-33.tar.gz fat32-2-43.dbr fat32-2-52.tar.gz fat32-2-62.dbr fat32-2-71.tar.gz fat32-2-81.dbr fat32-2-90.tar.gz FAT32-2-kaoti.txt
fat32-2-15.dbr fat32-2-24.tar.gz fat32-2-34.dbr fat32-2-43.tar.gz fat32-2-53.dbr fat32-2-62.tar.gz fat32-2-72.dbr fat32-2-81.tar.gz fat32-2-91.dbr run_fat32-2.py
fat32-2-15.tar.gz fat32-2-25.dbr fat32-2-34.tar.gz fat32-2-44.dbr fat32-2-53.tar.gz fat32-2-63.dbr fat32-2-72.tar.gz fat32-2-82.dbr fat32-2-91.tar.gz
fat32-2-16.dbr fat32-2-25.tar.gz fat32-2-35.dbr fat32-2-44.tar.gz fat32-2-54.dbr fat32-2-63.tar.gz fat32-2-73.dbr fat32-2-82.tar.gz fat32-2-92.dbr
fat32-2-16.tar.gz fat32-2-26.dbr fat32-2-35.tar.gz fat32-2-45.dbr fat32-2-54.tar.gz fat32-2-64.dbr fat32-2-73.tar.gz fat32-2-83.dbr fat32-2-92.tar.gz
fat32-2-17.dbr fat32-2-26.tar.gz fat32-2-36.dbr fat32-2-45.tar.gz fat32-2-55.dbr fat32-2-64.tar.gz fat32-2-74.dbr fat32-2-83.tar.gz fat32-2-93.dbr
fat32-2-17.tar.gz fat32-2-27.dbr fat32-2-36.tar.gz fat32-2-46.dbr fat32-2-55.tar.gz fat32-2-65.dbr fat32-2-74.tar.gz fat32-2-84.dbr fat32-2-93.tar.gz
fat32-2-18.dbr fat32-2-27.tar.gz fat32-2-37.dbr fat32-2-46.tar.gz fat32-2-56.dbr fat32-2-65.tar.gz fat32-2-75.dbr fat32-2-84.tar.gz fat32-2-94.dbr
fat32-2-18.tar.gz fat32-2-28.dbr fat32-2-37.tar.gz fat32-2-47.dbr fat32-2-56.tar.gz fat32-2-66.dbr fat32-2-75.tar.gz fat32-2-85.dbr fat32-2-94.tar.gz
fat32-2-19.dbr fat32-2-28.tar.gz fat32-2-38.dbr fat32-2-47.tar.gz fat32-2-57.dbr fat32-2-66.tar.gz fat32-2-76.dbr fat32-2-85.tar.gz fat32-2-95.dbr
其中,*.tar.gz即考试镜像,FAT32-2-kaoti.txt是生成的考题文件,run_fat32-2.py即上述脚本文件,*.dbr是应该正确的以2份FAT表为例的dbr备份。
2、FAT32-2-kaoti.txt内容如下(仅截取头部):
root@zhangyu-VirtualBox:~/FAT32-2# cat FAT32-2-kaoti.txt
实验FAT32-2中,对镜像文件fat32-2-1.img中损坏的DBR进行修正,如果以FAT表数为2修复,则修复后DBR的MD5 HASH是___, 如果以FAT表数为1,则修复后DBR的MD5 HASH是___。////1A2201702D2643AFFE88E5BC4A1E9A43//C1E0667248B5A0AE3D153B31F0C9F0C1//。。
实验FAT32-2中,对镜像文件fat32-2-2.img中损坏的DBR进行修正,如果以FAT表数为2修复,则修复后DBR的MD5 HASH是___, 如果以FAT表数为1,则修复后DBR的MD5 HASH是___。////17E1A815B11CACFFAC795A984A196D37//3D2305C18DE78A92E2E173E2E45D07A9//。。
3、考试时,将FAT32-2-kaoti.txt导入考试系统,*.tar.gz文件放到考试目录下即可(参考答案、*.dbr、脚 本等不得放入考试目录下,答案仅用于测试考题正确与否的过程性数据。)。
本文出自 “张宇(数据恢复)” 博客,请务必保留此出处http://zhangyu.blog.51cto.com/197148/1941701
linux中生成考核用的FAT32文件系统结构样例(二)