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
2
3
4
5
6
7
8
9
1、实验FAT32-2中,对镜像文件fat32-2-8.img中损坏的DBR进行修正,
    如果以FAT表数为2修复,则修复后DBR的MD5 HASH是0x___,  
    如果以FAT表数为1,则修复后DBR的MD5 HASH是0x___。
    //3ECB03CC3C8F3D3ED6DC4D502F1ADB31#78036840280382773A7F3C564A21A3F0//容易。。
2、实验FAT32-2中,对镜像文件fat32-2-9.img中损坏的DBR进行修正,
    如果以FAT表数为2修复,则修复后DBR的MD5 HASH是0x___,  
    如果以FAT表数为1,则修复后DBR的MD5 HASH是0x___。
    //30EA11DED5DA720351B8EA40603A2880#C9F6D77E941423A0900FEDDC11E43999//容易。。
... ...



附:实验环境生成脚本(python3):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
#!/usr/bin/python3
import  os
import  random
import  hashlib
import  struct
 
r = os.system
rc = random.choice
ri = random.randint
md5 = hashlib.md5
 
sdata = [ 8 , 16 , 32 , 64 ]
#val = r("ls ~")
#print("val")
r( "cd ~/FAT32-2" )
r( "ls" )
fkaoti  =  open ( "FAT32-2-kaoti.txt" , 'w+' )
for  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,用于保存答案
   =  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、在liunx下执行上述脚本,生成FAT32-2.img和FAT32-2-kaoti.txt(可以生成两份,一份用于练习,一份用于考试)。其中,*.tar.gz即考试镜像,FAT32-2-kaoti.txt是生成的考题文件,run_fat32-2.py即上述脚本文件,*.dbr是应该正确的以2份FAT表为例的dbr备份。

 2、针对每一份考题,把FAT32-2-kaoti.txt导入考试系统。

 3、针对每一份考题,把FAT32-2.img放入考试系统指定目录。

 4、不得将用于考试的直接涉及答案的文件放入考试系统磁盘中。










本文转自 张宇 51CTO博客,原文链接:http://blog.51cto.com/zhangyu/1941701,如需转载请自行联系原作者
目录
相关文章
|
28天前
|
存储 监控 Shell
【Shell 命令集合 备份压缩 】Linux 备份文件系统 dump命令 使用指南
【Shell 命令集合 备份压缩 】Linux 备份文件系统 dump命令 使用指南
35 0
|
24天前
|
存储 算法 Linux
【Linux系统编程】Linux 文件系统探究:深入理解 struct dirent、DIR 和 struct stat结构
【Linux系统编程】Linux 文件系统探究:深入理解 struct dirent、DIR 和 struct stat结构
36 0
|
5天前
|
存储 运维 监控
深入理解 Linux 文件系统的层次结构
【4月更文挑战第14天】本文将探讨 Linux 操作系统的文件系统层次结构,这是每个系统管理员和开发人员必须掌握的核心知识。我们将从文件系统的顶层目录开始,逐步深入到每个目录的特定用途和重要性,以及它们如何协同工作以支持 Linux 系统的正常运行。
|
18天前
|
存储 固态存储 Unix
Linux中磁盘分区和文件系统管理
在Linux系统中,磁盘是存储数据的物理设备,如HDD或SSD,以文件形式存在于`/dev`目录下,如`sda`、`sdb`等。文件系统定义了如何在磁盘上组织和访问数据,常见的Linux文件系统有ext2、ext3、ext4、xfs等。通过虚拟机软件如VMware,用户可以向Linux虚拟机添加新的硬盘。
|
27天前
|
安全 Linux 数据安全/隐私保护
深入理解Linux文件系统的权限管理
在Linux操作系统中,文件系统权限管理是维护系统安全与数据完整性的基石。本文将深入探讨Linux文件系统中的权限模型,包括用户、组和其他三个层级的读、写、执行权限。通过分析权限位的具体含义和实际作用,文章旨在提供一套系统的方法论,以帮助系统管理员和开发人员更有效地配置和管理文件权限。同时,我们将通过实例展示如何使用命令行工具和配置文件来修改和查看文件权限,以及如何利用权限管理来增强系统的安全性。
|
11天前
|
Web App开发 Linux 网络安全
工作中常用到的Linux命令
工作中常用到的Linux命令
|
11天前
|
Web App开发 Java Linux
Linux之Shell基本命令篇
Linux之Shell基本命令篇
Linux之Shell基本命令篇
|
8天前
|
NoSQL Linux Shell
常用的 Linux 命令
常用的 Linux 命令
30 9
|
1天前
|
安全 Linux 开发工具
Linux中可引起文件时间戳改变的相关命令
【4月更文挑战第12天】Linux中可引起文件时间戳改变的相关命令
9 0
|
2天前
|
域名解析 网络协议 Linux
Linux 中的 Nslookup 命令怎么使用?
【4月更文挑战第12天】
22 6
Linux 中的 Nslookup 命令怎么使用?