实验NTFS-1说明:NTFS-1.img是一个包含NTFS文件系统的磁盘镜像,请使用winhex手工方式读出这个文件系统内的指定文件,并回答其md5 HASH值。

要求:

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

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

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

    4、填写的MD5 HASH值全部为大写,不包括0x头标或H尾标,中间不得有任何间隔符号(包括空格、制表符、’-’等符号),以WINHEX软件运算出的HASH值为准。


实验目的:

    1、实现手工方式跟踪一个NTFS文件系统,并读出指定的某个文件。

    2、理解目录缓冲区的结构原理。

    3、理解文件有多个碎片的处理方式(runlist的结构)。

    4、理解DBR、$MFT、FileRecord等文件系统组件。

    5、熟练使用WINHEX

题库:

实验NTFS-1中,文件系统中对"/mnt/NTFS-1-58/12.txt",人工读取内容后计算得到的文件MD5 HASH值为0x___。////927C94BBFC5B2A545C8526F8272F65F8//容易。。 
实验NTFS-1中,文件系统中对"/mnt/NTFS-1-58/7.txt",人工读取内容后计算得到的文件MD5 HASH值为0x___。////685A3C1600211F75362F2B9D0541A2DA//容易。。
实验NTFS-1中,文件系统中对"/mnt/NTFS-1-58/4.txt",人工读取内容后计算得到的文件MD5 HASH值为0x___。////0C72D420DD8902BBAE41A8C4E6676BCA//容易。。
... ...

附:生成考题的python脚本:

#!/usr/bin/python3
import os
import random
import hashlib
import struct
 
r=os.system
rc=random.choice
ri=random.randint
md5=hashlib.md5

items = list(range(1,21))
r("cd ~/NTFS-1")
fkaoti=open("NTFS-1-kaoti.txt",'w+')
r("qemu-img create -f raw NTFS-1.img 500M")
r("losetup /dev/loop0 NTFS-1.img")
r("mkfs.ntfs -f /dev/loop0")
r("mount.ntfs-3g /dev/loop0 /mnt")

for i in range(1,60):
  r("mkdir /mnt/NTFS-1-%d" % i)
  random.shuffle(items)
  for ii in items:
    f=open("/mnt/NTFS-1-%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,60):
  random.shuffle(items)
  for ii in items:
    f=open("/mnt/NTFS-1-%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()
#//对40以后的目录生成MD5 HASH,40之后即不可能存在于第一个目录块
for i in range(40,60):
   for ii in items:
     fn="/mnt/NTFS-1-%d/%d.txt"%(i,ii)
     ff=open(fn,'r')
     data=ff.read()
     ff.close()
     fkaoti.write("实验NTFS-1中,文件系统中对\"%s\",人工读取内容后计算得到的文件MD5 HASH值为0x___。//%s//容易。。\n"\
                   % (fn,md5(data.encode("utf8")).hexdigest().upper()) ) 
     fkaoti.flush() 
fkaoti.close()
r("cd")
r("umount /dev/loop0")
r("losetup -d /dev/loop0")


部署流程:

 1、在liunx下执行上述脚本,生成NTFS-1.img和NTFS-1-kaoti.txt(可以生成两份,一份用于练习,一份用于考试)。

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

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

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