linux下格式化成了fdd,linux中生成考核用的FAT32文件系統結構樣例(一)

實驗FAT32-1說明:FAT32-1.img是一個包含FAT32文件系統的磁盤鏡像,請使用winhex手工方式讀出這個文件系統內的指定文件,並回答其md5 HASH值。

要求:

1、利用WINHEX手工方式讀取。

2、不得使用WINHEX模板功能。

3、不得使用WINHEX文件系統解析功能。

4、填寫的MD5 HASH值全部為大寫,不包括0x頭標或H尾標,中間不得有任何間隔符號(包括空格、制表符、’-’等符號),以WINHEX軟件運算出的HASH值為准。

實驗目的:

1、實現手工方式跟蹤一個FAT32文件系統,並讀出指定的某個文件。

2、理解多目錄塊的組合方式。

3、理解多個文件碎片的處理方式。

4、理解DBR、FAT表等文件系統組件。

5、熟練使用WINHEX

題庫:

1、實驗X中,\FROMBYTE51\28.txt文件的md5 HASH值為___________?

2、實驗X中,\FROMBYTE55\8.txt文件的md5 HASH值為___________?

... ...

附:實驗環境生成腳本:

#!/bin/bashqemu-img create -f raw FAT32-1.img 500M

losetup /dev/loop0 FAT32-1.img

parted -s /dev/loop0 mklabel msdos

parted -s /dev/loop0 mkpart -s primary fat32 128s 100%

mkfs.fat -F 32 -s 8 /dev/loop0p1

mount /dev/loop0p1 /mnt

for((i=1;i<=150;i++));do

mkdir /mnt/"FROMBYTE"$i

for((ii=1;ii<10;ii++));do

r2=$(($RANDOM % 32 + 512))

#create file

r3=$(($RANDOM % 32))

for((iii=1;iii

if [ $r3 -eq $iii ] ;then

# random write "COPY RIGHT"

echo -n "*****COPY RIGHT:" >>/mnt/"FROMBYTE"$i/$ii.txt

r3=$(($RANDOM % 32 + $r3))

else

echo -n "www.frombyte.com" >>/mnt/"FROMBYTE"$i/$ii.txt

fi

done

done

done

for((i=1;i<=150;i++));do

for((ii=1;ii<10;ii++));do

r2=$(($RANDOM % 512 + 512))

#add padding

r3=$(($RANDOM % 32))

for((iii=1;iii

if [ $r3 -eq $iii ] ;then

# random write "COPY RIGHT"

echo -n "*****COPY RIGHT:" >>/mnt/"FROMBYTE"$i/$ii.txt

r3=$(($RANDOM % 32 + $r3))

else

echo -n "www.frombyte.com" >>/mnt/"FROMBYTE"$i/$ii.txt

fi

done

done

done

for((i=65;i<=150;i++));do

md5sum /mnt/"FROMBYTE"$i/* |tr a-z A-Z >>~/FAT32-1/FAT32-1.md5

done

cd

umount /dev/loop0p1

losetup -d /dev/loop0

總過程:

1、按上述腳本生成md5集合FAT32-1.md5,FAT32-1.img鏡像

2、通過FAT32-1.md5,生成題庫。方法有:

a、利用excel編輯替換的方式生成

b、linux下使用awk 、sed加shell的方式生成

c、利用python生成

示例,使用awk、sed生成題庫(為容易看,斷行,執行時一行即可,考題里的格式仍有出入,僅做演示,可以針對情況修改)

sed -e 's/\/MNT//' -e 's/TXT/txt/' FAT32-1.md5|awk '{print "test2:",$2,",this file MD5 HASH is:0x___.","\\\\"$1"\\\\easy\\\\.."}' >test.txt

結果如下(截取部分):

test2: /FROMBYTE95/8.TXT ,this file MD5 HASH is:0x___. \\46D40D302D0CEBCF541086589E9FCCFB\\easy\\..

test2: /FROMBYTE95/9.TXT ,this file MD5 HASH is:0x___. \\D15F6065CDA928F5A581225AD2FA0AD0\\easy\\..

test2: /FROMBYTE96/1.TXT ,this file MD5 HASH is:0x___. \\646E1F87F8458D0423FE9E64EBBD1908\\easy\\..

test2: /FROMBYTE96/2.TXT ,this file MD5 HASH is:0x___. \\0E7C3DCBF868495E43BD6A34CE6D8418\\easy\\..

test2: /FROMBYTE96/3.TXT ,this file MD5 HASH is:0x___. \\681757B565DB23A467CDB527D2D107C8\\easy\\..

test2: /FROMBYTE96/4.TXT ,this file MD5 HASH is:0x___. \\C2FCEEBEE9FD30D107C0D5D57E5785A2\\easy\\..

test2: /FROMBYTE96/5.TXT ,this file MD5 HASH is:0x___. \\09F17DBAACA7AC8277457B5A97B14D66\\easy\\..

test2: /FROMBYTE96/6.TXT ,this file MD5 HASH is:0x___. \\3C63DB19A48086A33A31620346EB5F9B\\easy\\..

test2: /FROMBYTE96/7.TXT ,this file MD5 HASH is:0x___. \\B8FFC3B07E67D85E60B5B71367D75D90\\easy\\..

test2: /FROMBYTE96/8.TXT ,this file MD5 HASH is:0x___. \\12FC052979EAD0BC0C398E275CB6F56D\\easy\\..

test2: /FROMBYTE96/9.TXT ,this file MD5 HASH is:0x___. \\6C2055640D7FA21C6E9F8A31AB3A4C50\\easy\\..

test2: /FROMBYTE97/1.TXT ,this file MD5 HASH is:0x___. \\94791A0E619868560DF475AB96B5AE4D\\easy\\..

test2: /FROMBYTE97/2.TXT ,this file MD5 HASH is:0x___. \\F31D153B05329D5D22B74B06EEAB86A6\\easy\\..

test2: /FROMBYTE97/3.TXT ,this file MD5 HASH is:0x___. \\6B8375017CB05325CA565D586C596BE8\\easy\\..

test2: /FROMBYTE97/4.TXT ,this file MD5 HASH is:0x___. \\58E0129F24A5915D4BA957D90C05892A\\easy\\..

test2: /FROMBYTE97/5.TXT ,this file MD5 HASH is:0x___. \\66E2B4CD85DABA2ECEB810476B982538\\easy\\..

test2: /FROMBYTE97/6.TXT ,this file MD5 HASH is:0x___. \\502514DE713A04FBAFE3A44C8598028C\\easy\\..

test2: /FROMBYTE97/7.TXT ,this file MD5 HASH is:0x___. \\B66025D4FDD12837438ED36903F738A7\\easy\\..

test2: /FROMBYTE97/8.TXT ,this file MD5 HASH is:0x___. \\0F3B53E05AA6955A8377E55403E468F5\\easy\\..

test2: /FROMBYTE97/9.TXT ,this file MD5 HASH is:0x___. \\0A6EFA940D546735505D6847AFD4F9E0\\easy\\..

test2: /FROMBYTE98/1.TXT ,this file MD5 HASH is:0x___. \\E2567294C0EB341E43B1D26FF7372898\\easy\\..

test2: /FROMBYTE98/2.TXT ,this file MD5 HASH is:0x___. \\5624DA049E95F06475A2AF58BED6F050\\easy\\..

test2: /FROMBYTE98/3.TXT ,this file MD5 HASH is:0x___. \\8AB67DCDA00069208F1162C3FEF2BBD5\\easy\\..

改進的方法:用python改寫腳本:

#!/usr/bin/python3import osimport randomimport hashlibimport struct r=os.systemrc=random.choiceri=random.randintmd5=hashlib.md5items = [1,2,3,4,5,6,7,8,9,10]r("cd ~/FAT32-1")fkaoti=open("FAT32-1-kaoti.txt",'w+')r("qemu-img create -f raw FAT32-1.img 500M")r("losetup /dev/loop0 FAT32-1.img")r("parted -s /dev/loop0 mklabel msdos")r("parted -s /dev/loop0 mkpart -s primary fat32 128s 100%")r("mkfs.fat -F 32 -s 8 /dev/loop0p1")r("mount /dev/loop0p1 /mnt")for i in range(1,151):  r("mkdir /mnt/FROMBYTE%d" % i)  for ii in range(1,11):    f=open("/mnt/FROMBYTE%d/%d.txt"%(i,ii),'w+')    for iii in range(1,ri(500,550)):      if ri(1,32)==1:        f.write("*****COPY RIGHT:")      else:        f.write("www.frombyte.com")    f.close()for i in range(1,151):  random.shuffle(items)  for ii in items:    f=open("/mnt/FROMBYTE%d/%d.txt"%(i,ii),'a')    for iii in range(1,ri(1000,1100)):      if ri(1,32)==1:        f.write("*****COPY RIGHT:")      else:        f.write("www.frombyte.com")    f.close()#//對65以后的目錄生成MD5 HASH,65之后即不可能存在於第一個目錄塊(65*32*2 > 4096),考核FAT表對目錄的跟蹤for i in range(65,151):   for ii in range(1,11):     fn="/mnt/FROMBYTE%d/%d.txt"%(i,ii)     ff=open(fn,'r')     data=ff.read()     ff.close()     fkaoti.write("實驗FAT32-1中,文件系統中對\"%s\",人工讀取內容后計算得到的文件MD5 HASH值為0x___。//%s//容易。。\n"\                   % (fn,md5(data.encode("utf8")).hexdigest().upper()) )      fkaoti.flush() fkaoti.close()r("cd")r("umount /dev/loop0p1")r("losetup -d /dev/loop0")

總過程:

將FAT32-1.img和FAT32-1-kaoti.txt做相應處理即可。參考答案不可留在考試系統內。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值