linux中生成考核用的GPT分割槽結構樣例 二

2021-09-05 05:41:06 字數 4462 閱讀 3517

第一部分:面向被考核者

實驗說明:

已知有大小約500m-600m之間的某個磁碟映象,之前使用gpt分割槽方式劃分了乙個分割槽,格式化為ntfs檔案系統,分割槽起始位置和大小不確定。現在故障為:原來的分割槽被刪除,新建了乙個大分割槽,請找出刪除的分割槽,在現有分割槽表項的基礎上改出刪除的分割槽,完成修復工作後,按要求回答問題。

實驗要求:

1、利用winhex手工方式,修改給定映象檔案的分割槽結構。

2、分割槽表部分,只能修改現存分割槽表項的起始位置、結束位置,其餘部分不得做任何修改。

3、修正分割槽表頭校驗。

4、修正分割槽表備份區域。

5、不得使用winhex gpt分割槽模板進行參考修復。

6、除gpt分割槽表頭、gpt分割槽表、gpt分割槽表頭備份、gpt分割槽表備份外,映象檔案的其餘部分不得修改。

7、修復後生成整個映象檔案的md5 hash值。填寫的md5 hash值全部為大寫,不包括0x頭標或h尾標,中間不得有任何間隔符號(包括空格、製表符、』-』等符號),以winhex軟體運算出的hash值為準。

實驗要求:

考試為閉卷形式,不得參考除本材料以外的其他材料;不得使用電腦連線網際網路查詢資訊;考試時間為30分鐘;

實驗目的:

1、掌握gpt分割槽結構,掌握gpt分割槽校驗。

2、掌握分割槽表與備份分割槽表的區別與關聯。

3、熟練使用winhex的相關功能。

題庫(示例):

1、實驗gpt-2,試卷a,對於gpt2_a_79.tar.gz解壓後的映象檔案,找到丟失分割槽、

修改gpt分割槽結構後整個檔案md5 hash值為0x___。

//a9d25ab7c8be78d7384e1dea6c626bfe//容易。。

2、實驗gpt-2,試卷a,對於gpt2_a_80.tar.gz解壓後的映象檔案,找到丟失分割槽、

修改gpt分割槽結構後整個檔案md5 hash值為0x___。

//42f861de3e683ee7cae68dd600f04ccf//容易。。

......

第二部分:出題過程歸檔

生成題庫過程:

建立python指令碼,生成考題

#!/usr/bin/python3

import os

import sys

import random

import hashlib

import struct

import zlib

def help_exit():

print("  命令格式:")

print("  python3 %s :" % sys.argv[0])

print("      num:只可以填寫\"a-f\",表示試卷a、試卷b的意思。\n")

exit()

#通過丟擲異常判斷第乙個引數是否是a-f

def is_num_by_except(s):

try:

a=int(s,16)

if (a>0 and a<=16): return true

else: return false

except valueerror:

return false

if len(sys.argv)!=2 :

print("  ***引數數量或格式錯誤!")

help_exit()

s=sys.argv[1].upper()

if is_num_by_except(s):

print("****正在生成試卷%s材料及答案****"%s)

else:

print("  ***引數數量或格式錯誤!")

help_exit()

r=os.system

rc=random.choice

ri=random.randint

zero=bytearray(128*128+512)

fkaoti = open("gpt2-%s_kaoti.txt"%s,'w+')

fs = open("gpt2-%s_source.img"%s,'wb+')

r("cd ~/gpt2")

for i in range(1,101):

fd = "gpt2_%s_%d.img"%(s,i)

r("qemu-img create -f raw %s %dm" % (fd,ri(500,600)))

r("losetup /dev/loop0 %s"%fd)

r("parted -s /dev/loop0 mklabel gpt")

r("parted -s /dev/loop0 mkpart -s primary ntfs %dm %dm"% (ri(100,150),ri(350,500)))

r("mkfs.ntfs -f /dev/loop0p1")

r("losetup -d /dev/loop0")

#生成md5 hash

f=open(fd,'rb+')

md5=hashlib.md5()

while true:

b = f.read(8096)

if not b :

break

md5.update(b)

f.seek(512)

d1=f.read(512) #gpt分割槽表頭

d2=f.read(128*128) #gpt分割槽表區域

pad11,crc1,pad12,headpoi,headbakpoi,pad13,depoi,pad14,ptpoi,pad15,crc2,pad16\

= struct.unpack('<16si4sqq8sq16sq8si420s',d1)

pad21,pspoi,pepoi,pad22 \

= struct.unpack('<32sqq%ds'%(128*128-48),d2)

d2m = struct.pack('<32sqq%ds'%(128*128-48),pad21,128,depoi,pad22)

crc2m = zlib.crc32(d2m)

d1t = struct.pack('<16si4sqq8sq16sq8si',\

pad11,0,pad12,headpoi,headbakpoi,pad13,depoi,pad14,ptpoi,pad15,crc2m)

crc1m = zlib.crc32(d1t)

d1m = struct.pack('<16si4sqq8sq16sq8si420s',\

pad11,crc1m,pad12,headpoi,headbakpoi,pad13,depoi,pad14,ptpoi,pad15,crc2m,pad16)

f.seek(512)

f.write(d1m)

f.write(d2m)

f.seek(headbakpoi*512 - 32*512)

d3=f.read(512 + 128*128)

#再處理分割槽表備份扇區

d1t = struct.pack('<16si4sqq8sq16sq8si',\

pad11,0,pad12,headbakpoi,headpoi,pad13,depoi,pad14,headbakpoi-32,pad15,crc2m)

crc1m = zlib.crc32(d1t)

d1m = struct.pack('<16si4sqq8sq16sq8si420s',\

pad11,crc1m,pad12,headbakpoi,headpoi,pad13,depoi,pad14,headbakpoi-32,pad15,crc2m,pad16)

f.seek(headbakpoi*512 - 32*512)

f.write(d2m)

f.write(d1m)

f.close()

r("tar -zcf %s.tar.gz %s"%(fd[:-4],fd))

os.remove(fd)

fkaoti.write("實驗gpt-2,試卷%s,對於%s.tar.gz解壓後的映象檔案,找到丟失分割槽、修改gpt\

分割槽結構後整個檔案md5 hash值為0x___。//%s//容易。。\n" \

% (s, fd[:-4], md5.hexdigest().upper() ) )

fkaoti.flush()

fs.write(d1)

fs.write(d2)

fs.write(d3)

fs.flush()

fkaoti.close()

fs.close()

部署流程:

1、在liunx下執行上述指令碼,命令格式為:

python3 run_gpt2.py a
其中第二個引數是指令碼名稱,第三個引數用於區分哪套試卷。

2、把gpt-x_kaoti.txt匯入考試系統。映象檔案按要求放到考試機器上。

3、不得將用於考試的直接涉及答案的檔案、以及生成考題的指令碼放入考試系統磁碟中。

linux中生成考核用的GPT分割槽表結構修復案例

注 歷史版本,後期改用python實現了 實驗一 目的 用於生成大量模擬破壞gpt分割槽結構案例,並生成唯一方式修復後的評判方法。故障 在乙個完整的gpt分割槽磁碟上,丟失了gpt主分割槽表,或備份分割槽表。要求 1 利用winhex手工方式,修復給定映象檔案的分割槽結構。2 不得對現存主分割槽表或...

linux中生成任意大小的檔案

可以利用dd命令 root localhost test dd if dev zero of data.txt bs 1m count 2 2 0 records in 2 0 records out 2097152 bytes 2.1 mb copied,0.0140437 seconds,149...

sap中生成BAPI的ALE介面

t code bdbg 生成bapi的ale介面 物件 介面型別 介面組,可能通過swo1生成。方法 bapi 生成 bapi 的 ale 介面 資訊型別 z getgritem we81 z getgritem 已生成 idoc 型別 z getgritem01 we30 檢查基本型別 z get...